一、硬件设计
IRRX红外接收引脚连接stm32的PA1对应到定时器TIM2的通道2。
二、软件设计
(3)红框部分:把定时器设置为上升沿捕获,计数的频率为1MHz(72M/72),自动重装载值为10000,溢出的时间为10000*us = 10ms。开启定时器输入捕获更新中断,配置为上升沿捕获,定时器计数溢出时产生更新中断。
ir.c文件
#include "ir.h"
extern TIM_HandleTypeDef htim2;
/* 遥控器接收状态
* [7] : 收到了引导码标志
* [6] : 得到了一个按键的所有信息
* [5] : 保留
* [4] : 标记上升沿是否已经被捕获
* [3:0]: 溢出计时器
*/
uint8_t g_remote_sta = 0;
uint32_t g_remote_data = 0; /* 红外接收到的数据 */
uint8_t g_remote_cnt = 0; /* 按键按下的次数 */
uint8_t log1;
/**
* @brief 定时器更新中断回调函数
* @param htim:定时器句柄
* @retval 无
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM2)
{
if (g_remote_sta & 0x8