99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

STM32 RTC鬧鐘的中斷和喚醒待機模式

汽車玩家 ? 來源:eeworld ? 作者:eeworld ? 2021-07-23 10:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

RTC代表的是實時時鐘的意思,因為它提供的時鐘基準(zhǔn)比較準(zhǔn)確所以用處還是很多的。

RTC全局中斷:

void RTC_IRQHandler()

{

if(RTC_GetITStatus(RTC_IT_ALR)!=RESET) //是否鬧鐘中斷發(fā)生

{

printf("THE ALARM READY =%d \r\n",RTC_GetCounter());//輸出此時的秒數(shù)

RTC_ClearITPendingBit(RTC_IT_ALR);

PWR_BackupAccessCmd(ENABLE);

RTC_EnterConfigMode();

RTC_WaitForLastTask();

RTC_SetAlarm(40+RTC_GetCounter()); //配置下次鬧鐘為40s后

RTC_WaitForLastTask();

RTC_ExitConfigMode();

PWR_BackupAccessCmd(DISABLE);

}

if(RTC_GetITStatus(RTC_IT_SEC)!=RESET) //是否秒中斷發(fā)生

{

printf("Time is =%d \r\n",RTC_GetCounter()); //輸出此時的秒數(shù)

}

RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW); //清除秒中斷標(biāo)志位和溢出位

RTC_WaitForLastTask();

}


待機喚醒:

待機模式是功耗最低的一種模式。外部復(fù)位(NRST 引腳)、 IWDG 復(fù)位、 WKUP 引腳上的上升沿或 RTC 鬧鐘事件發(fā)生時,STM32從待機模式退出。其中外部復(fù)位和WKUP的方法比較簡單。主要講一下RTC鬧鐘喚醒。這兩個程序一個是讓STM32的一個管腳接按鍵,按鍵按下的時候STM32進(jìn)入待機狀態(tài),當(dāng)40秒的鬧鐘到來時喚醒STM32.另一個是當(dāng)按鍵按下時候進(jìn)入待機狀態(tài),鬧鐘設(shè)置為5S秒后,鬧鐘來臨時喚醒STM32。

void RTC_Init()

{

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,ENABLE);

PWR_WakeUpPinCmd(ENABLE);

PWR_BackupAccessCmd(ENABLE);

BKP_DeInit();

RCC_LSEConfig(RCC_LSE_ON);

while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)

{

}

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

RCC_RTCCLKCmd(ENABLE);

RTC_WaitForLastTask();

RTC_WaitForSynchro();

RTC_ITConfig(RTC_IT_SEC, ENABLE);

RTC_WaitForLastTask();

RTC_EnterConfigMode();

RTC_SetCounter(0); //設(shè)置計數(shù)初始值

RTC_WaitForLastTask();

RTC_SetPrescaler(32767);

RTC_WaitForLastTask();

RTC_SetAlarm(40); //鬧鐘定時40S

RTC_WaitForLastTask();

RTC_ExitConfigMode();

NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //RTC全局中斷 它的優(yōu)先級要小于按鍵

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

void EXTIX_Init(void)

{

EXTI_InitTypeDef EXTI_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);//配置按鍵PC5為外部中斷

EXTI_InitStructure.EXTI_Line=EXTI_Line5;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //外部中斷的優(yōu)先級高于RTC

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

void EXTI9_5_IRQHandler() //按鍵對應(yīng)的外部中斷

{

EXTI_ClearITPendingBit(EXTI_Line5);

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

}

void RTC_IRQHandler() //RTC的中斷

{

if(RTC_GetITStatus(RTC_IT_SEC)!=RESET)

{

printf("TIME IS =%d \r\n",RTC_GetCounter());

}

RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW);

RTC_WaitForLastTask();

}


文章整合自:eeworld

