/* use ctimer to do a LED blink */ #include #include #include #include #include #include /*=======================================================================*/ /* Configuration */ #define SYS_TICK_PERIOD_IN_MS 100 /*=======================================================================*/ /* system procedures and sys tick master task */ volatile uint32_t sys_tick_irq_cnt=0; void __attribute__ ((interrupt)) SysTick_Handler(void) { sys_tick_irq_cnt++; } /*=======================================================================*/ /* setup the hardware and start interrupts. called by "Reset_Handler" */ int __attribute__ ((noinline)) main(void) { /* call to the lpc lib setup procedure. This will set the IRC as clk src and main clk to 24 MHz */ SystemInit(); /* if the clock or PLL has been changed, also update the global variable SystemCoreClock */ SystemCoreClockUpdate(); /* set systick and start systick interrupt */ SysTick_Config(main_clk/1000UL*(unsigned long)SYS_TICK_PERIOD_IN_MS); /* */ GPIOInit(); /* enable clock for several subsystems */ Enable_Periph_Clock(CLK_IOCON); Enable_Periph_Clock(CLK_SWM); Enable_Periph_Clock(CLK_CTIMER0); GPIOSetDir( PORT0, 15, OUTPUT); LPC_CTIMER0->PR = 0; /* no prescale */ LPC_CTIMER0->MR[3] = 15000000; /* PWM cycle length: one second with 15MHz AHB clock */ LPC_CTIMER0->MCR |= 1<MR[0] = 5000000; /* PWM duty cycle in MR0 */ LPC_CTIMER0->PWMC |= 1<PINASSIGN[T0_MAT0/4] |= ((0xffUL)<<(8*(T0_MAT0%4))); /* then write the destination pin to it */ LPC_SWM->PINASSIGN[T0_MAT0/4] &= ~((15UL^255UL)<<(8*(T0_MAT0%4))); LPC_CTIMER0->TCR |= 1<