色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

中科芯MCU ? 來源:中科芯MCU ? 2023-07-07 09:41 ? 次閱讀

CKS32F4xx低功耗模式

STANDBY模式

第十七期 2023.7.6

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

66834bd4-1bf9-11ee-962d-dac502259ad0.jpg

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

RTC時鐘簡介

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

67f11c30-1bf9-11ee-962d-dac502259ad0.png

采用RTC周期性喚醒STANDBY模式實驗

程序設計主要要點如下:

① RTC初始化;

② RTC周期性自動喚醒;

③清除WUF標志位,進入待機狀態。

1)初始化RTC配置函數

void CKS_RTC_Init(void)
{
  uint16_t retry = 0x1FFF; 
  RTC_InitTypeDef  RTC_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)
  {
    return 1; 
  }
  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函數中,用來初始化RTC配置以及日期和時鐘,但只在首次設置時間,隨后重新上電/復位都不再進行時間設置(前提是備份電池有電)。為了時間更為精準,這里選用了LSE,即外部32.768kHz晶振作為RTC_CLK的時鐘源,而RTC時鐘核心,要求提供1Hz的時鐘,所以接著是設置RTC_CLK的預分頻系數,包括異步和同步兩個,這里設置異步分頻因子為ASYNCHPREDIV為(127),同步分頻因子為ASYNCHPREDIV(255),則產生的時鐘CK_SPRE=32.768/(127+1)*(255+1)=1HZ,即每秒更新一次。

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

void RTC_Set_WakeUp(uint32_t wksel, uint16_t cnt)
{ 
  NVIC_InitTypeDef   NVIC_InitStructure;
  EXTI_InitTypeDef   EXTI_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函數中,首先通過RTC_WakeUpCmd函數,關閉WakeUp,接著調用RTC_WakeUpClockConfig函數,配置WakeUp時鐘分頻系數及來源,然后通過調用RTC_SetWakeUpCounter,設置WakeUp自動裝載寄存器,隨后使能WakeUp,最后開啟配置鬧鐘中斷以及NVIC中斷優先級。鑒于此處為RTC喚醒待機實驗,僅做demo例程使用,因而不用編寫中斷服務函數。

3)芯片進入STANDBY模式

查閱CKS32F4xx系列標準庫及相關手冊,我們了解到使能RTC周期性喚醒,在進入STANDBY模式前,需要進行以下操作,代碼如下:

void CKS_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函數中,先禁止RTC中斷(ALRAIE、ALRBIE、TSIE、WUTIE和TAMPIE等),接著清零對應中斷標志位,以及清除PWR喚醒(WUF)標志,然后調用RTC_Set_WakeUp函數,設置每3s后喚醒STANDBY模式,同時該函數中也重新使能RTC對應中斷,最后調用PWR_EnterSTANDBYMode進入STANDBY模式。

4)主函數配置

本例程中主函數主要對上文所述函數調用,程序編譯下載至開發板,先進行相關外設初始化后,直接進入STANDBY模式,每隔3s由RTC喚醒,隨即又進入STANDBY模式,循環往復,主函數代碼如下:

int main(void)
{  
  CKS_RTC_Init();       
  
  while (1)
  {        
    CKS_Set_Standby_Mode();    
  }
}

審核編輯:湯梓紅

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

    關注

    456

    文章

    50938

    瀏覽量

    424686
  • 寄存器
    +關注

    關注

    31

    文章

    5357

    瀏覽量

    120637
  • sram
    +關注

    關注

    6

    文章

    768

    瀏覽量

    114730
  • 低功耗
    +關注

    關注

    10

    文章

    2408

    瀏覽量

    103775
  • RTC
    RTC
    +關注

    關注

    2

    文章

    541

    瀏覽量

    66706

原文標題:MCU微課堂|CKS32F4xx系列低功耗模式STANDBY模式

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

    本課講為大家講解CKS32F4xx系列產品的低功耗模式睡眠(Sleep)模式。MCU為滿足某些
    發表于 06-26 10:02 ?659次閱讀
    <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>睡眠<b class='flag-5'>模式</b>

    CKS32F4xx系列DSP功能介紹

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

    CKS32F4xx系列產品串口DMA傳輸

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

    CKS32F4xx系列RNG功能設置

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

    CKS32F4xx系列DAC功能

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

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

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

    CKS32F4xx系列ADC單通道電壓采集

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

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的頭像 發表于 11-06 16:57 ?486次閱讀
    <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系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的頭像 發表于 11-06 16:59 ?689次閱讀
    <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模式
    的頭像 發表于 11-06 17:08 ?636次閱讀
    <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系列產品Timer的基本使用方法-比較輸出

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

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

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

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

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

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

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置
    的頭像 發表于 10-24 15:14 ?802次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品GPIO口配置
    主站蜘蛛池模板: 香蕉在线播放| 全免费A敌肛交毛片免费懂色AV| 99九九精品视频| 国内精品日本久久久久影院| 日韩av片无码一区二区不卡电影| 浴室里强摁做开腿呻吟的漫画男男| 高清毛片一区二区三区| 男人边吃奶边摸边做刺激情话| 亚洲妈妈精品一区二区三区| 国产噜噜噜精品免费| 天天色天天综合网| 超碰超碰视频在线观看| 欧美日韩亚洲综合2019| z00兽200俄罗斯| 女人高潮了拔出来了她什么感觉| 男女久久久国产一区二区三区| 伊人情人网综合| 久久日本精品在线热| 综合精品欧美日韩国产在线| 毛片手机在线观看| 99免费在线观看| 欧美乱妇15p图| 成人欧美一区二区三区白人| 日韩亚洲欧美中文在线| 国产AV精品无码免费看| 小伙无套内射老女人| 精品国产精品人妻久久无码五月天 | chinesevideoshd性舞| 日韩性大片| 国产原创中文视频| 又黄又湿免费高清视频| 欧美成人国产| 国产成人精品男人免费| 亚洲国产精品高清在线| 久久综合久久鬼色| WWW亚洲精品久久久无码| 我的美女奴隶| 久久丫线这里只精品| old老男人野外树林tv| 无码AV精品久久一区二区免费| 精品国产品在线18年|