在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32實(shí)例-待機(jī)喚醒實(shí)驗(yàn)

jf_pJlTbmA9 ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2023-10-26 15:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文我們來學(xué)習(xí)下STM32的待機(jī)喚醒功能。要實(shí)現(xiàn)的功能是:系統(tǒng)運(yùn)行時(shí) D1 指示燈閃爍,5 秒后進(jìn)入待機(jī)模式,D1 指示燈熄滅,同時(shí)串口 printf輸出相關(guān)提示信息,可通過 K_UP 按鍵實(shí)現(xiàn)喚醒。學(xué)習(xí)本內(nèi)容可以參考《STM32F10x中文參考手冊》-4 電源控制器(PWR)章節(jié)。

STM32低功耗模式介紹

很多單片機(jī)具有低功耗模式,比如 MSP430STM8L等。我們的STM32也不例外,相關(guān)文章:STM32低功耗模式。默認(rèn)情況下,系統(tǒng)復(fù)位或上電復(fù)位后,微控制器進(jìn)入運(yùn)行模式。在運(yùn)行模式下,HCLK 為 CPU 提供時(shí)鐘,并執(zhí)行程序代碼。當(dāng) CPU 不需繼續(xù)運(yùn)行(例如等待外部事件)時(shí),可以利用多種低功耗模式來節(jié)省功耗。用戶需要根據(jù)最低電源消耗、最快速啟動(dòng)時(shí)間和可用的喚醒源等條件,選定一個(gè)最佳的低功耗模式。

當(dāng)然在運(yùn)行模式下,也可以通過如下方式降低功耗:

(1)降低系統(tǒng)時(shí)鐘速度

(2)不使用 APBx 和 AHB 外設(shè)時(shí),將對應(yīng)的外設(shè)時(shí)鐘關(guān)閉

STM32 提供了 3 種低功耗模式,以達(dá)到不同層次的降低功耗的目的,這三種模式如下:

(1)睡眠模式( CM3 內(nèi)核停止工作,外設(shè)仍在運(yùn)行)

(2)停止模式(所有時(shí)鐘都停止)

(3)待機(jī)模式( 1.8 V 內(nèi)核電源關(guān)閉)

這三種模式所需的功耗是逐級遞減,也就是說待機(jī)模式功耗是最低的。三種低功耗模式匯總表如下圖所示:

wKgZomUD9JuAHOQoAARkfpYyNIM263.png

我們僅對 STM32 的待機(jī)模式進(jìn)行介紹,其他 2 種模式可以參考《STM32F10x 中文參考手冊》-4電源控制器(PWR)章節(jié),里面有詳細(xì)的介紹。

(1)待機(jī)模式

在睡眠模式中,僅關(guān)閉了內(nèi)核時(shí)鐘,內(nèi)核停止運(yùn)行,但其片上外設(shè), CM3 核心的外設(shè)全都照常運(yùn)行。在停止模式中,進(jìn)一步關(guān)閉了其它所有的時(shí)鐘,于是所有的外設(shè)都停止了工作,但由于其 1.8V 區(qū)域的部分電源沒有關(guān)閉,還保留了內(nèi)核的寄存器、內(nèi)存的信息,所以從停止模式喚醒,并重新開啟時(shí)鐘后,還可以從上次停止處繼續(xù)執(zhí)行代碼。在待機(jī)模式中, 它除了關(guān)閉所有的時(shí)鐘, 還把 1.8V 區(qū)域的電源也完全關(guān)閉了,也就是說,從待機(jī)模式喚醒后,由于沒有之前代碼的運(yùn)行記錄,只能對芯片復(fù)位,重新檢測 BOOT 條件,從頭開始執(zhí)行程序。低功耗開發(fā)相關(guān)文章:STM32低功耗開發(fā)時(shí),需要注意的GPIO配置問題。

那么我們?nèi)绾芜M(jìn)入待機(jī)模式呢?其實(shí)很簡單,只要按下圖所示待機(jī)模式進(jìn)入與退出步驟的步驟執(zhí)行就可以了。

wKgaomUD9JyADy5cAANOwSXFqHM423.png

上圖還列出了退出待機(jī)模式的操作,當(dāng)檢測到外部復(fù)位(NRST 引腳)、

IWDG 復(fù)位、 WKUP 引腳上升沿、 RTC 鬧鐘事件的上升沿時(shí),微控制器退出待機(jī)模式。本文我們是通過 WKUP 引腳(PA0)上升沿來退出待機(jī)模式,當(dāng)然也可以直接通過芯片復(fù)位管腳 NRST退出。

