概述
STM32定时器Capture捕获
文章目录
- STM32定时器Capture捕获
- 1.Capture捕获通道
- 2.中断标志位、中断、DMA
- 3.举例:在TI1通道信号上升沿,捕获计数器值
- 参考
1.Capture捕获通道
理解定时器的功能,看懂图很关键
上图里小框图,细分为下面两图
上图与下图通过IC1PS信号连接。标叉号的数据箭头没有触发条件,也就是不会发生,我这样想。
捕获/比较通道 围绕capture/compare register (包含一个preload预加载寄存器和shadow影子寄存器) 搭建
就捕获通道而言,preload和shadow中的值始终一致,当Capture产生时,Counter中计数值传输到shadow和preload寄存器。(preload寄存器为TIMx_CCRx, 读取该寄存器获得Counter传输来的计数值)
注:捕获是指信号变化满足设定的分频、滤波、极性等条件时,触发对当前计数器值的捕获。Capture捕获与Campare比较没有直接逻辑联系,经常记错成“比较之后,捕获信号。。”
2.中断标志位、中断、DMA
Capture产生时,TIMx_SR CCXIF flag 被设置。如Capture产生时,TIMx_SR CCXIF flag 已经被设置,TIMx_SR over-capture flag CCxOF 被设置。CCXIF flag清除,软件清除该flag或读取TIMx_CCRx。CCxOF flag只能软件清除
如使能中断TIMx_DIER CC1IE bit,则产生中断。如使能DMA请求TIMx_DIER CC1DE bit,则产生DMA请求。
3.举例:在TI1通道信号上升沿,捕获计数器值
1.选择方向(capture/compare作为输出还是输入)和通道(TI1 or TI2)。TIMx_CCMR1 CC1S bit 设置为01, 即CC1 channel配置为输入, IC1 映射到 TI1 。CC1S 一旦不为00(CC1(capture/compare)通道不配置为output ),TIMx_CCR1 就变为只读
2.设置输入滤波器。假设输入信号翻转时,需要5个内部时钟周期后才变稳定。设置TIMx_CCMRx ICxF 为 0011,即设置fSAMPLING=fCK_INT, N=8。连续8次采样值一致时,认为信号稳定。数字滤波器由一个事件计数器组成,用N个连续事件来验证输出上转换。
3.选择触发边沿位。设置TIMx_CCER CC1P 和 CC1NP bit为0,即选择上升沿(non-inverted 不反相 TI1FP1与TI1F同相)
4.设置输入prescaler预分频器。设置TIMx_CCMR1 IC1PS bits 为 00,即不分频,直接输入
5.设置TIMx_CCER CC1E bit 使能Capture
6.如需要,设置TIMx_DIER CC1IE bit 使能中断,设置TIMx_DIER CC1DE bit 使能DMA请求
再强调一下,捕获是指信号变化满足设定的分频、滤波、极性等条件时,触发对当前计数器值的捕获
参考
- STM32参考手册
希望能帮助到朋友们 和 将来忘了的自己,如有错误,欢迎批评指正!
最后
以上就是开朗发箍为你收集整理的19_STM32定时器Capture捕获STM32定时器Capture捕获的全部内容,希望文章能够帮你解决19_STM32定时器Capture捕获STM32定时器Capture捕获所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复