上篇使用了庫函式實現 待機喚醒
本文將使用暫存器版本實現關機模式
暫存器版本跟庫函式版本實現基本一致,
可以通過檢視庫函式版 去看底層** 更方便去理解暫存器版本
暫存器操作
根據上兩張圖可以進行操作
相關步驟
設定 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底層實際是先定義出外設基位址,然...