STM32的HAL库开发系列 - TIM定时器

STM32的HAL库开发系列 - TIM定时器

TIM

定时器(Timer)最基本的功能就是定时了,比如定时发送USART数据、定时采集AD数据等等。如果把定时器与GPIO结合起来使用的话可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以生产输出波形。定时器生产PWM控制电机状态是工业控制普遍方法,这方面知识非常有必要深入了解。

STM32F4xx系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器,还有2个看门狗定时器。看门狗定时器不在本章讨论范围,有专门讲解的章节。控制器上所有定时器都是彼此独立的,不共享任何资源。

基本定时器

基本定时器比高级控制定时器和通用定时器功能少,结构简单,理解起来更容易,我们就开始先讲解基本定时器内容。基本定时器主要两个功能,第一就是基本定时功能,生成时基,第二就是专门用于驱动数模转换器(DAC)。关于驱动DAC具体应用参考DAC章节。

基本上定时器TIM6和TIM7是一个16位向上递增的定时器,当我在自动重载寄存器(TIMx_ARR)添加一个计数值后并使能TIMx,计数寄存器(TIMx_CNT)就会从0开始递增,当TIMx_CNT的数值与TIMx_ARR值相同时就会生成事件并把TIMx_CNT寄存器清0,完成一次循环过程。如果没有停止定时器就循环执行上述过程。

定时器基本初始化结构体如下:

 typedef struct {
     uint16_t Prescaler;          // 预分频器
     uint16_t CounterMode;        // 计数模式
     uint32_t Period;             // 定时器周期
     uint16_t ClockDivision;      // 时钟分频
     uint8_t  RepetitionCounter;   // 重复计算器
 } TIM_Base_InitTypeDef;
  • Prescaler:定时器预分频器设置,时钟源经该预分频器才是定时器时钟, 它设定TIMx_PSC寄存器的值。可设置范围为0至65535,实现1至65536分频。

  • CounterMode:定时器计数方式,可是在为向上计数、向下计数以及三种中心对齐模式。 基本定时器只能是向上计数,即TIMx_CNT只能从0开始递增,并且无需初始化。

  • Period:定时器周期,实际就是设定自动重载寄存器的值,在事件生成时更新到影子寄存器。可设置范围为0至65535。

  • ClockDivision:时钟分频,设置定时器时钟CK_INT频率与数字滤波器采样时钟频率分频比,基本定时器没有此功能,不用设置。

  • RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出PWM的个数。这里不用设置。

控制器有两个基本定时器TIM6和TIM7,功能完全一样,但所用资源彼此都完全独立,可以同时使用。在本章内容中,以TIMx统称基本定时器。

参考和引用:STM32F4xx参考手册、STM32F4xx规格书、野火开源项目、库帮助文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值