int main(void) { LedData ledData; ButtonData buttonData; initUserButton(); CLK_EN(); configureLED(LED3, PORTG); configureLED(LED4, PORTG); configureLED(LED5, PORTB); configureLED(LED6, PORTC); buttonInitData(&buttonData); ledInitData(&ledData); initSysTick(); initTcb(); //testFunc(); taskSwitch(); while(1) { //updateTime(); //buttonSM(&buttonData); //ledSM(&ledData); } }
/** * @brief 详细初始化PIT模块 推荐使用PIT_QuickInit函数 * @param * @retval None */ void PIT_Init(void) { CLK_EN(CLKTbl, 0); /* get clock */ fac_us = GetClock(kBusClock); fac_us /= 1000000; PIT->MCR &= ~PIT_MCR_MDIS_MASK; }
/** * @brief 设置PIT模块是否开启中断功能 * * @param chl :通道号 * @arg HW_PIT0_CH0 :0通道 * @arg HW_PIT0_CH1 :1通道 * @arg HW_PIT0_CH2 :2通道 * @arg HW_PIT0_CH3 :3通道 * @param NewState ENABLE 或DISABLE * @retval None */ uint32_t PIT_SetIntMode(uint32_t chl, bool val) { CLK_EN(CLKTbl, 0); if(val) { NVIC_EnableIRQ(PIT_IrqTbl[chl]); } (val)? (PIT->CHANNEL[chl].TCTRL |= PIT_TCTRL_TIE_MASK): (PIT->CHANNEL[chl].TCTRL &= ~PIT_TCTRL_TIE_MASK); PIT->CHANNEL[chl].TFLG |= PIT_TFLG_TIF_MASK; return 0; }
/* 0 pull down, 1 pull up, other no floating */ void SetPinPull(uint32_t instance, uint32_t pin, uint32_t val) { CLK_EN(PORTCLKTbl, instance); switch(val) { case 0: PORT_IPTbl[instance]->PCR[pin] |= PORT_PCR_PE_MASK; PORT_IPTbl[instance]->PCR[pin] &= ~PORT_PCR_PS_MASK; break; case 1: PORT_IPTbl[instance]->PCR[pin] |= PORT_PCR_PE_MASK; PORT_IPTbl[instance]->PCR[pin] |= PORT_PCR_PS_MASK; break; default: PORT_IPTbl[instance]->PCR[pin] &= ~PORT_PCR_PE_MASK; break; } }
void SetPinMux(uint32_t instance, uint32_t pin, uint32_t mux) { CLK_EN(PORTCLKTbl, instance); PORT_IPTbl[instance]->PCR[pin] &= ~PORT_PCR_MUX_MASK; PORT_IPTbl[instance]->PCR[pin] |= PORT_PCR_MUX(mux); }