如果系统在Debug(RTT打开)模式下,调用sd_power_system_off()将会返回NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN。这往往会导致check_err_code报错导致系统复位无法进入低功耗状态。这个问题是属于正常表现,如果需要对功耗进行测试,只需要禁止Debug或者拔掉JLINK即可。
实际工程中可以通过以下方式处理低功耗的问题,代码如下:
void power_off(void)
{
// Prepare wakeup buttons.
bsp_wakeup_button_enable(USER_ID_ON_OFF_KEY);
bsp_wakeup_button_enable(USER_ID_CHG);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
#ifdef NRF_LOG_ENABLED|NRF_LOG_BACKEND_SERIAL_USES_RTT
(void) sd_power_system_off();
#else
//避开Debug的时候进行check err
APP_ERROR_CHECK(sd_power_system_off());
while(1);
#endif // DEBUG_NRF
}
可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步