從待機(jī)模式喚醒后,除了電源控制/狀態(tài)寄存器(PWR_CSR),所有的寄存器豆被復(fù)位,程序?qū)凑諒?fù)位(啟動(dòng)引腳采樣、復(fù)位向量已獲取等)后的方式重新執(zhí)行。電源控制/狀態(tài)寄存器(PWR_CSR)將會(huì)指示內(nèi)核由待機(jī)狀態(tài)退出。

在進(jìn)入待機(jī)模式后,除了復(fù)位引腳以及被設(shè)置為防侵入或校準(zhǔn)輸出時(shí)的

TAMPER (PC13)引腳和被使能的喚醒引腳( WK_UP 腳(PA0)),其他的 IO 引腳都將處于高阻態(tài)。

由于篇幅限制,本文并沒有對待機(jī)模式相關(guān)寄存器進(jìn)行介紹,大家可以參考《STM32F10x 中文參考手冊》-4 電源控制器(PWR)章節(jié),里面有詳細(xì)的講解。如果看不懂的可以暫時(shí)放下,因?yàn)槲覀兪褂玫氖菐旌瘮?shù)開發(fā)。

待機(jī)模式配置步驟

接下來我們介紹下如何使用庫函數(shù)進(jìn)入和退出待機(jī)模式。這個(gè)也是在編寫程序中必須要了解的。

具體步驟如下:(電源管理相關(guān)庫函數(shù)在 stm32f10x_pwr.c和 stm32f10x_pwr.h 文件中)

(1)使能電源時(shí)鐘

因?yàn)榈凸哪J绞峭ㄟ^ STM32 電源(PWR)系統(tǒng)進(jìn)行管理的,所以需要使能電源時(shí)鐘,調(diào)用的庫函數(shù)為:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能 PWR 外設(shè)時(shí)鐘

(2)設(shè)置 WK_UP 引腳為喚醒源

待機(jī)喚醒方式有很多種,我們選擇 WK_UP 引腳(PA0)上升沿來退出待機(jī)模式。在庫函數(shù)中,設(shè)置使能 WK_UP 用于喚醒 CPU 待機(jī)模式的函數(shù)是:

PWR_WakeUpPinCmd(ENABLE);

因?yàn)榘存I K_UP 連接在PA0 管腳上,并且是高電平有效,這樣一來就可以使用 K_UP按鍵來退出待機(jī)模式。

(3)進(jìn)入待機(jī)模式

進(jìn)入待機(jī)模式, 首先要設(shè)置 SLEEPDEEP 位 ( 詳見 《 Cortex M3 權(quán)威指南(中文)》 , chpt13 Cortex-M3 的其它特性--電源管理章節(jié)) ,接著我們通過 PWR_CR設(shè)置 PDDS 位,使得 CPU 進(jìn)入深度睡眠時(shí)進(jìn)入待機(jī)模式,最后執(zhí)行 WFI 指令開始進(jìn)入待機(jī)模式,并等待 WK_UP 中斷的到來。整個(gè)操作可以通過一個(gè)庫函數(shù)完成,如下:

PWR_EnterSTANDBYMode();//進(jìn)入待機(jī)模式

通常在進(jìn)入待機(jī)模式前,我們會(huì)清除喚醒標(biāo)志,以等待下次進(jìn)入。清除喚醒標(biāo)志庫函數(shù)為:

PWR_ClearFlag(PWR_FLAG_WU);//清除 Wake-up 標(biāo)志

以上幾步全部配置好后,我們就可以正常進(jìn)入待機(jī)模式了,并且可以通過按鍵 K_UP或者復(fù)位按鍵喚醒。

特別提醒下,如果學(xué)到 RTC 實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)的時(shí)候,需要進(jìn)入待機(jī)模式,如果使能了 RTC 鬧鐘中斷的時(shí)候,進(jìn)入待機(jī)模式前,必須按如下操作處理:

1.禁止 RTC 中斷( ALRAIE、 ALRBIE、 WUTIE、 TAMPIE 和 TSIE 等)。

2.清零對應(yīng)中斷標(biāo)志位。

3.清除 PWR 喚醒(WUF)標(biāo)志(通過設(shè)置 PWR_CR 的 CWUF 位實(shí)現(xiàn))。

4.重新使能 RTC 對應(yīng)中斷。

5.進(jìn)入低功耗模式。

本實(shí)驗(yàn)使用到硬件資源如下:

(1)D1 指示燈

(2)串口 1

(3)K_UP 按鍵

D1指示燈、K_UP 按鍵、串口 1 電路在前面章節(jié)都介紹過,這里不多說。D1指示燈用來提示系統(tǒng)正常運(yùn)行,K_UP 按鍵用來喚醒待機(jī)模式,串口 1 用來輸出提示信息。

