打印
[STM32F1]

哪位高手用STM32的输入捕获功能比较熟,有问题请教。

[复制链接]
1191|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzz3535|  楼主 | 2017-5-17 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在做的程序是用STM32的捕获功能,捕获一个连续的方波,为什么有时候捕获的方波脉宽有几个值是不对呢?当然大部分时候是对的。也跟踪了一下程序,好象不是定时器溢出造成的。请指点一二谢谢了!!
沙发
df_flying| | 2017-5-17 15:31 | 只看该作者
这情况到很像是定时器溢出,中断里检测下溢出中断,或者判断一下计数值大小(当前的值都会大于之前的值,若小于,则加上一个周期)试试。同时示波器跟踪下方波,看看是否有较大的波动

使用特权

评论回复
板凳
zzz3535|  楼主 | 2017-5-17 16:20 | 只看该作者
df_flying 发表于 2017-5-17 15:31
这情况到很像是定时器溢出,中断里检测下溢出中断,或者判断一下计数值大小(当前的值都会大于之前的值,若 ...

我也怀疑是溢出了,但不知道怎么能改好,假如我要捕获60个脉冲的高低电平,大部分时间都是正确的,但有时突然中间某个脉冲的高低电平捕获不对,好象是应该高低电平的值正好相反了,然后过了这个脉冲后其他剩下的脉冲捕获的都对。
我在程序中想在让它发生溢出时,这一组捕获就不要了,重新捕获,可是没有实现。
if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)  //数据更新中断产生
    {

使用特权

评论回复
地板
huzi2099| | 2017-5-17 18:12 | 只看该作者
本帖最后由 huzi2099 于 2017-5-17 18:14 编辑

溢出了取一下反就行了,不是说定时器溢出了就一定错,捕获前点在后就出错的话取反就行。

使用特权

评论回复
5
51xlf| | 2017-5-17 22:59 | 只看该作者
哪里不对,数据肯定有差值。

使用特权

评论回复
6
51xlf| | 2017-5-17 23:00 | 只看该作者
楼主可以使用中断进行采集,中断之后进行计数。

使用特权

评论回复
7
zzz3535|  楼主 | 2017-5-18 09:30 | 只看该作者
就是我测一串脉冲的高低电平的宽度,大部分时间都是对的,可是突然就有一个脉冲的高电平和低电平的值和正确的值相反了,其后面的脉冲又都是正确的,而且这个脉冲的位置还是固定的,不知道是为什么?

使用特权

评论回复
8
tengzhihua163| | 2017-5-18 15:18 | 只看该作者
zzz3535 发表于 2017-5-18 09:30
就是我测一串脉冲的高低电平的宽度,大部分时间都是对的,可是突然就有一个脉冲的高电平和低电平的值和正 ...

用单步运行方式查一下吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

151

帖子

2

粉丝