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

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

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

低功耗實(shí)驗(yàn)

汽車電子技術(shù) ? 來(lái)源:滑小稽筆記 ? 作者: 電子技術(shù)園地 ? 2023-03-01 15:42 ? 次閱讀

13.1 STM32低功耗模式概述

STM32在系統(tǒng)或電源復(fù)位后,芯片處于運(yùn)行狀態(tài),此時(shí)HCLK為CPU提供時(shí)鐘,內(nèi)核執(zhí)行程序代碼,當(dāng)CPU不需要繼續(xù)運(yùn)行時(shí),可以采用低功耗模塊來(lái)降低芯片的運(yùn)行電流,STM32有3種低功耗模式:

(1)睡眠模式:內(nèi)核停止,外設(shè)繼續(xù)運(yùn)行

(2)待機(jī)模式:1.8V的內(nèi)核電源被關(guān)閉,SRAM內(nèi)容丟失,PLL,HIS,HSE振蕩器斷電,此模式下最低電流2uA

(3)停機(jī)模式:停止所有時(shí)鐘,此模式下最低電流20uA

上述三種模式的配置與喚醒條件如下表所示。

模式 進(jìn)入操作 喚醒
睡眠 WFI指令 任一中斷
WFE指令 喚醒事件
待機(jī) PDDS位+SLEEPDEEP位+WFI或者WFE WKUP引腳上升沿RTC警告事件NRST端口的復(fù)位信號(hào)IWDG復(fù)位
停機(jī) PDDS和LPDS位+SLEEPDEEP位+WFI或WFE 任一外部中斷(需要在外部中斷寄存器中設(shè)置)
從待機(jī)模式喚醒后,除了電源控制/狀態(tài)寄存器PWR_CSR,所有的寄存器被復(fù)位,喚醒后執(zhí)行的代碼等同于復(fù)位后的執(zhí)行,此時(shí)電源控制/狀態(tài)寄存器PWR_CSR將會(huì)指示內(nèi)核由待機(jī)狀態(tài)退出,進(jìn)入待機(jī)模式后,除了復(fù)位引腳以及被設(shè)置為防侵入或校準(zhǔn)輸出時(shí)的TAMPER引腳和被使能的喚醒引腳,其他IO均進(jìn)入高阻狀態(tài)。

13.2 相關(guān)寄存器

13.2.1 電源控制寄存器:PWR_CR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- DBP PLS[2:0] PVDE CSBF CWUF PDDS LPDS

Bit 8:取消后備區(qū)域的寫保護(hù)

0:禁止寫入RTC和后備寄存器

1:允許寫入RTC和后備寄存器

Bit 7~Bit 5:PVD電平選擇

000:2.2V

001:2.3V

010:2.4V

011:2.5V

100:2.6V

101:2.7V

110:2.8V

111:2.9V

Bit 4:電源電壓監(jiān)測(cè)器PVD使能

0:禁止PVD

1:開(kāi)啟PVD

Bit 3:清除待機(jī)位

0:無(wú)功效

1:清除SBF待機(jī)位

Bit 2:清除喚醒位

0:無(wú)功效

1:2個(gè)系統(tǒng)時(shí)鐘周期后清除WUF喚醒位

Bit 1:掉電深睡眠

0:當(dāng)CPU進(jìn)入深睡眠時(shí)進(jìn)入停機(jī)模式,調(diào)壓器的狀態(tài)由LPDS位控制

1:CPU進(jìn)入深睡眠時(shí)進(jìn)入待機(jī)模式

Bit 0:深睡眠下的低功耗

0:在停機(jī)模式下電壓調(diào)壓器開(kāi)啟

1:在停機(jī)模式下電壓調(diào)壓器處于低功耗模式

13.2.2 電源控制/狀態(tài)寄存器:PWR_CSR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EWUP PVD0 SBF WUF

Bit 8:使能WKUP引腳

0:WKUP引腳為通用I/O

1:WKUP引腳用于將CPU從待機(jī)模式喚醒,WKUP引腳被設(shè)為輸入下拉

Bit 2:PVD輸出

0:VDD/VDDA高于由PLS[2:0]選定的PVD閥值

1:VDD/VDDA低于由PLS[2:0]選定的PVD閥值

Bit 1:待機(jī)標(biāo)志

0:系統(tǒng)不在待機(jī)模式

1:系統(tǒng)進(jìn)入待機(jī)模式

Bit 0:?jiǎn)拘褬?biāo)志

0:沒(méi)有發(fā)生喚醒事件

1:在WKUP引腳上發(fā)生喚醒事件或出現(xiàn)RTC鬧鐘事件

13.3 實(shí)驗(yàn)例程

