日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年06月14日(星期六)

2020年06月14日 | STM32基于固件庫(kù)學(xué)習(xí)筆記(5)電源管理之低功耗模式

發(fā)布者:PeacefulOasis 來(lái)源: eefocus關(guān)鍵字:STM32  固件庫(kù)  電源管理  低功耗模式 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

低功耗模式

功耗的高低,決定了系統(tǒng)工作的時(shí)間,在需要長(zhǎng)久間隔時(shí)間檢測(cè)數(shù)據(jù),又不可能人實(shí)時(shí)去操作的項(xiàng)目,最先考慮的就是功耗問(wèn)題了, 功耗越低產(chǎn)品使用時(shí)間就更久。也就是說(shuō)當(dāng)CPU不需繼續(xù)運(yùn)行時(shí),就可以利用多種低功耗模式來(lái)節(jié)省功耗,例如等待某個(gè)外部事件時(shí)。 用戶需要根據(jù)最低電源消耗、最快速啟動(dòng)時(shí)間和可用的喚醒源等條件,選定一個(gè)最佳的低功耗模式。


STM32F10xx有三種低功耗模式:


1. 睡眠模式:(Cortex?-M3內(nèi)核停止,所有外設(shè)包括Cortex-M3核心的外設(shè),如NVIC、系統(tǒng)時(shí)鐘(SysTick)等仍在運(yùn)行)

2. 停止模式: 所有的時(shí)鐘都停止。

3. 待機(jī)模式: 1.8V電源關(guān)閉,是最低功耗模式

  當(dāng)處于運(yùn)行模式,還可以使用降低系統(tǒng)時(shí)鐘、關(guān)閉APB和AHB總線上沒(méi)有使用的外設(shè)時(shí)鐘兩種方式降低功耗。


(一)睡眠模式

1. 進(jìn)入睡眠模式

電源控制(PWR)

SLEEP-NOW:如果SLEEPONEXIT位被清除,當(dāng)WRI或WFE被執(zhí)行時(shí),微控制器立即進(jìn)。

SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系統(tǒng)從最低優(yōu)先級(jí)的中斷處理程序中退出時(shí),微控制器就立即進(jìn)入睡眠模式。


2. 喚醒睡眠模式

如果執(zhí)行WFI指令進(jìn)入睡眠模式,任意一個(gè)被嵌套向量中斷控制器響應(yīng)的外設(shè)中斷都能將系統(tǒng)從睡眠模式喚醒。


如果執(zhí)行WFE指令進(jìn)入睡眠模式,則一旦發(fā)生喚醒事件時(shí),微處理器都將從睡眠模式退出。產(chǎn)生方式:

  在外設(shè)控制寄存器中使能一個(gè)中斷,而不是在NVIC(嵌套向量中斷控制器)中使能,并且在Cortex-M3系統(tǒng)控制寄存器中使能SEVONPEND位。當(dāng)MCU從WFE中喚醒后,外設(shè)的中斷掛起位和外設(shè)的NVIC中斷通道掛起位(在NVIC中斷清除掛起寄存器中)必須被清除。

  配置一個(gè)外部或內(nèi)部的EXIT線為事件模式。當(dāng)MCU從WFE中喚醒后,因?yàn)榕c事件線對(duì)應(yīng)的掛起位未被設(shè)置,不必清除外設(shè)的中斷掛起位或外設(shè)的NVIC中斷通道掛起位。

注:Cortex-M3 權(quán)威指南第13章(182-183頁(yè))也有講解。


(二)停止模式

電源控制(PWR)

  停止模式是在Cortex?-M3的深睡眠模式基礎(chǔ)上結(jié)合了外設(shè)的時(shí)鐘控制機(jī)制,在停止模式下電壓調(diào)節(jié)器可運(yùn)行在正常或低功耗模式。此時(shí)在1.8V供電區(qū)域的的所有時(shí)鐘都被停止,PLL、HSI和HSE RC振蕩器的功能被禁止,SRAM和寄存器內(nèi)容被保留下來(lái)。在停止模式下,所有的I/O引腳都保持它們?cè)谶\(yùn)行模式時(shí)的狀態(tài)。

