STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍。去年,电堂推出了《STM32 TIMER基础及常规应用介绍》,为大家梳理了 STM32 TIMER 的庞大内容,涵盖 TIMER 的基本应用原理、常规应用等。现在将课程内容整理为文章,针对STM32定时器有基本了解的用户,分享具体的应用实现环节及常见问题解决。
STM32定时器除了基本计数定时功能外,还对外拓展了输入、输出通道,从而实现输入捕捉、比较输出功能。
输入捕获【Input Capture】基本原理:
定时器针对外部输入信号或内部触发信号实行边沿捕捉;产生捕捉事件,并可以触发中断或DMA请求,同时记录捕捉时刻计数器的值。基于这个原理,配合计数器实时计数功能可以对捕捉信号进行脉冲宽度的测量,进而实现对周期性波形测量其周期或占空比,或者用来做通信解码。
具体到STM32定时器,输入捕获的功能主要靠捕捉比较单元来实现。输入捕获模式下:当捕获单元捕捉到外来有效信号边沿事件时【上升沿或下降沿】,将此刻计数器的值锁存到CCR影子寄存器并自动将CCR影子寄存器的值拷贝进CCR预装载寄存器,以供用户读取。
关于CCR寄存器,前面多次提到过。它也是由影子寄存器和预装寄存器组成,带预装使能控制位。在输入模式下,此时CCR对用户是只读的,不可对其进行修改、赋值。
什么信号可以作为捕捉信号?
两类信号可作为捕捉信号:
1. 来自定时器的各个输入通道的输入信号,比如TI1/TI2/TI3/TI4这些输入信号;
2. 内部触发输入信号,比如ITR0,ITR1,ITR3等,它们映射到各个输入捕捉通道;前面提到过ITR信号往往来自其它定时器的触发输出。