147、Zephyr RTOS电源管理基础:设备电源状态管理 📅 2026/8/14 1:56:17 Zephyr RTOS电源管理基础:设备电源状态管理去年做一款工业无线传感器节点,电池供电,要求续航两年以上。硬件选型时特意挑了号称“超低功耗”的STM32U5,结果第一版固件跑下来,待机电流3.2mA——比规格书里标称的1.2μA高了三个数量级。查了三天,最后发现是SPI总线上的一个温度传感器没进休眠,每次系统挂起后它还在偷偷拉高片选线,把整个外设总线都拖醒了。这种坑,做嵌入式电源管理的都懂。Zephyr RTOS的电源管理框架,本质上就是帮你把“谁在偷电”这件事管起来。今天就从设备电源状态管理这个最基础的模块说起。设备电源状态:不只是“开”和“关”很多工程师对电源管理的理解停留在“系统休眠=关外设”。实际上,现代MCU和外设芯片的电源状态远比这复杂。以Zephyr的设备模型为例,每个设备可以定义多个电源状态:#define DEVICE_PM_ACTIVE_STATE 0 // 全速运行 #define DEVICE_PM_LOW_POWER_STATE 1 // 低功耗模式 #define DEVICE_PM_SUSPEND_STATE 2 // 挂起(保留上下文) #define DEVICE_PM_OFF_STATE 3 // 完全断电注意,这里的状态编号不是随便写的。Zephyr内部用位掩码管理状态转换,0是最高活跃度,数值越大功耗越低。我见过有人把状态定义反了,结果系统在“低功耗”模式下反而比“活跃”模式多耗电——因为某个驱动把状态0当成了休眠,把状态3当成了运行。