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

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

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

CKS32F4xx系列低功耗模式STANDBY模式

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

本章中,我們主要對(duì)CKS32F4xx系列的待機(jī)模式(STANDBY)做詳細(xì)介紹。在該模式下,芯片功耗最低,1.2V供電區(qū)域、PLL、HSI和HSE振蕩器也完全被關(guān)閉。除備份域(RTC寄存器、RTC備份寄存器和備份SRAM)和待機(jī)電路中的寄存器外,SRAM和寄存器內(nèi)容丟失。因此,從待機(jī)模式喚醒后,只能從頭開始執(zhí)行程序,那我們?nèi)绾芜M(jìn)入STANDBY模式及喚醒方式,可以按照下述表格中的步驟執(zhí)行即可:

wKgaomUDwUCAVb8JAAEXQQlK8K0949.jpg

CKS32F4xx系列標(biāo)準(zhǔn)庫把進(jìn)入STANDBY模式這部分的操作封裝到PWR_EnterSTANDBYMode函數(shù)中了,需要先通過PWR_CR設(shè)置PDDS位以及SLEEPDEEP位,使得芯片進(jìn)入深度睡眠時(shí)進(jìn)入待機(jī)模式,接著調(diào)用__force_stores函數(shù)確保存儲(chǔ)操作完畢后再調(diào)用WFI指令,從而進(jìn)入待機(jī)模式。需要注意的是,調(diào)用本函數(shù)前,還需要清空WUF 寄存器位才能進(jìn)入待機(jī)模式。

RTC時(shí)鐘簡介

CKS32F4xx系列的RTC,是一個(gè)獨(dú)立的BCD定時(shí)器/計(jì)數(shù)器,RTC提供一個(gè)日歷時(shí)鐘(包含年月日時(shí)分秒信息)、兩個(gè)可編程鬧鐘(ALARM A和ALARM B)中斷,以及一個(gè)具有中斷功能的周期性可編程喚醒標(biāo)志。RTC還包含用于管理低功耗模式的自動(dòng)喚醒單元。兩個(gè)32位寄存器包含二進(jìn)碼十進(jìn)數(shù)格式(BCD)的秒、分鐘、小時(shí)(12或24小時(shí)制)、星期幾、日期、月份和年份。此外,還可提供二進(jìn)制格式的亞秒值。系統(tǒng)可以自動(dòng)將月份的天數(shù)補(bǔ)償為28、29(閏年)、30和31天。并且還可以進(jìn)行夏令時(shí)補(bǔ)償。其它32位寄存器還包含可編程的鬧鐘亞秒、秒、分鐘、小時(shí)、星期幾和日期。此外,還可以使用數(shù)字校準(zhǔn)功能對(duì)晶振精度的偏差進(jìn)行補(bǔ)償。RTC模塊和時(shí)鐘配置是在后備區(qū)域,即在系統(tǒng)復(fù)位或從待機(jī)模式喚醒后RTC的設(shè)置和時(shí)間維持不變,只要后備區(qū)域供電正常,那么RTC將可以一直運(yùn)行。但是在系統(tǒng)復(fù)位后,會(huì)自動(dòng)禁止訪問后備寄存器和RTC,以防止對(duì)后備區(qū)域(BKP)的意外寫操作。所以在要設(shè)置時(shí)間之前,先要取消備份區(qū)域(BKP)寫保護(hù)。RTC的框圖,如下圖所示:

wKgaomUDwUGASeTaAAC3EWBqGiQ985.png

采用RTC周期性喚醒STANDBY模式實(shí)驗(yàn)

程序設(shè)計(jì)主要要點(diǎn)如下:

① RTC初始化;

② RTC周期性自動(dòng)喚醒;

③清除WUF標(biāo)志位,進(jìn)入待機(jī)狀態(tài)。

1)初始化RTC配置函數(shù)

voidCKS_RTC_Init(void)
{
uint16_tretry=0x1FFF;
RTC_InitTypeDefRTC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);

RCC_LSEConfig(RCC_LSE_ON);
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET)
{
retry--;
Delay(0xffff);
}
if(retry==0)
{
return1;
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);

RTC_InitStructure.RTC_AsynchPrediv=0x7F;
RTC_InitStructure.RTC_SynchPrediv=0xFF;
RTC_InitStructure.RTC_HourFormat=RTC_HourFormat_24;
RTC_Init( RTC_InitStructure);
}

在CKS_RTC_Init函數(shù)中,用來初始化RTC配置以及日期和時(shí)鐘,但只在首次設(shè)置時(shí)間,隨后重新上電/復(fù)位都不再進(jìn)行時(shí)間設(shè)置(前提是備份電池有電)。為了時(shí)間更為精準(zhǔn),這里選用了LSE,即外部32.768kHz晶振作為RTC_CLK的時(shí)鐘源,而RTC時(shí)鐘核心,要求提供1Hz的時(shí)鐘,所以接著是設(shè)置RTC_CLK的預(yù)分頻系數(shù),包括異步和同步兩個(gè),這里設(shè)置異步分頻因子為ASYNCHPREDIV為(127),同步分頻因子為ASYNCHPREDIV(255),則產(chǎn)生的時(shí)鐘CK_SPRE=32.768/(127+1)*(255+1)=1HZ,即每秒更新一次。

2)RTC周期性喚醒配置函數(shù)

voidRTC_Set_WakeUp(uint32_twksel,uint16_tcnt)
{
NVIC_InitTypeDefNVIC_InitStructure;
EXTI_InitTypeDefEXTI_InitStructure;

RTC_WakeUpCmd(DISABLE);
RTC_WakeUpClockConfig(wksel);
RTC_SetWakeUpCounter(cnt-1);

RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line22);

