女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

CKS32F4xx系列低功耗模式STOP模式

jf_pJlTbmA9 ? 來源:中科芯MCU ? 作者:中科芯MCU ? 2023-11-06 17:08 ? 次閱讀

在本章節中,首先向大家介紹電源系統結構,接著簡述三種低功耗模式,最后重點介紹CKS32F4xx系列如何進入STOP模式以及使用按鍵實現中斷喚醒。

CKS32F4xx電源系統介紹

wKgaomUDxAqAWADiAAFEKvLWiVg971.png

CKS32F4xx系列的電源系統框圖

CKS32F4xx系列的器件工作電壓(VDD)為1.8~3.6V。

①備份域電路:包含LSE振蕩器、RTC、備份寄存器及備份SRAM電源開關自動切換VDD和VBAT供電。

②調壓器電路(1.2V域):為備份域及待機電路外的所有數字電路供電,其中包括內核、數字外設及RAM。

ADC電路和參考電壓:ADC工作電源使用VDDA引腳輸入,使用VSSA作為獨立的地連接,VREF引腳則為ADC提供測量使用的參考電壓。

低功耗模式簡介

CKS32F4xx系列按功耗由高到低排列,分別是運行、睡眠、停止(STOP)和待機(STANDBY)四種工作模式。上電復位后,CKS32F4xx系列會處于正常運行狀態,當不需要繼續運行內核時,就可以選擇進入后面的三種低功耗模式降低功耗。這三種模式中,電源消耗不同、喚醒時間不同、喚醒源不同,用戶需要根據應用需求,選擇最佳的低功耗模式。其中,最低功耗的是待機模式,停機模式(STOP)是次低功耗的,最后是睡眠模式。低功耗相關寄存器主要有SCB_SCR、PWR_CR、PWR_CSR,進入各種低功耗需要調用的指令有WFI或WFE,以下做簡要介紹。

1.SCB_SCR(系統控制寄存器)

wKgaomUDxAyAW2s-AAA4ylwKEnM241.png

wKgZomUDxA6AdYMcAACy_ijj-xE440.jpg

若進入停止模式or待機模式,需將SLEEPDEEP置1。

2.PWR_CR(電源控制寄存器)

wKgZomUDxA-AITDZAAOMYUqQ5vE359.png

若進入停止模式,需將PDDS清0,LPDS選調節器模式;若進入待機模式,需將PDDS置1,清除喚醒位CWUF。

3.PWR_CSR(電源控制/狀態寄存器)

wKgaomUDxBGAR8w-AAOSoIyhhew142.png

若芯片處于待機模式下,需使用使用WKUP引腳喚醒并需要清除WUF標記位。

注:WKUP上升沿才能喚醒待機狀態,清除WUF標記位實則需操作CWUF位。

4.WFI與WFE指令

實質上都是內核指令,在庫文件core_cmInstr.h中把這些指令封裝成了函數,調用它們都能進入低功耗模式。調用時,需要使用函數的格式“__WFI();”和“__WFE();”,這是因為__w?及__wfe是編譯器內置的函數,函數內部使用調用了相應的匯編指令。其中WFI指令決定了它需要用中斷喚醒,而WFE則決定了它可用事件來喚醒。

以下表格是對三種低功耗模式的簡要概述。

wKgaomUDxBKAU9eeAAEk7zuEscM308.jpg

本章中,我們主要對CKS32F4xx系列的低功耗模式—停止模式(STOP)做詳細介紹。該模式中,由于其1.2V區域的部分電源沒有關閉,會保留內核的寄存器、內存的信息,所以從STOP模式喚醒,并重新開啟時鐘后,還可以從上次停止處繼續執行代碼。停止模式可以由任意一個外部中斷(EXTI)喚醒。在停止模式中可以選擇電壓調節器為開模式或低功耗模式,可選擇內部FLASH工作在正常模式或掉電模式。那我們如何進入STOP模式,可以按照下述表格中的步驟執行即可:

wKgaomUDxBOAUMUFAAIct7PHd98353.jpg

