红外发送代码分析

 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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值