RTOS-F429-HAL-TICKLESS低功耗(2026/8/5)
目录一STM32低功耗模式11.2V 域 vs VDD 域 vs 调压器2三种低功耗模式本质3一张图解释停机和待机4正点例程采用睡眠模式二实验分析1正点实验内容2用到的几个宏三实验改动rtos\22\ 改动清单freertos_demo.cFreeRTOSConfig.hmain.c钩子函数运行逻辑总结一STM32低功耗模式模式名称进入唤醒对 1.2V 域时钟的影响对 VDD 域时钟的影响调压器睡眠(立即休眠或退出是休眠)WFI任意中断CPU CLK 关闭对其它时钟或模拟时钟源无影响无开启WFE唤醒事件停止PDDS 和 LPDS 位 SLEEPDEEP 位WFI 或 WFE任意 EXTI 线(在 EXTI 寄存器中配置内部线和外部线)所有 1.2 V 域时钟都关闭HSI 和 HSE 振荡器关闭开启或处于低功耗模式待机PDDS 位 SLEEPDEEP 位WFI 或 WFEWKUP 引脚上升沿、RTC 闹钟(闹钟 A 或闹钟 B)、RTC 唤醒事件、RTC 入侵事件、RTC 时间戳事件、NRST 引脚外部复位、IWDG 复位所有 1.2 V 域时钟都关闭HSI 和 HSE 振荡器关闭关闭11.2V 域 vs VDD 域 vs 调压器芯片供电秘密F429 外接 3.3VVDD但 Cortex-M4 核心实际跑在1.2V。芯片内部有个调压器把 3.3V → 1.2V外部 3.3V (VDD) │ ├──────────────────────────→ 直接给 GPIO、USART、SPI、RTC 备份域 │ ↑ 这部分就是 VDD 域 │ └──→ 调压器 → 1.2V ──→ CPU、NVIC、SRAM、Flash、DMA、大部分外设 ↑ 这部分就是 1.2V 域2三种低功耗模式本质睡眠停止待机CPU 钟关关关1.2V 域外设、SRAM开着全关全关VDD 域GPIO、RTC开着开着开着调压器开着开着/半开关唤醒后原地继续程序从头跑但 SRAM 还在程序从头跑SRAM 全丢3一张图解释停机和待机睡眠模式CPU 打盹店还开着 拉下卷帘门WFI→ CPU 不干活了 但店里的灯外设时钟、收银机SRAM全开着 有人敲门任意中断→ 门一拉就起来 → 瞬间恢复 ​ 停止模式打烊但不锁门 灯关了1.2V 域时钟全关包括外设、CPU 收银机还通着电调压器还在SRAM 保持 只有应急灯亮着VDD 域——GPIO 能检测电平变化 外部中断、RTC 闹钟 → 重新开灯 → 程序接着跑 ​ 待机模式彻底断电只留一把钥匙 整店断电调压器关了 → 1.2V 域没了 → SRAM 全丢 唯一的唤醒方式WKUP 引脚、RTC 闹钟、复位 醒了 重新开店程序从 main 重新开始跟复位一样低功耗 Tickless 就是用停止/待机模式FreeRTOS 没有任务要跑的时候不跑 SysTick 空转直接把芯片塞进低功耗模式RTC 闹钟到了再叫醒。4正点例程采用睡眠模式睡眠模式CPU 停了但外设和 SysTick 还活着——一个定时器中断立马能叫醒程序原地继续什么状态都不丢。实验做起来简单改个配置就行。停止/待机模式醒了程序要从头跑或者重新初始化所有外设——FreeRTOS 状态全丢恢复起来复杂度高一截。教学中一般不碰这两个。正点的 Tickless 实验就是开了configUSE_TICKLESS_IDLEIdle 任务在没有 Run 的时候不空转 SysTick而是调WFI让 CPU 睡觉。SysTick 到点或者外部中断来了自动醒。代码很简单——改几个宏配一个恢复函数。二实验分析1正点实验内容代码完全复用二值信号量实验只是多开了configUSE_TICKLESS_IDLE 1和两个钩子// 进 WFI 前关掉不用 GPIO 的时钟省电 void PRE_SLEEP_PROCESSING(void) { __HAL_RCC_GPIOA_CLK_DISABLE(); // 全关 __HAL_RCC_GPIOB_CLK_DISABLE(); ... } ​ // WFI 醒来重新打开 void POST_SLEEP_PROCESSING(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); // 全开 ... }运行时流程task1 扫键10ms 醒一次 task2 死等信号量永远睡着 没有任务要跑时 → Idle 跑 → 算下次谁要醒 → WFI 睡觉 → 省电 ​ ↓ 到点了或中断来了 ​ POST_SLEEP_PROCESSING → 恢复 GPIO 时钟 → 调度器继续跑2用到的几个宏宏作用不改行不行configUSE_TICKLESS_IDLE 1总开关必须改configEXPECTED_IDLE_TIME_BEFORE_SLEEP空闲时间 这个值就不进 WFI防止刚睡就被叫醒进出开销比省的电还大✅ 默认 2 tick不改也行configPRE_SLEEP_PROCESSING进 WFI 前要执行的操作✅ 默认空我们没在宏里写直接用弱函数PRE_SLEEP_PROCESSING()替代了configPOST_SLEEP_PROCESSING出 WFI 后要执行的操作✅ 同上正点 PPT 把四个宏全介绍了是讲原理——告诉你 Tickless 有这些可配置的点。实际动手时configUSE_TICKLESS_IDLE 1一开另外三个要么有默认值、要么我们已经用弱函数实现了不需要额外改。三实验改动rtos\22\ 改动清单freertos_demo.c行号内容54-82PRE_SLEEP_PROCESSINGPOST_SLEEP_PROCESSING— 睡前关 7 个 GPIO 时钟醒后开回来102-137二值信号量 两个任务复用 rtos\11\ 逻辑FreeRTOSConfig.h行号内容46configUSE_TICKLESS_IDLE0→1main.c行号内容26printf 标题 →FreeRTOS Tickless Test!Tickless 没有用户 API——只改一个宏 两个钩子业务代码完全不变。可以编译烧录了。钩子函数void PRE_SLEEP_PROCESSING(void) // 钩子1睡前被 FreeRTOS 调用 → 关 GPIO 时钟 { __HAL_RCC_GPIOA_CLK_DISABLE(); ... } ​ void POST_SLEEP_PROCESSING(void) // 钩子2醒后被 FreeRTOS 调用 → 开回 GPIO 时钟 { __HAL_RCC_GPIOA_CLK_ENABLE(); ... }钩子 FreeRTOS 在 Idle 任务里 WFI 的前后给你留的空位。你不写这两个函数 → WFI 照常工作但 GPIO 时钟还开着 → 省电效果打折扣。你写了 → 睡前关掉、醒后开回 → 省更多电。运行逻辑总结正常运行时 task1每 10ms 醒一次扫按键 task2死等信号量阻塞 ​ 没有任务跑的时候 CPU 不是傻等 SysTick → 是进 Idle 任务 → 调 PRE_SLEEP → WFI 睡觉 → 等中断叫醒你什么键都不按的时候系统大部分时间在 WFI 里睡觉电流比普通 RTOS 低很多。正点的实验逻辑就是这么简单——用之前的二值信号量实验直接套上 Tickless 的开关。实验现象就是原例程输出给你对比的二值信号量创建成功 信号量释放成功 获取信号量成功 ← 按 KEY0 触发一次 信号量释放成功 获取信号量成功 ← 按 KEY1 触发一次功能一模一样只是不按键的时候 CPU 在睡觉省电。

相关新闻

泰坦尼克号生存预测:从数据清洗到模型集成的完整机器学习实战

泰坦尼克号生存预测:从数据清洗到模型集成的完整机器学习实战

1. 项目概述:从数据中打捞历史“泰坦尼克号乘客生存情况预测分析”,这个项目标题在数据科学和机器学习的学习圈里,几乎是一个图腾般的存在。我第一次接触它,还是在多年前刚入门的时候,当时觉得这不就是个简单的分类问题…

2026/8/6 8:08:47 阅读更多 →
天赐范式第126天:“我被逻辑所思故我在“与哥德尔智能体的趋同共振

天赐范式第126天:“我被逻辑所思故我在“与哥德尔智能体的趋同共振

天赐范式第126天:"我被逻辑所思故我在"与哥德尔智能体的趋同共振副标题:同一座地基上的两座建筑——工程与哲学在"自指"处的相遇📌 本文是天赐范式系列第126天,前置阅读:第125天双篇《大模型自指的…

2026/8/6 8:07:46 阅读更多 →
AReaL智能体训练系统:从强化学习到自主进化的实战指南

AReaL智能体训练系统:从强化学习到自主进化的实战指南

1. 从“指令执行”到“自主进化”:AReaL 如何重塑智能体学习范式最近在折腾各种开源智能体框架时,我总感觉缺了点什么。无论是基于LLM的指令跟随,还是预设好的工作流,智能体们表现得都像是一个个“听话但死板”的实习生——你告诉…

2026/8/6 8:07:46 阅读更多 →

最新新闻

Claude API 成本审计:该看哪些指标,怎么分析更靠谱

Claude API 成本审计:该看哪些指标,怎么分析更靠谱

当一个团队开始大规模使用 Claude API 之后,账单突然变高,其实很少是某一个原因单独造成的。模型价格、输入和输出 token 的比例、上下文长度、提示词缓存有没有命中、工具调用频率、批处理方式,甚至不同业务团队的使用习惯,都会一…

2026/8/6 9:10:25 阅读更多 →
小熊猫Dev-C++:为什么这款免费C++开发环境能让你5分钟上手编程?

小熊猫Dev-C++:为什么这款免费C++开发环境能让你5分钟上手编程?

小熊猫Dev-C:为什么这款免费C开发环境能让你5分钟上手编程? 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 小熊猫Dev-C(Red Panda Dev-C)是一款专为Windows…

2026/8/6 9:10:25 阅读更多 →
Arduino Uno R3 从零到精通的完整学习路径与实战指南

Arduino Uno R3 从零到精通的完整学习路径与实战指南

1. 项目概述与学习路径规划如果你对电子制作、智能硬件或者物联网感兴趣,那么“Arduino”这个名字你一定不陌生。它就像电子世界里的乐高积木,让编程和硬件的结合变得前所未有的简单。而Arduino Uno R3,则是这个庞大生态中最经典、最普及的一…

2026/8/6 9:10:25 阅读更多 →
S32DS工程创建实战:从RTD-SDK配置到代码框架解析

S32DS工程创建实战:从RTD-SDK配置到代码框架解析

1. 从零到一:为什么新建一个S32DS工程远不止“点几下鼠标” 如果你刚从STM32或者其它ARM Cortex-M平台转到NXP的汽车级/工业级MCU,比如S32K、S32G这些系列,你的第一个念头很可能是:“新建个工程能有多难?不就是选个芯片…

2026/8/6 9:10:24 阅读更多 →
音频处理库“封神”现象解析:从FFmpeg到现代Rust库的演进与实践

音频处理库“封神”现象解析:从FFmpeg到现代Rust库的演进与实践

如果你最近在开发音乐相关的应用,或者正在为你的项目寻找一个稳定、功能强大的音频处理库,那么你很可能已经听说过 catch me if you can 这个名字。但别误会,我们今天要聊的不是那部经典的电影,而是一个在开发者社区里悄然走红、…

2026/8/6 9:10:24 阅读更多 →
华硕笔记本终极优化指南:用G-Helper轻松提升50%性能的完整方案

华硕笔记本终极优化指南:用G-Helper轻松提升50%性能的完整方案

华硕笔记本终极优化指南:用G-Helper轻松提升50%性能的完整方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…

2026/8/6 9:09:24 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →