3296|7

182

帖子

7

TA的资源

一粒金砂(中级)

楼主
 

关于stm32捕获 [复制链接]

假设设置为上升沿捕获,且预分频器被禁止(写TIMx_CCMR1寄存器的IC1PS=00)(捕获发生在每一个有效的电平转换时刻)。产生有效的电平转换时(捕获到上升沿),计数器的值被传送到TIMx_CCR1寄存器。请问此时计数器的值能否清零?如果可以,是用软件直接清零的还是通过设置寄存器而自动清零?看了半天在手册上都没看明白,请高手解答,谢谢
此帖出自stm32/stm8论坛

最新回复

一般是捕获次数比较多,你可以一次捕获很多次IO变化的数据,然后直接放到内存中,捕获完了,不想捕获了就处理。单次也是可以的,不过这样和中断没太大区别,有一点误差。  详情 回复 发表于 2015-4-11 16:49
点赞 关注
 

回复
举报

4996

帖子

19

TA的资源

裸片初长成(初级)

沙发
 
直接用库多好,如果想用寄存器,为什么不参照库代码就可以指定怎么处理了呢?
此帖出自stm32/stm8论坛

点评

谢谢你的回复,因为第一次用st的芯片,捕获的过程不理解,库函数怎么调用就不会了。如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避  详情 回复 发表于 2015-3-27 12:47
 
个人签名我的博客
 

回复

182

帖子

7

TA的资源

一粒金砂(中级)

板凳
 
本帖最后由 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,是不是发生捕获时间的同时能够清除计数器,且能产生更新和捕获中断呢?)”


此帖出自stm32/stm8论坛

点评

额...操作失误给编辑了 回答: UG位相当于强制产生溢出信号,这个不怎么用的到,因为很容易乱套.它所说的避免的情况是软件清除了CNT必然产生溢出中断... 捕获信号来的时候就把CNT装到通道里,就这么简单,和开不开通  详情 回复 发表于 2015-4-1 17:28
 
个人签名每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
 

回复

6105

帖子

4

TA的资源

版主

4
 
应该是你先读计数器的值,捕获值和你上次的值比较吧。

比如你要测试脉冲宽度,上升缘何下降缘两次捕获值相减。能不能清除不记得了。
此帖出自stm32/stm8论坛

点评

我要做捕获计算周期,希望每次上升沿的时候捕获,记录计数器的值,然后进入终端中将计数器的值清除,在从零开始,进入下一次、、、、、、,不知这样可行否?  详情 回复 发表于 2015-4-10 14:14
 
 
 

回复

4008

帖子

0

TA的资源

版主

5
 
本帖最后由 huo_hu 于 2015-4-1 17:30 编辑
506977544 发表于 2015-3-27 12:47
谢谢你的回复,因为第一次用st的芯片,捕获的过程不理解,库函数怎么调用就不会了。如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。”怎么理解?(如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生件UEV同时设置UIF,是不是发生捕获时间的同时能够清除计数器,且能产生更新和捕获中断呢?)”

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

额...操作失误给编辑了

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

点评

明白了许多,谢谢你的悉心回复。  详情 回复 发表于 2015-4-10 14:16
 
 
 

回复

182

帖子

7

TA的资源

一粒金砂(中级)

6
 
damiaa 发表于 2015-4-1 15:19
应该是你先读计数器的值,捕获值和你上次的值比较吧。

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

我要做捕获计算周期,希望每次上升沿的时候捕获,记录计数器的值,然后进入终端中将计数器的值清除,在从零开始,进入下一次、、、、、、,不知这样可行否?
此帖出自stm32/stm8论坛
 
个人签名每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
 
 

回复

182

帖子

7

TA的资源

一粒金砂(中级)

7
 
huo_hu 发表于 2015-4-1 17:28
额...操作失误给编辑了

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

明白了许多,谢谢你的悉心回复。
此帖出自stm32/stm8论坛
 
个人签名每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
 
 

回复

6105

帖子

4

TA的资源

版主

8
 
一般是捕获次数比较多,你可以一次捕获很多次IO变化的数据,然后直接放到内存中,捕获完了,不想捕获了就处理。单次也是可以的,不过这样和中断没太大区别,有一点误差。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表