[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 是干什么的 ,还有那个清空计数器 清楚的什么???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
既然判定之前信号无效,于是清空计数器。
---------------------------------
还是不懂给详细说说怎么判断为干扰。为什么是14,20行不行、还有那个计数器,记得是什么数?? 。。还有这个更新中断时干什么的?? 还有给rmtsta 第六位一个按键信息完成位置1为什么在这里置,。。。谢谢了。。
---------------------------------
20不行,高位会吞。
if((RmtSta&0X0F)<14)RmtSta++;
写为
if((RmtSta&0X0F)!=0X0F)RmtSta++;
会好理解些
建议按照NEC规范自己写一遍再调一调;
有的时候,去看懂别人的代码比自己写一遍要难得多。
---------------------------------
回复【5楼】正点原子:
---------------------------------
原子哥,我解释下你看看对不对,耽误你一点时间,我也琢磨了一天呢,后来我发现在开发指南里有这么一句话,遥控接收头在收到脉冲时候为低电平没有脉冲时候为高电平。这样的话我们在按键完成之后一直是高电平捕获中,自然就会溢出,溢出之后判断是不是第一次溢出,也就是if(RmtSta&0X0F)==0X00,说实话我当时最最不明白的就是这句,如果是第一次溢出的话就标记完成一次采集。可是下面那句判断是不是14次溢出的我觉得是不是有点没必要呢?那句话我还是有点疑惑。原子哥看到的话帮忙解答下吧。
一周热门 更多>