Stm32待機模式的進入與喚醒

2021-08-22 16:36:23 字數 1310 閱讀 4618

1-1:微控制器的「低功耗模式」,像是手機的待機模式,不同於正常執行模式,處於一種省電省資源的狀態

1-2:在運**況下,hclk為cpu提供時鐘,cortex-m3核心執行程式的**,如果處於中斷事件的等待時,可以進入低功耗模式用來節省資源等

1-3:stm32一共有著3個低功耗模式

(1)睡眠模式(cm3核心停止,外設時鐘等依舊執行)

(2)停止模式(所有的時鐘)

(3)待機模式(1.8v核心電源關閉)

2-1:進入待機模式函式

配置時鐘+設定喚醒源+待機模式設定

void sys_standby(void)

一般而言,進入待機模式的函式已經封裝成了具體的函式,拆開來看:

1.清除wk_up位

2.設定pwr_cr位使得cpu進入深度睡眠時又進入待機模式

3.設定pdds位cpu設定深度睡眠模式時進入待機模式

4.__wfi指令

void pwr_enterstandbymode(void)

4.以wkup上公升沿為喚醒條件,設定中斷配置函式

oid exti0_irqhandler(void)

}

5.**:實現按鈕3s開機,按鈕3s關機,就像手機的開關機一樣

#include "wkup.h"

#include "led.h"

#include "delay.h"

//待機模式

//1.設定時鐘

//2.設定喚醒條件

//3.設定進入條件

void sys_standby(void)

//系統進入待機模式

//1.復位所有的io

//2.待機模式設定

void sys_enter_standby(void)

//檢測wkup腳的訊號

//返回值1:連續按下3s以上

// 0:錯誤的觸發,進入待機模式

u8 check_wkup(void)

}else

}} //中斷,檢測到pa0腳的乙個上公升沿.

//中斷線0線上的中斷檢測

void exti0_irqhandler(void)

} //pa0 wkup喚醒初始化

void wkup_init(void)

STM32學習筆記 待機喚醒實驗

我指的是正點原子提供的,stm32手冊 庫函式版本 中的第十九章 待機喚醒實驗。我只想說的是,為什麼我一開始沒看出程式是怎麼喚醒的。原因是 待機喚醒僅僅是需要按下wk up鍵即可,而不需要什麼中斷。待機喚醒效果等同於重啟程式,程式重新執行。實驗的程式設定成 從執行開始就會判斷,如果沒有按3秒就自動進...

STM32的停機模式與喚醒

這個星期弄停機模式,下面是 hal init systemclock config mx gpio init mx dma init mx adc init mx lpuart1 uart init mx usart1 uart init mx rtc init workfinished 0 工作沒...

STM32實現待機喚醒 庫函式版

很多微控制器都有低功耗模式,stm32 也不例外。在系統或電源復位以後,微控制器處於運 行狀態。執行狀態下的 hclk 為 cpu 提供時鐘,核心執行程式 當 cpu 不需繼續執行時,可以利用多個低功耗模式來節省功耗,例如等待某個外部事件時。使用者需要根據最低電源消耗,最快速啟動時間和可用的喚醒源等...