STM32-红外遥控

STM32-红外遥控

通常红外遥控为了提高抗干扰性能和降低电源消耗,红外遥控器常用载波的方式传送二进制编码,常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的。也有一些遥控系统采用36kHz、40 kHz、56 kHz等,一般由发射端晶振的振荡频率来决定。所以,通常的红外遥控器是将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去的

二进制脉冲码的形式有多种,其中最为常用的是NEC Protocol 的 PWM码(脉冲宽度调制)和 Philips RC-5 Protocol 的 PPM码(脉冲位置调制码,脉冲串之间的时间间隔来实现信号调制)。如果要开发红外接收设备,一定要知道红外遥控器的编码方式和载波频率,我们才可以选取一体化红外接收头和制定解码方案。我们的红外遥控器使用****的是NEC协议

NEC协议
在这里插入图片描述

在这里插入图片描述

code:

/*******************************************************************************
* 函 数 名         : HW_jssj
* 函数功能		   : 高电平持续时间,将记录的时间保存在t中返回,其中一次大约20us 
* 输    入         : 无
* 输    出         : t
*******************************************************************************/
u8 HW_jssj()
{
	u8 t=0;
	while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==1)//高电平
	{
		t++;
		delay_us(20);
		if(t>=250) return t;//超时溢出
	}
	return t;
}


void EXTI9_5_IRQHandler(void)	  //红外遥控外部中断
{
	u8 Tim=0,Ok=0,Data,Num=0;

   while(1)
   {
	   	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==1)
		{
			 Tim=HW_jssj();//获得此次高电平时间

			 if(Tim>=250) break;//不是有用的信号

			 if(Tim>=200 && Tim<250)//4.5ms是起始信号
			 {
			 	Ok=1;//收到起始信号
			 }
			 else if(Tim>=60 && Tim<90)//1680us
			 {
			 	Data=1;//收到数据 1
			 }
			 else if(Tim>=10 && Tim<50)//560us
			 {
			 	Data=0;//收到数据 0
			 }

			 if(Ok==1)//32位,由高到低
			 {
			 	hw_jsm<<=1;
				hw_jsm+=Data;

				if(Num>=32)
				{
					hw_jsbz=1;
				  	break;
				}
			 }

			 Num++;
		}
   }

   EXTI_ClearITPendingBit(EXTI_Line8);	
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
江涛是一位经验丰富的工程师,他将带你一起玩STM32-CubeMX红外应用。首先,STM32是一款功能强大的单片机系列,而CubeMX是一款让开发更简单的软件工具。 要开始红外应用的开发,首先需要了解红外技术的基本原理。红外通信是利用红外光进行信息传输的技术,可以实现遥控器、红外传感器等应用。在STM32-CubeMX中,可以通过配置GPIO引脚、使用红外库函数等方式来实现红外通信。 在使用STM32-CubeMX进行开发时,首先需要创建一个项目并选择适合的STM32系列芯片。然后,在引脚配置中,可以选择GPIO引脚作为红外传输的输入或输出引脚。这些引脚的选择需要根据红外收发模块的连接方式来确定。 接下来,需要在CubeMX中配置红外通信的中断,以及设定相关的参数,例如红外编码协议、通信速率等。可以根据具体需求选择合适的协议,如NEC、SONY等。此外,还可以设置红外数据的发送和接收缓冲区大小。 在配置完成后,还需要生成项目代码并导入到STM32开发环境中。然后,可以根据红外协议的要求来编写红外数据的发送和接收代码。这些代码可以在CubeMX生成的初始化代码基础上进行修改和扩展。 最后,通过编译、下载固件到目标板上并进行测试,就可以实现基于STM32的红外通信应用了。可以通过红外遥控器发送数据,并通过红外传感器接收和解码数据。 综上所述,使用STM32-CubeMX进行红外应用开发,可以提供简便的配置和快速的代码生成。希望江涛的指导能帮助你顺利学习和应用STM32-CubeMX红外技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农-老七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值