/* Enable the clock for CT32B0 */ LPC_SYSCON->SYSAHBCLKCTRL |= (0x01 << 9); /* Selects function PIO1_6 */ LPC_IOCON->PIO1_6 &= ~0x07; GPIO_SetDir(GPIO_PORT1, GPIO_BIT6, GPIO_DIR_OUT); GPIO_SetValue(GPIO_PORT1, GPIO_BIT6, GPIO_LEVEL_LOW); /* Selects function R_PIO0_11 */ LPC_IOCON->R_PIO0_11 &= ~0x07; LPC_IOCON->R_PIO0_11 |= 0x01; GPIO_SetDir(GPIO_PORT0, GPIO_BIT11, GPIO_DIR_OUT); GPIO_SetValue(GPIO_PORT0, GPIO_BIT11, GPIO_LEVEL_HIGH); /* Set period */ LPC_TMR[CT32B0]->MR[MAT1] = SysTick_GetPeriod(120000); // 120 KHz /* Set interrupt and reset on CT32B0_MAT1 */ LPC_TMR32B0->MCR = LPC_TIMER_MCR_MR1I | LPC_TIMER_MCR_MR1R; /* Enable interrupt vector for 32-bit Timer 0 */ NVIC_EnableIRQ(TIMER_32_0_IRQn); |
if (LPC_TMR32B0->IR & LPC_TIMER_IR_MR1INT) { LPC_TMR32B0->IR |= LPC_TIMER_IR_MR1INT;/* clear interrupt flag */ volatile uint8_t math1_6 = GPIO_TestValue(GPIO_PORT1, GPIO_BIT6, GPIO_LEVEL_LOW) ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW; volatile uint8_t math0_11 = GPIO_TestValue(GPIO_PORT0, GPIO_BIT11, GPIO_LEVEL_LOW) ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW; assert(math1_6 != math0_11); GPIO_SetValue(GPIO_PORT1, GPIO_BIT6, math1_6); GPIO_SetValue(GPIO_PORT0, GPIO_BIT11, math0_11); } |