利用stm32f103的TIM2實現(xiàn)精確延時
void TIM_ResetCounter(TIM_TypeDef * TIMx)
{
TIMx->CNT = 0;
}
void TIM2_Delay_ms(unsigned int cms)
{
unsigned short temp = 0;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;
TIM_TimeBaseStructure.TIM_Period = cms * 2;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_Cmd(TIM2, ENABLE);
do
{
temp = TIM_GetCounter(TIM2);
}while(temp != 0x01);
TIM_Cmd(TIM2, DISABLE);
TIM_ResetCounter(TIM2);
}