CW32L010-定时器一览

乐活   2024-12-01 23:56   江苏  

定时器感觉是个高级外设,睡了一觉起来顿悟了。

定时器就是一个计数器,不停的+1+1+1,直到一个周期记满,其实就是和我们的表一样,计数源就是秒针,一圈转完的时候就会有一个事件,可以是清零,可以是进位,反正就是完成了,诸如此类的可以看分针时针,就完成了级联。其实就是计数+在进位时的各种事件,输出以后告诉外设或者程序去执行任务。就把握住计数源和分频以及各种更新事件,再难的定时器外设都能玩转。

这是一个基本的定时器,有自动重装功能,就是计数可以循环,后面就可以分频,以及可以级联,也会有各种事件。

这个就是系统框图

计数单元的核心组件是一个 16bit 递增计数器 CNT 和一个 16bit 自动重载寄存器 ARR,计数器的时钟可通过预分频器进行分频。

预分频器对 CK_PSC 时钟进行分频,得到计数时钟 CK_CNT,以驱动计数器计数。分频系数通过 BTIMx_PSC 寄存器进行设置,支持 1、2、3、4、…、65536 分频。

计数器可工作在单次计数或连续计数模式下,通过控制寄存器 BTIMx_CR1 的 ONESHOT 位域来选择。当设置BTIMx_CR1 寄存器的 EN 位域为 1 时,计数器开始递增计数,注意实际的计数器使能信号 CNT_EN 在 EN 置 1 的一个时钟周期后被置 1。

预分频器,顾名思义,就是在一个计数器之前增加一个分频器,将高频的时钟信号分频成低频的时钟信号,再送入计数器。这个分频的过程,就叫做预分频。

  1. 降低计数器的计数频率: 通过预分频,可以将高频的系统时钟降低到计数器所能承受的频率范围,从而提高计数器的精度和稳定性。

  2. 延长定时时间: 降低计数频率,意味着计数器需要更多的时钟周期才能溢出,从而延长定时时间。

  3. 实现更细粒度的定时: 通过设置不同的分频比,可以实现不同精度的定时。

编程实现: 在程序中通过计数的方式实现分频。中断方式: 利用定时器中断,在中断服务程序中进行计数。

定时器: 延长定时时间,实现更精确的定时。

频率测量: 将未知频率的信号作为输入,通过测量计数器的计数次数,计算输入信号的频率。

脉宽调制(PWM): 通过改变分频比,实现PWM占空比的调节。

时钟源频率越高,定时器的分辨率越高,可以实现更精确的定时。预分频比越大,计数频率越低,定时周期越长。自动重载值越大,计数周期越长。重复计数器值越大,产生更新事件的总次数越多,可以实现更长时间的定时。32位定时器相比16位定时器,可以表示更大的计数范围,从而实现更长的定时周期。

内部时钟: 来自系统内部的时钟源,通常是较为稳定的时钟,适合用于高精度定时。

外部时钟: 来自外部的时钟源,可以是外部电路产生的信号,也可以是其他定时器的输出。这种方式可以实现定时器之间的同步,或者将定时器与外部事件关联起来。

内部触发时钟: 使用一个定时器作为另一个定时器的预分频器,可以实现更复杂的定时功能。

外部时钟模式 2(External Trigger Input)是一种将定时器的计数与外部事件同步的模式。通过将外部时钟信号输入到定时器的 ETR 引脚,可以让定时器根据外部事件的发生来计数或产生中断,从而实现更精确的定时控制。这个在cbbeMX里面也不少见,不过没见人用过。下面这些步骤就是这个定时器的工作原理

  1. 外部时钟信号输入: ETR 引脚接收外部的时钟信号,这个信号可以来自其他模块、传感器或者外部电路。

  2. 时钟分频: 通过配置 TIMx_SMCR 寄存器中的 ETPS 位,可以对输入的外部时钟信号进行分频,从而降低计数频率。

  3. 滤波: 通过配置 TIMx_SMCR 寄存器的 ETF 位,可以对输入的外部时钟信号进行滤波,以减少噪声干扰。

  4. 极性选择: 通过配置 TIMx_SMCR 寄存器的 ETP 位,可以选择上升沿触发、下降沿触发或双边沿触发。

  5. 计数控制: 当 ETR 引脚上的信号发生变化时,定时器会根据配置的模式进行计数或产生中断。


哈哈哈,就是这个010,011

可以触发ADC

TRGO(Trigger Output)是定时器的一个重要功能,它可以将定时器的内部事件作为触发信号输出,从而实现多个定时器之间的同步或级联。通过合理配置TRGO,我们可以构建出复杂而精确的定时系统。

复位 (UG):当写入EGR寄存器的UG位时,会产生一个复位信号,可以用于复位其他定时器或同步其他模块。

使能: 定时器使能信号可以作为TRGO,用于同步启动多个定时器。

更新: 定时器计数器更新事件可以作为TRGO,可以用于实现级联定时器。

主定时器的更新事件作为从定时器的时钟源,实现不同频率的定时。多个定时器通过TRGO同步启动,实现精确的协同工作。利用TRGO产生PWM信号,控制电机、伺服等执行机构。TRGO可以触发ADC采样,实现周期性的数据采集。TRGO可以用于实现通信协议的同步。

实例:两个定时器级联

假设TIM1为主定时器,TIM2为从定时器。我们可以将TIM1的更新事件作为TIM2的时钟源,实现TIM2的频率是TIM1的1/N(N为分频系数)。

  1. 配置TIM1: 设置TIM1的计数频率和自动重载值,使之产生所需的更新频率。

  2. 配置TIM2: 将TIM2的时钟源设置为外部时钟模式,并将外部时钟输入连接到TIM1的TRGO输出。设置TIM2的预分频器,实现频率分频。

假期来灵活的使用定时器完成一个闹钟

云深之无迹
纵是相见,亦如不见,潇湘泪雨,执念何苦。
 最新文章