OpenEdv-开源电子网

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

战舰版,红外例子中 不能进 if(TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET)。

[复制链接]

21

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-8-28
在线时间
2 小时
发表于 2013-7-5 15:00:22 | 显示全部楼层 |阅读模式
战舰版,红外例子中
不能进    if(TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET)。初始化都是例子中一样的,为什么呀。。
void TIM4_IRQHandler(void)
{
if (u16TestCounter++ > 10)
{
LED = !LED;
u16TestCounter = 0;
}

    if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
    {aa++;
        if(RmtSta & 0x80) //上次有数据被接收到了
        {
            RmtSta &= ~0X10; //取消上升沿已经被捕获标记
            if((RmtSta & 0X0F) == 0X00)RmtSta |= 1 << 6; //标记已经完成一次按键的键值信息采集
            if((RmtSta & 0X0F) < 14)RmtSta++;
            else
            {
                RmtSta &= ~(1 << 7); //清空引导标识
                RmtSta &= 0XF0; //清空计数器
            }
        }
    }
    zz++;
    if(TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET)
    {
    ff++;
        if(RDATA)//上升沿捕获
        { tt++;
            TIM_OC4PolarityConfig(TIM4, TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕获
            TIM_SetCounter(TIM4, 0);   //清空定时器值
            RmtSta |= 0X10; //标记上升沿已经被捕获
        }
        else  //下降沿捕获
        { dd++;
            Dval = TIM_GetCapture4(TIM4); //读取CCR1也可以清CC1IF标志位
            TIM_OC4PolarityConfig(TIM4, TIM_ICPolarity_Rising); //CC4P=0 设置为上升沿捕获

            if(RmtSta & 0X10) //完成一次高电平捕获
            {
                if(RmtSta & 0X80) //接收到了引导码
                {
                    if(Dval > 300 && Dval < 800) //560为标准值,560us
                    {
                        RmtRec <<= 1; //左移一位.
                        RmtRec |= 0; //接收到0
                    }
                    else if(Dval > 1400 && Dval < 1800) //1680为标准值,1680us
                    {
                        RmtRec <<= 1; //左移一位.
                        RmtRec |= 1; //接收到1
                    }
                    else if(Dval > 2200 && Dval < 2600) //得到按键键值增加的信息 2500为标准值2.5ms
                    {
                        RmtCnt++; //按键次数增加1次
                        RmtSta &= 0XF0; //清空计时器
                    }
                }
                else if(Dval > 4200 && Dval < 4700) //4500为标准值4.5ms
                {
                    RmtSta |= 1 << 7; //标记成功接收到了引导码
                    RmtCnt = 0; //清除按键次数计数器
                }
            }
            RmtSta &= ~(1 << 4);
        }
    }
    TIM_ClearFlag(TIM4, TIM_IT_Update | TIM_IT_CC4);
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-5 15:55:32 | 显示全部楼层
红外遥控器功能正常么?
可以先下载我们的源代码,测试下遥控器是不是正常.
这里要有红外信号才能进入的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-8-28
在线时间
2 小时
 楼主| 发表于 2013-7-5 16:40:16 | 显示全部楼层
回复【2楼】正点原子:

红外遥控器功能正常么?
可以先下载我们的源代码,测试下遥控器是不是正常.
这里要有红外信号才能进入的.

---------------------------------
量红外引脚,有波形,遥控器是好的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-5 23:04:57 | 显示全部楼层
回复【3楼】lhchen922:
---------------------------------
那你直接下载我们的例程,能得到正确的结果么?(不仿真,直接下载观看结果)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 11:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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