打开nrf_pwr_mgmt_run() 函数,BLE 状态下,如果 CPU 处于空闲状态就会进入 sd_app_evt_wait() 函数,这个函数是进入低功耗的关键,是协议栈提供的一个等待事件函数。 void nrf_pwr_mgmt_run(void) { PWR_MGMT_FPU_SLEEP_PREPARE(); // 清除FDU异常,避免FDU中断被挂起 PWR_MGMT_SLEEP_LOCK_ACQUIRE(); //...
打开nrf_pwr_mgmt_run() 函数,BLE 状态下,如果 CPU 处于空闲状态就会进入 sd_app_evt_wait() 函数,这个函数是进入低功耗的关键,是协议栈提供的一个等待事件函数。 voidnrf_pwr_mgmt_run(void){ PWR_MGMT_FPU_SLEEP_PREPARE();// 清除FDU异常,避免FDU中断被挂起PWR_MGMT_SLEEP_LOCK_ACQUIRE();// 锁定临...
主函数中,最后一个循环等待,调用了 idle_state_handle()函数,这个函数字面意思为无效状态操作,也就是说在没有蓝牙事件或者芯片处理事件的时候,设备调用这个函数,可以使设备处于 system on 状态,也就是待机状态。idle_state_handle()函数中调用了 nrf_pwr_mgmt_run 函数中,这个函数中使用了 SDK 提供了一个协议栈...
可以直接控制 POWER 相关寄存器使系统进入 System OFF 模式(NRF_POWER->SYSTEMOFF = 1; ),也可以通过API函数(sleep_mode_enter() 或 nrf_pwr_mgmt_run() 此函数执行 __WFE() 指令进入睡眠前清除所有事件),可以参考 SDK 中的 nrf_pwr_mgt 例子,系统进入 System OFF 模式会保留 GPIO 之前的状态,包括 GPIO...
打开idle_state_handle()函数,该函数是处理空闲状态的函数。通过 if 语句,判断调试缓冲区没有更多日志的时候,就进入nrf_pwr_mgmt_run()函数,这个函数就会进入到低功耗模式,直到下一个事件发生。 static void idle_state_handle(void){ if(NRF_LOG_PROCESS() == false) // 如果调试缓冲区没有更多日志 ...
I have a custom application and bootloader with DFU support. We have been able to download application updates using the DFU. Today I noticed that I am not calling nrf_pwr_mgmt_run() in the main loop. nrf_pwr_mgmt_init() is being called and a handler is registered. It appears that ...
nrf_pwr_mgmt_run(); } } 语句NRF_LOG_PROCESS()执行打印输出。 这种打印策略可以减少在程序执行过程中打印输出对于程序正常运行的影响,因为打印输出是要耗费时间的。 3.2 日志级别 上面我们在程序中使用NRF_LOG_INFO函数打印输出调试信息。为了使打印的日志更具有针对性,比如只打印错误部分日志,或者只打印警告部分...
void nrf_pwr_mgmt_run(void) { PWR_MGMT_FPU_SLEEP_PREPARE(); PWR_MGMT_SLEEP_LOCK_ACQUIRE(); PWR_MGMT_CPU_USAGE_MONITOR_SECTION_ENTER(); PWR_MGMT_DEBUG_PIN_SET(); // Wait for an event. #ifdef SOFTDEVICE_PRESENT if (nrf_sdh_is_enabled()) ...
nrf_pwr_mgmt_run(); } } 语句NRF_LOG_PROCESS()执行打印输出。 这种打印策略可以减少在程序执行过程中打印输出对于程序正常运行的影响,因为打印输出是要耗费时间的。 3.2 日志级别 上面我们在程序中使用NRF_LOG_INFO函数打印输出调试信息。为了使打印的日志更具有针对性,比如只打印错误部分日志,或者只打印警告部分...
4、power_management_init中调用了nrf_pwr_mgmt_init(),其函数定义如下,主要是用于初始化低功耗管理模块,在实际的应用中可以直接使用。 /**@brief Function for initializing power management. * * @warning Depending on configuration, this function sets SEVONPEND in System Control Block (SCB). ...