STM32實現待機喚醒 暫存器版

2021-10-09 06:38:31 字數 888 閱讀 2781

上篇使用了庫函式實現 待機喚醒

本文將使用暫存器版本實現關機模式

暫存器版本跟庫函式版本實現基本一致,

可以通過檢視庫函式版 去看底層** 更方便去理解暫存器版本

暫存器操作

根據上兩張圖可以進行操作

相關步驟

設定 sleepdeep 位

使能電源時鐘,設定 wk_up 引腳作為喚醒源。

設定 pdds 位,執行 wfi 指令,進入待機模式

最後編寫 wk_up 中斷函式。

實現功能如下

使用 stm32 的待機模式了,並且可以通過 wk_up

來喚醒 cpu,我們最終要實現這樣乙個功能:通過長按(3 秒)wk_up 按鍵開機

實現**

#include "wakeup.h"

#include "nvic.h"

#include "led.h"

void wakeup_stand(void)

u8 check_wkup(void)

}else}}

void wkup_init(void)

void sys_enter_standy(void)

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

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

void exti0_irqhandler(void)

//關機?

}

主函式只需呼叫wkup_init()即可。

STM32實現待機喚醒 庫函式版

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

STM32蜂鳴器 暫存器

這次實驗犯了個笑話,竟然在巨集定義後面加分號.就像這樣 define 大家千萬不要學我,結果報錯expected expression,還苦惱半天,想為啥操作不了暫存器了?我真愚蠢!剛開始我也不會寫這些東西,其實摸清套路就好,rcc時鐘使能 gpio初始化 相關暫存器初始化 延時函式 串列埠等初始化...

STM32暫存器對映

1.對映即將記憶體的某段位址與某一暫存器對應,微控制器對函式的操作底層是操作暫存器,而暫存器最終是操作記憶體上對應的單元,2.各個暫存器對應的位址都是在st定義的起始位址上層層偏移得到 3.想要實現某功能可直接對此段記憶體寫進相應的值,即可賦予某一功能 4.stm32底層實際是先定義出外設基位址,然...