单片机stm32系列——基础定时器延迟配置教程stm32cubeMX+keil5
·
- 打开cubeMX找到定时器,这里我们用通用定时器TIM3。(通用定时器TIM2-TIM5,高级定时器TIM1和TIM8,基本定时器TIM6和TIM7)

- Prescaler(预分频器) 和 Period(自动重载值)
Prescaler = 72 - 1 把 72MHz 时钟分频成 1MHz(1us 每计一次)
Period = 1000 - 1 让定时器数到 1000us 就溢出,产生 1ms 中断
- 打开NVIC嵌套向量中断控制器(NVIC 是管理“所有中断”的大脑,负责中断的开关、优先级、响应方式等。)

- 生成代码打开keil5

- 在生成的目录文件中产生tim.c文件,里面就是定时器的配置

- 这里可以看到刚刚配置的参数

- 在main.c文件中编写定时器的延时函数。
一毫秒延时函数,不用调用,hal库自动运行的,溢出自动重载void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM3) // 注意:你现在用 TIM3 { tim3_ms++; // 每 1ms +1 } }void delay_100ms(uint32_t n) { uint32_t start = tim3_ms; while ((tim3_ms - start) < (n * 100)); }
下面这个就是按100ms延时的函数,可以直接调用使用,如果放在main函数后面记得记得函数声明。
谢谢大家,我会继续加油写博客
更多推荐
所有评论(0)