| /********************************************************************** | |
| * $Id$ lpc18xx_rit.c 2011-06-02 | |
| *//** | |
| * @file lpc18xx_rit.c | |
| * @brief Contains all functions support for RIT firmware library on LPC18xx | |
| * @version 1.0 | |
| * @date 02. June. 2011 | |
| * @author NXP MCU SW Application Team | |
| * | |
| * Copyright(C) 2011, NXP Semiconductor | |
| * All rights reserved. | |
| * | |
| *********************************************************************** | |
| * Software that is described herein is for illustrative purposes only | |
| * which provides customers with programming information regarding the | |
| * products. This software is supplied "AS IS" without any warranties. | |
| * NXP Semiconductors assumes no responsibility or liability for the | |
| * use of the software, conveys no license or title under any patent, | |
| * copyright, or mask work right to the product. NXP Semiconductors | |
| * reserves the right to make changes in the software without | |
| * notification. NXP Semiconductors also make no representation or | |
| * warranty that such application will be suitable for the specified | |
| * use without further testing or modification. | |
| **********************************************************************/ | |
| /* Peripheral group ----------------------------------------------------------- */ | |
| /** @addtogroup RIT | |
| * @{ | |
| */ | |
| /* Includes ------------------------------------------------------------------- */ | |
| #include "lpc18xx_rit.h" | |
| #include "lpc18xx_cgu.h" | |
| /* If this source file built with example, the LPC18xx FW library configuration | |
| * file in each example directory ("lpc18xx_libcfg.h") must be included, | |
| * otherwise the default FW library configuration file must be included instead | |
| */ | |
| #ifdef __BUILD_WITH_EXAMPLE__ | |
| #include "lpc18xx_libcfg.h" | |
| #else | |
| #include "lpc18xx_libcfg_default.h" | |
| #endif /* __BUILD_WITH_EXAMPLE__ */ | |
| #ifdef _RIT | |
| /* Public Functions ----------------------------------------------------------- */ | |
| /** @addtogroup RIT_Public_Functions | |
| * @{ | |
| */ | |
| /******************************************************************************//* | |
| * @brief Initial for RIT | |
| * - Turn on power and clock | |
| * - Setup default register values | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @return None | |
| *******************************************************************************/ | |
| void RIT_Init(LPC_RITIMER_Type *RITx) | |
| { | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| //CGU_ConfigPPWR (CGU_PCONP_PCRIT, ENABLE); | |
| //Set up default register values | |
| RITx->COMPVAL = 0xFFFFFFFF; | |
| RITx->MASK = 0x00000000; | |
| RITx->CTRL = 0x0C; | |
| RITx->COUNTER = 0x00000000; | |
| // Turn on power and clock | |
| } | |
| /******************************************************************************//* | |
| * @brief DeInitial for RIT | |
| * - Turn off power and clock | |
| * - ReSetup default register values | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @return None | |
| *******************************************************************************/ | |
| void RIT_DeInit(LPC_RITIMER_Type *RITx) | |
| { | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| // Turn off power and clock | |
| //CGU_ConfigPPWR (CGU_PCONP_PCRIT, DISABLE); | |
| //ReSetup default register values | |
| RITx->COMPVAL = 0xFFFFFFFF; | |
| RITx->MASK = 0x00000000; | |
| RITx->CTRL = 0x0C; | |
| RITx->COUNTER = 0x00000000; | |
| } | |
| /******************************************************************************//* | |
| * @brief Set compare value, mask value and time counter value | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @param[in] time_interval timer interval value (ms) | |
| * @return None | |
| *******************************************************************************/ | |
| void RIT_TimerConfig(LPC_RITIMER_Type *RITx, uint32_t time_interval) | |
| { | |
| uint32_t clock_rate, cmp_value; | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| // Get PCLK value of RIT | |
| clock_rate = /*CGU_GetPCLK(CGU_PCLKSEL_RIT)*/ CGU_GetPCLKFrequency(CGU_PERIPHERAL_M3CORE); | |
| /* calculate compare value for RIT to generate interrupt at | |
| * specified time interval | |
| * COMPVAL = (RIT_PCLK * time_interval)/1000 | |
| * (with time_interval unit is millisecond) | |
| */ | |
| cmp_value = (clock_rate /1000) * time_interval; | |
| RITx->COMPVAL = cmp_value; | |
| /* Set timer enable clear bit to clear timer to 0 whenever | |
| * counter value equals the contents of RICOMPVAL | |
| */ | |
| RITx->CTRL |= (1<<1); | |
| } | |
| /******************************************************************************//* | |
| * @brief Enable/Disable Timer | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @param[in] NewState New State of this function | |
| * -ENABLE :Enable Timer | |
| * -DISABLE :Disable Timer | |
| * @return None | |
| *******************************************************************************/ | |
| void RIT_Cmd(LPC_RITIMER_Type *RITx, FunctionalState NewState) | |
| { | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState)); | |
| //Enable or Disable Timer | |
| if(NewState==ENABLE) | |
| { | |
| RITx->CTRL |= RIT_CTRL_TEN; | |
| } | |
| else | |
| { | |
| RITx->CTRL &= ~RIT_CTRL_TEN; | |
| } | |
| } | |
| /******************************************************************************//* | |
| * @brief Timer Enable/Disable on debug | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @param[in] NewState New State of this function | |
| * -ENABLE :The timer is halted whenever a hardware break condition occurs | |
| * -DISABLE :Hardware break has no effect on the timer operation | |
| * @return None | |
| *******************************************************************************/ | |
| void RIT_TimerDebugCmd(LPC_RITIMER_Type *RITx, FunctionalState NewState) | |
| { | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState)); | |
| //Timer Enable/Disable on break | |
| if(NewState==ENABLE) | |
| { | |
| RITx->CTRL |= RIT_CTRL_ENBR; | |
| } | |
| else | |
| { | |
| RITx->CTRL &= ~RIT_CTRL_ENBR; | |
| } | |
| } | |
| /******************************************************************************//* | |
| * @brief Check whether interrupt flag is set or not | |
| * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT | |
| * @return Current interrupt status, could be | |
| * - SET | |
| * - RESET | |
| *******************************************************************************/ | |
| IntStatus RIT_GetIntStatus(LPC_RITIMER_Type *RITx) | |
| { | |
| uint8_t result; | |
| CHECK_PARAM(PARAM_RITx(RITx)); | |
| if((RITx->CTRL&RIT_CTRL_INTEN)==1) result= SET; | |
| else return RESET; | |
| //clear interrupt flag | |
| RITx->CTRL |= RIT_CTRL_INTEN; | |
| return (IntStatus)result; | |
| } | |
| /** | |
| * @} | |
| */ | |
| #endif /* _RIT */ | |
| /** | |
| * @} | |
| */ | |
| /* --------------------------------- End Of File ------------------------------ */ |