本文用STM32F205芯片中的TIM3为例,写了两种定时器延时函数。本人所知的延时函数方式有3种,通过定时器中断方式的延时函数在本文中暂时不提及。为方便自己记忆,以下均为自己总结,如有错误,欢迎大家讨论。
TIM3挂载在APB1上,30MHz,故TIM3的始终频率为60MHz。
方法一:1. 先配置定时器的单次定时时长,定时器分频为1M,即每计一个数需要1us。
2. 写延时函数,当计数器的计数值大于给定的计数值时,停止计数。
void TIM3_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM3时钟
TIM_TimeBaseInitStructure.TIM_Period = 50000-1; //自动重装载值
TIM_TimeBaseInitStructure.TIM_Prescaler = 60-1;