Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /***********************************************************************//**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_rit.c
frank26080115 0:84d7747641aa 3 * @brief Contains all functions support for RIT firmware library on LPC17xx
frank26080115 0:84d7747641aa 4 * @version 2.0
frank26080115 0:84d7747641aa 5 * @date 21. May. 2010
frank26080115 0:84d7747641aa 6 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 7 **************************************************************************
frank26080115 0:84d7747641aa 8 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 9 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 10 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 11 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 12 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 13 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 14 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 15 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 16 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 17 * use without further testing or modification.
frank26080115 0:84d7747641aa 18 **********************************************************************/
frank26080115 0:84d7747641aa 19
frank26080115 0:84d7747641aa 20 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 21 /** @addtogroup RIT
frank26080115 0:84d7747641aa 22 * @{
frank26080115 0:84d7747641aa 23 */
frank26080115 0:84d7747641aa 24
frank26080115 0:84d7747641aa 25 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 26 #include "lpc17xx_rit.h"
frank26080115 0:84d7747641aa 27 #include "lpc17xx_clkpwr.h"
frank26080115 0:84d7747641aa 28
frank26080115 0:84d7747641aa 29 /* If this source file built with example, the LPC17xx FW library configuration
frank26080115 0:84d7747641aa 30 * file in each example directory ("lpc17xx_libcfg.h") must be included,
frank26080115 0:84d7747641aa 31 * otherwise the default FW library configuration file must be included instead
frank26080115 0:84d7747641aa 32 */
frank26080115 0:84d7747641aa 33 #ifdef __BUILD_WITH_EXAMPLE__
frank26080115 0:84d7747641aa 34 #include "lpc17xx_libcfg.h"
frank26080115 0:84d7747641aa 35 #else
frank26080115 0:84d7747641aa 36 #include "lpc17xx_libcfg_default.h"
frank26080115 0:84d7747641aa 37 #endif /* __BUILD_WITH_EXAMPLE__ */
frank26080115 0:84d7747641aa 38
frank26080115 0:84d7747641aa 39 #ifdef _RIT
frank26080115 0:84d7747641aa 40
frank26080115 0:84d7747641aa 41 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 42 /** @addtogroup RIT_Public_Functions
frank26080115 0:84d7747641aa 43 * @{
frank26080115 0:84d7747641aa 44 */
frank26080115 0:84d7747641aa 45
frank26080115 0:84d7747641aa 46 /******************************************************************************//*
frank26080115 0:84d7747641aa 47 * @brief Initial for RIT
frank26080115 0:84d7747641aa 48 * - Turn on power and clock
frank26080115 0:84d7747641aa 49 * - Setup default register values
frank26080115 0:84d7747641aa 50 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 51 * @return None
frank26080115 0:84d7747641aa 52 *******************************************************************************/
frank26080115 0:84d7747641aa 53 void RIT_Init(LPC_RIT_TypeDef *RITx)
frank26080115 0:84d7747641aa 54 {
frank26080115 0:84d7747641aa 55 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 56 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRIT, ENABLE);
frank26080115 0:84d7747641aa 57 //Set up default register values
frank26080115 0:84d7747641aa 58 RITx->RICOMPVAL = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 59 RITx->RIMASK = 0x00000000;
frank26080115 0:84d7747641aa 60 RITx->RICTRL = 0x0C;
frank26080115 0:84d7747641aa 61 RITx->RICOUNTER = 0x00000000;
frank26080115 0:84d7747641aa 62 // Turn on power and clock
frank26080115 0:84d7747641aa 63
frank26080115 0:84d7747641aa 64 }
frank26080115 0:84d7747641aa 65 /******************************************************************************//*
frank26080115 0:84d7747641aa 66 * @brief DeInitial for RIT
frank26080115 0:84d7747641aa 67 * - Turn off power and clock
frank26080115 0:84d7747641aa 68 * - ReSetup default register values
frank26080115 0:84d7747641aa 69 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 70 * @return None
frank26080115 0:84d7747641aa 71 *******************************************************************************/
frank26080115 0:84d7747641aa 72 void RIT_DeInit(LPC_RIT_TypeDef *RITx)
frank26080115 0:84d7747641aa 73 {
frank26080115 0:84d7747641aa 74 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 75
frank26080115 0:84d7747641aa 76 // Turn off power and clock
frank26080115 0:84d7747641aa 77 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRIT, DISABLE);
frank26080115 0:84d7747641aa 78 //ReSetup default register values
frank26080115 0:84d7747641aa 79 RITx->RICOMPVAL = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 80 RITx->RIMASK = 0x00000000;
frank26080115 0:84d7747641aa 81 RITx->RICTRL = 0x0C;
frank26080115 0:84d7747641aa 82 RITx->RICOUNTER = 0x00000000;
frank26080115 0:84d7747641aa 83 }
frank26080115 0:84d7747641aa 84
frank26080115 0:84d7747641aa 85 /******************************************************************************//*
frank26080115 0:84d7747641aa 86 * @brief Set compare value, mask value and time counter value
frank26080115 0:84d7747641aa 87 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 88 * @param[in] time_interval: timer interval value (ms)
frank26080115 0:84d7747641aa 89 * @return None
frank26080115 0:84d7747641aa 90 *******************************************************************************/
frank26080115 0:84d7747641aa 91 void RIT_TimerConfig(LPC_RIT_TypeDef *RITx, uint32_t time_interval)
frank26080115 0:84d7747641aa 92 {
frank26080115 0:84d7747641aa 93 uint32_t clock_rate, cmp_value;
frank26080115 0:84d7747641aa 94 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 95
frank26080115 0:84d7747641aa 96 // Get PCLK value of RIT
frank26080115 0:84d7747641aa 97 clock_rate = CLKPWR_GetPCLK(CLKPWR_PCLKSEL_RIT);
frank26080115 0:84d7747641aa 98
frank26080115 0:84d7747641aa 99 /* calculate compare value for RIT to generate interrupt at
frank26080115 0:84d7747641aa 100 * specified time interval
frank26080115 0:84d7747641aa 101 * COMPVAL = (RIT_PCLK * time_interval)/1000
frank26080115 0:84d7747641aa 102 * (with time_interval unit is millisecond)
frank26080115 0:84d7747641aa 103 */
frank26080115 0:84d7747641aa 104 cmp_value = (clock_rate /1000) * time_interval;
frank26080115 0:84d7747641aa 105 RITx->RICOMPVAL = cmp_value;
frank26080115 0:84d7747641aa 106
frank26080115 0:84d7747641aa 107 /* Set timer enable clear bit to clear timer to 0 whenever
frank26080115 0:84d7747641aa 108 * counter value equals the contents of RICOMPVAL
frank26080115 0:84d7747641aa 109 */
frank26080115 0:84d7747641aa 110 RITx->RICTRL |= (1<<1);
frank26080115 0:84d7747641aa 111 }
frank26080115 0:84d7747641aa 112
frank26080115 0:84d7747641aa 113
frank26080115 0:84d7747641aa 114 /******************************************************************************//*
frank26080115 0:84d7747641aa 115 * @brief Enable/Disable Timer
frank26080115 0:84d7747641aa 116 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 117 * @param[in] NewState New State of this function
frank26080115 0:84d7747641aa 118 * -ENABLE: Enable Timer
frank26080115 0:84d7747641aa 119 * -DISABLE: Disable Timer
frank26080115 0:84d7747641aa 120 * @return None
frank26080115 0:84d7747641aa 121 *******************************************************************************/
frank26080115 0:84d7747641aa 122 void RIT_Cmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState)
frank26080115 0:84d7747641aa 123 {
frank26080115 0:84d7747641aa 124 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 125 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
frank26080115 0:84d7747641aa 126
frank26080115 0:84d7747641aa 127 //Enable or Disable Timer
frank26080115 0:84d7747641aa 128 if(NewState==ENABLE)
frank26080115 0:84d7747641aa 129 {
frank26080115 0:84d7747641aa 130 RITx->RICTRL |= RIT_CTRL_TEN;
frank26080115 0:84d7747641aa 131 }
frank26080115 0:84d7747641aa 132 else
frank26080115 0:84d7747641aa 133 {
frank26080115 0:84d7747641aa 134 RITx->RICTRL &= ~RIT_CTRL_TEN;
frank26080115 0:84d7747641aa 135 }
frank26080115 0:84d7747641aa 136 }
frank26080115 0:84d7747641aa 137
frank26080115 0:84d7747641aa 138 /******************************************************************************//*
frank26080115 0:84d7747641aa 139 * @brief Timer Enable/Disable on debug
frank26080115 0:84d7747641aa 140 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 141 * @param[in] NewState New State of this function
frank26080115 0:84d7747641aa 142 * -ENABLE: The timer is halted whenever a hardware break condition occurs
frank26080115 0:84d7747641aa 143 * -DISABLE: Hardware break has no effect on the timer operation
frank26080115 0:84d7747641aa 144 * @return None
frank26080115 0:84d7747641aa 145 *******************************************************************************/
frank26080115 0:84d7747641aa 146 void RIT_TimerDebugCmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState)
frank26080115 0:84d7747641aa 147 {
frank26080115 0:84d7747641aa 148 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 149 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
frank26080115 0:84d7747641aa 150
frank26080115 0:84d7747641aa 151 //Timer Enable/Disable on break
frank26080115 0:84d7747641aa 152 if(NewState==ENABLE)
frank26080115 0:84d7747641aa 153 {
frank26080115 0:84d7747641aa 154 RITx->RICTRL |= RIT_CTRL_ENBR;
frank26080115 0:84d7747641aa 155 }
frank26080115 0:84d7747641aa 156 else
frank26080115 0:84d7747641aa 157 {
frank26080115 0:84d7747641aa 158 RITx->RICTRL &= ~RIT_CTRL_ENBR;
frank26080115 0:84d7747641aa 159 }
frank26080115 0:84d7747641aa 160 }
frank26080115 0:84d7747641aa 161 /******************************************************************************//*
frank26080115 0:84d7747641aa 162 * @brief Check whether interrupt flag is set or not
frank26080115 0:84d7747641aa 163 * @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
frank26080115 0:84d7747641aa 164 * @return Current interrupt status, could be: SET/RESET
frank26080115 0:84d7747641aa 165 *******************************************************************************/
frank26080115 0:84d7747641aa 166 IntStatus RIT_GetIntStatus(LPC_RIT_TypeDef *RITx)
frank26080115 0:84d7747641aa 167 {
frank26080115 0:84d7747641aa 168 uint8_t result;
frank26080115 0:84d7747641aa 169 CHECK_PARAM(PARAM_RITx(RITx));
frank26080115 0:84d7747641aa 170 if((RITx->RICTRL&RIT_CTRL_INTEN)==1) result= SET;
frank26080115 0:84d7747641aa 171 else return RESET;
frank26080115 0:84d7747641aa 172 //clear interrupt flag
frank26080115 0:84d7747641aa 173 RITx->RICTRL |= RIT_CTRL_INTEN;
frank26080115 0:84d7747641aa 174 return (IntStatus)result;
frank26080115 0:84d7747641aa 175 }
frank26080115 0:84d7747641aa 176
frank26080115 0:84d7747641aa 177 /**
frank26080115 0:84d7747641aa 178 * @}
frank26080115 0:84d7747641aa 179 */
frank26080115 0:84d7747641aa 180
frank26080115 0:84d7747641aa 181 #endif /* _RIT */
frank26080115 0:84d7747641aa 182
frank26080115 0:84d7747641aa 183 /**
frank26080115 0:84d7747641aa 184 * @}
frank26080115 0:84d7747641aa 185 */
frank26080115 0:84d7747641aa 186
frank26080115 0:84d7747641aa 187 /* --------------------------------- End Of File ------------------------------ */