OpenEdv-开源电子网

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

红外解码实验用到定时器更新中断来做什么求指点

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2015-2-7
在线时间
0 小时
发表于 2015-2-20 21:21:43 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true] if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)//更新中断, { if(RmtSta&0x80)//上次有数据被接收到了 引导码标志是1 { RmtSta&=~0X10; //取消上升沿已经被捕获标记 if((RmtSta&0X0F)==0X00)RmtSta|=1<<6;//标记已经完成一次按键的键值信息采集 if((RmtSta&0X0F)<14)RmtSta++; else { RmtSta&=~(1<<7);//清空引导标识 RmtSta&=0XF0; //清空计数器 } } }[/mw_shl_code]
这段程序干什么的。实在没有看懂用这个定时器的更新中断来做什么, 他们的帖子也看了但是也不懂,纠结一天了。还请明白人指点一二。 那个14 是干什么的 ,还有那个清空计数器  清楚的什么???

最佳答案

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

红外接收通过定时器溢出中断来判断是否结束解码(就是编码的接收),这里的14是最大溢出次数,用于标记定时器的溢出次数,这里其实应该是15才对(0X0F)。不过不影响使用。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-20 21:21:44 | 显示全部楼层
红外接收通过定时器溢出中断来判断是否结束解码(就是编码的接收),这里的14是最大溢出次数,用于标记定时器的溢出次数,这里其实应该是15才对(0X0F)。不过不影响使用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

102

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-2-20 22:21:20 | 显示全部楼层
14 是用来判定干扰/无效信号的。
既然判定之前信号无效,于是清空计数器。
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2015-2-7
在线时间
0 小时
 楼主| 发表于 2015-2-20 22:35:48 | 显示全部楼层
回复【2楼】exv:
---------------------------------
还是不懂给详细说说怎么判断为干扰。为什么是14,20行不行、还有那个计数器,记得是什么数?? 。。还有这个更新中断时干什么的?? 还有给rmtsta 第六位一个按键信息完成位置1为什么在这里置,。。。谢谢了。。
回复

使用道具 举报

2

主题

102

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-2-21 11:45:58 | 显示全部楼层
回复【3楼】尘封守候:
---------------------------------
20不行,高位会吞。

if((RmtSta&0X0F)<14)RmtSta++;
写为
if((RmtSta&0X0F)!=0X0F)RmtSta++;
会好理解些

建议按照NEC规范自己写一遍再调一调;
有的时候,去看懂别人的代码比自己写一遍要难得多。
回复

使用道具 举报

51

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2014-6-16
在线时间
12 小时
发表于 2015-5-11 19:13:38 | 显示全部楼层
这一段代码我也看不懂,能指点一二吗
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-9
在线时间
1 小时
发表于 2015-12-9 16:20:44 | 显示全部楼层
回复【6楼】fjqzzhangzhibin:
---------------------------------
回复【5楼】正点原子:
---------------------------------
原子哥,我解释下你看看对不对,耽误你一点时间,我也琢磨了一天呢,后来我发现在开发指南里有这么一句话,遥控接收头在收到脉冲时候为低电平没有脉冲时候为高电平。这样的话我们在按键完成之后一直是高电平捕获中,自然就会溢出,溢出之后判断是不是第一次溢出,也就是if(RmtSta&0X0F)==0X00,说实话我当时最最不明白的就是这句,如果是第一次溢出的话就标记完成一次采集。可是下面那句判断是不是14次溢出的我觉得是不是有点没必要呢?那句话我还是有点疑惑。原子哥看到的话帮忙解答下吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-9 23:14:38 | 显示全部楼层
回复【7楼】船长23:
---------------------------------
可以去掉试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-9
在线时间
1 小时
发表于 2015-12-10 13:11:43 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
恩,已经试过了,程序还能正常运行
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-4-19
在线时间
31 小时
发表于 2017-4-19 10:08:39 | 显示全部楼层
溢出中断,是我们计数是防止TIM1计数溢出 最后还得有个清除标志位的东西
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-11-29
在线时间
27 小时
发表于 2020-6-13 13:58:16 | 显示全部楼层
老哥你我现在也纠结在这了,能解惑一下吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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