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就会快速闪烁了。 |
【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED
基于STM32CubeIDE+MPU6050做的动量轮平衡自行车(一)
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】USART的printf和GPIO的使用
STM32CubeIDE 1.3.0 汉化方法
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
【STM32H7S78-DK评测】开发板初识与工程模板创建
【STM32H7S78-DK评测】板载资源初识及工程模块创建
STM32U5 系列使用 LPBAM 进行功耗优化
STM32 Explore | STM32Cube生态系统线下培训
效果配个图更好
进来学习