OpenEdv-开源电子网

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

红外遥控实验求解

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
发表于 2014-12-25 09:55:35 | 显示全部楼层 |阅读模式
5金钱
void TIM5_IRQHandler(void)
{      
    if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)//发生更新中断
{
if(RmtSta&0x80)//上次有数据被接收到了
{
RmtSta&=~0X10; //取消上升沿已经被捕获标记
if((RmtSta&0X0F)==0X00)RmtSta|=1<<6;//标记已经完成一次按键的键值信息采集
if((RmtSta&0X0F)<14)RmtSta++;//记录溢出次数
else
{
RmtSta&=~(1<<7);//清空引导标识
RmtSta&=0XF0; //清空计数器
}  
}    
}
红色部分的代码应该怎么理解?麻烦能人给个整体的思路啊

最佳答案

查看完整内容[请看2#楼]

看描述: [mw_shl_code=c,true]//遥控器接收状态 //[7]:收到了引导码标志 //[6]:得到了一个按键的所有信息 //[5]:保留 //[4]:标记上升沿是否已经被捕获 //[3:0]:溢出计时器 u8 RmtSta=0; [/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-25 09:55:36 | 显示全部楼层
看描述:
[mw_shl_code=c,true]//遥控器接收状态 //[7]:收到了引导码标志 //[6]:得到了一个按键的所有信息 //[5]:保留 //[4]:标记上升沿是否已经被捕获 //[3:0]:溢出计时器 u8 RmtSta=0; [/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2014-12-25 22:55:08 | 显示全部楼层
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
 楼主| 发表于 2014-12-26 09:07:08 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
恩,谢谢啊,我看了下你发的链接。
程序中定时器允许的是刷新中断与捕获中断:
TIM_ITConfig( TIM5,TIM_IT_Update|TIM_IT_CC2,ENABLE);//允许更新中断 ,允许CC2IE捕获中断
配置如下:
TIM_TimeBaseStructure.TIM_Period = 10000; //设定计数器自动重装值 最大10ms溢出  
TIM_TimeBaseStructure.TIM_Prescaler =(72-1);  //预分频器,1M的计数频率,1us加1.   
结合两者则可以说明,它每隔10ms就会有一次溢出中断的,至少66次的捕获中断,那是不是可以说在采集数据的时候定时器是有溢出的?
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
 楼主| 发表于 2014-12-26 09:09:52 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,不明白它的这个判断条件是怎么来的?
if((RmtSta&0X0F)==0X00),这就要求RmtSta没有溢出,可是10ms就会溢出一次?完成整个的数据采集需要>100ms的时间,怎么会没有溢出?
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
 楼主| 发表于 2014-12-26 09:16:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
还有再请教原子哥一个问题,红外发射时低数据位先发送,接收时是高数据位先接收的么?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-26 22:30:42 | 显示全部楼层
回复【6楼】JULY:
---------------------------------
这个要看协议了,我忘了。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-11-15
在线时间
14 小时
发表于 2019-6-12 18:49:27 | 显示全部楼层
lycreturn 发表于 2014-12-25 22:55
http://www.openedv.com/posts/list/44221.htm

请教一下:我用原子的红外遥控获取键值,然后通过if判断要实现按一次,加1,可是我现在的情况是按一次,加好几个数,不知道为什么?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 22:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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