关于stm32捕获

2019-03-23 18:39发布

假设设置为上升沿捕获,且预分频器被禁止(写TIMx_CCMR1寄存器的IC1PS=00)(捕获发生在每一个有效的电平转换时刻)。产生有效的电平转换时(捕获到上升沿),计数器的值被传送到TIMx_CCR1寄存器。请问此时计数器的值能否清零?如果可以,是用软件直接清零的还是通过设置寄存器而自动清零?看了半天在手册上都没看明白,请高手解答,谢谢 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
zhaojun_xf
1楼-- · 2019-03-23 22:51
 精彩回答 2  元偷偷看……
506977544
2楼-- · 2019-03-24 00:44
本帖最后由 huo_hu 于 2015-4-1 17:28 编辑
zhaojun_xf 发表于 2015-3-27 11:54
直接用库多好,如果想用寄存器,为什么不参照库代码就可以指定怎么处理了呢?

谢谢你的回复,因为第一次用st的芯片,捕获的过程不理解,库函数怎么调用就不会了。如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。”怎么理解?(如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生件UEV同时设置UIF,是不是发生捕获时间的同时能够清除计数器,且能产生更新和捕获中断呢?)”


damiaa
3楼-- · 2019-03-24 05:03
应该是你先读计数器的值,捕获值和你上次的值比较吧。

比如你要测试脉冲宽度,上升缘何下降缘两次捕获值相减。能不能清除不记得了。
Li_Lei
4楼-- · 2019-03-24 08:16
 精彩回答 2  元偷偷看……
506977544
5楼-- · 2019-03-24 12:26
damiaa 发表于 2015-4-1 15:19
应该是你先读计数器的值,捕获值和你上次的值比较吧。

比如你要测试脉冲宽度,上升缘何下降缘两次捕获值相减。能不能清除不记得了。

我要做捕获计算周期,希望每次上升沿的时候捕获,记录计数器的值,然后进入终端中将计数器的值清除,在从零开始,进入下一次、、、、、、,不知这样可行否?
506977544
6楼-- · 2019-03-24 15:29
huo_hu 发表于 2015-4-1 17:28
额...操作失误给编辑了

回答:
UG位相当于强制产生溢出信号,这个不怎么用的到,因为很容易乱套.它所说的避免的情况是软件清除了CNT必然产生溢出中断...
捕获信号来的时候就把CNT装到通道里,就这么简单,和开不开通道中断是没有关系的.使用捕获的时候不需要将计数归0,一个定时器可能有多个通道做捕获输入,如果全要把计数归0多个通道的协调统一是个麻烦事.
捕获无非是想要个时间差,两次捕获的数一减就是时间差,如果这个差值是负也就是后次计数小于于前次说明两次捕获间有计数归0,那么结果再取一次反就是了.这块儿是不需要溢出中断介入的,唯一的前提是两次捕获时间差不大于计数回0周期,如果你的信号不能保证这一点的时候需要开启溢出中断,溢出的时候再累加个周期值就OK了.

明白了许多,谢谢你的悉心回复。

一周热门 更多>