Stm32CubeMx基本定时器

基本定时器概念

在stm32f103中,共有八个定时器:TIM1~TIM8。其中TIM6和TIM7是基本定时器

基本定时器相较于其他定时器只有基本的定时功能和驱动数模转换器(Digital to Analog Converter, DAC)的功能,不具备外部通道

简单来说,就是实现一些简单的定时任务的时候使用基本定时器

Stm32CubeMx 配置

我们这里使用定时器驱动一个流水灯定时亮灭。

和上一章类似,我的开发板PE6连接着LED2,这里就配置LED2闪烁。不同的是我们不用HAL_Delay()函数,而是使用定时器来使LED灯闪烁

基本配置

配置LED灯

在这里插入图片描述

配置晶振时钟

在这里插入图片描述

配置串口

在这里插入图片描述

时钟数配置

在这里插入图片描述

TIM6定时器配置

设置TIM6定时器

在这里插入图片描述
这里重点说一下第4和第5步
这两部分别是配置分频系数和定时器周期的
由上面的时钟数可以看到我们配置的时钟频率是72Mhz,也就是72000000hz。
这个时候我们的分频系数配置为7199(其实就是7200,至于为什么一会我会讲到),也就相当于告诉CPU:将原来7200个频率脉冲看成一个频率脉冲。这样的话,分频后定时器 6 的时钟频率为 72000000/7200=10000hz,也就是它每1/10000秒会来一个脉冲。
然后我们将定时器周期设置为9999(其实就是10000,至于为什么一会我会讲到),这样的话,定时器6就会检测到每过10000个脉冲的话就会触发定时器中断。结合上面定时器每1/10000秒会来一个脉冲就可以得到:每过10000*(1/10000)=1s就会触发一次定时器中断
至于为什么要将分频系数和定时器周期设置为7199和9999而不是7200和10000呢,原因是Stm32的寄存器是从0开始计数的,即0~7199正好是7200个。定时器周期同理

如果觉得上面的解释太枯燥的话,可以记忆下面这个公式:
(分频系数/时钟频率)*定时器周期 = 需要的时间
以1s为例:1s = (7199+1)/72000000*(9999+1)
以0.5s为例:0.5s = (7199+1)/72000000*(4999+1)
当然,分频系数、时钟频率、定时器周期 可以根据实际情况设置,不一定仅局限于某个数,比如0.5s也可以这么计算:0.5s = (3599+1)/72000000*(9999+1)

时钟频率是我们在时钟数里面设置的,就是这货~
在这里插入图片描述

设置TIM6定时器中断

在这里插入图片描述
将抢占优先级设置为2,响应优先级设置为0
在Stm32中,优先级号越小,优先级越高。当抢占优先级相同时,判断响应优先级

编写代码

在这里插入图片描述
编写 TIM6 更新中断服务程序
在这里插入图片描述

大功告成

但是如果在某一些不能查阅资料的情况下(比如考试)怎么快速找到这一些函数呢?
这里我提供一个方法,如果不想背下来的话,可以参考下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制这一行就可以了(注意:不要复制__weak)

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值