RTC_ITConfig(RTC_IT_WUT,ENABLE);
RTC_WakeUpCmd(ENABLE);

EXTI_InitStructure.EXTI_Line=EXTI_Line22;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init( EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=RTC_WKUP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init( NVIC_InitStructure);
}

在RTC_Set_WakeUp函數(shù)中,首先通過RTC_WakeUpCmd函數(shù),關(guān)閉WakeUp,接著調(diào)用RTC_WakeUpClockConfig函數(shù),配置WakeUp時(shí)鐘分頻系數(shù)及來源,然后通過調(diào)用RTC_SetWakeUpCounter,設(shè)置WakeUp自動(dòng)裝載寄存器,隨后使能WakeUp,最后開啟配置鬧鐘中斷以及NVIC中斷優(yōu)先級(jí)。鑒于此處為RTC喚醒待機(jī)實(shí)驗(yàn),僅做demo例程使用,因而不用編寫中斷服務(wù)函數(shù)。

3)芯片進(jìn)入STANDBY模式

查閱CKS32F4xx系列標(biāo)準(zhǔn)庫及相關(guān)手冊(cè),我們了解到使能RTC周期性喚醒,在進(jìn)入STANDBY模式前,需要進(jìn)行以下操作,代碼如下:

voidCKS_Set_Standby_Mode(void)
{
RTC_ITConfig(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA,DISABLE);
RTC_ClearITPendingBit(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA);
PWR_ClearFlag(PWR_FLAG_WU);

RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,3);

PWR_EnterSTANDBYMode();
}

在CKS_Set_Standby_Mode函數(shù)中,先禁止RTC中斷(ALRAIE、ALRBIE、TSIE、WUTIE和TAMPIE等),接著清零對(duì)應(yīng)中斷標(biāo)志位,以及清除PWR喚醒(WUF)標(biāo)志,然后調(diào)用RTC_Set_WakeUp函數(shù),設(shè)置每3s后喚醒STANDBY模式,同時(shí)該函數(shù)中也重新使能RTC對(duì)應(yīng)中斷,最后調(diào)用PWR_EnterSTANDBYMode進(jìn)入STANDBY模式。

4)主函數(shù)配置

本例程中主函數(shù)主要對(duì)上文所述函數(shù)調(diào)用,程序編譯下載至開發(fā)板,先進(jìn)行相關(guān)外設(shè)初始化后,直接進(jìn)入STANDBY模式,每隔3s由RTC喚醒,隨即又進(jìn)入STANDBY模式,循環(huán)往復(fù),主函數(shù)代碼如下:

intmain(void)
{
CKS_RTC_Init();
while(1)
{
CKS_Set_Standby_Mode();
}
}

來源:中科芯MCU

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349916
  • 振蕩器
    +關(guān)注

    關(guān)注

    28

    文章

    3803

    瀏覽量

    138809
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • 低功耗
    +關(guān)注

    關(guān)注

    10

    文章

    2352

    瀏覽量

    103539
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCU微課堂|CKS32F4xx系列產(chǎn)品時(shí)鐘配置

    ,并且高時(shí)鐘頻率將導(dǎo)致功耗增加、抗電磁干擾能力變?nèi)?,因此?b class='flag-5'>CKS32F4xx系列產(chǎn)品內(nèi)部具備多個(gè)時(shí)鐘源。本文將對(duì)CKS32F4xx系列產(chǎn)品時(shí)
    發(fā)表于 12-12 10:17 ?796次閱讀

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

    本課講為大家講解CKS32F4xx系列產(chǎn)品的低功耗模式之睡眠(Sleep)模式。MCU為滿足某些應(yīng)用場(chǎng)景:如小型化低容量設(shè)備,長期監(jiān)測(cè)設(shè)備等
    發(fā)表于 06-26 10:02 ?613次閱讀
    <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位內(nèi)核,支持浮點(diǎn)運(yùn)算單元(FPU),同時(shí)還支持DSP指令以及存儲(chǔ)保護(hù)(MPU)用來加強(qiáng)應(yīng)用的安全性。
    的頭像 發(fā)表于 03-04 13:43 ?1487次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DSP功能介紹

    CKS32F4xx系列產(chǎn)品串口DMA傳輸

    在上一講,我們講過CKS32F4xx系列的6個(gè)串口都支持DMA傳輸。因此本節(jié)我們對(duì)CKS32F4xx系列的DMA進(jìn)行介紹,同時(shí)利用DMA對(duì)串口數(shù)據(jù)進(jìn)行傳輸。
    的頭像 發(fā)表于 04-10 11:18 ?996次閱讀

    CKS32F4xx系列低功耗模式STANDBY模式

    本章中,我們主要對(duì)CKS32F4xx系列的待機(jī)模式STANDBY)做詳細(xì)介紹。在該模式下,芯片功耗
    的頭像 發(fā)表于 07-07 09:41 ?1098次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>之<b class='flag-5'>STANDBY</b><b class='flag-5'>模式</b>

    CKS32F4xx系列RNG功能設(shè)置

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

    CKS32F4xx系列DAC功能

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

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

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

    CKS32F4xx系列ADC單通道電壓采集

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

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的頭像 發(fā)表于 11-06 16:59 ?637次閱讀
    <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系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的頭像 發(fā)表于 11-06 17:08 ?580次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>STOP<b class='flag-5'>模式</b>

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-比較輸出

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

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)操作

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)操作
    的頭像 發(fā)表于 11-09 17:41 ?568次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本使用方法-定時(shí)操作

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信

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

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置

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