OpenEdv-开源电子网

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

关于Stm32mini V3.0开发板红外遥控实验,中断处理函数的一点疑问,求大家帮忙解答。

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-6-21
在线时间
0 小时
发表于 2014-8-15 10:14:37 | 显示全部楼层 |阅读模式
5金钱
如下面代码所示,定时器5的中断处理函数。
 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; //清空计数器
        }  
}           ,
在上面的程序中,
设置定时器为10ms溢出,可是程序中无论是0还是1 以及连发码都没有超过  10ms的  那定时器5会产生溢出中断吗?
还有一个地方,  if((RmtSta&0X0F)<14)RmtSta++;   中的14又是怎么确定的呢? 以及接下来两句又是什么意思呢? 连发码中好像说要有一段97.94ms的高电平,与这个有关系吗?
本人新手,希望大家帮忙解答一二。先谢过大家了。

最佳答案

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

回复【8楼】公子小白: --------------------------------- 中断就是超时了 超时就说明一帧解码已经结束(不考虑连发码). 14是限制最大溢出次数的. 最大值是15.所以改为15,可能你好理解点.
你只有非常努力才能看起来毫不费力。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-15 10:14:38 | 显示全部楼层
回复【8楼】公子小白:
---------------------------------
中断就是超时了
超时就说明一帧解码已经结束(不考虑连发码).
14是限制最大溢出次数的.
最大值是15.所以改为15,可能你好理解点.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-15 10:44:37 | 显示全部楼层
定时器溢出时间你可以改,起码改成最小码的时间也能计算得到的才行,看你的用是更新中断,你可以用比较中断,反正你要的时间可以检测出来就行了。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-15 14:03:29 | 显示全部楼层
回复【2楼】TinyBoy:
---------------------------------
弱弱的问一句,什么是比较中断?(求轻拍)
还有如果我更新中断不用,只用输入捕获中断可以吗?
你只有非常努力才能看起来毫不费力。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-15 14:10:55 | 显示全部楼层
我个人的理解是输入捕获中断是用来解码的,因为你的码不知道什么时候来,而定时器只管计数,你计算码还得用定时器,但是你程序其他地方又需要用溢出中断,解决方案可以有2种,溢出中断和比较中断同时使用,比较中断可以得到一个比较小时间,你通过累加来计算码的时间,或者溢出中断时间减少,比如100us中断一次,你通过累加得到其他需要应用的时间。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-15 14:12:02 | 显示全部楼层
比较中断就是在溢出值的范围内,计数值和你给的值比较,相等就中断。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-15 23:04:01 | 显示全部楼层
0,1是超过10ms了么?
你好好用示波器看看波形,再来问吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-16 08:30:01 | 显示全部楼层
回复【5楼】TinyBoy:
---------------------------------
谢谢兄台,可否加一下qq,以后有机会可以相互交流。
你只有非常努力才能看起来毫不费力。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-16 08:36:25 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,不是说0的话是接收端电平只有560us高电平吗,1有1680us的高电平吗?都没有超过10ms的呀。还有原子哥,不是我懒,我这现在现在没示波器什么的,看不了波形,不好意思。
其他的地方都看懂了就是这点地方没看懂。中断更新的具体作用是什么以及上面的14  是怎么确定的?
先谢过原子哥了。
你只有非常努力才能看起来毫不费力。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-17 11:39:13 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
谢谢原子哥,我在思考思考吧。
你只有非常努力才能看起来毫不费力。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-18 08:06:13 | 显示全部楼层
回复【7楼】公子小白:
---------------------------------

可以啊,你加411422509这个吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 12:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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