CKS32F4xx系列標準庫把進入STOP模式這部分的操作封裝到PWR_EnterSTOPMode函數中了,并且需要注意的是進入STOP模式后,CKS32F4xx系列的所有IO都保持在停止前的狀態,且當它被喚醒時,CKS32F4xx系列使用HSI作為系統時鐘運行,由于系統時鐘會影響很多外設的工作狀態,所以一般我們在喚醒后會重新開啟HSE,把系統時鐘設置為原來的狀態。上面表格也提到在停止模式中,還可以控制FLASH的供電,使用庫函數PWR_FlashPowerDownCmd配置進入掉電狀態還是正常供電狀態,本質上是封裝了一個對FPDS寄存器位操作的語句,使用時需要再進入停止模式前被調用,可以進一步降低功耗。

采用EXTI喚醒STOP模式實驗

程序設計主要要點如下:

①初始化用于喚醒的中斷按鍵;

②配置不用的I/O端口

③設置停滯狀態是FLASH掉電以及選擇電壓調節器的工作模式并進入停止狀態;

④使用按鍵中斷喚醒芯片;

⑤重啟HSE時鐘,使系統完全恢復停止之前的狀態。

1)初始化用于喚醒的中斷按鍵

此處選擇連接PB1引腳的按鍵用于將芯片從STOP模式喚醒,代碼如下:

voidCKS_EXTI_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
EXTI_InitTypeDefEXTI_InitStructure;
NVIC_InitTypeDefNVIC_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);

/*ConfigurePB1asEXTI*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOB, GPIO_InitStructure);

/*ConfigurePB1toEXTIline1*/
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource1);

/*EXTIconfiguration*/
EXTI_InitStructure.EXTI_Line=EXTI_Line1;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init( EXTI_InitStructure);

/*NVICconfiguration*/
NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init( NVIC_InitStructure);
}

在CKS_EXTI_Init函數中,首先使能GPIOB時鐘,又因為用到外部中斷,所以必須先使能SYSCFG時鐘,接著對GPIOB初始化為上拉輸入,并調用函數 SYSCFG_EXTILineConfig配置GPIOB.1連接到中斷線1,最后初始化EXTI中斷線以及NVIC中斷優先級。

voidEXTI1_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line1)!=RESET)
{
EXTI_ClearITPendingBit(EXTI_Line1);
}
}

在中斷服務函數EXTI1_IRQHandler內,主要是清除LINE1上的中斷標志位。

2)配置未使用的I/O口

進入STOP模式之前,需要對I/O進行處理,若不處理很多配置為輸入浮空的I/O口在受到外界干擾的時候,狀態不定,消耗大量的電流,代碼如下:

voidCKS_Stop_Mode_IO_Set(void)
{
/*setpinsnotusedtoAIN*/
GPIO_InitTypeDefGPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;

GPIO_Init(GPIOA, GPIO_InitStructure);
GPIO_Init(GPIOC, GPIO_InitStructure);
GPIO_Init(GPIOD, GPIO_InitStructure);
GPIO_Init(GPIOF, GPIO_InitStructure);
GPIO_Init(GPIOG, GPIO_InitStructure);
GPIO_Init(GPIOH, GPIO_InitStructure);
GPIO_Init(GPIOI, GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=(~GPIO_Pin_1);
GPIO_Init(GPIOB, GPIO_InitStructure);
}

由上述代碼可知,我們將沒用到的I/O全部設置為模擬輸入,保留PB1作為按鍵,產生外部中斷來將芯片從STOP模式喚醒。

3)芯片進入STOP模式

該部分代碼一般是程序執行一段時間再調用,我們先使用PWR_FlashPowerDownCmd配置停止模式下FLASH使用掉電模式,隨后調用PWR_EnterSTOPMode把調壓器設置在低功耗模式,最后使用WFI指令進入停止狀態。由上文可知,WFI進入停止模式可由任意的EXTI的中斷喚醒,所以此處使用按鍵中斷喚醒是可行的,代碼如下:

voidCKS_Set_Stop_Mode(void)
{
PWR_FlashPowerDownCmd(ENABLE);
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
}

4)主函數配置

