在用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;
}
好的,我嘗試創建任務測試一下