blinky example from NXP code bundle for LPC11Uxx. No mbed library used

Dependencies:   mbed

Committer:
alexan_e
Date:
Mon May 28 00:13:23 2012 +0000
Revision:
1:0f1be4e75668

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexan_e 1:0f1be4e75668 1 /****************************************************************************
alexan_e 1:0f1be4e75668 2 * $Id:: timer32.c 9190 2012-02-16 20:59:45Z nxp41306 $
alexan_e 1:0f1be4e75668 3 * Project: NXP LPC11Uxx 32-bit timer example
alexan_e 1:0f1be4e75668 4 *
alexan_e 1:0f1be4e75668 5 * Description:
alexan_e 1:0f1be4e75668 6 * This file contains 32-bit timer code example which include timer
alexan_e 1:0f1be4e75668 7 * initialization, timer interrupt handler, and related APIs for
alexan_e 1:0f1be4e75668 8 * timer setup.
alexan_e 1:0f1be4e75668 9 *
alexan_e 1:0f1be4e75668 10 ****************************************************************************
alexan_e 1:0f1be4e75668 11 * Software that is described herein is for illustrative purposes only
alexan_e 1:0f1be4e75668 12 * which provides customers with programming information regarding the
alexan_e 1:0f1be4e75668 13 * products. This software is supplied "AS IS" without any warranties.
alexan_e 1:0f1be4e75668 14 * NXP Semiconductors assumes no responsibility or liability for the
alexan_e 1:0f1be4e75668 15 * use of the software, conveys no license or title under any patent,
alexan_e 1:0f1be4e75668 16 * copyright, or mask work right to the product. NXP Semiconductors
alexan_e 1:0f1be4e75668 17 * reserves the right to make changes in the software without
alexan_e 1:0f1be4e75668 18 * notification. NXP Semiconductors also make no representation or
alexan_e 1:0f1be4e75668 19 * warranty that such application will be suitable for the specified
alexan_e 1:0f1be4e75668 20 * use without further testing or modification.
alexan_e 1:0f1be4e75668 21
alexan_e 1:0f1be4e75668 22 * Permission to use, copy, modify, and distribute this software and its
alexan_e 1:0f1be4e75668 23 * documentation is hereby granted, under NXP Semiconductors'
alexan_e 1:0f1be4e75668 24 * relevant copyright in the software, without fee, provided that it
alexan_e 1:0f1be4e75668 25 * is used in conjunction with NXP Semiconductors microcontrollers. This
alexan_e 1:0f1be4e75668 26 * copyright, permission, and disclaimer notice must appear in all copies of
alexan_e 1:0f1be4e75668 27 * this code.
alexan_e 1:0f1be4e75668 28
alexan_e 1:0f1be4e75668 29 ****************************************************************************/
alexan_e 1:0f1be4e75668 30
alexan_e 1:0f1be4e75668 31 #include "LPC11Uxx.h"
alexan_e 1:0f1be4e75668 32 #include "timer32.h"
alexan_e 1:0f1be4e75668 33 #include "nmi.h"
alexan_e 1:0f1be4e75668 34
alexan_e 1:0f1be4e75668 35 volatile uint32_t timer32_0_counter[4] = {0,0,0,0};
alexan_e 1:0f1be4e75668 36 volatile uint32_t timer32_1_counter[4] = {0,0,0,0};
alexan_e 1:0f1be4e75668 37 volatile uint32_t timer32_0_capture[4] = {0,0,0,0};
alexan_e 1:0f1be4e75668 38 volatile uint32_t timer32_1_capture[4] = {0,0,0,0};
alexan_e 1:0f1be4e75668 39 volatile uint32_t timer32_0_period = 0;
alexan_e 1:0f1be4e75668 40 volatile uint32_t timer32_1_period = 0;
alexan_e 1:0f1be4e75668 41
alexan_e 1:0f1be4e75668 42 /*****************************************************************************
alexan_e 1:0f1be4e75668 43 ** Function name: delay32Ms
alexan_e 1:0f1be4e75668 44 **
alexan_e 1:0f1be4e75668 45 ** Descriptions: Start the timer delay in milo seconds
alexan_e 1:0f1be4e75668 46 ** until elapsed
alexan_e 1:0f1be4e75668 47 **
alexan_e 1:0f1be4e75668 48 ** parameters: timer number, Delay value in milo second
alexan_e 1:0f1be4e75668 49 **
alexan_e 1:0f1be4e75668 50 ** Returned value: None
alexan_e 1:0f1be4e75668 51 **
alexan_e 1:0f1be4e75668 52 *****************************************************************************/
alexan_e 1:0f1be4e75668 53 void delay32Ms(uint8_t timer_num, uint32_t delayInMs)
alexan_e 1:0f1be4e75668 54 {
alexan_e 1:0f1be4e75668 55 if (timer_num == 0)
alexan_e 1:0f1be4e75668 56 {
alexan_e 1:0f1be4e75668 57 /* setup timer #0 for delay */
alexan_e 1:0f1be4e75668 58 LPC_CT32B0->TCR = 0x02; /* reset timer */
alexan_e 1:0f1be4e75668 59 LPC_CT32B0->PR = 0x00; /* set prescaler to zero */
alexan_e 1:0f1be4e75668 60 LPC_CT32B0->MR0 = delayInMs * (SystemCoreClock / 1000);
alexan_e 1:0f1be4e75668 61 LPC_CT32B0->IR = 0xff; /* reset all interrrupts */
alexan_e 1:0f1be4e75668 62 LPC_CT32B0->MCR = 0x04; /* stop timer on match */
alexan_e 1:0f1be4e75668 63 LPC_CT32B0->TCR = 0x01; /* start timer */
alexan_e 1:0f1be4e75668 64
alexan_e 1:0f1be4e75668 65 /* wait until delay time has elapsed */
alexan_e 1:0f1be4e75668 66 while (LPC_CT32B0->TCR & 0x01);
alexan_e 1:0f1be4e75668 67 }
alexan_e 1:0f1be4e75668 68 else if (timer_num == 1)
alexan_e 1:0f1be4e75668 69 {
alexan_e 1:0f1be4e75668 70 /* setup timer #1 for delay */
alexan_e 1:0f1be4e75668 71 LPC_CT32B1->TCR = 0x02; /* reset timer */
alexan_e 1:0f1be4e75668 72 LPC_CT32B1->PR = 0x00; /* set prescaler to zero */
alexan_e 1:0f1be4e75668 73 LPC_CT32B1->MR0 = delayInMs * (SystemCoreClock / 1000);
alexan_e 1:0f1be4e75668 74 LPC_CT32B1->IR = 0xff; /* reset all interrrupts */
alexan_e 1:0f1be4e75668 75 LPC_CT32B1->MCR = 0x04; /* stop timer on match */
alexan_e 1:0f1be4e75668 76 LPC_CT32B1->TCR = 0x01; /* start timer */
alexan_e 1:0f1be4e75668 77
alexan_e 1:0f1be4e75668 78 /* wait until delay time has elapsed */
alexan_e 1:0f1be4e75668 79 while (LPC_CT32B1->TCR & 0x01);
alexan_e 1:0f1be4e75668 80 }
alexan_e 1:0f1be4e75668 81 return;
alexan_e 1:0f1be4e75668 82 }
alexan_e 1:0f1be4e75668 83
alexan_e 1:0f1be4e75668 84 /******************************************************************************
alexan_e 1:0f1be4e75668 85 ** Function name: TIMER32_0_IRQHandler
alexan_e 1:0f1be4e75668 86 **
alexan_e 1:0f1be4e75668 87 ** Descriptions: Timer/CounterX and captureX interrupt handler
alexan_e 1:0f1be4e75668 88 **
alexan_e 1:0f1be4e75668 89 ** parameters: None
alexan_e 1:0f1be4e75668 90 ** Returned value: None
alexan_e 1:0f1be4e75668 91 **
alexan_e 1:0f1be4e75668 92 ******************************************************************************/
alexan_e 1:0f1be4e75668 93 void TIMER32_0_IRQHandler(void)
alexan_e 1:0f1be4e75668 94 {
alexan_e 1:0f1be4e75668 95 if ( LPC_CT32B0->IR & (0x01<<0) )
alexan_e 1:0f1be4e75668 96 {
alexan_e 1:0f1be4e75668 97 LPC_CT32B0->IR = 0x1<<0; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 98 timer32_0_counter[0]++;
alexan_e 1:0f1be4e75668 99 }
alexan_e 1:0f1be4e75668 100 if ( LPC_CT32B0->IR & (0x01<<1) )
alexan_e 1:0f1be4e75668 101 {
alexan_e 1:0f1be4e75668 102 LPC_CT32B0->IR = 0x1<<1; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 103 timer32_0_counter[1]++;
alexan_e 1:0f1be4e75668 104 }
alexan_e 1:0f1be4e75668 105 if ( LPC_CT32B0->IR & (0x01<<2) )
alexan_e 1:0f1be4e75668 106 {
alexan_e 1:0f1be4e75668 107 LPC_CT32B0->IR = 0x1<<2; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 108 timer32_0_counter[2]++;
alexan_e 1:0f1be4e75668 109 }
alexan_e 1:0f1be4e75668 110 if ( LPC_CT32B0->IR & (0x01<<3) )
alexan_e 1:0f1be4e75668 111 {
alexan_e 1:0f1be4e75668 112 LPC_CT32B0->IR = 0x1<<3; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 113 timer32_0_counter[3]++;
alexan_e 1:0f1be4e75668 114 }
alexan_e 1:0f1be4e75668 115 if ( LPC_CT32B0->IR & (0x1<<4) )
alexan_e 1:0f1be4e75668 116 {
alexan_e 1:0f1be4e75668 117 LPC_CT32B0->IR = 0x1<<4; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 118 timer32_0_capture[0]++;
alexan_e 1:0f1be4e75668 119 }
alexan_e 1:0f1be4e75668 120 if ( LPC_CT32B0->IR & (0x1<<5) )
alexan_e 1:0f1be4e75668 121 {
alexan_e 1:0f1be4e75668 122 LPC_CT32B0->IR = 0x1<<5; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 123 timer32_0_capture[1]++;
alexan_e 1:0f1be4e75668 124 }
alexan_e 1:0f1be4e75668 125 if ( LPC_CT32B0->IR & (0x1<<6) )
alexan_e 1:0f1be4e75668 126 {
alexan_e 1:0f1be4e75668 127 LPC_CT32B0->IR = 0x1<<6; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 128 timer32_0_capture[2]++;
alexan_e 1:0f1be4e75668 129 }
alexan_e 1:0f1be4e75668 130 if ( LPC_CT32B0->IR & (0x1<<7) )
alexan_e 1:0f1be4e75668 131 {
alexan_e 1:0f1be4e75668 132 LPC_CT32B0->IR = 0x1<<7; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 133 timer32_0_capture[3]++;
alexan_e 1:0f1be4e75668 134 }
alexan_e 1:0f1be4e75668 135 return;
alexan_e 1:0f1be4e75668 136 }
alexan_e 1:0f1be4e75668 137
alexan_e 1:0f1be4e75668 138 /******************************************************************************
alexan_e 1:0f1be4e75668 139 ** Function name: TIMER32_1_IRQHandler
alexan_e 1:0f1be4e75668 140 **
alexan_e 1:0f1be4e75668 141 ** Descriptions: Timer/CounterX and captureX interrupt handler
alexan_e 1:0f1be4e75668 142 **
alexan_e 1:0f1be4e75668 143 ** parameters: None
alexan_e 1:0f1be4e75668 144 ** Returned value: None
alexan_e 1:0f1be4e75668 145 **
alexan_e 1:0f1be4e75668 146 ******************************************************************************/
alexan_e 1:0f1be4e75668 147 void TIMER32_1_IRQHandler(void)
alexan_e 1:0f1be4e75668 148 {
alexan_e 1:0f1be4e75668 149 if ( LPC_CT32B1->IR & (0x01<<0) )
alexan_e 1:0f1be4e75668 150 {
alexan_e 1:0f1be4e75668 151 LPC_CT32B1->IR = 0x1<<0; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 152 timer32_1_counter[0]++;
alexan_e 1:0f1be4e75668 153 }
alexan_e 1:0f1be4e75668 154 if ( LPC_CT32B1->IR & (0x01<<1) )
alexan_e 1:0f1be4e75668 155 {
alexan_e 1:0f1be4e75668 156 LPC_CT32B1->IR = 0x1<<1; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 157 timer32_1_counter[1]++;
alexan_e 1:0f1be4e75668 158 }
alexan_e 1:0f1be4e75668 159 if ( LPC_CT32B1->IR & (0x01<<2) )
alexan_e 1:0f1be4e75668 160 {
alexan_e 1:0f1be4e75668 161 LPC_CT32B1->IR = 0x1<<2; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 162 timer32_1_counter[2]++;
alexan_e 1:0f1be4e75668 163 }
alexan_e 1:0f1be4e75668 164 if ( LPC_CT32B1->IR & (0x01<<3) )
alexan_e 1:0f1be4e75668 165 {
alexan_e 1:0f1be4e75668 166 LPC_CT32B1->IR = 0x1<<3; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 167 timer32_1_counter[3]++;
alexan_e 1:0f1be4e75668 168 }
alexan_e 1:0f1be4e75668 169 if ( LPC_CT32B1->IR & (0x1<<4) )
alexan_e 1:0f1be4e75668 170 {
alexan_e 1:0f1be4e75668 171 LPC_CT32B1->IR = 0x1<<4; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 172 timer32_1_capture[0]++;
alexan_e 1:0f1be4e75668 173 }
alexan_e 1:0f1be4e75668 174 if ( LPC_CT32B1->IR & (0x1<<5) )
alexan_e 1:0f1be4e75668 175 {
alexan_e 1:0f1be4e75668 176 LPC_CT32B1->IR = 0x1<<5; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 177 timer32_1_capture[1]++;
alexan_e 1:0f1be4e75668 178 }
alexan_e 1:0f1be4e75668 179 if ( LPC_CT32B1->IR & (0x1<<6) )
alexan_e 1:0f1be4e75668 180 {
alexan_e 1:0f1be4e75668 181 LPC_CT32B1->IR = 0x1<<6; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 182 timer32_1_capture[2]++;
alexan_e 1:0f1be4e75668 183 }
alexan_e 1:0f1be4e75668 184 if ( LPC_CT32B1->IR & (0x1<<7) )
alexan_e 1:0f1be4e75668 185 {
alexan_e 1:0f1be4e75668 186 LPC_CT32B1->IR = 0x1<<7; /* clear interrupt flag */
alexan_e 1:0f1be4e75668 187 timer32_1_capture[3]++;
alexan_e 1:0f1be4e75668 188 }
alexan_e 1:0f1be4e75668 189 return;
alexan_e 1:0f1be4e75668 190 }
alexan_e 1:0f1be4e75668 191
alexan_e 1:0f1be4e75668 192 /******************************************************************************
alexan_e 1:0f1be4e75668 193 ** Function name: enable_timer
alexan_e 1:0f1be4e75668 194 **
alexan_e 1:0f1be4e75668 195 ** Descriptions: Enable timer
alexan_e 1:0f1be4e75668 196 **
alexan_e 1:0f1be4e75668 197 ** parameters: timer number: 0 or 1
alexan_e 1:0f1be4e75668 198 ** Returned value: None
alexan_e 1:0f1be4e75668 199 **
alexan_e 1:0f1be4e75668 200 ******************************************************************************/
alexan_e 1:0f1be4e75668 201 void enable_timer32(uint8_t timer_num)
alexan_e 1:0f1be4e75668 202 {
alexan_e 1:0f1be4e75668 203 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 204 {
alexan_e 1:0f1be4e75668 205 LPC_CT32B0->TCR = 1;
alexan_e 1:0f1be4e75668 206 }
alexan_e 1:0f1be4e75668 207 else
alexan_e 1:0f1be4e75668 208 {
alexan_e 1:0f1be4e75668 209 LPC_CT32B1->TCR = 1;
alexan_e 1:0f1be4e75668 210 }
alexan_e 1:0f1be4e75668 211 return;
alexan_e 1:0f1be4e75668 212 }
alexan_e 1:0f1be4e75668 213
alexan_e 1:0f1be4e75668 214 /******************************************************************************
alexan_e 1:0f1be4e75668 215 ** Function name: disable_timer
alexan_e 1:0f1be4e75668 216 **
alexan_e 1:0f1be4e75668 217 ** Descriptions: Disable timer
alexan_e 1:0f1be4e75668 218 **
alexan_e 1:0f1be4e75668 219 ** parameters: timer number: 0 or 1
alexan_e 1:0f1be4e75668 220 ** Returned value: None
alexan_e 1:0f1be4e75668 221 **
alexan_e 1:0f1be4e75668 222 ******************************************************************************/
alexan_e 1:0f1be4e75668 223 void disable_timer32(uint8_t timer_num)
alexan_e 1:0f1be4e75668 224 {
alexan_e 1:0f1be4e75668 225 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 226 {
alexan_e 1:0f1be4e75668 227 LPC_CT32B0->TCR = 0;
alexan_e 1:0f1be4e75668 228 }
alexan_e 1:0f1be4e75668 229 else
alexan_e 1:0f1be4e75668 230 {
alexan_e 1:0f1be4e75668 231 LPC_CT32B1->TCR = 0;
alexan_e 1:0f1be4e75668 232 }
alexan_e 1:0f1be4e75668 233 return;
alexan_e 1:0f1be4e75668 234 }
alexan_e 1:0f1be4e75668 235
alexan_e 1:0f1be4e75668 236 /******************************************************************************
alexan_e 1:0f1be4e75668 237 ** Function name: reset_timer
alexan_e 1:0f1be4e75668 238 **
alexan_e 1:0f1be4e75668 239 ** Descriptions: Reset timer
alexan_e 1:0f1be4e75668 240 **
alexan_e 1:0f1be4e75668 241 ** parameters: timer number: 0 or 1
alexan_e 1:0f1be4e75668 242 ** Returned value: None
alexan_e 1:0f1be4e75668 243 **
alexan_e 1:0f1be4e75668 244 ******************************************************************************/
alexan_e 1:0f1be4e75668 245 void reset_timer32(uint8_t timer_num)
alexan_e 1:0f1be4e75668 246 {
alexan_e 1:0f1be4e75668 247 uint32_t regVal;
alexan_e 1:0f1be4e75668 248
alexan_e 1:0f1be4e75668 249 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 250 {
alexan_e 1:0f1be4e75668 251 regVal = LPC_CT32B0->TCR;
alexan_e 1:0f1be4e75668 252 regVal |= 0x02;
alexan_e 1:0f1be4e75668 253 LPC_CT32B0->TCR = regVal;
alexan_e 1:0f1be4e75668 254 }
alexan_e 1:0f1be4e75668 255 else
alexan_e 1:0f1be4e75668 256 {
alexan_e 1:0f1be4e75668 257 regVal = LPC_CT32B1->TCR;
alexan_e 1:0f1be4e75668 258 regVal |= 0x02;
alexan_e 1:0f1be4e75668 259 LPC_CT32B1->TCR = regVal;
alexan_e 1:0f1be4e75668 260 }
alexan_e 1:0f1be4e75668 261 return;
alexan_e 1:0f1be4e75668 262 }
alexan_e 1:0f1be4e75668 263
alexan_e 1:0f1be4e75668 264 /******************************************************************************
alexan_e 1:0f1be4e75668 265 ** Function name: set_timer_capture
alexan_e 1:0f1be4e75668 266 **
alexan_e 1:0f1be4e75668 267 ** Descriptions: Set timer capture based on location
alexan_e 1:0f1be4e75668 268 **
alexan_e 1:0f1be4e75668 269 ** parameters: timer number: 0~1, location 0~2
alexan_e 1:0f1be4e75668 270 ** Returned value: None
alexan_e 1:0f1be4e75668 271 **
alexan_e 1:0f1be4e75668 272 ******************************************************************************/
alexan_e 1:0f1be4e75668 273 void set_timer32_capture(uint8_t timer_num, uint8_t location )
alexan_e 1:0f1be4e75668 274 {
alexan_e 1:0f1be4e75668 275 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 276 {
alexan_e 1:0f1be4e75668 277 /* Timer0_32 I/O config */
alexan_e 1:0f1be4e75668 278 if ( location == 0 )
alexan_e 1:0f1be4e75668 279 {
alexan_e 1:0f1be4e75668 280 LPC_IOCON->PIO1_28 &= ~0x07;
alexan_e 1:0f1be4e75668 281 LPC_IOCON->PIO1_28 |= 0x01; /* Timer0_32 CAP0 */
alexan_e 1:0f1be4e75668 282 LPC_IOCON->PIO1_29 &= ~0x07;
alexan_e 1:0f1be4e75668 283 LPC_IOCON->PIO1_29 |= 0x02; /* Timer0_32 CAP1 */
alexan_e 1:0f1be4e75668 284 }
alexan_e 1:0f1be4e75668 285 else if ( location == 1 )
alexan_e 1:0f1be4e75668 286 {
alexan_e 1:0f1be4e75668 287 LPC_IOCON->PIO0_17 &= ~0x07;
alexan_e 1:0f1be4e75668 288 LPC_IOCON->PIO0_17 |= 0x02; /* Timer0_32 CAP0 */
alexan_e 1:0f1be4e75668 289 }
alexan_e 1:0f1be4e75668 290 else
alexan_e 1:0f1be4e75668 291 {
alexan_e 1:0f1be4e75668 292 while ( 1 ); /* Fatal location number error */
alexan_e 1:0f1be4e75668 293 }
alexan_e 1:0f1be4e75668 294 }
alexan_e 1:0f1be4e75668 295 else
alexan_e 1:0f1be4e75668 296 {
alexan_e 1:0f1be4e75668 297 /* Timer1_32 I/O config */
alexan_e 1:0f1be4e75668 298 if ( location == 0 )
alexan_e 1:0f1be4e75668 299 {
alexan_e 1:0f1be4e75668 300 // LPC_IOCON->PIO1_4 &= ~0x07; /* Timer1_32 I/O config */
alexan_e 1:0f1be4e75668 301 // LPC_IOCON->PIO1_4 |= 0x01; /* Timer1_32 CAP0 */
alexan_e 1:0f1be4e75668 302 // LPC_IOCON->PIO1_5 &= ~0x07;
alexan_e 1:0f1be4e75668 303 // LPC_IOCON->PIO1_5 |= 0x01; /* Timer1_32 CAP1 */
alexan_e 1:0f1be4e75668 304 }
alexan_e 1:0f1be4e75668 305 else if ( location == 1 )
alexan_e 1:0f1be4e75668 306 {
alexan_e 1:0f1be4e75668 307 LPC_IOCON->TMS_PIO0_12 &= ~0x07;
alexan_e 1:0f1be4e75668 308 LPC_IOCON->TMS_PIO0_12 |= 0x03; /* Timer1_32 CAP0 */
alexan_e 1:0f1be4e75668 309 }
alexan_e 1:0f1be4e75668 310 else
alexan_e 1:0f1be4e75668 311 {
alexan_e 1:0f1be4e75668 312 while ( 1 ); /* Fatal location number error */
alexan_e 1:0f1be4e75668 313 }
alexan_e 1:0f1be4e75668 314 }
alexan_e 1:0f1be4e75668 315 return;
alexan_e 1:0f1be4e75668 316 }
alexan_e 1:0f1be4e75668 317
alexan_e 1:0f1be4e75668 318 /******************************************************************************
alexan_e 1:0f1be4e75668 319 ** Function name: set_timer_match
alexan_e 1:0f1be4e75668 320 **
alexan_e 1:0f1be4e75668 321 ** Descriptions: Set timer match based on location
alexan_e 1:0f1be4e75668 322 **
alexan_e 1:0f1be4e75668 323 ** parameters: timer number: 0~1, location 0~2
alexan_e 1:0f1be4e75668 324 ** Returned value: None
alexan_e 1:0f1be4e75668 325 **
alexan_e 1:0f1be4e75668 326 ******************************************************************************/
alexan_e 1:0f1be4e75668 327 void set_timer32_match(uint8_t timer_num, uint8_t match_enable, uint8_t location)
alexan_e 1:0f1be4e75668 328 {
alexan_e 1:0f1be4e75668 329 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 330 {
alexan_e 1:0f1be4e75668 331 if ( match_enable & 0x01 )
alexan_e 1:0f1be4e75668 332 {
alexan_e 1:0f1be4e75668 333 if ( location == 0 )
alexan_e 1:0f1be4e75668 334 {
alexan_e 1:0f1be4e75668 335 LPC_IOCON->PIO0_18 &= ~0x07;
alexan_e 1:0f1be4e75668 336 LPC_IOCON->PIO0_18 |= 0x02; /* Timer0_32 MAT0 */
alexan_e 1:0f1be4e75668 337 }
alexan_e 1:0f1be4e75668 338 else if ( location == 1 )
alexan_e 1:0f1be4e75668 339 {
alexan_e 1:0f1be4e75668 340 LPC_IOCON->PIO1_24 &= ~0x07;
alexan_e 1:0f1be4e75668 341 LPC_IOCON->PIO1_24 |= 0x01; /* Timer0_32 MAT0 */
alexan_e 1:0f1be4e75668 342 }
alexan_e 1:0f1be4e75668 343 }
alexan_e 1:0f1be4e75668 344 if ( match_enable & 0x02 )
alexan_e 1:0f1be4e75668 345 {
alexan_e 1:0f1be4e75668 346 if ( location == 0 )
alexan_e 1:0f1be4e75668 347 {
alexan_e 1:0f1be4e75668 348 LPC_IOCON->PIO0_19 &= ~0x07;
alexan_e 1:0f1be4e75668 349 LPC_IOCON->PIO0_19 |= 0x02; /* Timer0_32 MAT1 */
alexan_e 1:0f1be4e75668 350 }
alexan_e 1:0f1be4e75668 351 else if ( location == 1 )
alexan_e 1:0f1be4e75668 352 {
alexan_e 1:0f1be4e75668 353 LPC_IOCON->PIO1_25 &= ~0x07;
alexan_e 1:0f1be4e75668 354 LPC_IOCON->PIO1_25 |= 0x01; /* Timer0_32 MAT1 */
alexan_e 1:0f1be4e75668 355 }
alexan_e 1:0f1be4e75668 356 }
alexan_e 1:0f1be4e75668 357 if ( match_enable & 0x04 )
alexan_e 1:0f1be4e75668 358 {
alexan_e 1:0f1be4e75668 359 if ( location == 0 )
alexan_e 1:0f1be4e75668 360 {
alexan_e 1:0f1be4e75668 361 LPC_IOCON->PIO0_1 &= ~0x07;
alexan_e 1:0f1be4e75668 362 LPC_IOCON->PIO0_1 |= 0x02; /* Timer0_32 MAT2 */
alexan_e 1:0f1be4e75668 363 }
alexan_e 1:0f1be4e75668 364 else if ( location == 1 )
alexan_e 1:0f1be4e75668 365 {
alexan_e 1:0f1be4e75668 366 LPC_IOCON->PIO1_26 &= ~0x07;
alexan_e 1:0f1be4e75668 367 LPC_IOCON->PIO1_26 |= 0x01; /* Timer0_32 MAT2 */
alexan_e 1:0f1be4e75668 368 }
alexan_e 1:0f1be4e75668 369 }
alexan_e 1:0f1be4e75668 370 if ( match_enable & 0x08 )
alexan_e 1:0f1be4e75668 371 {
alexan_e 1:0f1be4e75668 372 if ( location == 0 )
alexan_e 1:0f1be4e75668 373 {
alexan_e 1:0f1be4e75668 374 LPC_IOCON->TDI_PIO0_11 &= ~0x07;
alexan_e 1:0f1be4e75668 375 LPC_IOCON->TDI_PIO0_11 |= 0x03; /* Timer0_32 MAT3 */
alexan_e 1:0f1be4e75668 376 }
alexan_e 1:0f1be4e75668 377 else if ( location == 1 )
alexan_e 1:0f1be4e75668 378 {
alexan_e 1:0f1be4e75668 379 LPC_IOCON->PIO1_27 &= ~0x07;
alexan_e 1:0f1be4e75668 380 LPC_IOCON->PIO1_27 |= 0x01; /* Timer0_32 MAT3 */
alexan_e 1:0f1be4e75668 381 }
alexan_e 1:0f1be4e75668 382 }
alexan_e 1:0f1be4e75668 383 }
alexan_e 1:0f1be4e75668 384 else if ( timer_num == 1 )
alexan_e 1:0f1be4e75668 385 {
alexan_e 1:0f1be4e75668 386 if ( match_enable & 0x01 )
alexan_e 1:0f1be4e75668 387 {
alexan_e 1:0f1be4e75668 388 if ( location == 0 )
alexan_e 1:0f1be4e75668 389 {
alexan_e 1:0f1be4e75668 390 // LPC_IOCON->PIO1_0 &= ~0x07;
alexan_e 1:0f1be4e75668 391 // LPC_IOCON->PIO1_0 |= 0x01; /* Timer1_32 MAT0 */
alexan_e 1:0f1be4e75668 392 }
alexan_e 1:0f1be4e75668 393 else if ( location == 1 )
alexan_e 1:0f1be4e75668 394 {
alexan_e 1:0f1be4e75668 395 LPC_IOCON->TDO_PIO0_13 &= ~0x07;
alexan_e 1:0f1be4e75668 396 LPC_IOCON->TDO_PIO0_13 |= 0x03; /* Timer1_32 MAT0 */
alexan_e 1:0f1be4e75668 397 }
alexan_e 1:0f1be4e75668 398 }
alexan_e 1:0f1be4e75668 399 if ( match_enable & 0x02 )
alexan_e 1:0f1be4e75668 400 {
alexan_e 1:0f1be4e75668 401 if ( location == 0 )
alexan_e 1:0f1be4e75668 402 {
alexan_e 1:0f1be4e75668 403 // LPC_IOCON->PIO1_1 &= ~0x07;
alexan_e 1:0f1be4e75668 404 // LPC_IOCON->PIO1_1 |= 0x01; /* Timer1_32 MAT1 */
alexan_e 1:0f1be4e75668 405 }
alexan_e 1:0f1be4e75668 406 else if ( location == 1 )
alexan_e 1:0f1be4e75668 407 {
alexan_e 1:0f1be4e75668 408 LPC_IOCON->TRST_PIO0_14 &= ~0x07;
alexan_e 1:0f1be4e75668 409 LPC_IOCON->TRST_PIO0_14 |= 0x03; /* Timer1_32 MAT1 */
alexan_e 1:0f1be4e75668 410 }
alexan_e 1:0f1be4e75668 411 }
alexan_e 1:0f1be4e75668 412 if ( match_enable & 0x04 )
alexan_e 1:0f1be4e75668 413 {
alexan_e 1:0f1be4e75668 414 if ( location == 0 )
alexan_e 1:0f1be4e75668 415 {
alexan_e 1:0f1be4e75668 416 // LPC_IOCON->PIO1_2 &= ~0x07;
alexan_e 1:0f1be4e75668 417 // LPC_IOCON->PIO1_2 |= 0x01; /* Timer1_32 MAT2 */
alexan_e 1:0f1be4e75668 418 }
alexan_e 1:0f1be4e75668 419 else if ( location == 1 )
alexan_e 1:0f1be4e75668 420 {
alexan_e 1:0f1be4e75668 421 #if __SWD_DISABLED
alexan_e 1:0f1be4e75668 422 LPC_IOCON->SWDIO_PIO0_15 &= ~0x07;
alexan_e 1:0f1be4e75668 423 LPC_IOCON->SWDIO_PIO0_15 |= 0x03; /* Timer1_32 MAT2 */
alexan_e 1:0f1be4e75668 424 #endif
alexan_e 1:0f1be4e75668 425 }
alexan_e 1:0f1be4e75668 426 }
alexan_e 1:0f1be4e75668 427 if ( match_enable & 0x08 )
alexan_e 1:0f1be4e75668 428 {
alexan_e 1:0f1be4e75668 429 if ( location == 0 )
alexan_e 1:0f1be4e75668 430 {
alexan_e 1:0f1be4e75668 431 // LPC_IOCON->PIO1_3 &= ~0x07;
alexan_e 1:0f1be4e75668 432 // LPC_IOCON->PIO1_3 |= 0x01; /* Timer1_32 MAT3 */
alexan_e 1:0f1be4e75668 433 }
alexan_e 1:0f1be4e75668 434 else if ( location == 1 )
alexan_e 1:0f1be4e75668 435 {
alexan_e 1:0f1be4e75668 436 LPC_IOCON->PIO0_16 &= ~0x07;
alexan_e 1:0f1be4e75668 437 LPC_IOCON->PIO0_16 |= 0x02; /* Timer1_32 MAT3 */
alexan_e 1:0f1be4e75668 438 }
alexan_e 1:0f1be4e75668 439 }
alexan_e 1:0f1be4e75668 440 }
alexan_e 1:0f1be4e75668 441 return;
alexan_e 1:0f1be4e75668 442 }
alexan_e 1:0f1be4e75668 443
alexan_e 1:0f1be4e75668 444 /******************************************************************************
alexan_e 1:0f1be4e75668 445 ** Function name: init_timer
alexan_e 1:0f1be4e75668 446 **
alexan_e 1:0f1be4e75668 447 ** Descriptions: Initialize timer, set timer interval, reset timer,
alexan_e 1:0f1be4e75668 448 ** install timer interrupt handler
alexan_e 1:0f1be4e75668 449 **
alexan_e 1:0f1be4e75668 450 ** parameters: timer number and timer interval
alexan_e 1:0f1be4e75668 451 ** Returned value: None
alexan_e 1:0f1be4e75668 452 **
alexan_e 1:0f1be4e75668 453 ******************************************************************************/
alexan_e 1:0f1be4e75668 454 void init_timer32(uint8_t timer_num, uint32_t TimerInterval)
alexan_e 1:0f1be4e75668 455 {
alexan_e 1:0f1be4e75668 456 uint32_t i;
alexan_e 1:0f1be4e75668 457
alexan_e 1:0f1be4e75668 458 if ( timer_num == 0 )
alexan_e 1:0f1be4e75668 459 {
alexan_e 1:0f1be4e75668 460 /* Some of the I/O pins need to be clearfully planned if
alexan_e 1:0f1be4e75668 461 you use below module because JTAG and TIMER CAP/MAT pins are muxed. */
alexan_e 1:0f1be4e75668 462 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<9);
alexan_e 1:0f1be4e75668 463
alexan_e 1:0f1be4e75668 464 LPC_CT32B0->MR0 = TimerInterval;
alexan_e 1:0f1be4e75668 465 #if TIMER_MATCH
alexan_e 1:0f1be4e75668 466 for ( i = 0; i < 4; i++ )
alexan_e 1:0f1be4e75668 467 {
alexan_e 1:0f1be4e75668 468 timer32_0_counter[i] = 0;
alexan_e 1:0f1be4e75668 469 }
alexan_e 1:0f1be4e75668 470 set_timer32_match(timer_num, 0x0F, 0);
alexan_e 1:0f1be4e75668 471 LPC_CT32B0->EMR &= ~(0xFF<<4);
alexan_e 1:0f1be4e75668 472 LPC_CT32B0->EMR |= ((0x3<<4)|(0x3<<6)|(0x3<<8)|(0x3<<10)); /* MR0/1/2/3 Toggle */
alexan_e 1:0f1be4e75668 473 #else
alexan_e 1:0f1be4e75668 474 for ( i = 0; i < 4; i++ )
alexan_e 1:0f1be4e75668 475 {
alexan_e 1:0f1be4e75668 476 timer32_0_capture[i] = 0;
alexan_e 1:0f1be4e75668 477 }
alexan_e 1:0f1be4e75668 478 set_timer32_capture(timer_num, 0 );
alexan_e 1:0f1be4e75668 479 /* Capture 0 on rising edge, interrupt enable. */
alexan_e 1:0f1be4e75668 480 LPC_CT32B0->CCR = (0x5<<0)|(0x5<<3);
alexan_e 1:0f1be4e75668 481 #endif
alexan_e 1:0f1be4e75668 482 LPC_CT32B0->MCR = 3; /* Interrupt and Reset on MR0 */
alexan_e 1:0f1be4e75668 483
alexan_e 1:0f1be4e75668 484 /* Enable the TIMER0 Interrupt */
alexan_e 1:0f1be4e75668 485 #if NMI_ENABLED
alexan_e 1:0f1be4e75668 486 NVIC_DisableIRQ( TIMER_32_0_IRQn );
alexan_e 1:0f1be4e75668 487 NMI_Init( TIMER_32_0_IRQn );
alexan_e 1:0f1be4e75668 488 #else
alexan_e 1:0f1be4e75668 489 NVIC_EnableIRQ(TIMER_32_0_IRQn);
alexan_e 1:0f1be4e75668 490 #endif
alexan_e 1:0f1be4e75668 491 }
alexan_e 1:0f1be4e75668 492 else if ( timer_num == 1 )
alexan_e 1:0f1be4e75668 493 {
alexan_e 1:0f1be4e75668 494 /* Some of the I/O pins need to be clearfully planned if
alexan_e 1:0f1be4e75668 495 you use below module because JTAG and TIMER CAP/MAT pins are muxed. */
alexan_e 1:0f1be4e75668 496 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<10);
alexan_e 1:0f1be4e75668 497
alexan_e 1:0f1be4e75668 498 LPC_CT32B1->MR0 = TimerInterval;
alexan_e 1:0f1be4e75668 499 #if TIMER_MATCH
alexan_e 1:0f1be4e75668 500 for ( i = 0; i < 4; i++ )
alexan_e 1:0f1be4e75668 501 {
alexan_e 1:0f1be4e75668 502 timer32_1_counter[i] = 0;
alexan_e 1:0f1be4e75668 503 }
alexan_e 1:0f1be4e75668 504 set_timer32_match(timer_num, 0x0F, 0);
alexan_e 1:0f1be4e75668 505 LPC_CT32B1->EMR &= ~(0xFF<<4);
alexan_e 1:0f1be4e75668 506 LPC_CT32B1->EMR |= ((0x3<<4)|(0x3<<6)|(0x3<<8)|(0x3<<10)); /* MR0/1/2 Toggle */
alexan_e 1:0f1be4e75668 507 #else
alexan_e 1:0f1be4e75668 508 for ( i = 0; i < 4; i++ )
alexan_e 1:0f1be4e75668 509 {
alexan_e 1:0f1be4e75668 510 timer32_1_capture[i] = 0;
alexan_e 1:0f1be4e75668 511 }
alexan_e 1:0f1be4e75668 512 set_timer32_capture(timer_num, 0 );
alexan_e 1:0f1be4e75668 513 /* Capture 0 on rising edge, interrupt enable. */
alexan_e 1:0f1be4e75668 514 LPC_CT32B1->CCR = (0x5<<0)|(0x5<<3);
alexan_e 1:0f1be4e75668 515 #endif
alexan_e 1:0f1be4e75668 516 LPC_CT32B1->MCR = 3; /* Interrupt and Reset on MR0 */
alexan_e 1:0f1be4e75668 517
alexan_e 1:0f1be4e75668 518 /* Enable the TIMER1 Interrupt */
alexan_e 1:0f1be4e75668 519 #if NMI_ENABLED
alexan_e 1:0f1be4e75668 520 NVIC_DisableIRQ( TIMER_32_1_IRQn );
alexan_e 1:0f1be4e75668 521 NMI_Init( TIMER_32_1_IRQn );
alexan_e 1:0f1be4e75668 522 #else
alexan_e 1:0f1be4e75668 523 NVIC_EnableIRQ(TIMER_32_1_IRQn);
alexan_e 1:0f1be4e75668 524 #endif
alexan_e 1:0f1be4e75668 525 }
alexan_e 1:0f1be4e75668 526 return;
alexan_e 1:0f1be4e75668 527 }
alexan_e 1:0f1be4e75668 528 /******************************************************************************
alexan_e 1:0f1be4e75668 529 ** Function name: init_timer32PWM
alexan_e 1:0f1be4e75668 530 **
alexan_e 1:0f1be4e75668 531 ** Descriptions: Initialize timer as PWM
alexan_e 1:0f1be4e75668 532 **
alexan_e 1:0f1be4e75668 533 ** parameters: timer number, period and match enable:
alexan_e 1:0f1be4e75668 534 ** match_enable[0] = PWM for MAT0
alexan_e 1:0f1be4e75668 535 ** match_enable[1] = PWM for MAT1
alexan_e 1:0f1be4e75668 536 ** match_enable[2] = PWM for MAT2
alexan_e 1:0f1be4e75668 537 ** Returned value: None
alexan_e 1:0f1be4e75668 538 **
alexan_e 1:0f1be4e75668 539 ******************************************************************************/
alexan_e 1:0f1be4e75668 540 void init_timer32PWM(uint8_t timer_num, uint32_t period, uint8_t match_enable)
alexan_e 1:0f1be4e75668 541 {
alexan_e 1:0f1be4e75668 542 disable_timer32(timer_num);
alexan_e 1:0f1be4e75668 543 if (timer_num == 1)
alexan_e 1:0f1be4e75668 544 {
alexan_e 1:0f1be4e75668 545 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<10);
alexan_e 1:0f1be4e75668 546
alexan_e 1:0f1be4e75668 547 /* Setup the external match register */
alexan_e 1:0f1be4e75668 548 LPC_CT32B1->EMR = (1<<EMC3)|(1<<EMC2)|(2<<EMC1)|(1<<EMC0)|MATCH3|(match_enable);
alexan_e 1:0f1be4e75668 549
alexan_e 1:0f1be4e75668 550 /* Setup the outputs */
alexan_e 1:0f1be4e75668 551 /* If match0 is enabled, set the output, use location 0 for test. */
alexan_e 1:0f1be4e75668 552 set_timer32_match( timer_num, match_enable, 0 );
alexan_e 1:0f1be4e75668 553
alexan_e 1:0f1be4e75668 554 /* Enable the selected PWMs and enable Match3 */
alexan_e 1:0f1be4e75668 555 LPC_CT32B1->PWMC = MATCH3|(match_enable);
alexan_e 1:0f1be4e75668 556
alexan_e 1:0f1be4e75668 557 /* Setup the match registers */
alexan_e 1:0f1be4e75668 558 /* set the period value to a global variable */
alexan_e 1:0f1be4e75668 559 timer32_1_period = period;
alexan_e 1:0f1be4e75668 560 LPC_CT32B1->MR3 = timer32_1_period;
alexan_e 1:0f1be4e75668 561 LPC_CT32B1->MR0 = timer32_1_period/2;
alexan_e 1:0f1be4e75668 562 LPC_CT32B1->MR1 = timer32_1_period/2;
alexan_e 1:0f1be4e75668 563 LPC_CT32B1->MR2 = timer32_1_period/2;
alexan_e 1:0f1be4e75668 564 LPC_CT32B1->MCR = 1<<10; /* Reset on MR3 */
alexan_e 1:0f1be4e75668 565 }
alexan_e 1:0f1be4e75668 566 else
alexan_e 1:0f1be4e75668 567 {
alexan_e 1:0f1be4e75668 568 /* Some of the I/O pins need to be clearfully planned if
alexan_e 1:0f1be4e75668 569 you use below module because JTAG and TIMER CAP/MAT pins are muxed. */
alexan_e 1:0f1be4e75668 570 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<9);
alexan_e 1:0f1be4e75668 571
alexan_e 1:0f1be4e75668 572 /* Setup the external match register */
alexan_e 1:0f1be4e75668 573 LPC_CT32B0->EMR = (1<<EMC3)|(2<<EMC2)|(1<<EMC1)|(1<<EMC0)|MATCH3|(match_enable);
alexan_e 1:0f1be4e75668 574
alexan_e 1:0f1be4e75668 575 /* Setup the outputs */
alexan_e 1:0f1be4e75668 576 /* If match0 is enabled, set the output, use location 0 for test. */
alexan_e 1:0f1be4e75668 577 set_timer32_match( timer_num, match_enable, 0 );
alexan_e 1:0f1be4e75668 578
alexan_e 1:0f1be4e75668 579 /* Enable the selected PWMs and enable Match3 */
alexan_e 1:0f1be4e75668 580 LPC_CT32B0->PWMC = MATCH3|(match_enable);
alexan_e 1:0f1be4e75668 581
alexan_e 1:0f1be4e75668 582 /* Setup the match registers */
alexan_e 1:0f1be4e75668 583 /* set the period value to a global variable */
alexan_e 1:0f1be4e75668 584 timer32_0_period = period;
alexan_e 1:0f1be4e75668 585 LPC_CT32B0->MR3 = timer32_0_period;
alexan_e 1:0f1be4e75668 586 LPC_CT32B0->MR0 = timer32_0_period/2;
alexan_e 1:0f1be4e75668 587 LPC_CT32B0->MR1 = timer32_0_period/2;
alexan_e 1:0f1be4e75668 588 LPC_CT32B0->MR2 = timer32_0_period/2;
alexan_e 1:0f1be4e75668 589 LPC_CT32B0->MCR = 1<<10; /* Reset on MR3 */
alexan_e 1:0f1be4e75668 590 }
alexan_e 1:0f1be4e75668 591 }
alexan_e 1:0f1be4e75668 592
alexan_e 1:0f1be4e75668 593 /******************************************************************************
alexan_e 1:0f1be4e75668 594 ** Function name: pwm32_setMatch
alexan_e 1:0f1be4e75668 595 **
alexan_e 1:0f1be4e75668 596 ** Descriptions: Set the pwm32 match values
alexan_e 1:0f1be4e75668 597 **
alexan_e 1:0f1be4e75668 598 ** parameters: timer number, match numner and the value
alexan_e 1:0f1be4e75668 599 **
alexan_e 1:0f1be4e75668 600 ** Returned value: None
alexan_e 1:0f1be4e75668 601 **
alexan_e 1:0f1be4e75668 602 ******************************************************************************/
alexan_e 1:0f1be4e75668 603 void setMatch_timer32PWM (uint8_t timer_num, uint8_t match_nr, uint32_t value)
alexan_e 1:0f1be4e75668 604 {
alexan_e 1:0f1be4e75668 605 if (timer_num)
alexan_e 1:0f1be4e75668 606 {
alexan_e 1:0f1be4e75668 607 switch (match_nr)
alexan_e 1:0f1be4e75668 608 {
alexan_e 1:0f1be4e75668 609 case 0:
alexan_e 1:0f1be4e75668 610 LPC_CT32B1->MR0 = value;
alexan_e 1:0f1be4e75668 611 break;
alexan_e 1:0f1be4e75668 612 case 1:
alexan_e 1:0f1be4e75668 613 LPC_CT32B1->MR1 = value;
alexan_e 1:0f1be4e75668 614 break;
alexan_e 1:0f1be4e75668 615 case 2:
alexan_e 1:0f1be4e75668 616 LPC_CT32B1->MR2 = value;
alexan_e 1:0f1be4e75668 617 break;
alexan_e 1:0f1be4e75668 618 case 3:
alexan_e 1:0f1be4e75668 619 LPC_CT32B1->MR3 = value;
alexan_e 1:0f1be4e75668 620 break;
alexan_e 1:0f1be4e75668 621 default:
alexan_e 1:0f1be4e75668 622 break;
alexan_e 1:0f1be4e75668 623 }
alexan_e 1:0f1be4e75668 624 }
alexan_e 1:0f1be4e75668 625 else
alexan_e 1:0f1be4e75668 626 {
alexan_e 1:0f1be4e75668 627 switch (match_nr)
alexan_e 1:0f1be4e75668 628 {
alexan_e 1:0f1be4e75668 629 case 0:
alexan_e 1:0f1be4e75668 630 LPC_CT32B0->MR0 = value;
alexan_e 1:0f1be4e75668 631 break;
alexan_e 1:0f1be4e75668 632 case 1:
alexan_e 1:0f1be4e75668 633 LPC_CT32B0->MR1 = value;
alexan_e 1:0f1be4e75668 634 break;
alexan_e 1:0f1be4e75668 635 case 2:
alexan_e 1:0f1be4e75668 636 LPC_CT32B0->MR2 = value;
alexan_e 1:0f1be4e75668 637 break;
alexan_e 1:0f1be4e75668 638 case 3:
alexan_e 1:0f1be4e75668 639 LPC_CT32B0->MR3 = value;
alexan_e 1:0f1be4e75668 640 break;
alexan_e 1:0f1be4e75668 641 default:
alexan_e 1:0f1be4e75668 642 break;
alexan_e 1:0f1be4e75668 643 }
alexan_e 1:0f1be4e75668 644 }
alexan_e 1:0f1be4e75668 645 }
alexan_e 1:0f1be4e75668 646
alexan_e 1:0f1be4e75668 647 /******************************************************************************
alexan_e 1:0f1be4e75668 648 ** End Of File
alexan_e 1:0f1be4e75668 649 ******************************************************************************/