W801 платформ BLE Отладка

выпустить 2023-02-14 11: 41: 10

на W801 платформ Demo Отладка доски BLE Время, Да FreeRToS вопросыы, связанные с системой, Да NimBLE Открытый источник, Используется SDK Версия такая W80X_SDK_v1. 00. 10.
Потребность в разработке проекта заключается в увеличении физических переключателей bluetooth, Я сама добавила 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; 
}

FD3D60D7-7B7C-4245-8DB7-4352B21230D0. png
C6BD5F57-E642-447a-BAD1-98F2893E5DCD. png

Проверь еще

Наблюдатель
0
Просмотри
2. 4k
1 Ответь
isme
isme Сертифицированный эксперт 2023-02-14
Ледяные арбузы

Внутри прерывания не должно быть возможности для запуска bluetooth, Делать сложные и отнимающие много времени вещи, Правильной логикой является то, что прерывание является только сигналом, Получение сигнала внутри миссии требует соответствующего времени.

Писать ответы

Пожалуйста, введите ответ после входа, Нажми на логин

опубликова
вопросы

подел
Приятель

телефон
просматрива

Просканируй телефон