本例程中主函數主要對上文所述函數調用,程序編譯下載至開發板,先進行相關外設初始化后,直接進入STOP模式,此時按下按鍵,芯片可立即被喚醒,隨即又進入STOP模式,循環往復,主函數代碼如下:

intmain(void)
{
GPIO_Configuration();
CKS_EXTI_Init();
CKS_Stop_Mode_IO_Set();
while(1)
{
CKS_Stop_Mode_IO_Set();
CKS_Set_Stop_Mode();
SystemInit();
Delay(0xffffff);
}
}

來源:中科芯MCU

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17837

    瀏覽量

    360400
  • 低功耗
    +關注

    關注

    10

    文章

    2733

    瀏覽量

    104531
  • 電源系統
    +關注

    關注

    3

    文章

    670

    瀏覽量

    38338
  • STOP模式
    +關注

    關注

    0

    文章

    9

    瀏覽量

    3176
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    MCU微課堂|CKS32F4xx系列產品時鐘配置

    ,并且高時鐘頻率將導致功耗增加、抗電磁干擾能力變弱,因此,CKS32F4xx系列產品內部具備多個時鐘源。本文將對CKS32F4xx系列產品時
    發表于 12-12 10:17 ?991次閱讀

    CKS32F4xx系列MCU的低功耗模式之睡眠模式

    本課講為大家講解CKS32F4xx系列產品的低功耗模式之睡眠(Sleep)模式。MCU為滿足某些應用場景:如小型化低容量設備,長期監測設備等
    發表于 06-26 10:02 ?763次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>MCU的<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>之睡眠<b class='flag-5'>模式</b>

    CKS32F4xx系列DSP功能介紹

    CKS32F4xx系列使用高性能的32位內核,支持浮點運算單元(FPU),同時還支持DSP指令以及存儲保護(MPU)用來加強應用的安全性。
    的頭像 發表于 03-04 13:43 ?2027次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DSP功能介紹

    CKS32F4xx系列產品串口DMA傳輸

    在上一講,我們講過CKS32F4xx系列的6個串口都支持DMA傳輸。因此本節我們對CKS32F4xx系列的DMA進行介紹,同時利用DMA對串口數據進行傳輸。
    的頭像 發表于 04-10 11:18 ?1316次閱讀

    CKS32F4xx系列低功耗模式之STANDBY模式

    本章中,我們主要對CKS32F4xx系列的待機模式(STANDBY)做詳細介紹。在該模式下,芯片功耗最低,1.2V供電區域、PLL、HSI和
    的頭像 發表于 07-07 09:41 ?1489次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>之STANDBY<b class='flag-5'>模式</b>

    CKS32F4xx系列RNG功能設置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機數發生器簡介 ? ? CKS32F4xx系列自帶了硬件隨機數發生器(RNG),RNG處理器是一個以連續模擬噪聲為基礎的隨機數發生器,在
    的頭像 發表于 09-08 10:01 ?862次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能設置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發表于 11-06 16:56 ?1104次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC功能

    CKS32F4xx系列ADC多通道DMA電壓采集

    CKS32F4xx系列ADC多通道DMA電壓采集
    的頭像 發表于 11-06 16:53 ?1318次閱讀

    CKS32F4xx系列ADC單通道電壓采集

    CKS32F4xx系列ADC單通道電壓采集
    的頭像 發表于 11-06 16:54 ?1174次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ADC單通道電壓采集

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的頭像 發表于 11-06 16:57 ?726次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>STANDBY<b class='flag-5'>模式</b>

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的頭像 發表于 11-06 16:59 ?935次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>SLEEP<b class='flag-5'>模式</b>

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出
    的頭像 發表于 11-09 17:39 ?1103次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-定時操作

    CKS32F4xx系列產品Timer的基本使用方法-定時操作
    的頭像 發表于 11-09 17:41 ?811次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品Timer的基本使用方法-定時操作

    MCU微課堂 | CKS32F4xx系列產品SPI通信

    MCU微課堂 | CKS32F4xx系列產品SPI通信
    的頭像 發表于 10-24 17:12 ?970次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品SPI通信

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置
    的頭像 發表于 10-24 15:14 ?1069次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品GPIO口配置