将充电灯改为呼吸灯,并在充满后长亮一段时间,再呼吸灭

实现:充电的时候,灯控为呼吸灯,在充满电之后,维持长亮一段时间,维持时间结束,耳机再呼吸灭。具体实现如下:
首先创建一个全局变量用于控制呼吸灯:
func_bt.c下

u16 charge_breath_flag = 0;//控制充满电呼吸灯

func_bt.h下

extern u16 charge_breath_flag;//控制充满电呼吸灯

之后就是修改充电的灯:
bsp_charge.c下bsp_charge_box_process_do()中

#if LED_BREATHE_EN
	if (xcfg_cb.charge_breathe_en) { //充电过程中红蓝呼吸灯功能
		if(sys_cb.charge_sta == 1)//充电中,呼吸亮
		{
			charge_breath_flag = 0;
			breathe_led_start(0, 0);
		}
		else//充满电
		{
			if((charge_breath_flag < 2047)&&(CHARGE_DC_IN()))//充维持长亮以及呼吸灭
			{
				if(charge_breath_flag ==0)
					charge_breath_flag = 1;
				breathe_led_start(0, 0);
			}
			else//关闭灯控
			{
				breathe_led_stop();
			}
		}
	}
#endif

//还需要注意:
if (((bsp_charge_box_sta() == 2) || (vhouse_sta == 2) || (sys_cb.ntc_2_pwrdwn_flag))&&(charge_breath_flag >= 2047)) //是否充满或NTC关机
{
	bsp_charge_inbox_wakeup_enable(); //INBOX Wakeup enable
	saradc_exit(adc_cb.channel);
	bsp_charge_tebcnt_calibration_stop();
	sfunc_pwrdown(0);
}

if (!CHARGE_DC_IN()) { //DC IN online?
	charge_breath_flag = 0;
	led_func_enable(); //打开现有LED扫描控制
	......
} else {
	led_func_disable();  //关掉现有LED扫描控制
	......
}

另外耳机充满电的时候,系统等到呼吸灯结束再关闭:
bsp_bt.c下bsp_bt_tws_switch_for_charge()的while循环中:

if ((bsp_charge_box_process())&&(charge_breath_flag >= 2047)) {
	break;
}

接下来就是呼吸灯里面的修改:
port_breathe_led.c下breathe_led_timer2_isr()中:

if(bre_led_cb.count == bre_led_cb.pwm_level){ //呼吸灯调节参数
	if((charge_breath_flag >= 1)&&(charge_breath_flag <= 2045))
	{//维持充满电的时候长亮,以及维持长亮的时间
		charge_breath_flag++;
		bre_led_cb.time++;
		if(bre_led_cb.time == bre_led_cb.pwm_time)
		{
			bre_led_cb.time = 0;
			bre_led_cb.duty = bre_led_cb.pwm_level / 2;
        }
	}
	if((bre_led_cb.dir == 0)&&(charge_breath_flag ==0))
	{//还没有充满的时候得呼吸亮,充满之后就不能呼吸亮
		bre_led_cb.time++;
		if(bre_led_cb.time == bre_led_cb.pwm_time){
			bre_led_cb.time = 0;
			bre_led_cb.duty++;
			if(bre_led_cb.duty >= (bre_led_cb.pwm_level / 2)){
				bre_led_cb.dir = 1;
			}
		}
	}
	if((bre_led_cb.dir == 1)||(charge_breath_flag == 2046))
	{//长亮之后的呼吸灭
		bre_led_cb.time++;
		if(bre_led_cb.time == bre_led_cb.pwm_time){
			bre_led_cb.time = 0;
			bre_led_cb.duty--;
			if(bre_led_cb.duty <= 1){
				if(charge_breath_flag == 2046)
				{//呼吸灭之后,就得进入低功耗
					charge_breath_flag = 2047;
				}
				bre_led_cb.dir = 0;
				bre_led_cb.toggle ^= 1;
			}
		}
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值