IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 关于STM32红外遥控器的研究与分析 -> 正文阅读

[嵌入式]关于STM32红外遥控器的研究与分析

?前情提要:

STM32 红外遥控器详解_Lzjusc2017的博客-CSDN博客

?关于左移右移的问题:程序如图。

?????? 正点原子程序写的是左移,所以接收到的数据依次是同步码头、地址码、地址反码、数据码、数据反码、连发码。但是中间32位数据(RmtRec),每一部分(一共四部分)的位都是相反的,因为信号是低位发送,所以先接收到低位,例如发送按键1,应该是00001100(0X0C),但是左移接收便是00110000(0x30)。

??? 【如果在此基础上直接改成右移,那么这32位数据(RmtRec)的数据最终顺序是数据反码、数据码、地址反码、地址码(猜测,还未验证)。改成右移之后发现程序出现问题,后续有时间会再更新,找到问题所在。】

???? 为了能够跟遥控器的键值对应上,我在键盘扫描函数中增加了颠倒位操作,把错误的数据码改成更正过来。程序如下:

u8 Remote_Scan(void)
{        
	u8 sta=0;
    u8 resta=0;	
    u8 t1,t2,i,x;  
	if(RmtSta&(1<<6))//得到一个按键的所有信息了
	{ 
		
	    t1=RmtRec>>24;			//得到地址码,RmtRec最高的8位,通过右移位变为了00000000 00000000 00000000 xxxxxxxx
	    t2=(RmtRec>>16)&0xff;	//得到地址反码 ,因为已知地址码是0,所以通过与全1相与得到地址反码
		
 	    if((t1==(u8)~t2)&&t1==0)//检验遥控识别码(ID)及地址 :(u8)是只对低8位进行判断
	    { 
	        t1=RmtRec>>8; //控制码
	        t2=RmtRec; 	  //控制反码(低8位
				
	        if(t1==(u8)~t2)sta=t1;//键值正确:(u8)是只对低8位进行判断

				  for(i=0;i<7;i++)   //相当于移位了七次,i从0一直到6
				{
				     x = sta>>i&(0x01);
					   resta=resta|x;
					   resta<<=1;	
				}
		}   
		if((sta==0)||((RmtSta&0X80)==0))//按键数据错误/遥控已经没有按下了
		{
		 	RmtSta&=~(1<<6);//清除接收到有效按键标识
			RmtCnt=0;		//清除按键次数计数器
		}
	}  

    return resta;
}

通过该段代码解决了问题:

????????? for(i=0;i<7;i++)?
?? ??? ??? ??? ?{
?? ??? ??? ??? ????? x = sta>>i&(0x01);
?? ??? ??? ??? ??? ??? resta=resta|x;
?? ??? ??? ??? ??? ??? resta<<=1;?? ?
?? ??? ??? ??? ?}

返回的值可以跟按键值一一对应。

?注:待完善。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:04:07  更:2021-11-27 10:06:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:37:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码