nRF52笔记(25) sd_power_system_off() 返回ERR问题

转载地址

如果系统在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
与大伙沟通交流,技术在于分享而进步

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是在 Nordic Semiconductor 的 nRF5 SDK 中使用 SoftDevice 的 BLE 应用程序中的初始化过程。让我逐行解释这段代码的功能: 1. `clock_init();`:初始化系统时钟。 2. `ble_stack_init();`:初始化 BLE 协议栈。 3. `gap_params_init();`:初始化 GAP (Generic Access Profile) 参数,包括设备名称、外观等。 4. `gatt_init();`:初始化 GATT (Generic Attribute Profile) 层。 5. `services_init();`:初始化自定义的 BLE 服务。 6. `conn_params_init();`:初始化连接参数,包括连接间隔、超时等。 7. `peer_manager_init();`:初始化 Peer Manager,用于管理 BLE 连接的配对与保护。 8. `d_ble_advertising_init(NULL);`:初始化广播功能,使设备能够被其他设备发现。 9. `nrf_sdh_freertos_init(NULL, NULL);`:初始化 FreeRTOS,并将其集成到 nRF5 SDK 中。 10. `err_code = sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);`:设置 DCDC(直流-直流)模式为启用,以提高系统功率效率。 11. `APP_ERROR_CHECK(err_code);`:检查错误码并处理错误。 12. `err_code = sd_power_mode_set(NRF_POWER_MODE_LOWPWR);`:设置系统为低功耗模式,以降低功耗。 13. `APP_ERROR_CHECK(err_code);`:检查错误码并处理错误。 这些初始化函数和设置操作用于配置 BLE 应用程序的基本参数、功能和功耗管理。具体的实现细节和功能取决于所使用的 nRF5 SDK 版本和应用程序需求。在代码中,`err_code` 是一个用于存储错误码的变量,`APP_ERROR_CHECK` 是一个用于检查错误码并处理错误的宏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值