
![]() 前面在讲LED模块的时候可以用HAL_DLAY()这个函数实现,但是当时间控制得多了,用这个函数就不方便了,因此我们用定时器来实现计时的功能 一、定时器原理 1.定时器资源有许多,但是常用的就有几个 ![]() 2.定时器只有内部计时功能,没有输出功能,因此不用配置GPIO引脚 3.Timer原理 ![]() ![]() 4.CubeMX配置 ![]() Prescaler:预分频;相当于第一次分频,降到80*10^3 Counter Period:计数周期;相当于第二次分频,讲到1000 通过这两次分频,就实现了最终的分频效果,每1毫秒中断一次频率就降下来了。这样0.1s就要中断100次,5s就中断5000次。 5.定时器的本质就是中断,因此要配置中断的优先级内容: ![]() 二、打开工程,添加必要代码 1.tim.c就是配置完CubeMX之后自动生成的文件 ![]() 2.添加必要的代码 ![]() 此函数定义的位置: ![]() 发生定时器中断之后就会跳到回调函数,实际上该函数便是发生时钟中断后处理的函数(中断处理子程序): ![]() 3.子函数
4.主函数 ![]() 变量声明: ![]() 警告:一开始led1_count函数类型是char类型的,在后面计数判断的时候出现了警告。并且LED1灯不能通过按键控制亮灭。 三、实现功能 ![]() ———————————————— 版权声明:想要优秀点儿 |
大神都是怎么学习STM32的,我也跟着学
如果你解决了这些问题,就可以直接学STM32
经验分享 | 基于STM32G4芯片TIM+SPI+DMA应用示例
新手学几天STM32,为啥一脸茫然
实战经验 | STM32G474勘误手册中SRAM Write Error详解
STM32电机控制用什么型号?高级定时器功能详解与芯片选型指南
STM32选型指南:这些型号让您的项目又快又省
25个STM32问答,考验你基础的时候到了
概述STM32
STM32 不同时钟频率有什么不同的影响