if ((TIM1->IER & TIM1_IER_CC2IE) && (TIM1->SR1 & TIM1_SR1_CC2IF))
{
TIM1->SR1 &= (u8) (~TIM1_SR1_CC2IF);
ret = get_nth_width(&_irwave, ir_eng._cur_send_bit, &width);//取得红外波的长度
if ((0x00 == ret) || (ir_eng._cur_send_bit >= ir_eng._cur_wave_bit))
{
stop_compare();
ir_eng.g_ir_state = IR_IDLE;
return;
}
ir_eng._cur_send_bit++;//取波的个数
if (width & 0x8000)
{
pwm_stop();//如果是低电平,进入这个函数。
}
else
{
pwm_start();
}
next_lbl:
cur = TIM1_GetCapture2();
width &= 0x7FFF;//过滤负号,取得真实的脉宽值
cur += width;
TIM1_SetCompare2(cur);
}
相关文章
- OpenvSwitch代码分析之bridge和port
- UDP目标IP不存在时的发送行为分析
- PostgreSQL的 initdb 源代码分析之四
- 单片机——红外遥控器——代码
- 红外遥控解码原理及代码实现
- FFmpeg源代码简单分析:avformat_write_header()
- 关于 缓存脏数据(Stale Data) 的场景分析及解决方案的详细说明,涵盖常见场景、原因、解决方案及代码示例
- Uboot代码分析
- java代码中发送http请求的DnsResolver使用问题
- 【YOLOE: Real-Time Seeing Anything】predict_visual_prompt.py视觉推理代码分析(检测版本)