Nordic nrf52832睡眠后立刻重启问题解决办法睡眠后立刻重启问题解决办法
文章目录文章目录Nordic nrf52832睡眠后立刻重启问题解决办法写在前面问题描述网上的解决方法我的解决方法问题分析问题解决
写在前面
问题描述
网上的解决方法
我的解决办法
-问题分析
-问题解决
Nordic nrf52832睡眠后立刻重启问题解决办法睡眠后立刻重启问题解决办法
写在前面写在前面
在nrf52832低功耗睡眠唤醒调试的过程中,会出现睡眠后芯片直接自重启,在使用网上大牛博文的关闭外设easyDMA的解决
办法之后仍然会自动重启,最终经过自己反复调试代码终于找到了问题所在,最终成功解决了自重启的问题,希望本博文提供
的解决方案能对您有所帮助
问题描述问题描述
设备开机进行快速广播,3分钟后若超时未连接则进入睡眠,设备唤醒方式是通过io的detect进行唤醒。官方sdk11的代码如
下:
#define APP_ADV_TIMEOUT_IN_SECONDS 180 //3 分钟
static void on_adv_evt(ble_adv_evt_t ble_adv_evt)
{
uint32_t err_code;
switch (ble_adv_evt)
{
case BLE_ADV_EVT_FAST:
err_code = bsp_indication_set(BSP_INDICATE_ADVERTISING);
APP_ERROR_CHECK(err_code);
break;
case BLE_ADV_EVT_IDLE:
sleep_mode_enter();//==1、广播超时进入睡眠==
break;
default:
break;
}
}
static void sleep_mode_enter(void)
{
uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
// Prepare wakeup buttons.
err_code = bsp_btn_ble_sleep_mode_prepare();//==2、唤醒IO设置==
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();//==3、进入睡眠==
APP_ERROR_CHECK(err_code);
}
结果设备进入睡眠之后,就会很快重启,解决方法如下:
网上的解决方法网上的解决方法
网上解决方法主要在睡眠之前设备要关闭所有外设的easyDMA,如手册上圈出部分所描述: