蓝讯5616B 修改开关机的灯为呼吸灯

最近有一款耳机,客户要求为:在开机的时候,呼吸亮,呼吸亮到最大之后,进入蓝牙搜索的灯;关机的时候,长亮3S左右,然后再呼吸灭。

软件版本为S522,具体操作如下:
创建一个全局的变量:
func_bt.c下:

u8 led_breath_flag = 0;//用于控制呼吸灯

func_bt.h下:

extern u8 led_breath_flag;//用于控制呼吸灯

来到开机灯处:
bsp_sys.c下bsp_sys_init()中:

//屏蔽之前的灯控,改为呼吸灯
	led_breath_flag = 0;
    breathe_led_start(0, 0);
//    led_power_up();

呼吸灯的实现需要修改为:
port_breathe_led.c下breathe_led_timer2_isr()中:

if(bre_led_cb.count == bre_led_cb.pwm_level)
{//呼吸灯调节参数
......
	if(((bre_led_cb.dir == 0)||(led_breath_flag == 0))&&(led_breath_flag < 2))
	{//这里判断等于0就是开机的时候进入到这里,小于2是为了控制关机的时候,不能来到这里,得先维持最亮
		 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)){
			//达到最亮的时候,就得置1,关掉呼吸灯,恢复系统的灯控
				led_breath_flag = 1;
				bre_led_cb.dir = 1;
			}
		}
	}
	......
}

最亮的时候关掉呼吸灯:
func_bt.c下func_bt()中的while循环中添加:

if(led_breath_flag == 1)//用于控制呼吸灯灭掉
{
	led_breath_flag = 0;
	breathe_led_stop();
}

到这里就能够时间开机的时候呼吸亮, 到最高亮度的时候恢复系统的灯控。
关机的时候修改如下:
func_lowpwr.c下func_pwroff()中:

//在系统灯控的后面添加呼吸灯的操作,这里需要注意得维持系统运行
led_power_down();
led_breath_flag = 2;
breathe_led_start(0, 0);
......
//下面就是维持系统运行,以及呼吸灭之后关闭系统
while (IS_PWRKEY_PRESS() || IS_TKEY_PRESS()||(led_breath_flag != 152)) 
{//等待PWRKWY松开
	if(led_breath_flag == 152)
		breathe_led_stop();
	......
}

在呼吸灯的操作中修改如下:
port_breathe_led.c下breathe_led_timer2_isr()中:

if(bre_led_cb.count == bre_led_cb.pwm_level){  //呼吸灯调节参数
	if((led_breath_flag >= 2)&&(led_breath_flag <= 150))
	{//维持关机的时候长亮,这个得放在最上面,这里就是控制长亮时间
		led_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 == 1)||(led_breath_flag == 151))
	{//关机的时候呼吸灭,长亮的时间结束,就得控制来到这里进行呼吸灭
		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(led_breath_flag == 151)
					led_breath_flag = 152;
				bre_led_cb.dir = 0;
				bre_led_cb.toggle ^= 1;
				}
			}
		}
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值