This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Button handling not working using bsp

Hi. I have a problem with my NRF52840 Dongle. When using BSP driven button. I've tried to use some SDK precompiled examples - it doesn't work. Neither with ble_peripheral, nor ZigBee or Thread examples. Then I tried this code:

#include "boards.h"

int main(){
    bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS);
    while (true)
    {
        if (bsp_board_button_state_get(BSP_BUTTON_0)){
            bsp_board_led_invert(BSP_BOARD_LED_2);
        }
    }
    
}
 and it worked as expected.

But the following code, which is intended to perform the same action:

#include "boards.h"
#include "app_timer.h"
#include "app_button.h"

static void buttons_handler(uint8_t pin, uint8_t action)
{
    if (pin == BSP_BOARD_BUTTON_0){
        if (action == APP_BUTTON_PUSH){
            bsp_board_led_invert(BSP_BOARD_LED_0);
        }
    }
}

int main(void)
{
    bsp_board_init(BSP_INIT_LEDS);
    app_timer_init();
    static app_button_cfg_t buttons [] = {
        {BSP_BOARD_BUTTON_0, false, BUTTON_PULL, buttons_handler}
    };
    app_button_init(buttons, ARRAY_SIZE(buttons), APP_TIMER_TICKS(50));
    app_button_enable();
}
 doesn't work.

This code works well:

#include <stdbool.h>
#include <stdint.h>
#include "boards.h"
#include "bsp.h"
#include "app_timer.h"
#include "nordic_common.h"

void bsp_evt_handler(bsp_event_t evt)
{
    switch (evt)
    {
        case BSP_EVENT_KEY_0:
            bsp_board_led_invert(BSP_BOARD_LED_0);
            break;

        default:
            return;
    }
}

int main(void){
    NRF_CLOCK->LFCLKSRC            = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);
    NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_LFCLKSTART    = 1;

    app_timer_init();
    bsp_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS, bsp_evt_handler);
    while (true)
    {

    }
}

But the same construction in examples doesn't work (Ble blinky, for example).

I need some help because I don't know, where to look for some kind of solution.

Parents Reply Children
Related