1. 進(jìn)入

  在停止模式下,通過(guò)設(shè)置 的LPDS位使內(nèi)部調(diào)節(jié)器進(jìn)入低功耗模式,能夠降低更多的功耗。

  如果正在進(jìn)行閃存編程,直到對(duì)內(nèi)存訪問(wèn)完成,系統(tǒng)才進(jìn)入停止模式。

  如果正在進(jìn)行對(duì)APB的訪問(wèn),直到對(duì)APB訪問(wèn)完成,系統(tǒng)才進(jìn)入停止模式。

  ●獨(dú)立看門狗(IWDG):可通過(guò)寫(xiě)入看門狗的鍵寄存器或硬件選擇來(lái)啟動(dòng)IWDG。一旦啟動(dòng)了獨(dú)立看門狗,除了系統(tǒng)復(fù)位,它不能再被停止。

  ● 實(shí)時(shí)時(shí)鐘(RTC):通過(guò)備份域控制寄存器 (RCC_BDCR)的RTCEN位來(lái)設(shè)置。

  ● 內(nèi)部RC振蕩器(LSI RC):通過(guò)控制/狀態(tài)寄存器 (RCC_CSR)的LSION位來(lái)設(shè)置。

  ● 外部32.768kHz振蕩器(LSE):通過(guò)備份域控制寄存器 (RCC_BDCR)的LSEON位設(shè)置。在停止模式下,如果在進(jìn)入該模式前ADC和DAC沒(méi)有被關(guān)閉,那么這些外設(shè)仍然消耗電流。通過(guò)設(shè)置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位為0可關(guān)閉這2個(gè)外設(shè)。


2. 退出停止模式

  當(dāng)一個(gè)中斷或喚醒事件導(dǎo)致退出停止模式時(shí),HSI RC振蕩器被選為系統(tǒng)時(shí)鐘。

當(dāng)電壓調(diào)節(jié)器處于低功耗模式下,當(dāng)系統(tǒng)從停止模式退出時(shí),將會(huì)有一段額外的啟動(dòng)延時(shí)。如果在停止模式期間保持內(nèi)部調(diào)節(jié)器開(kāi)啟,則退出啟動(dòng)時(shí)間會(huì)縮短,但相應(yīng)的功耗會(huì)增加。


(三)待機(jī)模式

電源控制(PWR)

  待機(jī)模式可實(shí)現(xiàn)系統(tǒng)的最低功耗。該模式是在Cortex-M3深睡眠模式時(shí)關(guān)閉電壓調(diào)節(jié)器。整個(gè)1.8V供電區(qū)域被斷電。PLL、HSI和HSE振蕩器也被斷電。SRAM和寄存器內(nèi)容丟失。


 1. 進(jìn)入

  可以通過(guò)設(shè)置獨(dú)立的控制位,選擇以下待機(jī)模式的功能:

  ● 獨(dú)立看門狗(IWDG):可通過(guò)寫(xiě)入看門狗的鍵寄存器或硬件選擇來(lái)啟動(dòng)IWDG。一旦啟動(dòng)了獨(dú)立看門狗,除了系統(tǒng)復(fù)位,它不能再被停止。

  ● 實(shí)時(shí)時(shí)鐘(RTC):通過(guò)備用區(qū)域控制寄存器(RCC_BDCR)的RTCEN位來(lái)設(shè)置。

  ● 內(nèi)部RC振蕩器(LSI RC):通過(guò)控制/狀態(tài)寄存器(RCC_CSR)的LSION位來(lái)設(shè)置。

  ● 外部32.768kHz振蕩器(LSE):通過(guò)備用區(qū)域控制寄存器(RCC_BDCR)的LSEON位設(shè)置。


 2. 退出待機(jī)模式

  當(dāng)一個(gè)外部復(fù)位(NRST引腳)、IWDG復(fù)位、WKUP引腳上的上升沿或RTC鬧鐘事件的上升沿發(fā)生時(shí)(見(jiàn)圖154 簡(jiǎn)化的RTC框圖),微控制器從待機(jī)模式退出。從待機(jī)喚醒后,除了 : 電源控制/狀態(tài)寄存器(PWR_CSR),所有寄存器被復(fù)位。

從待機(jī)模式喚醒后的代碼執(zhí)行等同于復(fù)位后的執(zhí)行(采樣啟動(dòng)模式引腳、讀取復(fù)位向量等)。電源控制/狀態(tài)寄存器(PWR_CSR)將會(huì)指示內(nèi)核由待機(jī)狀態(tài)退出。

3.待機(jī)模式下的輸入/輸出端口狀態(tài)

  在待機(jī)模式下,所有的I/O引腳處于高阻態(tài),除了以下的引腳:

  ● 復(fù)位引腳(始終有效)

  ● 當(dāng)被設(shè)置為防侵入或校準(zhǔn)輸出時(shí)的TAMPER引腳

  ● 被使能的喚醒引腳


