最近客户要求在TWS配对之后要灭灯,但是试过很多方法都无法真正的将灯熄灭,后来解决了,修改具体如下:
在func_bt.c 中 func_bt_status()下 ,while(1)循环中添加如下:
if((!bt_tws_is_connected())||(bt_nor_is_connected()))
{
//耳机TWS没有配对或者未连接到手机,流程依旧
func_bt_disp_status();
}
else //当TWS连接之后关掉灯控
{
//由于灯光控制是在底层的硬件中断中控制,
//所以在这里直接对灯控进行操作是不起作用的,
//软件中断处理会出现灯光闪烁的问题,无法做到真正的灭灯
//LED_SET_OFF(); //这样修改是不行的
//LED_PWR_SET_OFF(); //这样修改是不行的
//下面是OK的修改
led_off();
rled_off();
}
由于5系列芯片之后灯控写入底层,看不到具体实现,可以通过查看2系列的源代码查找原因:
void led_off(void)
{
led_cb.bled_sta = 0x00;
bled_set_off();
}
void rled_off(void)
{
led_cb.rled_sta = 0x00;
rled_set_off();
}
//50ms调用周期
void led_scan(void)
{
//中断每50ms调用一次,‘&’后面为配置的IO口,
//实际控制由前面变量决定,所以修改前面变量才能够真正的将灯光显示关掉
if (led_cb.bled_sta & BIT(led_cb.bcnt))
{
bled_set_on();
} else {
bled_set_off();
}
if (led_cb.rled_sta & BIT(led_cb.bcnt))
{
rled_set_on();
} else {
rled_set_off();
}
}