STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
概述
本篇文章主要介绍如何使用STM32CubeMX对红外波形进行解码,并通过串口打印。
硬件准备
首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板:

选择芯片型号

配置时钟源
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示。

配置时钟树
STM32F0的最高主频到48M,所以配置48即可。

串口配置
本次实验使用的串口1进行串口通信,波特率配置为115200。

定时器配置
本次使用定时器1的通道2进行检测,配置入下。

红外接收管
这里使用VS838的接收管,如下所示。

红外编码
NEC协议载波:38khz
其逻辑1与逻辑0的表示如图所示。

NEC协议格式。

自定义红外编码
协议如下。

代码
在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
红外接收口定义。
函数声明和串口重定向。
定时器配置。
红外接收代码
[4400,5000]是用于捕获4.5ms的信号
[550,700]是用于捕获560us的数据0信号
[1100,1250]是用于捕获1120us的数据1信号
[2000,2500]是用于捕获2240us的截止位信号
主函数。
结果演示
红外连续发送5次码值,发送分别为:
1011(11)
11 1010(58)
11 0001(49)
11 1111(63)
11 0011(51)
分别如下所示:

教学视频
