×
单片机 > 单片机程序设计 > 详情

手机红外遥控器发送红外信号到STM32【HAL库】

发布时间:2020-05-29 发布时间:
|

现在大部分手机上都有红外遥控功能,而且好像大部分信号STM32都是可以收到的。现在就使用STM32发送红外信号,由STM32上的红外接收器接收后执行不同的操作。以下是注意事项:


在标准库中有  EXTI_ClearITPendingBit(EXTI_Line15); 清除中断位,使用HAL库不用使用清除中断位


在HAL库中NVIC的设置在文件stm32f1xx_hal_cortex.c中


HAL_Delay并不能实现us的延时效果,要自己写


            void delay_us(uint32_t i)


            {


                uint32_t temp;


                SysTick->LOAD=9*i;


                SysTick->CTRL=0X01;


                SysTick->VAL=0;


          do


                {


                    temp=SysTick->CTRL;


                }


              while((temp&0x01)&&(!(temp&(1<<16))));


              SysTick->CTRL=0;


              SysTick->VAL=0;


          }


红外接收器的数据引脚为PG15


PG15的设置


/*Configure GPIO pin : PG15 */


GPIO_InitStruct.Pin = GPIO_PIN_15;


GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;  //下降沿触发


GPIO_InitStruct.Pull = GPIO_PULLUP;  //上拉模式


HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);


RCC设置72MHz,要注意,时钟频率不同,计算时使用的数值大小不同


要printf输出到串口还是要重定向printf


#ifdef __GNUC__


/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf


set to 'Yes') calls __io_putchar() */


#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)


#else


#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)


#endif /* __GNUC__ */


/**


* @brief  Retargets the C library printf function to the USART.


* @param  None


* @retval None


*/


PUTCHAR_PROTOTYPE


{


/* Place your implementation of fputc here */


/* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */


HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);


return ch;


}


手机遥控器键位对应编码


1 红外接收码 926D22DD


2 红外接收码 926DA25D


3 红外接收码 926D629D


4 红外接收码 926D609F


5 红外接收码 926DE01F


6 红外接收码 926D827D


7 红外接收码 926D6897


8 红外接收码 926D02FD


9 红外接收码 926DAA55


0 红外接收码 926D12ED


关键字:红外遥控器  红外信号  STM32  HAL库

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址