stm32的输入捕获模式中的中断能不能设置成溢出中断,,,,,该模式捕获到边沿,放入寄存器的是次数还是时间间隔

2019-07-21 06:40发布



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
bucker
1楼-- · 2019-07-21 10:31
你的表达比较模糊,不知你是需要获得捕捉脉冲边沿的时间还是记录脉冲的个数。我按照我的理解来解释下捕捉的概念。STM32可以根据边沿设定捕捉到一个脉冲边沿到来的时间,如果你需要计算脉冲的周期或边沿的间隔,就需要进行两次捕捉才能进行正确的计算。但是,有些时候周期太长会发生定时器溢出的情况,不考虑溢出的计算就是错误的。这样,就需要同时打开定时器溢出中断,在每个溢出中断发生时让一个变量加1,在每个捕捉中断时也要同时记下这个变量值,包含溢出次数的计算结果才是正确的。
例如:
设变量A为定时器溢出计数器,A在每次发生定时器溢出时加1,发生第一次捕捉时A的值为A1,捕捉寄存器值为B1,发生第二次捕捉时A的值为A2,捕捉寄存器值为B2
则:总时间间隔=(A2-A1)×65536+(B2-B1)
如果你需要记录脉冲次数,则需要将定时器设为外部时钟方式,如果计数值可能很大,也同样需要溢出中断来解决计数溢出的问题。假如你既需要测量捕捉间隔,有需要计数的话,就必须同时使用2个定时器来完成了。
2686626192
2楼-- · 2019-07-21 15:08
bucker 发表于 2018-12-16 00:30
你的表达比较模糊,不知你是需要获得捕捉脉冲边沿的时间还是记录脉冲的个数。我按照我的理解来解释下捕捉的 ...

我想写一个编码器的程序,需要记录边沿次数。捕捉寄存器的值是时间而不是次数?
logi
3楼-- · 2019-07-21 15:25
2686626192 发表于 2018-12-16 08:19
我想写一个编码器的程序,需要记录边沿次数。捕捉寄存器的值是时间而不是次数?

捕获的是定时器的计数值,需要自己通过计数周期来计算时间
2686626192
4楼-- · 2019-07-21 15:57
 精彩回答 2  元偷偷看……
bucker
5楼-- · 2019-07-21 18:14
2686626192 发表于 2018-12-16 08:19
我想写一个编码器的程序,需要记录边沿次数。捕捉寄存器的值是时间而不是次数?

定时器有编码器功能的,不需要用到捕捉。再说捕捉寄存器,记录的是脉冲发生时定时器的值。

一周热门 更多>