这个是一个案子修改的一个小细节,描述如下:进入蓝牙模式未连接的时候先闪20次,然后再进入配置的灯光,配置为连接手机成功,所有灯光熄灭;未成功连接手机,闪烁20次之后变成红蓝交替闪烁(注意:未闪烁满20次,连接手机之后也要熄灭),具体修改如下:
首先创建变量:bsp_sys.h下sys_cb1_t结构体中
u8 open_orange_falg;//控制连接过程计数
u8 orange_num_flag;//计数20次
之后就到蓝牙模式下的灯光控制:
func_bt.c中func_bt_status()下while(1)循环中:
if((sys_cb1.orange_num_flag < 20)&&(bt_get_status() < BT_STA_CONNECTED))
{//未连接的时候闪烁二十次
if(sys_cb1.open_orange_falg < 50)//控制灯光闪烁频率变量在中断中控制
{
LED_SET_ON();
}
else
{
LED_SET_OFF();
}
}
else//按照配置进行闪烁,此函数会调用硬件底层中断
func_bt_disp_status();
//其中 LED_SET_ON()、LED_SET_OFF()为config.h中配置
#define LED_SET_ON() bled_func.set_on(&bled_gpio)
#define LED_SET_OFF() bled_func.set_off(&bled_gpio)
之后就是中断中计时处理:
bsp_sys.c中usr_tmr5ms_isr()下:
//控制闪灯并计数
if((func_cb.sta == FUNC_BT)&&(sys_cb1.orange_num_flag < 20))
{
sys_cb1.open_orange_falg++;//计时标志位+1
if(sys_cb1.open_orange_falg == 50)
{
sys_cb1.orange_num_flag++;//闪烁标志位+1
}
else if(sys_cb1.open_orange_falg == 100)//控制计数循环
{
sys_cb1.open_orange_falg = 0;
}
}