void TIMER_DelayMS( __IO uint32_t DelayMs ) { TIMER_TimeBaseInitTypeDef TIMER_TBInitStruct; TIMER_TBInitStruct.TIMER_Mode = TIMER_MODE_MODE_Timer; TIMER_TBInitStruct.TIMER_BitMode = TIMER_BITMODE_BITMODE_16Bit; TIMER_TBInitStruct.TIMER_Prescaler = 9; // 16Mhz / 2^9 = 16000000Hz / 512 = 31250 Hz TIMER_TimeBaseInit(TIMER, &TIMER_TBInitStruct); TIMER_CCInit(TIMER, TIMER_CH, DelayMs*31.25f); TIMER_Cmd(TIMER, ENABLE); while(TIMER_EvenCheck(TIMER, TIMER_CH) != SUCCESS); TIMER_EvenClear(NRF_TIMER0, TIMER_CH0); TIMER_Cmd(TIMER, DISABLE); }
/*====================================================================================================*/ void TIMER_Config( void ) { TIMER_TimeBaseInitTypeDef TIMER_TBInitStruct; TIMER_TBInitStruct.TIMER_Mode = TIMER_MODE_MODE_Timer; TIMER_TBInitStruct.TIMER_BitMode = TIMER_BITMODE_BITMODE_16Bit; TIMER_TBInitStruct.TIMER_Prescaler = 9; // 16Mhz / 2^9 = 16000000Hz / 512 = 31250 Hz TIMER_TimeBaseInit(USE_TIMER, &TIMER_TBInitStruct); TIMER_CCInit(USE_TIMER, USE_TIMER_CH, DELAY_TIME*31.25f); TIMER_Cmd(USE_TIMER, ENABLE); TIMER_CC0Interrupt(USE_TIMER, ENABLE); NVIC_SetPriority(USE_TIMER_IRQ, 1); NVIC_EnableIRQ(USE_TIMER_IRQ); }