關於NRF52832 system off 低功耗模式的調試心得

前言:第一次實現按鍵進入NRF52832 system off 低功耗模式調試時遇到遇到一些問題,經過一番折騰,最終還是一步步解決,其中一些問題是參考一些博主大佬的,但是一些問題確實找到答案,特將實現過程記錄之,望路過大神不吝賜教。

功能描述:筆者主要想實現NRF52832通過微動開關長按進入低功耗模式,再次按鍵實現喚醒功能。

遇到的問題及解決
1、CSDN上的大神關於NRF52832 system off問題基本都是調用sd_power_system_off();系統復位的問題,這個主要是EasyDMA引起。具體參考該博客
2、我所遇到的其中一個坑不是1中的問題,貼上SDK中sleep_mode_enter代碼說明

static void sleep_mode_enter(void)
{
    ret_code_t err_code;

    err_code = bsp_indication_set(BSP_INDICATE_IDLE);
    APP_ERROR_CHECK(err_code);

    // Prepare wakeup buttons.
    err_code = bsp_btn_ble_sleep_mode_prepare();
    APP_ERROR_CHECK(err_code);

    // Go to system-off mode (this function will not return; wakeup will cause a reset).
    err_code = sd_power_system_off();
    APP_ERROR_CHECK(err_code);
}

造成重啓原因:Go to system-off mode (this function will not return; wakeup will cause a reset). 這個是sdk中調用sd_power_system_off旁邊的註釋,我直接忽略了,調了sd_power_system_off,後進行APP_ERROR_CHECK(err_code); 回報錯,正確的是應該把APP_ERROR_CHECK(err_code);註釋掉

3、另外一個個坑:我使用按鍵觸發,檢測按鍵長按觸發system_off,但是忘記進system_off禁止掉gpiote導致鬆手又觸發按鍵中斷,所以重啓了。這是另外一個坑,解決辦法:我在長按釋放時再進入system_off就沒有這個問題了。當然最好的體驗是觸發長按後進入並且使gpio不再中斷,同時又要不影響喚醒,這個是一直有點小困惑的地方,怎麼改寫都沒實現,需要路過大神賜教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章