I working with the MDBT42Q-DB with the nRF52805 module. I've started from the ble_app_beacon example in SDK 17.1.0. I was able to compile and run the example in Segger Studio. I wasn't able to get things to work with Keil.
I'm trying to modify the example to added button response for my onboard buttons. Ultimately I'd like a button (input) to trigger a wake-up for several minutes (setting a timer) before allowing the beacon to go back into deep sleep.
I modified the pca10050.h to match the pin configuration of the development board:
#define LEDS_INV_MASK LEDS_MASK
#define LEDS_LIST { LED_1, LED_2 }
#define BSP_LED_0 LED_1
#define BSP_LED_1 LED_2
#define BUTTONS_NUMBER 4
#define BUTTON_1 12
#define BUTTON_2 11
#define BUTTON_3 9
#define BUTTON_4 13
#define BUTTON_PULL NRF_GPIO_PIN_PULLUP
#define BUTTONS_ACTIVE_STATE 0
#define BUTTONS_LIST { BUTTON_1, BUTTON_2, BUTTON_3, BUTTON_4 }
#define BSP_BUTTON_0 BUTTON_1
#define BSP_BUTTON_1 BUTTON_2
#define BSP_BUTTON_2 BUTTON_3
#define BSP_BUTTON_3 BUTTON_4
I added BSP_INIT_BUTTONS and a callback handler for button presses in the leds_init fucntion
void bsp_event_handler(bsp_event_t event)
{
printf("Event");
switch(event)
{
case BSP_EVENT_KEY_0:
case BSP_EVENT_KEY_1:
case BSP_EVENT_KEY_2:
case BSP_EVENT_KEY_3:
printf("Event");
break;
default:
break;
}
}
/**@brief Function for initializing LEDs. */
static void btn_leds_init(void)
{
ret_code_t err_code = bsp_init( BSP_INIT_LEDS | BSP_INIT_BUTTONS, bsp_event_handler);
APP_ERROR_CHECK(err_code);
}
/**
* @brief Function for application main entry.
*/
int main(void)
{
bsp_event_t startup_event;
log_init();
timers_init();
btn_leds_init();
power_management_init();
ble_stack_init();
advertising_init();
// Start execution.
NRF_LOG_INFO("Beacon example started.");
advertising_start();
// Enter main loop.
for (;; )
{
idle_state_handle();
}
}
I've enable logging which suggests everything got initialized properly. The ble_beacon is advertising the custom UUID i've set at the interval I've set both of which I can modify.
<info> PRS: Function: nrfx_prs_acquire, error code: NRF_SUCCESS.
<info> app_timer: RTC: initialized.
<info> GPIOTE: Function: nrfx_gpiote_init, error code: NRF_SUCCESS.
<info> GPIOTE: Function: nrfx_gpiote_in_init, error code: NRF_SUCCESS.
<info> GPIOTE: Function: nrfx_gpiote_in_init, error code: NRF_SUCCESS.
<info> GPIOTE: Function: nrfx_gpiote_in_init, error code: NRF_SUCCESS.
<info> GPIOTE: Function: nrfx_gpiote_in_init, error code: NRF_SUCCESS.
<info> CLOCK: Function: nrfx_clock_init, error code: NRF_SUCCESS.
<info> clock: Function: nrf_drv_clock_init, error code: NRF_SUCCESS.
<info> app: Beacon example started.
I confirmed that the pull-up on SW3 (only default connected switch to pin 9) is being configured with a pull-up as expected.
The status LED is blinking as expected with the advertising indication so I at least modified the LED pins properly.

It's possible some of my configuration, porting the project from pca10040e to support the rNF52805 wasn't completely done properly. I followed this guide as best I could, but as mentioned about I wasn't successful getting Keil to run, though it seemed to compile. Segger studio is at least running with some working.
I was using this guide:
I put the full project here:
https://github.com/soccerno16/ds
Can you perhaps provide some direction? I cannot seem to get any sort of interrupt response from the board.