所要實(shí)現(xiàn)的功能是:系統(tǒng)運(yùn)行時(shí) D1 指示燈閃爍,5 秒后進(jìn)入待機(jī)模式,D1 指示燈熄滅,同時(shí)串口 printf 輸出相關(guān)提示信息,通過 K_UP 按鍵實(shí)現(xiàn)喚醒。

程序框架如下:

(1)配置進(jìn)入與退出待機(jī)模式

(2)編寫主函數(shù)

前面介紹待機(jī)模式配置步驟時(shí),就已經(jīng)講解如何配置。下面我們打開“待機(jī)喚醒實(shí)驗(yàn)”工程,在 APP 工程組中可以看到添加了wkup.c文件(里面包含了待機(jī)模式驅(qū)動(dòng)程序),在 StdPeriph_Driver 工程組中添加了 stm32f10x_pwr.c 庫文件。電源系統(tǒng)管理相關(guān)操作的庫函數(shù)都放在stm32f10x_pwr.c 和 stm32f10x_pwr.h 文件中,所以使用到電源系統(tǒng)管理就必須加入 stm32f10x_pwr.c 文件,同時(shí)還要包含對應(yīng)的頭文件路徑。

這里我們分析幾個(gè)重要函數(shù),其他部分程序大家可以打開工程查看。

待機(jī)模式配置函數(shù)

要讓系統(tǒng)進(jìn)入待機(jī)模式,我們必須對它進(jìn)行配置。進(jìn)入待機(jī)模式代碼如下:

/****************************************************************
* 函 數(shù) 名 : Enter_Standby_Mode
* 函數(shù)功能 : 進(jìn)入待機(jī)模式
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************/
void Enter_Standby_Mode(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能 PWR 外設(shè)時(shí)鐘
  PWR_ClearFlag(PWR_FLAG_WU);//清除 Wake-up 標(biāo)志
  PWR_WakeUpPinCmd(ENABLE);//使能喚醒管腳 使能或者失能喚醒管腳功能
  PWR_EnterSTANDBYMode();//進(jìn)入待機(jī)模式
}

該函數(shù)首先使能電源PWR時(shí)鐘,然后清除喚醒標(biāo)志位,并使能 WK_UP管腳為喚醒方式,最后進(jìn)入待機(jī)模式。這一過程在前面步驟介紹中已經(jīng)提了。

主函數(shù)

配置待機(jī)模式后,我們就可以編寫主函數(shù),代碼如下:

/****************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************/
int main()
{
  SysTick_Init(72);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級分組 分2 組
  LED_Init();
  USART1_Init(9600);
  while(1)
  {
    printf("time: 5rn");
    led1=0;
    delay_ms(1000); //隔 1 秒顯示計(jì)數(shù)
    printf("time: 4rn");
    led1=1;
    delay_ms(1000);
    printf("time: 3rn");
    led1=0;
    delay_ms(1000);
    printf("time: 2rn");
    led1=1;
    delay_ms(1000);
    printf("time: 1rn");
    led1=0;
    delay_ms(1000);
    printf("進(jìn)入系統(tǒng)待機(jī)模式rn");
    Enter_Standby_Mode();
  }
}

主函數(shù)實(shí)現(xiàn)的功能很簡單,首先調(diào)用之前編寫好的硬件初始化函數(shù),包括

SysTick 系統(tǒng)時(shí)鐘,中斷分組,LED 初始化等。然后進(jìn)入 while 循環(huán),每間隔一秒讓 printf 輸出一個(gè)信息,同時(shí)指示燈狀態(tài)發(fā)生變化。倒計(jì) 5 秒鐘后,調(diào)用函數(shù) Enter_Standby_Mode進(jìn)入待機(jī)模式,此時(shí)指示燈熄滅。

將工程程序編譯后下載到開發(fā)板內(nèi),可以看到系統(tǒng)運(yùn)行時(shí) D1 指示燈不斷閃爍,5 秒鐘后進(jìn)入待機(jī)模式,此時(shí) D1 指示燈熄滅。當(dāng)按下 K_UP 按鍵或復(fù)位按鍵時(shí),待機(jī)模式被喚醒,系統(tǒng)重新運(yùn)行,同時(shí)串口打印提示信息。如果想在串口調(diào)試助手上看到輸出信息,可以打開“串口調(diào)試助手”,首先勾選下標(biāo)號 1 DTR 框,然后再取消勾選。這是因?yàn)榇舜谥謫?dòng)時(shí)會(huì)把系統(tǒng)復(fù)位住, 通過 DTR 狀態(tài)切換下即可。然后設(shè)置好波特率等參數(shù)后,串口助手上即會(huì)收到 printf發(fā)送過來的信息。(串口助手上先勾選下標(biāo)號1 DTR框,然后再取消勾選)如下圖所示。

