I used nRF52840 with nRF5 SDK 17.1.0
Also use freeRTOS from example "ble_app_hrs_freertos"
I need implement System-On mode deepsleep mode.
So I use nrf_pwr_mgmt_run API in my main task.
bool System_Sleep(void)
{
Log("%s: +", __func__);
uint32_t ret = 0;
Log("%s: enter real sleep", __func__);
stopSleepTimer();
vTaskSuspendAll();
//taskDISABLE_INTERRUPTS(); // if enable this, will block in nrf_pwr_mgmt_run and then does not wakeup by everthing.
RegisterWakeupSource();
{
nrf_pwr_mgmt_run();
//ret = sd_app_evt_wait();
sd_evt_get(&ret);
}
UnregisterWakeupSource();
taskENABLE_INTERRUPTS();
xTaskResumeAll();
resetSleepTimer();
Log("%s: ret %d -", __func__, ret);
return true;
}
But "nrf_pwr_mgmt_run" API will return immediately,
sd_evt_get value is '0'.
how to enter deepsleep mode with System On mode?