Multi-Rate Timer (MRT)
#include "mbed.h" DigitalOut led1(LED1); extern "C" void MRT_IRQHandler() { if (LPC_MRT->Channel[3].STAT & 1) { led1 = !led1; LPC_MRT->Channel[3].STAT |= 1; // clear interrupt } } int main() { LPC_SYSCON->SYSAHBCLKCTRL |= 1<<10; // enable MRT LPC_SYSCON->PRESETCTRL |= 1<<7; // reset MRT LPC_MRT->Channel[3].INTVAL = (SystemCoreClock/5)|0x80000000; // 5Hz and LOAD LPC_MRT->Channel[3].CTRL |= 1; // enable interrupt NVIC_EnableIRQ(MRT_IRQn); while(1) { __wfi(); } }