你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-U545RE-Q评测】5. 基本计时器

[复制链接]
STM1024 发布时间:2023-12-11 18:30

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上:

2.png

STM32CubeIDE环境下,时钟树是这样的,因此我们可以知道时钟频率为4MHz:

1.png

虽然当前使用的是4MHz,但是最高可以支持到160MHz。另外可以看到,STM32U545除了常见的APB1和APB2之外,还有APB3等总线。

然后,在TIM2的配置下,我们需要填写分频数和重装值,从而确定中断的周期:

3.png

中断的频率是4MHz/(1+999)/(3999+1)=1Hz,也就是1秒触发一次,留意这个Counter Period,最大值是4294967295,这个是uint32能够表达的最大值,因此可知它是支持32位的重装值的。

然自然,要使能TIM2的中断:

4.png

接下来就是生成代码。

编写自己的代码则很简单, 几行就搞定了:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM2)
    {
        HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);
    }
}

编译、下载运行以后,可以看到LED灯周期性亮灭。

当然,除了配置分频系数和重载值,前面可以发现整个系统的频率比较低,可以配置一下时钟树:

99.png

这个时候LED就会快速闪烁了。

1 收藏 评论2 发布时间:2023-12-11 18:30

举报

2个回答
dhvf1 回答时间:2023-12-12 13:28:36

效果配个图更好

落花又见流水 回答时间:2023-12-13 09:54:06

进来学习

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版