精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

低功耗實驗

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

13.1 STM32低功耗模式概述

STM32在系統或電源復位后,芯片處于運行狀態,此時HCLK為CPU提供時鐘,內核執行程序代碼,當CPU不需要繼續運行時,可以采用低功耗模塊來降低芯片的運行電流,STM32有3種低功耗模式:

(1)睡眠模式:內核停止,外設繼續運行

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

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

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

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

13.2 相關寄存器

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:取消后備區域的寫保護

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:電源電壓監測器PVD使能

0:禁止PVD

1:開啟PVD

Bit 3:清除待機位

0:無功效

1:清除SBF待機位

Bit 2:清除喚醒位

0:無功效

1:2個系統時鐘周期后清除WUF喚醒位

Bit 1:掉電深睡眠

0:當CPU進入深睡眠時進入停機模式,調壓器的狀態由LPDS位控制

1:CPU進入深睡眠時進入待機模式

Bit 0:深睡眠下的低功耗

0:在停機模式下電壓調壓器開啟

1:在停機模式下電壓調壓器處于低功耗模式

13.2.2 電源控制/狀態寄存器: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從待機模式喚醒,WKUP引腳被設為輸入下拉

Bit 2:PVD輸出

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

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

Bit 1:待機標志

0:系統不在待機模式

1:系統進入待機模式

Bit 0:喚醒標志

0:沒有發生喚醒事件

1:在WKUP引腳上發生喚醒事件或出現RTC鬧鐘事件

13.3 實驗例程

功能:芯片運行15s之后進入待機模式,然后按下接在WKUP端口的按鍵喚醒,CPU在喚醒模式下驅動接在PB5上的LED以1Hz頻率閃爍。

(1)打開sys.c文件編寫一個功能函數,添加以下代碼。

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

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

void Standby_Set( void ) ;                                        //設置待機模式

(3)打開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中斷服務函數
Paramater  :None
Return    :None
***************************************************/
u8 TIM1_Count ;
void TIM1_UP_IRQHandler()
{
  if( ( TIM1->SR&0x01 )==0x01 )
  {
    TIM1_Count ++ ;
    if( TIM1_Count==15 )
    {
      Standby_Set() ;                                        //進入待機模式
      TIM1_Count = 0 ;
    }
  }
  TIM1->SR &= ~( 1<<0 ) ;
}
/***************************************************
Name    :TIM1_Init
Function  :定時器1初始化
Parameter  :
      psc:預分頻系數
      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  :主函數
Parameter  :None
Return    :None
***************************************************/
int main()
{
  STM32_Clock_Init( 9 ) ;                                        //STM32時鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LED_Init() ;                                            //LED初始化
  TIM1_Init( 7199, 9999 ) ;                                      //定時器1初始化
  while( 1 )
  {
    LED = 0 ;
    delay_ms( 500 ) ;
    LED = 1 ;
    delay_ms( 500 ) ;
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10824

    瀏覽量

    211140
  • STM32
    +關注

    關注

    2266

    文章

    10871

    瀏覽量

    354791
  • 程序代碼
    +關注

    關注

    4

    文章

    42

    瀏覽量

    15426
收藏 人收藏

    評論

    相關推薦

    請問STM32進入睡眠模式怎么下載程序?

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

    #硬聲創作季 #STM32 手把手教你學STM32-044 待機喚醒實驗-低功耗-M4-2

    功耗低功耗
    水管工
    發布于 :2022年10月29日 14:06:37

    #硬聲創作季 #STM32 手把手教你學STM32-044 待機喚醒實驗-低功耗-M4-3

    功耗低功耗
    水管工
    發布于 :2022年10月29日 14:07:05

    【連載】【星光閃電STM32F407開發板】第十四章 低功耗實驗

    本帖最后由 hejecu 于 2018-11-14 08:12 編輯 第十四章 低功耗實驗14.1 實驗目的本章學習STM32的低功耗控制,掌握如何進入
    發表于 11-14 08:08

    無線傳感器網絡節點低功耗系統設計

    。  2 低功耗實驗與結果分析  2.1 ATmega324p小系統的功耗實驗  ATmega324p小系統包括ATmega324p單片機、三星公司的S6B0741 LCD模塊以及供電
    發表于 11-14 16:29

    測量低功耗實驗中如何處理引腳問題?

    測量低功耗實驗中如何處理引腳問題?
    發表于 02-08 06:50

    STM32F072單片機的低功耗實驗

    STM32F072單片機的低功耗實驗/STOP模式低功耗調前言新的改變功能快捷鍵合理的創建標題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個
    發表于 02-11 06:14

    低功耗實驗

    基礎的電子類資料,電子工程師必備文檔,快來下載學習吧。
    發表于 07-04 15:02 ?6次下載

    通過鍵盤、LCD來進行超低功耗實驗

    電子專業單片機開發中的學習教程資料——超低功耗
    發表于 08-08 15:17 ?5次下載

    單片機的實驗環境參數記錄儀的設計詳析

    針對高精度的存儲測試系統中很少利用實時記錄的實驗環境參數對其進行校準,文章設計了一種利用 MSP430FG4618單片機采集與實時顯示實驗環境參數如溫度、濕度、大氣壓、風速及風向的超低功耗實驗
    發表于 04-26 17:33 ?5次下載
    單片機的<b class='flag-5'>實驗</b>環境參數記錄儀的設計詳析

    STM32F072單片機的低功耗實驗/STOP模式低功耗調試

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

    實驗:低功耗系統設計--基于NUCLEO-L476RG

    電子發燒友網站提供《實驗:低功耗系統設計--基于NUCLEO-L476RG.pdf》資料免費下載
    發表于 09-26 09:38 ?0次下載
    <b class='flag-5'>實驗</b>:<b class='flag-5'>低功耗</b>系統設計--基于NUCLEO-L476RG

    【GD32H757Z海棠派開發板使用手冊】第五講 PMU-低功耗實驗

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

    【GD32F470紫藤派開發板使用手冊】第五講 PMU-低功耗實驗

    通過本實驗主要學習以下內容: PMU原理; 低功耗的進入以及退出操作
    的頭像 發表于 05-07 09:29 ?604次閱讀
    【GD32F470紫藤派開發板使用手冊】第五講  PMU-<b class='flag-5'>低功耗</b><b class='flag-5'>實驗</b>

    【GD32F303紅楓派開發板使用手冊】第六講 PMU-低功耗實驗

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