實(shí)現(xiàn)待機(jī)模式功能

1.初始化先進(jìn)入待機(jī)狀態(tài),

2.當(dāng)有按鍵按下進(jìn)入運(yùn)行模式,

3.在有按鍵按下3s又會(huì)進(jìn)入待機(jī)模式,等到按鍵按下喚醒。

具體步驟:


使能電源時(shí)鐘(是沒(méi)次必不可少的)

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


設(shè)置PA0按鍵引腳作為喚醒源。

PWR_WakeUpPinCmd(ENABLE); //使能喚醒管腳功能


設(shè)置 SLEEPDEEP 位,置 設(shè)置 PDDS 位,執(zhí)行 WFI 指令,進(jìn)入待機(jī)模式。


void PWR_EnterSTANDBYMode(void);


編寫(xiě)按鍵中斷函數(shù)。

void EXTI0_IRQHandler(void)

{

  EXTI_ClearITPendingBit(EXTI_Line0); // 清除 LINE10 上的中斷標(biāo)志位  

  if(Check_WKUP()==2) //進(jìn)入待機(jī)模式

  {

    mode= 0;//清零模式變量

    Sys_Enter_Standby();

  }

  }


完整程序

/*

  1.初始化先判斷data為0,就是待機(jī)狀態(tài),

  2.當(dāng)有按鍵按下30ms進(jìn)入運(yùn)行模式,

  3.在有按鍵按下3s會(huì)進(jìn)入睡眠模式 

   1-> 2->3->2->3 循環(huán)

     硬件: PA0接下拉的按鍵;PB5接共陽(yáng)LED(0亮1滅)

     MCU:STM32F103ZETx系列

*/

#include "stm32f10x.h"    

u8 mode=0; //待機(jī)、喚醒模式控制變量      

void delay_ms(u16 time)

{    

   u16 i = 0;  

   while(time--)

   {

      i = 12000;  

      while(i--);    

   }

}

//初始化PB5  LED燈

void LED_Init_PB5(void)

{

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  GPIO_InitTypeDef GPIO_ITDef_PB5; 

  GPIO_ITDef_PB5.GPIO_Pin = GPIO_Pin_5;

  GPIO_ITDef_PB5.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出  

  GPIO_ITDef_PB5.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_Init(GPIOB,&GPIO_ITDef_PB5);

  GPIO_SetBits(GPIOB,GPIO_Pin_5);// 置 1輸出高電平

//  GPIO_ResetBits(GPIOB,GPIO_Pin_5);// 0

}


u8 Check_WKUP(void)

{

  u8 t=0;

  u8 tx=0; //記錄松開(kāi)的次數(shù)

  GPIO_ResetBits(GPIOB,GPIO_Pin_5);// 置1  LED亮 

  while(1)

 {   

    if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))//已經(jīng)按下了 

     delay_ms(5);//按鍵延時(shí)消斗

    if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))//已經(jīng)按下了

    {

       t++;

       tx=0;

    }

    else

     {   

        tx++;//超過(guò)300ms內(nèi)沒(méi)有WKUP信號(hào)

       if(tx>1)

       {

         GPIO_SetBits(GPIOB,GPIO_Pin_5);//1

         return 0;//錯(cuò)誤的按鍵,按下次數(shù)不夠

       }       

      }        

   delay_ms(30);

   if(mode== 0)

     {

        return mode=1;//有按鍵按下,喚醒待機(jī)模式

     }         

   if(t>=100&&mode== 1)//按下超過(guò)3秒鐘

      {

        GPIO_ResetBits(GPIOB,GPIO_Pin_5);// 0點(diǎn)亮 DS0

        return mode=2; //按下 3s 以上了,進(jìn)入待機(jī)模式 

      }

 }

}


void WKUP_Init(void)

{

  //PA0(KEY中斷)作為喚醒條件

      //使能 GPIOA 和復(fù)用功能時(shí)鐘

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);

  //初始化PA0的按鍵(上拉輸入)

  GPIO_InitTypeDef GPIO_InitStructure;

  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;//PA.0

  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD; //上拉輸入

  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 IO  

  //使用按鍵外部中斷方式

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);

  //中斷線 0 連接 GPIOA. (按鍵)

  EXTI_InitTypeDef EXTI_InitStructure;

  EXTI_InitStructure.EXTI_Line = EXTI_Line0; //設(shè)置按鍵所有的外部線路

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //外部中斷模式

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿觸發(fā)

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  EXTI_Init(&EXTI_InitStructure); // 初始化外部中斷

    //按鍵中斷設(shè)置

  NVIC_InitTypeDef   NVIC_InitStructure;

  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//使能外部中斷通道

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//先占優(yōu)先級(jí) 2 級(jí)

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//從優(yōu)先級(jí) 2 級(jí)

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//外部中斷通道使能

  NVIC_Init(&NVIC_InitStructure);//初始化 NVIC    

}


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

