笔者的团队专业从事环境监测设备的开发,在开发过程中团队的工作人员提到了关于FreeRTOS低功耗的问题。
RTOS低功耗与裸机跑的进入的方式不同。普通单片机进入的方式分为SLEEP、STOP和STANDBY三种模式,其省电能力依次增强。
SLEEP模式下,内核仍在运行,所有中断均可唤醒设备。
STOP模式下,内核停止运行HCLK,PCLK1,PCLK2,SYSTEM都停止运行,所有外设停止工作,但是IO保持修面前的状态。RTC保持工作。
STANDBY,内核,时钟,系统,后备1.2V电源全部停止。从STANDBY模式下唤醒,相当于一次复位,程序会从头来过。
FreeRTOS低功耗:FreeRTOS 会创建一个 IDLE 任务,其任务优先级最低,当且仅当所有其它任务均被阻塞时,IDLE 任务才会获得 CPU 使用权。因此,可以很容易想到在 IDLE 任务里去实现进入与退出 STM32F769 的低功耗模式,即在切入 IDLE 任务后,让 STM32 也进入低功耗模式,而在即将切换出 IDLE 任务之前,去唤醒单片机。