功能:芯片運(yùn)行15s之后進(jìn)入待機(jī)模式,然后按下接在WKUP端口的按鍵喚醒,CPU在喚醒模式下驅(qū)動(dòng)接在PB5上的LED以1Hz頻率閃爍。

(1)打開(kāi)sys.c文件編寫一個(gè)功能函數(shù),添加以下代碼。

/***************************************************
Name    :Standby_Set
Function  :設(shè)置待機(jī)模式
Parameter  :None
Return    :None
***************************************************/
void Standby_Set()
{
  SCB->SCR |= 1<<2 ;                                          //使能SLEEPDEEP位
    RCC->APB1ENR |= 1<<28 ;                                        //使能電源時(shí)鐘      
   PWR->CSR |= 1<<8 ;                                          //設(shè)置WKUP用于喚醒
  PWR->CR |= 1<<2 ;                                          //清除Wake-up 標(biāo)志
  PWR->CR |= 1<<1 ;                                          //PDDS置位      
  __asm volatile("wfi");                                        //執(zhí)行WFI指令
}

(2)打開(kāi)sys.h文件添加功能函數(shù)的聲明。

void Standby_Set( void ) ;                                        //設(shè)置待機(jī)模式

(3)打開(kāi)1.c輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
/***************************************************
Name    :LED_Init
Function  :LED初始化
Parameter  :None
Return    :None
***************************************************/
#define LED PBout( 5 )                                          //定義LED端口
void LED_Init()
{
  RCC->APB2ENR |= 1<<3 ;
  GPIOB->CRL &= 0xFF0FFFFF ;
  GPIOB->CRL |= 0x00300000 ;
  LED = 1 ;
}
/***************************************************
Name    :TIM1_UP_IRQHandler
Function  :TIM1中斷服務(wù)函數(shù)
Paramater  :None
Return    :None
***************************************************/
u8 TIM1_Count ;
void TIM1_UP_IRQHandler()
{
  if( ( TIM1->SR&0x01 )==0x01 )
  {
    TIM1_Count ++ ;
    if( TIM1_Count==15 )
    {
      Standby_Set() ;                                        //進(jìn)入待機(jī)模式
      TIM1_Count = 0 ;
    }
  }
  TIM1->SR &= ~( 1<<0 ) ;
}
/***************************************************
Name    :TIM1_Init
Function  :定時(shí)器1初始化
Parameter  :
      psc:預(yù)分頻系數(shù)
      arr:重裝載值
Return    :None
***************************************************/
void TIM1_Init( u16 psc, u16 arr )
{
  RCC->APB2ENR |= 1<<11 ;
  TIM1->DIER |= 1<<0 ;
  TIM1->PSC = psc ;
  TIM1->ARR = arr ;
  TIM1->CR1 |= 1<<0 ;
  NVIC_Init( 3, 2, TIM1_UP_IRQn, 2 ) ;
  TIM1_Count = 0 ;
}
/***************************************************
Name    :main
Function  :主函數(shù)
Parameter  :None
Return    :None
***************************************************/
int main()
{
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LED_Init() ;                                            //LED初始化
  TIM1_Init( 7199, 9999 ) ;                                      //定時(shí)器1初始化
  while( 1 )
  {
    LED = 0 ;
    delay_ms( 500 ) ;
    LED = 1 ;
    delay_ms( 500 ) ;
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10898

    瀏覽量

    212553
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10921

    瀏覽量

    356938
  • 程序代碼
    +關(guān)注

    關(guān)注

    4

    文章

    42

    瀏覽量

    15453
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)STM32進(jìn)入睡眠模式怎么下載程序?

    今天做低功耗實(shí)驗(yàn),不小心把喚醒的代碼屏蔽了,板子開(kāi)機(jī)后1秒左右就進(jìn)入深度睡眠了,這下下載不了程序了。嘗試用ISP下載,但是不管是讀MCU器件信息還清除芯片、下載程序都一直返回1F。莫非要報(bào)廢了
    發(fā)表于 04-24 08:00

    【連載】【星光閃電STM32F407開(kāi)發(fā)板】第十四章 低功耗實(shí)驗(yàn)

    本帖最后由 hejecu 于 2018-11-14 08:12 編輯 第十四章 低功耗實(shí)驗(yàn)14.1 實(shí)驗(yàn)目的本章學(xué)習(xí)STM32的低功耗控制,掌握如何進(jìn)入
    發(fā)表于 11-14 08:08

    無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)低功耗系統(tǒng)設(shè)計(jì)

    ?! ? 低功耗實(shí)驗(yàn)與結(jié)果分析  2.1 ATmega324p小系統(tǒng)的功耗實(shí)驗(yàn)  ATmega324p小系統(tǒng)包括ATmega324p單片機(jī)、三星公司的S6B0741 LCD模塊以及供電
    發(fā)表于 11-14 16:29

    測(cè)量低功耗實(shí)驗(yàn)中如何處理引腳問(wèn)題?

    測(cè)量低功耗實(shí)驗(yàn)中如何處理引腳問(wèn)題?
    發(fā)表于 02-08 06:50

    STM32F072單片機(jī)的低功耗實(shí)驗(yàn)

    STM32F072單片機(jī)的低功耗實(shí)驗(yàn)/STOP模式低功耗調(diào)前言新的改變功能快捷鍵合理的創(chuàng)建標(biāo)題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個(gè)適合你的列表創(chuàng)建一個(gè)
    發(fā)表于 02-11 06:14

    低功耗實(shí)驗(yàn)

    基礎(chǔ)的電子類資料,電子工程師必備文檔,快來(lái)下載學(xué)習(xí)吧。
    發(fā)表于 07-04 15:02 ?6次下載

    通過(guò)鍵盤、LCD來(lái)進(jìn)行超低功耗實(shí)驗(yàn)

    電子專業(yè)單片機(jī)開(kāi)發(fā)中的學(xué)習(xí)教程資料——超低功耗
    發(fā)表于 08-08 15:17 ?5次下載

    單片機(jī)的實(shí)驗(yàn)環(huán)境參數(shù)記錄儀的設(shè)計(jì)詳析

    針對(duì)高精度的存儲(chǔ)測(cè)試系統(tǒng)中很少利用實(shí)時(shí)記錄的實(shí)驗(yàn)環(huán)境參數(shù)對(duì)其進(jìn)行校準(zhǔn),文章設(shè)計(jì)了一種利用 MSP430FG4618單片機(jī)采集與實(shí)時(shí)顯示實(shí)驗(yàn)環(huán)境參數(shù)如溫度、濕度、大氣壓、風(fēng)速及風(fēng)向的超低功耗實(shí)驗(yàn)
    發(fā)表于 04-26 17:33 ?5次下載
    單片機(jī)的<b class='flag-5'>實(shí)驗(yàn)</b>環(huán)境參數(shù)記錄儀的設(shè)計(jì)詳析

    STM32F072單片機(jī)的低功耗實(shí)驗(yàn)/STOP模式低功耗調(diào)試

    STM32F072單片機(jī)的低功耗實(shí)驗(yàn)/STOP模式低功耗調(diào)前言新的改變功能快捷鍵合理的創(chuàng)建標(biāo)題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個(gè)適合你的列表創(chuàng)建一個(gè)
    發(fā)表于 12-07 20:06 ?8次下載
    STM32F072單片機(jī)的<b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b>/STOP模式<b class='flag-5'>低功耗</b>調(diào)試

    實(shí)驗(yàn):低功耗系統(tǒng)設(shè)計(jì)--基于NUCLEO-L476RG

    電子發(fā)燒友網(wǎng)站提供《實(shí)驗(yàn):低功耗系統(tǒng)設(shè)計(jì)--基于NUCLEO-L476RG.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 09:38 ?0次下載
    <b class='flag-5'>實(shí)驗(yàn)</b>:<b class='flag-5'>低功耗</b>系統(tǒng)設(shè)計(jì)--基于NUCLEO-L476RG

    【GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第五講 PMU-低功耗實(shí)驗(yàn)

    PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32H7XX系列MCU具有三個(gè)電源域,包括VDD/VDDA電源域、0.9V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電。0.9V由內(nèi)部LDO或者外部Vcore供電。在備份域中有一個(gè)電源切換器,當(dāng)VDD/VDDA電源關(guān)閉時(shí),電源切換器可以將備份域的電源切換到VBAT引腳,此時(shí)備份域由V
    的頭像 發(fā)表于 04-20 09:32 ?1128次閱讀
    【GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第五講 PMU-<b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b>

    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第五講 PMU-低功耗實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: PMU原理; 低功耗的進(jìn)入以及退出操作
    的頭像 發(fā)表于 05-07 09:29 ?750次閱讀
    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第五講  PMU-<b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b>

    【GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第六講 PMU-低功耗實(shí)驗(yàn)

    PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32F303系列MCU具有三個(gè)電源域,包括VDD/VDDA電源域、1.2V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電。在VDD/VDDA域中嵌入了一個(gè)LDO,用來(lái)為1.2V域供電。在備份域中有一個(gè)電源切換器,當(dāng)VDD/VDDA電源關(guān)閉時(shí),電源切換器可以將備份域的電源切換到VBAT引
    的頭像 發(fā)表于 06-02 10:12 ?795次閱讀
    【GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第六講 PMU-<b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b>講