国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

RTC全局中斷:

void RTC_IRQHandler()

{

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

{

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

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) //是否秒中斷發生

{

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

}

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

RTC_WaitForLastTask();

}


待機喚醒:

待機模式是功耗最低的一種模式。外部復位(NRST 引腳)、 IWDG 復位、 WKUP 引腳上的上升沿或 RTC 鬧鐘事件發生時,STM32從待機模式退出。其中外部復位和WKUP的方法比較簡單。主要講一下RTC鬧鐘喚醒。這兩個程序一個是讓STM32的一個管腳接按鍵,按鍵按下的時候STM32進入待機狀態,當40秒的鬧鐘到來時喚醒STM32.另一個是當按鍵按下時候進入待機狀態,鬧鐘設置為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); //設置計數初始值

RTC_WaitForLastTask();

RTC_SetPrescaler(32767);

RTC_WaitForLastTask();

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

RTC_WaitForLastTask();

RTC_ExitConfigMode();

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

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; //外部中斷的優先級高于RTC

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

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

{

EXTI_ClearITPendingBit(EXTI_Line5);

PWR_EnterSTANDBYMode(); //進入待機模式

}

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

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

    關注

    4

    文章

    335

    瀏覽量

    68305
  • 中斷
    +關注

    關注

    5

    文章

    917

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用芯源CW32 MCU來實現低功耗模式下的RTC定時喚醒功能

    , sTime.Minutes, sTime.Seconds); } 5. 測試結果 通過上述代碼,MCU成功進入睡眠模式,并在1分鐘后由RTC鬧鐘中斷
    發表于 12-04 07:55

    RTC工作原理

    到這些影子寄存器中? ?4、周期性自動喚醒?:RTC有一個16位的自動重載遞減計數器,可以產生周期性的喚醒中斷,通常定時一秒? ?5、可編程鬧鐘
    發表于 11-28 07:14

    在CW32F030 MCU上設置外部中斷RTC喚醒條件的示例

    ) // ... // 注意:代碼執行到這里后,MCU將進入DeepSleep模式,直到被RTC鬧鐘中斷喚醒 } int mai
    發表于 11-25 08:00

    CW32L083低功耗項目休眠后無法喚醒怎么解決?

    配置STOP模式后GPIO中斷喚醒失效,RTC鬧鐘喚醒倒是正常,電路設計遵循了手冊建議,求排查思
    發表于 11-21 07:47

    AT32F系列 PWC待機喚醒喚醒Standby

    AT32F系列 PWC待機喚醒喚醒Standby 示例目的 演示AT32F系列 PWC待機喚醒
    發表于 11-05 14:08

    RVMCU課堂「20」: 手把手教你玩轉RVSTAR—實時時鐘RTC

    ,當系統復位或者從待機模式喚醒時,RTC的設置和時間也都保持不變。本期內容將通過一個顯示當前時間的例程帶領大家初步了解GD32VF103的RTC
    發表于 10-29 08:10

    【NCS隨筆】如何進入system_off深度睡眠模式以及配置GPIO中斷喚醒

    【NCS隨筆】如何進入system_off深度睡眠模式以及配置GPIO中斷喚醒 本文章主要是講解NCS下面使用nRF54L15如何進入system_off模式,以及如何配置通過按鍵
    的頭像 發表于 09-29 00:56 ?749次閱讀
    【NCS隨筆】如何進入system_off深度睡眠<b class='flag-5'>模式</b>以及配置GPIO<b class='flag-5'>中斷</b><b class='flag-5'>喚醒</b>

    求助,關于STM32F030進入Stop模式RTC喚醒問題求解

    STM32F030滿足條件后配置RTC喚醒 void RTC_AlarmConfig(void) { RTC_TimeTypeDef sT
    發表于 07-23 06:59

    STM32L152進入STOP模式,WAKEUP by RTC喚醒后ADC讀取數值不變了是什么原因導致的?

    ),進入STOP,RTC喚醒后讀出來的ADC沒有變化(依然是4.10V)。以前沒有進入STOP模式,連續讀取是OK的。 請問大蝦,這大概是什么問題?
    發表于 07-23 06:09

    AT32的ERTC與RTC的區別

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

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

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

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

    已知鬧鐘中斷優先級最高,跑RTC測試時,掛測會出現概率性的無法喚醒MCU
    發表于 06-16 06:34

    【道生物聯TKB-620開發板試用】定期休眠并發布數據

    , FSM_ENTER_SLEEP_ACK, FSM_MAX, } FSM_States_e; 只有當狀態為FSM_RCVDATA時就可以實現正常的收發了。 2、stm32F103可以由RTC的周期中斷
    發表于 04-29 07:29

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

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

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

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