wKgZomUD9J-AKy0LAATfaIFzDAw254.png

實(shí)驗(yàn)說明:下載待機(jī)喚醒實(shí)驗(yàn)程序后,若使用普中 ARM 仿真器下載其他的程序會(huì)出現(xiàn)報(bào)警,這是因?yàn)樘幱诘凸哪J綍r(shí),所有外設(shè)時(shí)鐘都已關(guān)閉,所以需要在下載程序前先復(fù)位下系統(tǒng)。

來源:STM32嵌入式開發(fā)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2291

    文章

    11026

    瀏覽量

    363771
  • 低功耗
    +關(guān)注

    關(guān)注

    11

    文章

    2772

    瀏覽量

    104776
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于STM32待機(jī)喚醒功能

    本文我們來學(xué)習(xí)下STM32待機(jī)喚醒功能。要實(shí)現(xiàn)的功能是:系統(tǒng)運(yùn)行時(shí) D1 指示燈閃爍,5 秒后進(jìn)入待機(jī)模式,D1 指示燈熄滅,同時(shí)串口 printf輸出相關(guān)提示信息,可通過 K_UP
    發(fā)表于 07-20 17:57 ?6566次閱讀

    「正點(diǎn)原子STM32Mini板資料連載」第十九章 待機(jī)喚醒實(shí)驗(yàn)

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子STM32mini開發(fā)板2)摘自《正點(diǎn)原子STM32 不完全手冊(HAL 庫版)》關(guān)注官方微信號公眾號,獲取更多資料:正點(diǎn)原子第十九章 待機(jī)
    發(fā)表于 04-09 11:30

    STM32待機(jī)喚醒的實(shí)現(xiàn)方法

    喚醒。具體程序參考原子哥的喚醒實(shí)驗(yàn)代碼。從正常運(yùn)行模式切換到待機(jī)模式:按住wkup鍵 外部中斷0中斷被觸發(fā) 執(zhí)行中斷服務(wù)函數(shù) Check_up()函數(shù)開始檢測 如果時(shí)間沒超過3s 返回
    發(fā)表于 05-26 07:00

    STM32待機(jī)喚醒實(shí)驗(yàn)分析

    STM32待機(jī)喚醒實(shí)驗(yàn)分析(基于原子哥程序)  
    發(fā)表于 02-02 07:09

    STM32實(shí)現(xiàn)待機(jī)喚醒

    STM32實(shí)現(xiàn)待機(jī)喚醒 寄存器版上篇使用了庫函數(shù)實(shí)現(xiàn) 待機(jī)喚醒本文將使用寄存器版本實(shí)現(xiàn)關(guān)機(jī)模式寄存器版本跟庫函數(shù)版本實(shí)現(xiàn)基本一致,可以通過查
    發(fā)表于 08-17 09:10

    STM32實(shí)現(xiàn)待機(jī)喚醒

    STM32實(shí)現(xiàn)待機(jī)喚醒 庫函數(shù)版很多單片機(jī)都有低功耗模式,STM32 也不例外。在系統(tǒng)或電源復(fù)位以后,微控制器處于運(yùn)行狀態(tài)。運(yùn)行狀態(tài)下的 HCLK 為 CPU 提供時(shí)鐘,內(nèi)核執(zhí)行程序代
    發(fā)表于 08-18 06:59

    記錄STM32待機(jī)模式的進(jìn)入和喚醒

    數(shù)據(jù),采集完畢進(jìn)入停止模式,定時(shí)器喚醒等待下次數(shù)據(jù)采集。(stm32f103ret6)備注:本節(jié)只記錄待機(jī)模式的進(jìn)入和喚醒,停止模式的實(shí)現(xiàn)方式見[S
    發(fā)表于 08-18 06:46

    請問STM32如何實(shí)現(xiàn)待機(jī)喚醒

    請問STM32如何實(shí)現(xiàn)待機(jī)喚醒
    發(fā)表于 11-23 06:20

    如何對STM32單片機(jī)的待機(jī)模式進(jìn)行喚醒實(shí)驗(yàn)

    STM32單片機(jī)有哪幾種低功耗模式呢?如何對STM32單片機(jī)的待機(jī)模式進(jìn)行喚醒實(shí)驗(yàn)呢?
    發(fā)表于 11-25 06:37

    ALIENTEK_MINISTM32_實(shí)驗(yàn)12_待機(jī)喚醒實(shí)驗(yàn)

    ALIENTEK MINISTM32 實(shí)驗(yàn)12 待機(jī)喚醒實(shí)驗(yàn),很好的資料,快來下載吧
    發(fā)表于 02-19 11:36 ?6次下載

    STM32CubeMX低功耗模式——待機(jī)模式(standby)RTC喚醒

    STM32CubeMX低功耗模式——待機(jī)模式(standby)RTC喚醒使用CubeMX生成工程代碼處理實(shí)驗(yàn)結(jié)果總結(jié)在ST的單片機(jī)中,一般低功耗模式都有stop(停機(jī))模式和stand
    發(fā)表于 12-04 16:36 ?30次下載
    <b class='flag-5'>STM32</b>CubeMX低功耗模式——<b class='flag-5'>待機(jī)</b>模式(standby)RTC<b class='flag-5'>喚醒</b>

    STM32CubeMX系列|待機(jī)喚醒

    待機(jī)喚醒1. 低功耗模式簡介2. 硬件設(shè)計(jì)本實(shí)驗(yàn)用D1指示燈提示系統(tǒng)正常運(yùn)行,指示燈熄滅表示進(jìn)入待機(jī)模式,K_UP按鍵用來喚醒
    發(fā)表于 12-24 19:11 ?0次下載
    <b class='flag-5'>STM32</b>CubeMX系列|<b class='flag-5'>待機(jī)</b><b class='flag-5'>喚醒</b>

    STM32 低功耗待機(jī)(STANDBY) 和關(guān)機(jī)(SHUTDOWN) 專用管腳喚醒 (EWUP)

    專用管腳喚醒的實(shí)現(xiàn)(HAL庫)。2. 低功耗模式STM32L4的低功耗模式,相比其它系列的芯片,多了幾種:3. 低功耗模式STM32的專用低功耗喚醒管腳,可在
    發(fā)表于 12-31 18:59 ?37次下載
    <b class='flag-5'>STM32</b> 低功耗<b class='flag-5'>待機(jī)</b>(STANDBY) 和關(guān)機(jī)(SHUTDOWN) 專用管腳<b class='flag-5'>喚醒</b> (EWUP)

    STM32學(xué)習(xí)心得二十二:低功耗待機(jī)喚醒實(shí)驗(yàn)

    記錄一下,方便以后翻閱~主要內(nèi)容:1) STM32低功耗模式講解;2) 寄存器和庫函數(shù)配置;3) 實(shí)驗(yàn)代碼解讀。實(shí)驗(yàn)功能:針對GPIOA,引腳0,啟動(dòng)后LED0和LED1閃爍,長按3秒進(jìn)入
    發(fā)表于 12-31 19:09 ?13次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)心得二十二:低功耗<b class='flag-5'>待機(jī)</b><b class='flag-5'>喚醒</b><b class='flag-5'>實(shí)驗(yàn)</b>

    基于STM32單片機(jī)待機(jī)喚醒實(shí)驗(yàn)使用庫文件設(shè)計(jì)

    基于STM32單片機(jī)待機(jī)喚醒實(shí)驗(yàn)使用庫文件設(shè)計(jì)源代碼
    發(fā)表于 04-26 14:45 ?0次下載
    主站蜘蛛池模板: 欧美十次| 欧美日韩中文字幕 | 国产嫩草影院精品免费网址 | 欧美特级午夜一区二区三区 | 超黄视频在线观看 | 婷婷综合久久中文字幕蜜桃三 | 91av在线免费观看 | 日本精品高清一区二区2021 | 午夜影音| 久久精品1 | 1024你懂的国产精品 | 日本高清一区二区三区不卡免费 | 日本一本高清 | 黄色录像欧美 | 久久综合狠狠综合久久 | 国产一区二区三区波多野吉衣 | 手机在线看片你懂的 | 国产黄色大片又色又爽 | 亚洲va久久久噜噜噜久久天堂 | 苦瓜se影院在线视频网站 | 日本3级视频 | 欧美黑人巨大日本人又爽又色 | 四虎影视最新地址 | 你懂的免费| 国产视频福利 | 国产2021成人精品 | 色老成人精品视频在线观看 | 性欧美欧美之巨大69 | 久操福利| 四虎精品免费永久在线 | 四虎免费看黄 | 床上激情四射 | 天天看片天天干 | 波多野结衣一级特黄毛片 | 久久婷婷影院 | 国模大胆一区二区三区 | 黄视频免费在线看 | 日韩免费毛片全部不收费 | 夜色福利 | 操操操操网 | 天天做夜夜操 |