STM32 TIM控制器
2026/6/13 21:59:51 网站建设 项目流程

一、基本定时器

1. 时钟源(内部时钟CK_INT)

基本定时器(TIM6和 TIM7)的时钟源来源于APB1总线时钟。

使能TIM6或TIM7时钟:

2. 预分频器(PSC)

负责对定时器输入时钟进行分频,它的主要作用是通过降低定时器的输入时钟频率,为定时器的计时和定时功能提供更灵活的时间控制。 TIMx_PSC寄存器是定时器的预分频器寄存器,用于设置定时器的预分频因子,分频因子决定了定时器的时钟频率。需要注意的是实际的分频值是TIMx_PSC+1,例如,当TIMx_PSC寄存器的值为0时,实际的分频因子的大小为 0 + 1 = 1。

3. 计数器

计数器通过对输入时钟(由预分频器分频后的时钟信号),记录经过的时间。计数器的计数模式有三种,递增计数、递减计数、中央对齐计数,但是,基本定时器仅支持递增模式。

4. 自动重装载器

控制计数器的最大计数值,从而影响定时器的溢出时间和功能行为。

TIMx_ARR是自动重装载器的重装载值寄存器,当TIMx_CNT寄存器等于TIMx_ARR寄存器时,计数器上溢,TIMx_CNT寄存器的值自 动重置为 0,同时产生一个UEV更新信号。

UEV事件的产生:

可能产生UEV事件的信号来源:

  • 计数器上溢 (TIMx_CNT寄存器值==TIMx_ARR寄存器值)
  • 手动产生 (将TIMx_EGR.UG位写1)

产生UEV事件的信号来源是否可以产生一个UEV的更新事件,取决于TIMx_CR1.UDIS位域。 TIMx_CR1.UDIS为0时,允许产生更新事件;TIMx_CR1.UDIS为1时,则禁止产生UEV事件。

二、通用定时器

STM32F4xx系列的通用定时器有10个:

通用定时器TIM2到TIM5的框图

  1. 时钟源
  2. 控制器
  3. 时基单元
  4. 输入控制
  5. 输入捕获/输出比较
  6. 输出控制

通用定时器TIM9和TIM12的框图

通用定时器TIM10/TIM11和 TIM13/TIM14的框图

使用通用定时器进行定时

选择时钟源为内部时钟源(CK_INT),通过TIMx_SMCR寄存器下的SMS设置为000,并且要保证ECE位为0.

对时钟源CK_INT进行预分频:通过TIMx_PSC设置预分频系数,注意:实际的预分频系数= TIMx_PSC+ 1

设置计数器计数模式:TIMx_CR1.DIR和TIMx_CR1.CMS共同作用,决定计数器的计数模式。

设置自动重装载器的值:TIMx_ARR寄存器设置。TIMx_ARR寄存器的值更新到实际生效的影子寄存器的方式有两种,取决于TIMx_CR1.ARPE

手动产生一个更新事件TIMx_EGR.UG,然后使能计数器时钟TIMx_CR1.CEN。

PWM(Pulse Width Modulation)简称脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的 一种非常有效的技术,广泛应用在测量、通信、工控等方面。

PWM的频率是指在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。

PWM的周期T=1/f,T是周期,f是频率。 如果频率为50Hz ,那么一个周期是20ms。

占空比是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是% (0%-100%)

PWM模式1

  • 在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态(OC1REF=1),否则为无效状态 (OC1REF=0)。
  • 在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=0),否则为有效状态 (OC1REF=1)。

PWM模式2

  • 在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为无效状态(OCxREF=0),否则为有效状态 (OCxREF=1)。
  • 在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为有效状态(OCxREF=1),否则为无效状态 (OCxREF=0)。

PWM中断

当TIMx_CNT=TIMx_CCR1时,TIMx_SR寄存器“捕获/比较中断标志(CC1IF)”置1,如果CC1中断使能还会触发捕获/比较中断。

当计数器发生溢出时,如果TIMx_CR1寄存器UDIS为0允许UEV更新,“更新中断标志(UIF)”置1,如果UIE中断使能还会触发更新中断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询