OpenEdv-开源电子网

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

用stm32f103的定时器捕获红外接收头信号的问题。

[复制链接]

9

主题

22

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-12-29
在线时间
13 小时
发表于 2017-2-21 14:27:50 | 显示全部楼层 |阅读模式
5金钱
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
        {
                TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
        }
        else if(TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)
        {
                TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);
                if(FLAGNUML == 0)
                {
                        CapValL1 = TIM_GetCapture1(TIM3);
                        FLAGNUML = 1;                               
                }
                else if(FLAGNUML == 1)
                {               
                  CapValL2 = TIM_GetCapture1(TIM3);
                        if(CapValL2 > CapValL1)
                        {
        CapValL = CapValL2 - CapValL1;
                        }
                        else
                        {
                                CapValL = ((10000 - CapValL1) + CapValL2);
                        }
               
                if((CapValL > 9)&&(CapValL < 14))
                {
                        CapValL = 0;
                        FLAG_LEFT = 01;
                        FLAGNUML = 0;                       
                }
                else if((CapValL > 14)&&(CapValL < 18))
                {
                        CapValL = 0;
                        FLAG_LEFT = 02;
                        FLAGNUML = 0;
                }
        }
        }
这是我定时器中断的函数。
现在的问题是,红外接收头接收到的信号很好,但是我通过捕获信号,获得信号的周期,通过周期不同,赋予FLAG_LEFT不同的值,然后在主函数中调用FLAG_LEFT的值,这个值不同,则执行不同的指令,但是有时候会执行,有时候不执行。(ps。红外接收头一直可以收到清晰稳定的信号)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

22

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-12-29
在线时间
13 小时
 楼主| 发表于 2017-2-21 14:28:51 | 显示全部楼层
定时器的分频值是7200,然后溢出值是10000
回复

使用道具 举报

9

主题

22

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-12-29
在线时间
13 小时
 楼主| 发表于 2017-2-21 14:33:43 | 显示全部楼层
对程序进行单步调制的时候,把断点打在 if((CapValL > 9)&&(CapValL < 14))前面,发现CapValL的值并没有变,有时候会变成A/B/C,都在9~14的范围内,但是有时候一直显示0
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-24 03:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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