定时器-输入捕获 (1)
📚 学习必须与实干相结合。—— 泰戈尔
1.高级定时器
2.通用定时器
3.基本定时器
基本定时器没有任何对外的输入、输出通道,常用为时间基准,实现基本的定时功能
通用定时器有多路独立的捕获/比较通道,可以完成定时、计数、输入捕获、输出比较等功能
高级定时器,在通用定时器的基础上增加了重复计数器和带死区的互补输出等功能。
直接输入模式和间接输入模式:捕获通道不同
直接输入模式 CH1连接IC1 CH2 连接IC2 同理 CH3 和CH4
间接输入模式 CH1连接IC2 CH2连接IC1 同理 CH3和 CH4
主从模式:用于控制多个定时器之间的同步操作。在主从模式下,TIM1作为主定时器,可以触发和同步其他从定时器的计数。
PWMI模式:PWM Input 模式
定时器模块工作在从模式下:
- 从模式复位(Reset Mode):定时器通过外部复位事件将计数器复位为初始值。 外部事件:TI1FP1触发
- 触发源:定时器1的通道1 CH1
- 定时器1通道1 是直接输入模式:通道1 CH1连接IC1
- 定时器1通道2 是间接输入模式:使用定时器的通道1来捕获过滤器输入2的事件
对输入捕获通道1 的设置:上升沿触发 直接模式
对输入捕获通道2 的设置:下降沿触发 间接模式
配置通道1为直连、上升沿;把通道2配置为交叉、下降沿,
得把通道1和2的捕获中断都打开 (非CubeMX生成,得手动添加)
使用输入捕获中断(非CubeMX生成,得手动添加),读取输入捕获值
IC1Value是捕获周期 IC2高电平捕获
上升沿的时候是触发也是,从模式的Reset
故而得到的 IC1Value是捕获周期 IC2高电平捕获
所有通道都共用同一个ARR。当计数器达到ARR的值时,计数器会重新加载ARR的值,并且触发更新事件。这意味着,不论是哪个通道,当计数器达到ARR的值时,都会触发相同的更新事件。
每个通道都有自己独立的CCR寄存器。CCR寄存器用于存储比较值(用于比较输出模式)或捕获值(用于输入捕获模式),可以根据具体的应用需求为每个通道单独设置不同的值。
细节引用他人文章:https://www.zhihu.com/tardis/bd/art/619163472?source_id=1001
芯片手册
该模式为我们自己起的名字,为主模式、从模式、触发选择源选择三个功能的简称。
在库函数里非常简单,三个函数即可实现这三个功能!
1.主模式
可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设。芯片手册第14章14.4.2附近就有各种主模式的解释,比如想实现定时器的级联,就可以选择一个定时器主模式输出更新信号到TRGO,另一个定时器选择上一个定时器触发从模式,从模式选择执行外部时钟1的操作。
在这里插入图片描述
不需要记忆,知道有这些功能用的时候会查就可!!
2.从模式
接收其他外设或自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制。芯片手册第14章14.4.3:
在这里插入图片描述
3.触发源选择
选择从模式的触发信号源,可以认为是从模式的一部分。选择指定的一个信号得到TRGI,TRGI去触发从模式,从模式可在绿色列表里选择一项操作自动执行。比如想要完成上面所说的想让TI1FP1信号自动触发CNT清零,那么触发源选择就可选TI1FP1,从模式里选择Reset的操作,实现硬件全自动。 PS:和我们CubeMX上设置的一样。
只有TI1FP1和TI2FP2,没有TI3和TI4的信号,所以通过从模式实现硬件自动化清零CNT只能用通道1和2,对于3和4只能开启捕获中断,在中断里手动(软件)清零,这样程序会处于频繁中断,比较消耗软件资源。 |
PS:TI1FP1和TI2FP2 和直接输入以及间接输入区分清楚
FPx对应 捕获信号 ICx TIx 对应定时器通道 CHx
还是有点迷糊哈 。。。我也一样。看看手册
手册
每一个捕获/比较通道:捕获的输入部分 (数字滤波、多路复用和预分频器)
捕获/比较通道(如:通道1输入部分)
输入部分对相应的TIx输入信号采样,并产生一个滤波后的信号TIxF。然后,一个带极性选择的 边缘监测器产生一个信号(TIxFPx),它可以作为从模式控制器的输入触发或者作为捕获控制。该信号通过预分频进入捕获寄存器(ICxPS)。
我怎么看这里可以看到 IC1这里的来源是一个多路选择器 可以来自
T1FP1 输入捕获通道1
TI2FP1 输入捕获通道2
TRC 从模式控制器的 触发信号
TRC 作为从模式控制器的输入触发或者作为捕获控制
从这里也可以看到 触发源选择就可选TI1FP1 从模式为复位
本人水平较低,参考了他人文章,写着也是平时回顾,欢迎各位指正、交流!共勉!