編輯:ymf

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

    關(guān)注

    4

    文章

    314

    瀏覽量

    67075
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42826
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32L433VCT6進(jìn)入STOP模式2之后,功耗依然和正常運行模式沒有差別,為什么?

    STM32CubeMX上配置power savinf mode 2、系統(tǒng)電源供電時LDO 結(jié)果: 1、運行是10mA,進(jìn)入STOP模式時是9.9mA; 2、掛仿真,沒有任何喚醒中斷
    發(fā)表于 07-21 06:42

    AT32的ERTC與RTC的區(qū)別

    鬧鐘中斷、一個周期性喚醒中斷、入侵檢測中斷和時間戳中斷,方便進(jìn)行多種定時和報警應(yīng)用開發(fā) 。 時
    發(fā)表于 07-11 10:48

    告別 “起床氣”!NV340D 語音芯片解鎖電子鬧鐘喚醒新體驗!

    在快節(jié)奏的現(xiàn)代生活中,電子鬧鐘作為我們每天清晨的“喚醒伙伴”,其重要性不言而喻。如今,隨著科技的飛速發(fā)展,電子鬧鐘也在不斷進(jìn)化,功能日益豐富。而這背后,離不開關(guān)鍵技術(shù)——語音芯片的強力支持
    的頭像 發(fā)表于 07-05 11:09 ?332次閱讀
    告別 “起床氣”!NV340D 語音芯片解鎖電子<b class='flag-5'>鬧鐘</b><b class='flag-5'>喚醒</b>新體驗!

    【RA4L1-SENSOR】07 低功耗待機模式及功耗實測

    低功耗模式為修改為軟件待機模式。 喚醒源配置3個:IRQ6、IRQ7和RTC Period 3.2 配置按鍵GPIO的
    發(fā)表于 06-20 09:36

    WLE5CBU6在STOP2模式下,概率性不能通過RTC鬧鐘中斷喚醒,為什么?

    已知鬧鐘中斷優(yōu)先級最高,跑RTC測試時,掛測會出現(xiàn)概率性的無法喚醒MCU
    發(fā)表于 06-16 06:34

    【道生物聯(lián)TKB-620開發(fā)板試用】定期休眠并發(fā)布數(shù)據(jù)

    , FSM_ENTER_SLEEP_ACK, FSM_MAX, } FSM_States_e; 只有當(dāng)狀態(tài)為FSM_RCVDATA時就可以實現(xiàn)正常的收發(fā)了。 2、stm32F103可以由RTC的周期中斷
    發(fā)表于 04-29 07:29

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    我使用的是STM32U585系列芯片,開啟了IWDG,并在運行模式下測試提前喚醒中斷正常觸發(fā),但在進(jìn)入STOP2模式后,提前
    發(fā)表于 04-27 08:05

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    我使用的是STM32U585系列芯片,開啟了IWDG,并在運行模式下測試提前喚醒中斷正常觸發(fā),但在進(jìn)入STOP2模式后,提前
    發(fā)表于 04-24 07:50

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    我使用的是STM32U585系列芯片,開啟了IWDG,并在運行模式下測試提前喚醒中斷正常觸發(fā),但在進(jìn)入STOP2模式后,提前
    發(fā)表于 04-22 08:14

    【瑞薩RA2L1入門學(xué)習(xí)】03. RTC 時鐘日歷&amp;鬧鐘&amp;周期性中斷

    、月、日、時、分、秒等時間信息;在計時模式下,RTC則用于產(chǎn)生固定周期的中斷,如每秒一次的中斷RTC 常見的操作包括設(shè)置時間、設(shè)置定時鬧鈴
    發(fā)表于 03-07 16:45

    利用CKS32F107xx系列RTC鬧鐘實驗

    本小節(jié)講解的是如何在萬年歷實驗的基礎(chǔ)上,利用RTC鬧鐘功能實現(xiàn)一個鬧鐘,在每天的[XX小時-XX分鐘-XX秒]產(chǎn)生鬧鐘,然后通過閃爍LED模擬鬧鐘
    的頭像 發(fā)表于 02-18 17:21 ?803次閱讀

    【瑞薩RA2L1入門學(xué)習(xí)】05、待機模式按鍵外部中斷喚醒 低功耗測試

    的。 任何中斷或者復(fù)位都會將MCU從睡眠模式喚醒,并開始處理中斷,這也包括Systick系統(tǒng)計時器,因此讀者如果用到了RTOS, 進(jìn)入睡眠模式
    發(fā)表于 01-29 23:08

    解析愛普生RTC芯片選型的五大關(guān)鍵

    當(dāng)你的電子設(shè)備突然斷電重新開機后,時間又變回了初始值;鬧鐘沒響重要事件記錄不見了,甚至還得重新設(shè)置備忘提醒。那么,怎么解決這個問題呢?讓你不再為時間的飛逝而困擾!EPSON將向你介紹RTC芯片選型
    的頭像 發(fā)表于 01-06 15:42 ?447次閱讀
    解析愛普生<b class='flag-5'>RTC</b>芯片選型的五大關(guān)鍵

    看門狗復(fù)位是否可以喚醒待機模式。

    為什么我進(jìn)入待機模式后就無法喚醒,看門狗復(fù)位喚醒是需要配置什么還是無法喚醒待機
    發(fā)表于 12-21 15:09

    【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)RTC 模塊介紹

    GD32 MCU內(nèi)部提供了一個RTC(實時時鐘)模塊,通過RTC可以實現(xiàn)日歷時鐘、鬧鐘等功能。RTC也可以用于深度睡眠或待機
    的頭像 發(fā)表于 08-23 09:18 ?1131次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)<b class='flag-5'>RTC</b> 模塊介紹