void Sys_Enter_Standby(void)

{

  RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //復(fù)位所有 IO 口  

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

  PWR_WakeUpPinCmd(ENABLE);//使能喚醒管腳功能

  PWR_EnterSTANDBYMode();//進(jìn)入待命(STANDBY)模式

}

//中斷,檢測(cè)到 PA0 腳的一個(gè)上升沿.

//中斷線 0 線上的中斷檢測(cè)

void EXTI0_IRQHandler(void)

{

  EXTI_ClearITPendingBit(EXTI_Line0); // 清除 LINE10 上的中斷標(biāo)志位  

  if(Check_WKUP()==2) //進(jìn)入待機(jī)模式

  {

    mode= 0;//清零模式變量

    Sys_Enter_Standby();

  }

}

int main(void)

{

  LED_Init_PB5();

  WKUP_Init(); //待機(jī)喚醒初始化

  if(Check_WKUP()==1)  //不是開(kāi)機(jī),進(jìn)入待機(jī)模式

  {

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

    PWR_WakeUpPinCmd(ENABLE);//使能喚醒管腳功能

    PWR_EnterSTANDBYMode();//進(jìn)入待命(STANDBY)模式

  }

  while(1)

  {

     GPIO_ResetBits(GPIOB,GPIO_Pin_5);//LED亮

     delay_ms(50);        

     GPIO_SetBits(GPIOB,GPIO_Pin_5);//LED滅

     delay_ms(50);   

  }   

}


常用資料:

  STM32F10x_StdPeriph_Lib_V3.5.0(官方固件庫(kù))

  鏈接:STM32固件庫(kù)使用手冊(cè)的中文翻譯版 提取碼:4lkx

關(guān)鍵字:STM32  固件庫(kù)  電源管理  低功耗模式 引用地址:STM32基于固件庫(kù)學(xué)習(xí)筆記(5)電源管理之低功耗模式

上一篇:STM32基于固件庫(kù)學(xué)習(xí)筆記(3)串口的收發(fā)功能+WiFi基礎(chǔ)配置
下一篇:STM32固件庫(kù)實(shí)現(xiàn)led亮滅閃爍和音頻發(fā)生器設(shè)計(jì)

推薦閱讀

集微網(wǎng)消息(記者 鄧文標(biāo)),自去年以來(lái),半導(dǎo)體漲價(jià)潮從硅晶圓、被動(dòng)組件、MOSFET一路吹向電阻、鋁電解電容,如今連二極管也在持續(xù)漲價(jià),且漲價(jià)幅度遠(yuǎn)超預(yù)期。業(yè)內(nèi)人士向集微網(wǎng)記者表示,受到上游原材料漲價(jià)和下游應(yīng)用驅(qū)動(dòng),二極管的市場(chǎng)價(jià)格在暴漲,原本通用型二極管——安森美2N7002,從去年每顆4分錢,最高漲價(jià)每顆到7毛錢,最高價(jià)格漲幅超過(guò)17倍。二...
這次我們要輕評(píng)測(cè)的耳機(jī),是一款聽(tīng)起來(lái)稍稍“冷門”的無(wú)線耳機(jī)——NuForce BE Live5 (¥899) 無(wú)線耳機(jī)。作為美國(guó)的較有盛名的音頻品牌,被奧圖碼收購(gòu)后專心于音頻領(lǐng)域的拓展,而這款BE Live5耳機(jī)就是最新力作。 那么主打運(yùn)動(dòng)和出行的BE Live5耳機(jī)使用感受如何?我們做了個(gè)開(kāi)箱簡(jiǎn)評(píng)視頻,帶大家來(lái)一同了解下! 這條耳機(jī)光靠顏值就能吸引一大票粉絲,輕...
縱觀浙江省歷年重大項(xiàng)目,2020年前半導(dǎo)體類項(xiàng)目數(shù)量少、占比極低,然而到了2020年,半導(dǎo)體項(xiàng)目的數(shù)量忽然躍升。這似乎在一定程度上反應(yīng)浙江集成電路風(fēng)向的調(diào)整。據(jù)集微網(wǎng)統(tǒng)計(jì),2020年進(jìn)入浙江省重點(diǎn)項(xiàng)目的集成電路類項(xiàng)目,并不完全是2020年前后規(guī)劃建設(shè)的。其中,中芯紹興項(xiàng)目早已于2018年簽約落地。2018年3月,中芯國(guó)際、紹興市政府、盛洋集團(tuán)共同出資設(shè)...
從蒸汽到內(nèi)燃機(jī),再到電動(dòng)機(jī),幾百年的歷史進(jìn)程中,世界驅(qū)動(dòng)力的升級(jí)讓城市運(yùn)轉(zhuǎn)的節(jié)奏更快更強(qiáng),而汽車可以說(shuō)是城市動(dòng)力的親歷者和見(jiàn)證者。不過(guò),正如曾經(jīng)每一次變革都會(huì)受到來(lái)自技術(shù)或能源上的阻力一樣,汽車在即將告別化石能源全力擁抱新能源技術(shù),駛向未來(lái)駕駛的過(guò)程中也面臨著不小的挑戰(zhàn)。“一代正極材料,一代動(dòng)力電池”,從錳酸鋰到磷酸鐵鋰,再到三...

