STM32F103低功耗模式深度解析:從理論到應用實踐(上) | 零基礎入門STM32第九十二步

主題內容教學目的/擴展視頻
低功耗模式什么是低功耗,模式介紹,切換方法。為電池設備開發做準備。

師從洋桃電子,杜洋老師


📑文章目錄

    • 一、低功耗模式概述
      • 1.1 為什么需要低功耗模式?
      • 1.2 基本實現原理
    • 二、低功耗模式的本質
      • 2.1 單片機功耗構成
      • 2.2 節能核心策略
    • 三、STM32F103三大低功耗模式詳解
      • 3.1 睡眠模式(Sleep Mode)
      • 3.2 停機模式(Stop Mode)
      • 3.3 待機模式(Standby Mode)
    • 四、模式對比與選擇指南
    • 五、喚醒機制實現
      • 5.1 典型喚醒源配置
      • 5.2 外部中斷喚醒示例
    • 六、省電原理深度解析
      • 6.1 動態功耗控制
      • 6.2 靜態漏電流優化
    • 七、應用場景與設計建議
      • 7.1 智能穿戴設備方案
      • 7.2 農業監測系統
    • 八、常見問題解答
    • 九、相關資源


(圖1:STM32F103低功耗模式架構示意圖)

一、低功耗模式概述

1.1 為什么需要低功耗模式?

  • 電池供電需求:物聯網設備、穿戴設備等對續航有嚴格要求
  • 能源效率優化:減少無效功耗,提升系統整體能效比
  • 環保要求:符合現代電子產品綠色節能的設計理念

1.2 基本實現原理

通過分級關閉功能模塊實現階梯式節能:

正常模式 → 睡眠模式 → 停機模式 → 待機模式10mA       2mA        20μA         2μA

二、低功耗模式的本質

2.1 單片機功耗構成

功耗類型占比典型值影響因素
動態功耗60-70%6-7mA時鐘頻率、外設工作狀態
靜態功耗30-40%3-4mASRAM保持、IO口漏電流

2.2 節能核心策略

關閉CPU
睡眠模式
關閉時鐘
停機模式
切斷電源
待機模式

三、STM32F103三大低功耗模式詳解

3.1 睡眠模式(Sleep Mode)

配置寄存器:SCB->SCR

__WFI();  // 等待中斷喚醒
__WFE();  // 等待事件喚醒

特征

  • 僅關閉ARM內核
  • 外設保持運行
  • 喚醒時間<1μs

適用場景:實時性要求高的間歇工作設備

3.2 停機模式(Stop Mode)

配置寄存器:PWR->CR

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

特征

  • 關閉CPU+時鐘系統
  • 保持SRAM內容
  • 典型喚醒時間10μs
  • 支持多種喚醒源:EXTI/RTC/USB等

適用場景:智能門鎖、無線傳感器節點

3.3 待機模式(Standby Mode)

配置寄存器:PWR->CSR

PWR_EnterSTANDBYMode();

特征

  • 完全斷電(僅備份域供電)
  • SRAM內容丟失
  • 喚醒后系統復位
  • 最低功耗2μA

適用場景:環境監測設備(每1小時喚醒采集)


四、模式對比與選擇指南

對比項睡眠模式停機模式待機模式
功耗2mA20μA2μA
喚醒時間<1μs10μs復位時間
SRAM保持保持保持丟失
喚醒源所有中斷EXTI/RTC/USBWKUP/RTC
代碼連續性繼續運行繼續運行系統復位
典型應用實時控制系統智能家居設備環境監測設備

五、喚醒機制實現

5.1 典型喚醒源配置

// RTC鬧鐘喚醒配置
RTC_SetAlarm(RTC_GetCounter() + 3600);  // 1小時后喚醒
RTC_ITConfig(RTC_IT_ALR, ENABLE);

5.2 外部中斷喚醒示例

// PA0配置為喚醒引腳
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitStructure);

六、省電原理深度解析

6.1 動態功耗控制

P = C×V2×f
通過降低時鐘頻率(f)或工作電壓(V)實現節能

6.2 靜態漏電流優化

  • 關閉未使用外設時鐘
  • 配置未使用IO口為模擬輸入模式
  • 禁用調試接口(SWD/JTAG)

七、應用場景與設計建議

7.1 智能穿戴設備方案

無操作30s
抬手喚醒
運動監測
正常模式
進入停機模式
返回正常模式

