OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4313|回复: 1

脉冲捕获头疼

[复制链接]

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-11-1 17:29:19 | 显示全部楼层 |阅读模式

首先。外部脉冲进来。我捕获模式下。根本无法设置成 双沿捕获。想双沿捕获必须这样设置
    if(a==0){ TIM_OC1PolarityConfig(TIM3,TIM_OCPolarity_High);

     a=1;}
    else{TIM_OC1PolarityConfig(TIM3,TIM_OCPolarity_Low);

    a=0 ;}


但是更无语的是。每次接收的第一次脉冲组 比如发 LHHLH  (L H 占空比相等) L 50ms  H50ms  的给单片机发。。 单片机收到的前2组。始终是 40 开头。。之后是正常数据。。。。。我头晕。。。我说的发两组的意思是。。。  发一次  LHHLH  delay()  再发一次LHHLH  delay()  当第三次发LHHLH时。哈哈。40没了。。。收到的数据里采集的值直接就是正常值。。。我晕。。谁遇到过类似问题

具有资深STM32点灯技术,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-11-1 18:24:37 | 显示全部楼层
暂时没用过STM32的输入捕获,但是用过AVR的输入捕获,二者程序结构上应该类似。

首先就是输入脉冲初始值0或是1并不清楚,我就默认是上升沿触发,也就是说只有L->H时候才产生捕获事件中断,在中断函数里面改变触发规则为下降沿触发H->L,同样在中断函数里面改变触发规则为上升沿触发。
然后接着上面的,初始你并不知情0还是1,同样你也不知道数据传输到何种地步了,这时候你需要设定同步字,只有完整捕获到这个同步字才算是通讯可靠,后面才开始接受数据。

如果还是不清楚,请百度电波钟或是红外数据传输方面的代码。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 19:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表