在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

STM32 RTC鬧鐘的中斷和喚醒待機(jī)模式

汽車玩家 ? 來(lái)源:eeworld ? 作者:eeworld ? 2021-07-23 10:04 ? 次閱讀

RTC代表的是實(shí)時(shí)時(shí)鐘的意思,因?yàn)樗峁┑臅r(shí)鐘基準(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í)的秒數(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í)的秒數(shù)

}

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

RTC_WaitForLastTask();

}


待機(jī)喚醒:

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

RTC_WaitForLastTask();

RTC_SetPrescaler(32767);

RTC_WaitForLastTask();

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

RTC_WaitForLastTask();

RTC_ExitConfigMode();

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

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)先級(jí)高于RTC

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

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

{

EXTI_ClearITPendingBit(EXTI_Line5);

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

}

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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 實(shí)時(shí)時(shí)鐘

    關(guān)注

    4

    文章

    296

    瀏覽量

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

    關(guān)注

    5

    文章

    902

    瀏覽量

    42349
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

    利用CKS32F107xx系列RTC鬧鐘實(shí)驗(yàn)

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

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

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

    看門(mén)狗復(fù)位是否可以喚醒待機(jī)模式

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

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

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

    TC387待機(jī)內(nèi)存在喚醒后被初始化,為什么?

    我最近正在使用 TC387。 我需要在待機(jī)模式下保存一些變量,而在喚醒后,這些變量的值不應(yīng)被初始化。 我在用戶手冊(cè)中找到了 DLMU,其描述如下: 測(cè)試的數(shù)據(jù)已在數(shù)據(jù)部分lmudata_cpu0中
    發(fā)表于 05-23 07:34

    STM32L152進(jìn)入待機(jī)模式1分鐘喚醒一次,18個(gè)小時(shí)后無(wú)法喚醒是怎么回事?

    目前在使用STM32L152時(shí),設(shè)置了RTC喚醒,每隔1分鐘喚醒一次,周期采集數(shù)據(jù)并上傳,一開(kāi)始都是正常喚醒工作,但是在18個(gè)小時(shí)候,設(shè)備就
    發(fā)表于 05-17 13:43

    STM8進(jìn)入halt模式后由EXTI中斷喚醒,程序無(wú)法繼續(xù)正常運(yùn)行下去的原因?

    大家好,我現(xiàn)在有一個(gè)問(wèn)題請(qǐng)教: 1. 我的STM8S103K3在執(zhí)行完相關(guān)任務(wù)后進(jìn)入halt模式,在進(jìn)入之前我設(shè)置了幾個(gè)EXTI中斷 2. 中斷服務(wù)函數(shù)中沒(méi)有任何的操作,只起一個(gè)喚醒
    發(fā)表于 05-15 06:40

    STM32待機(jī)模式適合用于那些應(yīng)用場(chǎng)景?

    對(duì)于查看STM32低功耗模式,共有三種,其中最省電的為待機(jī)模式,但是待機(jī)模式
    發(fā)表于 05-07 07:46

    STM32F107的OTG在stop模式下無(wú)法通過(guò)EXTI_18喚醒,沒(méi)有中斷產(chǎn)生是怎么回事?

    進(jìn)入STOP模式等wfi中斷喚醒,無(wú)論如何操作都沒(méi)法進(jìn)入OTG_FS_WKUP_IRQHandler喚醒,有使用過(guò)該功能的嗎? 另外F103上該功能能
    發(fā)表于 05-06 08:59

    stm32l151c8t6 rtc鬧鐘中斷進(jìn)不了是怎么回事?

    不知道是不是配置不對(duì) 請(qǐng)大神幫忙看看用的是stm32l151c8t6就是進(jìn)不去中斷到了制定的鬧鐘時(shí)間 沒(méi)有進(jìn)中斷 求幫忙瞄一瞄是什么地方?jīng)]配置好 void
    發(fā)表于 04-29 08:05

    stm32f0待機(jī)模式rtc鬧鐘喚醒,第二次喚醒沒(méi)辦法進(jìn)入睡眠什么情況?

    stm32f0待機(jī)模式rtc鬧鐘喚醒問(wèn)題,第一次正常,可以進(jìn)入睡眠,第二次
    發(fā)表于 04-28 07:12
    主站蜘蛛池模板: 国产三a级日本三级日产三级 | 成人青草亚洲国产 | 一区二区三区高清视频在线观看 | 色婷婷色丁香 | 五月婷婷丁香综合 | 天天曰天天干天天操 | 色久优优| 天天操天天干天天插 | 56pao强力打造 | 99久久免费午夜国产精品 | 国产精品乱码高清在线观看 | 欧美一级欧美一级高清 | 久久大综合 | 日本三级欧美三级香港黄 | 久久99爱爱 | 欧美zooz人禽交免费 | 国产午夜精品久久理论片小说 | 五月香婷婷 | 色宅男看片午夜大片免费看 | 爱情社保片鲁丝片一区 | 美女全黄网站免费观看 | 四月激情网 | 精品一区二区三区三区 | 日本精品一卡二卡≡卡四卡 | 九色视频网 | 国产三级日本三级在线播放 | 一级毛片真人免费观看 | 黄网在线观看 | 成人黄色免费 | 在线看黄的网站 | 欧美性猛交xxxx乱大交 | 免费网址视频在线看 | 欧美日韩国产一区 | 天天爽夜夜爽夜夜爽精品视频 | 日韩成人黄色 | 手机在线看 | 国产色综合天天综合网 | 四虎永久免费地址在线网站 | 性生活黄色毛片 | 在线免费观看你懂的 | 五月天天 |