1. 簡述
1.1 低功耗模式:
在系統或電源復位以后,微控制器處于運行狀態。當CPU不需繼續運行時,可以利用多種低功耗模式來節省功耗,例如:等待某個外部事件時,常見的按鍵喚醒。用戶需要根據最低電源消耗、最快速啟動時間和可用的喚醒源等條件,選定一個最佳的低功耗模式。
1.2 STM32F10X系列的低功耗模式
STM32F10xxx有三種低功耗模式:
–模式– –特點—
睡眠模式 Cortex-M3內核停止,所有外設包括Cortex-M3核心的外設,如NVIC、系統時鐘(SysTick)等仍在運行
停止模式 所有的時鐘都已停止
待機模式 1.8V電源關閉
在這三種低功耗模式中,最低功耗的是待機模式,在此模式下,最低只需 2uA 左右的電流。停機模式是次低功耗的,其典型的電流消耗在 20uA 左右,最后就是睡眠模式。
1.3 降低功耗方式補充
(1)在運行模式下,降低系統時鐘,通過對預分頻寄存器進行編程,可以降低任意一個系統時鐘(SYSCLK、HCLK、 PCLK1、 PCLK2)的速度。
(2)在運行模式下,任何時候都可以通過停止為外設和內存提供時鐘(HCLK和PCLKx)來減少功耗。為了在睡眠模式下更多地減少功耗,可在執行WFI或WFE指令前關閉所有外設的時鐘。通 過 設 置 AHB 外 設 時 鐘 使 能 寄 存 器 (RCC_AHBENR) 、 APB2 外 設 時 鐘 使 能 寄 存 器(RCC_APB2ENR)和APB1外設時鐘使能寄存器(RCC_APB1ENR)來開關各個外設模塊的時鐘。
2. 待機模式詳解
待機模式可實現系統的最低功耗。該模式是在 Cortex-M3深 睡眠模式時關閉電壓調節器。整個 1.8V 供電區域被斷電。 PLL、 HSI 和 HSE 振蕩器也被斷電。SRAM 和寄存器內容丟失。只有備份的寄存器和待機電路維持供電。
2.1 進入待機模式
可以通過設置獨立的控制位,選擇以下待機模式的功能:
(1)獨立看門狗(IWDG):可通過寫入看門狗的鍵寄存器或硬件選擇來啟動IWDG。一旦啟動了獨立看門狗,除了系統復位,它不能再被停止;
(2)實時時鐘(RTC):通過備用區域控制寄存器(RCC_BDCR)的RTCEN位來設置;
(3)內部RC振蕩器(LSI RC):通過控制/狀態寄存器(RCC_CSR)的LSION位來設置;
(4) 外部32.768kHz振蕩器(LSE):通過備用區域控制寄存器(RCC_BDCR)的LSEON位設置。
2.2 退出待機模式
當一個外部復位(NRST引腳)、 IWDG復位、 WKUP引腳上的上升沿或RTC鬧鐘事件的上升沿發生時,微控制器從待機模式退出。從待機喚醒后,除了電源控制/狀態寄存器(PWR_CSR),所有寄存器被復位。從待機模式喚醒后的代碼執行等同于復位后的執行(采樣啟動模式引腳、讀取復位向量等)。 電源控制/狀態寄存器(PWR_CSR)將會指示內核由待機狀態退出。
2.3 待機模式下的輸入/輸出端口狀態
在待機模式下,除了以下的引腳,所有的 IO 引腳處于高阻態:
● 復位引腳(始終有效)
● 當被設置為防侵入或校準輸出時的TAMPER引腳
● 被使能的喚醒引腳
2.4 調試模式
默認情況下,如果在進行調試微處理器時,使微處理器進入停止或待機模式,將失去調試連接,因為 Cortex-M3 的內核失去了時鐘。然而,通過設置DBGMCU_CR 寄存器中的某些配置位,可以在使用低功耗模式下調試軟件。
2.5 相關寄存器
(1)電源控制寄存器(PWR_CR)
(2)電源控制/狀態寄存器(PWR_CSR)
3. 軟件實現
實現 STM32 進入待機模式流程如下:
程序代碼:
#define WKUP_KD PAin(0) //PA0 檢測是否外部WK_UP按鍵按下
uint8_t Sys_Check_WakeUp(void) //檢測WKUP腳的信號
void WakeUp_Init(void); //PA0 WKUP喚醒初始化
void Sys_Enter_Standby(void); //系統進入待機模式
void Sys_Set_Standby(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//設置PWR外設時鐘
PWR_WakeUpPinCmd(ENABLE);//使能喚醒的GPIO
PWR_EnterSTANDBYMode();//進入待機模式
}
void Sys_Enter_Standby(void)
{
RCC_APB2PeriphResetCmd(0x01FC,DISABLE);//復位全部GPIO
Sys_Set_Standby();
}
uint8_t Sys_Check_WakeUp(void)
{
uint8_t t=0;
LED0 = 0;
while(1)
{
if(WKUP_KD)
{
t++;
delay_ms(30);
if(t<=100)
{
LED0 = 0;
return 1;
}
else
{
LED0 = 1;
return 0;
}
}
}
}
void EXTI0_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI0_Line0);//清除Line0的中斷標志位
if(Sys_Check_WakeUp())
{
Sys_Enter_Standby();
}
}
void WakeUp_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStruture;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//GPIOA0---中斷線0
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd= ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStruture.NVIC_IRQChannel = EXTI0_TRQn;
NVIC_InitStruture.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStruture.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStruture.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruture);
if(!Sys_Check_WakeUp())//默認狀態,沒有按鍵
{
Sys_Set_Standby();
}
}
測試:下載程序到開發板,按下WK_UP大于3秒,我們就可以設置從待機模式進入運行模式,具體的測試可根據需要自行設置。
上一篇:STM32學習筆記一一紅外遙控
下一篇:STM32學習筆記一一串口 IAP
推薦閱讀
史海拾趣
Anderson Power是一家專注于電源連接器和配件制造的公司,以下是該公司發展的相關故事:
公司成立與初期階段:Anderson Power成立于1953年,總部位于美國馬薩諸塞州斯特林。最初,公司主要從事電源連接器的制造和銷售。公司的創始人是William E. Anderson,他在創立公司之初便致力于提供高質量、可靠的連接器產品,滿足不斷增長的市場需求。
技術創新與產品發展:隨著市場的需求不斷增長,Anderson Power不斷進行技術創新和產品開發,推出了一系列新型的電源連接器和配件產品。公司在連接器設計和制造方面擁有豐富的經驗和專業知識,能夠根據客戶的需求定制各種類型的連接器產品。
客戶合作與市場拓展:Anderson Power與全球各個行業的客戶建立了長期穩定的合作關系。公司的客戶群涵蓋了汽車、航空航天、工業、能源等多個領域。通過與客戶的緊密合作,Anderson Power不斷拓展市場份額,提升品牌知名度,成為電源連接器領域的領先供應商之一。
全球布局與生產基地:為了更好地服務全球客戶,Anderson Power在全球建立了多個生產基地和銷售辦事處。除了在美國的總部外,公司還在歐洲、亞洲等地區設立了生產工廠和銷售辦事處,以滿足不同地區客戶的需求。這些生產基地擁有先進的設備和技術,能夠為客戶提供高質量的連接器產品。
持續發展與未來展望:作為一家專注于電源連接器的公司,Anderson Power將繼續致力于技術創新和產品發展。公司將不斷推出適應市場需求的新產品,提升生產效率和產品質量,以滿足客戶不斷變化的需求。同時,Anderson Power也將繼續關注行業的發展趨勢和技術變革,不斷調整戰略,保持在行業內的競爭優勢。
Flambeau公司(全稱Flambeau, Inc.)成立于一個注重創新和實用的時代,初期便明確了自己的市場定位——設計、開發和制造高質量的吹模、注模塑料儲存產品。公司創始人憑借對電子行業趨勢的敏銳洞察,以及對材料科學和制造工藝的深刻理解,成功開發了一系列符合電子行業需求的儲存解決方案。這些產品以其耐用性、可靠性和創新性,在電子元件的存儲和運輸領域迅速獲得了市場認可。
在電子行業快速發展的同時,環保問題也日益受到關注。First Silicon公司積極響應國家環保政策,將環保理念融入企業發展戰略之中。公司投入巨資研發環保型半導體材料和生產工藝,努力減少生產過程中的污染排放和資源浪費。同時,公司還積極推廣綠色電子產品,引導消費者樹立環保意識。通過這一系列的環保舉措,First Silicon不僅贏得了社會各界的廣泛贊譽,還為其可持續發展奠定了堅實基礎。
在電子行業中,產品質量是企業生存和發展的關鍵。誠潤電子深知這一點,因此在生產過程中嚴格把控每一個環節,確保產品質量的穩定性和可靠性。這種對品質的執著追求,使得誠潤電子的產品在市場上贏得了廣泛的認可和信任。許多知名品牌都選擇了誠潤電子作為他們的合作伙伴,共同為消費者提供優質的電子產品。
為了應對市場需求的多樣化和技術發展的快速變化,Horizon開始實施多元化產品布局戰略。公司不僅繼續深耕半導體芯片領域,還逐步拓展至電子元器件、智能設備、物聯網解決方案等多個領域。通過自主研發和合作并購等方式,Horizon不斷豐富產品線,滿足不同客戶的多樣化需求。這一戰略的實施不僅增強了公司的市場競爭力,也為公司的持續發展注入了新的動力。
在21世紀初,隨著數字技術的興起,Horizon Electronics Enterprises Group(以下簡稱“Horizon”)由一群對電子技術充滿熱情的工程師創立。公司初期專注于研發高性能的半導體芯片,以解決當時市場上對高速、低功耗芯片的迫切需求。通過不懈努力,Horizon成功研發出了一款具有突破性的芯片產品,該產品在數據處理速度和能效比上遠超同類產品,迅速獲得了市場的認可。這一技術創新不僅為公司贏得了首批客戶,也為后續發展奠定了堅實的技術基礎。
大家好!誰有在ise下調用edk生成的工程的例子,并且在ise下還調用一個ip core,或者是寫了一個verilog或vhdl程序的例子,我想看看edk的工程如何和ise里面的模塊連接 高手做個例子讓我學習一下嘛 … 查看全部問答∨ |
前段時間買了2440開發板也沒怎么搞,慚愧:$ 最近沒啥其它事情就好好啃啃吧,哎……沒什么基礎啊,先欣賞下別人的東西吧 【mini2440開發板實現國際象棋人機對弈 】 我在機子上跑了一下,好像不太能跟電腦對弈啊,不知道哪個地方還有問題 ...… 查看全部問答∨ |
上面這張令人震驚的照片展示了世界最高建筑哈利法塔遭閃電擊中時的場面。 照片的拍攝者是一位23歲名叫穆罕默德·哈姆丹的學生,來自巴基斯坦,目前在阿聯酋攻讀建筑工程學。當時,迪拜正遭受暴風雨的襲擊。雷電中,高達828米的哈利法塔在紫色的 ...… 查看全部問答∨ |
|
/*進行SAA7121H的初始化*/ GPIO_RSET(GPVAL,0x0); addrI2C = 0xB8 >>1; /*選擇第0路的I2C的地址*/ /*將第0路的視頻輸入口的數據口設為高阻狀態, 使能SCLK,將第27腳設為輸入*/ _IIC_write(hSeeddm642i2 ...… 查看全部問答∨ |
|
已經用其他程序試驗過了,不是xdata的問題,xdata里的數據能正常使用。我在用51做一個32點的fft。 部分代碼如下: #include <reg52.h> #include <math.h> #define uchar unsigned char #define  ...… 查看全部問答∨ |
|
Altium Designer之多圖紙設計 目錄(?)[+]一 頁面結構 基本概念層次結構層次結構維護 端口與圖紙入口的同步重命名圖表符對應的子圖紙 多通道設計單個圖表符調用多個子圖紙 二網絡連通性 各類網絡標識符網絡連通性實例 三設計實例 設計思路 ...… 查看全部問答∨ |
昨天在官網申請了一些樣片 其中就有TM4C123GH6PMI,手上有兩片EK-LM4F120XL 直接把其中一片的LM4F120H5QR 換成了TM4C123GH6PMI 嘿嘿升級成EK-TM4C123GXL繼續玩 … 查看全部問答∨ |