红外学习——《STM32L475开发指南-RT-Thread例程_V1.1》
红外学习功能:
1.思路:
1.1.底层硬件驱动:
1.1.1.学习红外指令:接收,采用定时器的输入捕获功能;配置定时器计数时钟的频率为1us,计数周期为10ms;开启定时器更新中断,启动定时器工作在输入捕获中断模式;
配置为输入捕获极性为上升沿,当上升沿出现,进入中断,读捕获比较寄存器值为低电平宽度,改变输入捕获极性为下降沿。当下降沿出现,进入中断,读捕获比较寄存器值为高电平宽度,重新配置为输入捕获极性为上升沿,
将脉冲高低电平宽度保存下来就是红外有效数据;开始的两个数据是无效的;
1.1.2.发送红外指令:
需要有一个高精度的us延时定时器,控制引脚输出38KHz的脉冲信号;例程中用的是DWT做us延时不占用外设;
根据学习到的红外数据,当有信号,输出38KHz的脉冲信号,当没有信号,不输出38K的脉冲信号,输出保持低电平,红外发光二极管不工作,防止红外发光二极管长时间工作而烧毁;
1.1.3.驱动中消息队列的使用
当驱动接收的数据用消息队列存储时,可以为驱动程序建立静态消息队列,将收接到的数据都放入消息队列中;此时当一帧数据操作完成,或者不知道消息队列处于什么状况时,可能需要清空消息队列,清空消息队列就是一直读直到消息队列中没有可读数据就表示消息队列已经清空;
1.2.应用程序:
学习模式:启动中断,开始捕获数据,保存数据,编辑功能,红外数据形成文件并保存;
正常工作模式(发送模式);读取红外数据,根据选择需要的功能进行发送;
浙公网安备 33010602011771号