|
STM32U545有多达17个计时器,以及2个看门狗。不过可以给我使用的只有1-8,15-17,其中Timer1/8是高级控制计时器,而2-5则是通用计时器,6-7是基本计时器,15-17也是通用计时器,它和2-5的区别是它使用的是16位计数器,而后者是使用16位/32位计数器。所有计时器是相互独立的,不共享任何资源,因此可以独立配置和工作(当然也可以协同工作)。 本次通过通过STM32CubeIDE配置,并测试STM32U545环境下的TIM2基本定时功能,产生一个控制LED亮灭的信号(其实和PWM波类似,但是后面会测评将计时器专门作为PWM的工作模式)。 还是打开STM32CubeIDE,由于作为基本定时器时,不需要配置针脚,这一步可以跳过,但是需要配置具体的时间,这个时候就需要了解一下STM32U545的时钟树了: 根据参考手册,TIM2-7的外设时钟都是挂在了APB1上:
STM32CubeIDE环境下,时钟树是这样的,因此我们可以知道时钟频率为4MHz:
虽然当前使用的是4MHz,但是最高可以支持到160MHz。另外可以看到,STM32U545除了常见的APB1和APB2之外,还有APB3等总线。 然后,在TIM2的配置下,我们需要填写分频数和重装值,从而确定中断的周期:
中断的频率是4MHz/(1+999)/(3999+1)=1Hz,也就是1秒触发一次,留意这个Counter Period,最大值是4294967295,这个是uint32能够表达的最大值,因此可知它是支持32位的重装值的。 然自然,要使能TIM2的中断:
接下来就是生成代码。 编写自己的代码则很简单, 几行就搞定了:
编译、下载运行以后,可以看到LED灯周期性亮灭。 当然,除了配置分频系数和重载值,前面可以发现整个系统的频率比较低,可以配置一下时钟树:
这个时候LED就会快速闪烁了。 |
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
【STM32U3 评测】人体行为识别
【STM32U3 评测】串口控制步进电机与LabVIEW数据采集
实战经验 | STM32CubeIDE实用技巧之如何指定变量、函数、文件到指定内存
【STM32U3 评测】步进电机驱动
【STM32U3 评测】MNIST 数字识别
【STM32U3 评测】介绍、环境搭建、工程测试
STM32Cube嵌入式软件更新
一步到位!STM32CubeIDE 搭建 ClassB 功能安全工程
扩展器件适配、优化开发流程——STM32CubeIDE 2.1.0新版本发布
微信公众号
手机版
效果配个图更好
进来学习