用STM32CubeMx配置定时器

1.nec协议
红外遥控是一种比较常用的通讯方式,目前红外遥控的编码方式中,应用比较广泛的是nec协议。
nec协议的特点如下:
1)载波频率为 38khz
2)8位地址和 8位指令长度
3)地址和命令2次传输(确保可靠性)
4)pwm 脉冲位置调制,以发射红外载波的占空比代表“0”和“1” 其逻辑1与逻辑0的表示如图所示:
可以看到,逻辑1的位时间为2.25ms,脉冲时间560us;逻辑0的位时间为1.12ms,脉冲时间560us。
一个完整的nec数据包如下:
首次发送的是9ms高电平+4.5ms低电平,为引导码。
接下来是8bit的地址码+8bit地址码的反码+8bit命令码+8bit命令码的反码。
以上是一个正常的数据包,但可能存在一种情况:当长按某个键时,发送的是以110ms为周期的重复码,如下图:
重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。
2.解码程序        
在上面的图中可以看到,逻辑1和逻辑0的位时间是不同的,占空比也不同。
所以我们可以根据位时间的长短来解码,也可以根据占空比的不同(1/2或1/4)来解码,或者二者同时作为解码条件。这
里我们介绍根据位时间来解码。 需要注意的是,很多红外一体接收头为了提高接受灵敏度。
输入高电平,其输出的是相反的低电平。
下图为示波器实际捕获的一组数据:
可以看到,空闲时为高电平,引导码为9ms低电平+4.5ms高电平。根据位时间解码的话,我们就不必关系高低电平各自的时间,只需关系总时间就行,即:引导码为13.5ms,逻辑1为2.25ms,逻辑0为1.12ms。 首先用stm32cubemx配置定时器。
系统时钟等的配置这里不在赘述,参考其它教程。
这里使用tim3的channel1作为捕获通道配置如下:
1)定时器时钟为内部时钟
2)channel1配置为输入捕获模式
3)分频系数为63,因为系统时钟为64m,这样定时器实际时钟为64/(63+1)=1m,主要是为了程序中方便计算。
4)捕获方式为下降沿捕获
5)最后别忘了打开定时器的中断
最后生成代码。
在生成的tim3中断函数中,屏蔽生成的中断处理还是,添加自己的解码程序如下:
uint32_t tim3_over_cnt = 0;//tim3溢出次数uint32_t tim3_sum_cnt = 0;//两次下降沿之间的时间间隔uint32_t cnt0 = 0;uint8_t ir_data[60];void tim3_irqhandler(void){ /* user code begin tim3_irqn 0 */ /* user code end tim3_irqn 0 */// hal_tim_irqhandler(&htim3); /* user code begin tim3_irqn 1 */ if(__hal_tim_get_flag(&htim3, tim_flag_update)) //定时器溢出中断 { __hal_tim_clear_flag(&htim3, tim_flag_update); //清除中断标记 tim3_over_cnt++; } cnt0 = __hal_tim_get_counter(&htim3); tim3_sum_cnt = (tim3_over_cnt 1000 && tim3_sum_cnt 2100 && tim3_sum_cnt 59) ir_idx = 59; } } else { if(tim3_sum_cnt > 13000 && tim3_sum_cnt 20) { if(num > 7) num = 7; for(uint8_t j=0;j1; if(ir_data[j*8+i]) irvalue[j] |= 0x80; } } if(irvalue[0] == 0x00 && irvalue[1] == 0xff)//地址码正确 {      switch(irvalue[2])//判断数据码 { case 0x46: keyvalue = s_key_menu; break; case 0x43: keyvalue = s_key_set; break; case 0x40: keyvalue = s_key_rst; break; case 0x15: keyvalue = s_key_down; break; case 0x09: keyvalue = s_key_up;          break; } } startrevflag = 0; revcomplete = 0; ir_tick = 0; }}


颜值与性能并存,一款非常适合侧透机箱的显卡
MQTT边缘计算网关实现多个工业设备的数据传输和通信
LFP-JJY5RR-305T4无铅高温锡膏的特点有哪些?
多个APP将增设老年人“一键叫车”功能
大型超薄导光板打响LED背光电视技术新战场
用STM32CubeMx配置定时器
北美业务持续发力|镭神智能再度吸引两位大咖加盟北美事业部
DSP经典问答16则
TEA1062应用说明与引脚电压
芯海科技持续加码32位MCU布局 助力工业“芯”国产替代
以太坊中叔块奖励的具体规则是怎样的
继锤子科技吓尿后,华为带来很吓人的技术
深圳市VR产业园项目签约仪式正式举行 虚拟现实未来发展潜力巨大
如何高质量发展移动机器人产业
有哪些生产锂电池的企业?2022年国内十大锂电池企业排行榜
FSP2800油品分析传感器的应用
智慧社区的未来发展趋势将会是怎样的
城市交通指挥与应急疏导广播系统解决方案
三星Galaxy M31跑分曝光,三星M系列有望2020年推出
AI企业的生存与衰危 下一步该如何走