STM32精确延时方式
本文纯属记录自己学习历程,如有不妥之处,欢迎指正。
使用TIM定时器方式延时
使用STM32CubeMX配制TIM1定时,如下图所示

自动重装载值为1,向上计数模式,预分频系数为168-1,也就是167(这里我用的是F407的板子做的示例,F407芯片主频为168Mhz,设置这个分频系数,TIM1 的时钟频率为1Mhz,也就是说每1s计数1000000次,换算过来也就是说,1us计数一次)。另外,如果使用的是TIM2-7,这几路定时器时钟频率最高84Mhz,分频系数要做修改。
下面是延时函数
void delay_us(uint16_t us)
{
uint16_t delay=0xffff-us-5; //65535-5-us,计数初值,由这个数
//计数到65535刚好计数us次,也就实
//现了nus延时
HAL_TIM_Base_Start(&htim1); //开启定时器
__HAL_TIM_SetCounter(&htim1,delay)

最低0.47元/天 解锁文章
1860

被折叠的 条评论
为什么被折叠?



