在用W801平台Demo板调试BLE的时候,遇到了FreeRToS系统相关的问题,涉及了NimBLE开源库,使用的SDK版本是W80X_SDK_v1.00.10。
项目开发需求是增加蓝牙物理开关按键,我自己增加的BLE按键控制逻辑代码如下:
(这里初始化BLE默认开启,实际用指令测试或者延时测试API调用是没问题的,但是用按键中断测试会存在问题,调试日志如下,还请帮忙查找原因!)
static void ble_gpio_isr_callback(void *context)
{
u8 ret = 0;
ret = tls_get_gpio_irq_status(BLE_BUTTON_GPIO);
if (ret)
{
printf("ble button interrupt happen!\n");
tls_clr_gpio_irq_status(BLE_BUTTON_GPIO);
ble_button_check();
}
return;
}
void ble_button_init(void)
{
tls_gpio_cfg(BLE_BUTTON_GPIO, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH);
tls_gpio_isr_register(BLE_BUTTON_GPIO, ble_gpio_isr_callback, NULL);
tls_gpio_irq_enable(BLE_BUTTON_GPIO, WM_GPIO_IRQ_TRIG_LOW_LEVEL);
ble_init();
return;
}
void ble_init(void)
{
u8 ret = 0;
ret = tls_gpio_read(BLE_BUTTON_GPIO);
printf("ble button check status value =%d\n",ret);
if (ret)
{
demo_bt_enable();
tls_os_time_delay(1000);
demo_ble_server_on();
}
return;
}
void ble_button_check(void)
{
u8 ret = 0;
ret = tls_gpio_read(BLE_BUTTON_GPIO);
printf("button check status value =%d\n",ret);
if (ret)
{
demo_bt_enable();
tls_os_time_delay(1000);
demo_ble_server_on();
}
else
{
demo_bt_destroy();
}
return;
}
好的,我尝试创建任务测试一下