Hi everyone. I'm starting from scratch and using as reference the example/ble_peripheral/ble_app_template.
I'm using Embedded Studio 3.50 + Jlink V6.32 / The chip is nRF52832-QFAA / The SDK15.0.0 + S132 SoftDevice v6.0.0
I designed a custom board, I defined the new board, as you can see in the PREPROCESSOR DEFINITIONS. (I used the example definition as reference)
I quite new using softdevice.
When I tried to start the timer, it couldn't.
Then I found a lot of threads in the forum explaining that you must request the low-frequency clock ( if you don't use the soft-device).
But I'm using the softdevice, and It seems that is not requesting the LFCLK.
Then I found this post https://devzone.nordicsemi.com/f/nordic-q-a/31982/can-t-make-app_timer-work I added the lines and now the timer is working.
But I'm a little concerned because of the softdevice is not requesting LFCK automatically, and maybe I missed to set something in the sdk_config.h or maybe I'm not compiling a library/driver etc.
I read the documentation and I can't find a list of dependencies or required libraries/drivers to compile with.
Here are how I'm creating the timer and the handlers
//-------------------------------------------------------------------------------------------------------------------------------TIMERS //-----------------------------------------------------------------------------------------------------------------------HANDDLERS static void blink_timeout_handler(void * p_context) { BLINK_STATE=!BLINK_STATE; if (BLINK_STATE) { NRF_LOG_INFO("Blink handler"); NRF_LOG_FLUSH(); } } //-----------------------------------------------------------------------------------------------------------------------TIMER INIT /**@brief Function for the Timer initialization. * * @details Initializes the timer module. This creates and starts application timers. */ static void timers_init(void) { NRF_CLOCK->TASKS_LFCLKSTART = 1; while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0); // Initialize timer module. ret_code_t err_code = app_timer_init(); APP_ERROR_CHECK(err_code); if (err_code == NRF_SUCCESS) { NRF_LOG_INFO("Timer Init"); NRF_LOG_FLUSH(); } // Create timers. /* YOUR_JOB: Create any timers to be used by the application. Below is an example of how to create a timer. For every new timer needed, increase the value of the macro APP_TIMER_MAX_TIMERS by one. ret_code_t err_code; err_code = app_timer_create(&m_app_timer_id, APP_TIMER_MODE_REPEATED, timer_timeout_handler); APP_ERROR_CHECK(err_code); */ //----Blink timer err_code = app_timer_create(&blink_timer, APP_TIMER_MODE_REPEATED, blink_timeout_handler); APP_ERROR_CHECK(err_code); if (err_code == NRF_SUCCESS) { NRF_LOG_INFO("Timer create"); NRF_LOG_FLUSH(); } }
the main entry
void main(void) { //-----------------------------------------------Initialize device. log_init(); timers_init(); INHALER_led_RGB_init(PIN_LED_R, PIN_LED_G, PIN_LED_B); gpio_init(); NRF_LOG_INFO("Device Initialized"); NRF_LOG_FLUSH(); if (app_timer_start(blink_timer,BLINK_tick,NULL) == NRF_SUCCESS) { NRF_LOG_INFO("Timer Init"); NRF_LOG_FLUSH(); } //-----------------------------------------------Enter Main loop. for (;;) { CHARGING_UPDATE(); LED_UPDATE(); } }
the Preprocessor definitions,
all the files compiled
and the sdk_config file.
Thanks for your help!!!