7.2 農業監測系統

  • 使用待機模式+RTC定時喚醒
  • 每2小時采集一次溫濕度數據
  • 數據通過LoRa無線發送后立即休眠

八、常見問題解答

Q1:如何測量實際功耗?

  • 使用高精度萬用表串聯測量
  • 推薦使用Joulescope等專業儀器

Q2:喚醒后外設需要重新初始化嗎?

  • 停機模式:需要重新初始化時鐘系統
  • 待機模式:需要完全重新初始化

九、相關資源

[1] 洋桃電子B站課程-STM32入門100步
[2] STM32官方文檔手冊
[3] STM32F103固件函數庫用戶手冊(中文)
[4] 低功耗模式原理.pptx


💬 技術討論(請在評論區留言~)

📌 下期預告:下一期將探討低功耗模式程序分析,歡迎持續關注!

點擊查閱🔍往期【STM32專欄】文章

版權聲明:本文采用[CC BY-NC-SA 4.0]協議,轉載請注明來源
實測開發版:洋桃1號開發版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-04-02)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76393.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76393.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76393.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript instanceof 運算符全解析

JavaScript instanceof 運算符全解析 核心語義: 判斷一個對象(object)是否屬于某個構造函數(constructor)或類的實例,基于原型鏈(prototype chain)實現類型檢測。 一、JavaScript 中的基礎用法 1. 語法結構 object instanceof constructor 返回值:布爾值(true/fal…

電腦基礎之word基礎操作

word是常用的辦公軟件之一&#xff0c;用于文檔編輯&#xff0c;如合同/報告撰寫、論文等?。 一、簡介 word文檔最早由微軟推出&#xff0c;通過Microsoft Office Word軟件創建和編輯。由于涉及版權付費問題&#xff0c;大多數個人使用盜版軟件。后來金山出了WPS office免費軟…

深度解析Python代碼中的廣告信息提取與JSON處理

哈嘍,大家好,我是木頭左! 在當今數字化時代,廣告無處不在,而從廣告中提取關鍵信息并進行處理則成為了一項重要的技能。本文將深入剖析一段Python代碼,該代碼旨在從給定的JSON格式字符串中提取廣告相關信息,并對其進行解析和處理。通過這段代碼,將展示如何運用Python的j…

base64在線解碼工具

我們經常會用到base64編碼&#xff0c;相應的base64解碼成為日常必備&#xff0c;所有我們需要擁有一個base64在線解碼工具 base64在線解碼工具

Linux——進程信號(3)(信號保存與信號捕捉)

進程信號3 信號保存信號相關概念詳解信號集&#xff08;sigset_t&#xff09;及操作函數詳解 信號捕捉信號捕捉的詳細流程解析信號捕捉的核心概念信號捕捉的完整流程&#xff08;以 SIGQUIT 為例&#xff09; 信號保存 信號相關概念詳解 1.核心概念 (1) 信號遞達&#xff08…

批量在 txt 記事本文件的指定位置插入行,如在最末尾位置插入行

我們在網上下載的小說經常可以看到內容中每隔多少行都會現一些網站名稱和聯系方式等廣告信息&#xff0c;這些都是固定或者隨機插入在小說正文中的。那是怎么樣實現在文本文件中指定位置插入這些行的呢&#xff1f;今天就給大家介紹一下如何在 txt 記事本文件或者其它類型的文本…

python的內存管理機制

目錄 內存分配方式自動內存管理內存分配策略 垃圾回收機制引用計數垃圾回收對象創建和引用關系引用計數的狀態刪除變量 標記 - 清除垃圾回收 內存分配的區域劃分棧內存堆內存 內存管理的優化內存池技術對象共享 Python 的內存管理機制是其運行效率和安全性的重要保障&#xff0…

火山引擎coze用戶市場

火山引擎 **Coze**&#xff08;扣子&#xff09;的用戶市場主要集中在 **需要快速構建和部署智能對話應用的企業及開發者群體**&#xff0c;覆蓋多個行業與場景。以下是具體分析&#xff1a; --- ### **一、核心用戶群體** 1. **企業用戶** - **互聯網/科技公司**&#…

Java 責任鏈模式 詳解

責任鏈模式詳解 一、責任鏈模式概述 責任鏈模式(Chain of Responsibility Pattern)是一種行為型設計模式&#xff0c;它允許你將請求沿著處理鏈傳遞&#xff0c;直到有一個處理者能夠處理它為止。這種模式解耦了請求的發送者和接收者&#xff0c;使多個對象都有機會處理請求。…

【C++初階】--- string類

1.STL簡介 STL(standard template libaray-標準模板庫)&#xff1a;是C標準庫的重要組成部分&#xff0c;不僅是一個可復用的組件庫&#xff0c;而且是一個包羅數據結構與算法的軟件框架。 2.string類 2.1什么是string類 std::string 類是 C 標準庫中用于處理和操作字符串…

Ubuntu 20.04 中 Git 的安裝、配置和基本操作指南

本文為經驗 所談 使用版本為ubuntu20.04 1 ubuntu的git初始化 1.安裝git sudo apt-get install git 可通過git --version 命令查看&#xff0c;正常輸出git版本號即安裝成功。 2.配置用戶名和郵箱名 git config --global user.name "Your Name" git config --globa…

conda 激活環境vscode的Bash窗口

多份conda環境注意事項&#xff0c;當時安裝了兩個conda環境&#xff0c;miniconda和conda&#xff0c;導致環境總是沖突矛盾。初始化時需要更加注意。 $ C:/Users/a_hal/miniconda3/Scripts/conda.exe init bash能夠顯示用哪里的conda環境命令執行。 然后直接conda activate…

Mac下小智AI本地環境部署

可以進行聊天、編寫程序、播放歌曲等等的小智語音聊天小助手&#xff0c;在Mac環境下修改源代碼&#xff0c;值得擁有。本篇內容主要講解Mac下環境的搭建&#xff0c;WebSocket的修改。注&#xff1a;環境python3.12.0、ESP-IDF5.4.0、開發板ESP32S3。 目錄 1.Git安裝2.Python…

Linux安裝Cmake (Centos 7.9)

cmake安裝 這個雖然已經更新到了4.0.0版本了&#xff0c;但是我們要用3.5版本的&#xff0c;因為這個比較穩定 官方地址&#xff1a;https://github.com/Kitware/CMake/releases/tag/v3.5.0&#xff0c;選擇那個cmake-3.5.0-Linux-x86_64.tar.gz下載&#xff0c; 首先解壓文…

基于 SpringBoot 的舊物置換網站

收藏關注不迷路&#xff01;&#xff01; &#x1f31f;文末獲取源碼數據庫&#x1f31f; 感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff08;免費咨詢指導選題&#xff09;&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;希望幫助更多…

ELK 通過 logstash 收集單個/多個日志文件

一、收集單個日志文件 注意事項&#xff1a; logstah 服務默認啟動用戶和組是 logstash被收集的日志文件有讀的權限并對寫入的文件有寫權限而 logstash 是普通用戶 1.1 編輯 logstash 配置文件 vim /etc/logstash/conf.d/test.conf input {file {path > "/var/log/…

分享一個Drools規則引擎微服務Docker部署

通常我們都是把Drools作為嵌入式使用&#xff0c;但在微服務泛濫時代&#xff0c;還在老套的嵌入式顯然不符合微服務架構要求&#xff0c;本文分享一個把Drools作為微服務獨立部署的方案。 本方案基于Drools引擎微服務&#xff0c;提供REST接口。 1、可以動態部署Drools規則2…

Mac 本地化部署 dify

Macbook 本地化部署 dify 目錄 Macbook 本地化部署 dify安裝dockerdocker下載地址 安裝dify下載dify到本地github可能遇到的問題: github打開超時在本地解壓dify.zip文件本地化部署docker部署可能遇到的問題: 部署超時登錄體驗 dify 安裝docker docker下載地址 根據電腦芯片選…

串口中斷接收與環形緩沖實例(apollo3 blue plus)

#define DEV_UART1 1 #define GPS_POWER_PIN 13 #define GPS_LOG_ENABLE 1 #define MAX_UART1_SIZE 1024 #define AM_BSP_GPIO_COM_UART1_TX 8 #define AM_BSP_GPIO_COM_UART1_RX 9 // 定義環形緩沖區結構 typed…

操作系統高頻(五)linux命令

操作系統高頻&#xff08;五&#xff09;linux命令 1.Linux中查看進程運行狀態的指令、tar解壓文件的參數。??? 在Linux中&#xff0c;可以使用以下指令查看進程的運行狀態&#xff1a; top&#xff1a; 用于實時監視系統的進程活動和系統資源使用情況。在終端中運行top…