史海拾趣

問(wèn)答坊 | AI 解惑

rs422轉(zhuǎn)u盤知道嗎謝謝

rs422轉(zhuǎn)u盤知道嗎謝謝…

查看全部問(wèn)答∨

關(guān)于wince下openssl命令的問(wèn)題

請(qǐng)問(wèn)各位大俠,本人有一個(gè)很棘手的問(wèn)題請(qǐng)教。我在wince下用openssl命令想要生成一個(gè)ca.crt文件,命令如下: \"X509 -req -in \\\"\\\\wince_192.168.6.200_own.csr\\\" -out \\\"\\\\wince_192.168.6.200_ca.crt\\\" -signkey \\\"\\\\wince_192.1 ...…

查看全部問(wèn)答∨

stm8s207問(wèn)題

/* Clock divider register */ DEF_8BIT_REG_AT(CLK_CKDIVR,0x50c6); 這是DEMO程序,但是對(duì)應(yīng)的DATASHEET 上找不到0X50C6值,我看過(guò)RM0016,但是沒(méi)有0X50C6,謝謝…

查看全部問(wèn)答∨

給大家推薦一款免費(fèi)小巧的虛擬機(jī)軟件---virtualbox

這個(gè)真的挺好用的,而且免費(fèi)開(kāi)源的,有興趣的壇友可以去電驢或者官網(wǎng)找一下!~ www.virtualbox.org [ 本帖最后由 wanghongyang 于 2011-4-21 16:40 編輯 ]…

查看全部問(wèn)答∨

有線無(wú)線溫度器完成

我無(wú)線有兩套方案:一個(gè)是用ADI公司射頻芯片,一個(gè)是用射頻塊。但我由于手頭上就一片ADI主控芯片所以第一方案先放放,那就得用射頻模塊了。ADI那個(gè)方案我想日后試試。這兩種我在后邊補(bǔ)吧,現(xiàn)在先傳下視頻作個(gè)總結(jié)。       ...…

查看全部問(wèn)答∨

【MSP430共享】基于非色散紅外光譜吸收原理的瓦斯?jié)舛葯z測(cè)儀設(shè)計(jì)

煤礦作業(yè) 中瓦斯?jié)舛葯z測(cè)儀器必不可少 ,現(xiàn)提出一種基 于非色散紅外光譜吸收原理 的新型瓦斯?jié)舛葯z 測(cè)儀 ;D YNAME NT公司生產(chǎn)的 MS H—Hc / Tc傳感器 ,以及 MS P 4 3 0 F 1 5 7為設(shè)計(jì) 的核心元器件 ;詳細(xì)闡述了紅外瓦斯傳感 器的工作原理 、瓦 ...…

查看全部問(wèn)答∨

畢業(yè)設(shè)計(jì)求助?。?!

        我的專業(yè)是機(jī)械大類里面的機(jī)械電子工程方向,前三年學(xué)的都是與機(jī)械設(shè)計(jì)制造相關(guān)的課程。畢業(yè)設(shè)計(jì)我選的題目是“基于ARM的智能家居系統(tǒng)設(shè)計(jì)”,在網(wǎng)上購(gòu)買了OK6410作為開(kāi)發(fā)系統(tǒng)。由于之前只用過(guò)51單片機(jī) ...…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved