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

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

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

3天內不再提示

STM32 RTC Alarm的使用

CHANBAEK ? 來源:EEMaker電子創客營 ? 作者: DK45王 ? 2023-10-24 14:30 ? 次閱讀

STM32F072CB做的測試

官方參考應用文檔:AN4759

RTC日歷時鐘配置

通過兩個預分頻得到1hz的時鐘用來更新日歷。

  • 異步預分頻:PREDIV_A,7-bit(0-127)
  • 同步預分頻:PREDIV_S,15-bit(0-32767)

頻率計算公式如下:

Fck=Frtcclk/((PREDIV_A-1)*(PREDIV_S-1))

所以計算出PREDIV_A和PREDIV_S的值在配置時記得減1。

配置舉例:

  • 比如選擇LSI=40khz作為RTC的時鐘源,要產生1hz的時鐘,就可以配置PREDIV_A=39,PREDIV_S=999
  • 比如選擇LSE=32.768khz作為RTC的時鐘源,要產生1hz的時鐘,可以配置PREDIV_A=127,PREDIV_S=255

為了產生1hz的時鐘,分頻值可以有多種組合,上面兩種只是舉例。如果用到alarm也要考慮下面描述的alarm子秒配置。

目標是產生1hz的時鐘,當然也可以分頻產生非1hz的時鐘,只是那樣RTC的日歷不準而已。

RTC alarm

圖片

設定Alarm可以配置多種對比域,每一個都可以單獨被屏蔽:

  • 日期或者星期(二選一)
  • 小時
  • 分鐘
  • 子秒(根據PREDIV_S預分頻的值來確定分辨率)

這些參數分為兩個寄存器來進行配置,一個是RTC_ALRMAR,另一個是RTC_ALRMASSR(這個專門負責子秒的alarm配置)

配置舉例

  • 比如我現在只想在子秒匹配時候產生alarm,那么Mask4、Mask3、Mask2、Mask1位全部設置為1,正確配置Mask ss的值。
  • 在30分40秒的時候產生alarm,就把Mask2和Mask1設置為0,其他屏蔽位都配置為1。并把分的對比值設置為30,秒的對比值設置為40

Alarm 子秒的配置

圖片

RTC alarm的日期、時、分、秒的比較值配置都比較簡單,而子秒的配置就會稍微復雜一點。

子秒的比較值是在RTC_ALARMASSR中進行設置,對比的對象是RTC_SSR。

RTC_SSR是子秒的計數器,他的分辨率為:1/(PREDIV_S+1)秒,并且是向下計數的,當值減到0以后會重裝載RTC_SPRE中的PREDIV_S。

alarm子秒配置舉例:

首先確定RTC時鐘源,比如使用的是LSI=40KHZ。

可以配置PREDIV_A=39,PREDIV_S=999 就可以獲得日歷1秒鐘的時鐘。

這樣子秒的分辨率就為:1sec/(999+1)=1ms

alarm子秒的Mask位:

子秒的Mask位是使用了4bit,位于RTC_ALARMASSR[27:24],設置不同值會屏蔽不同的對比位,具體如下表。如果我們要子秒完全和RTC_SSR值進行對比,就配置MASKSS[3:0]=15

圖片

RTC Alarm stm32cubemx配置:

激活日歷和Alarm:

圖片

配置兩個分頻值(要根據時鐘源計算)

圖片

設置Alarm相關的參數,這個要根據自己實際情況來配置。比如我只讓子秒進行對比,日期、時、分、秒的屏蔽位都給使能了。設置的Sub Seconds值貌似是cubemx的一個bug,范圍只允許0-59。所以生成工程以后我在代碼里面手動改成了999

圖片

把RTC的中斷給使能了,讓Alarm可以產生中斷

圖片

時鐘配置不要忘記做選擇,這里我使用LSI

圖片

生成MDK工程編寫代碼

rtc.c中這里我手動修改成了999

圖片

測試代碼主要就是寫一個RTC的中斷回調函數放在main.c中就可以,在觸發alarm的時候翻轉LED

void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)‘

{

  HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);

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

    關注

    2272

    文章

    10924

    瀏覽量

    357583
  • 時鐘
    +關注

    關注

    11

    文章

    1747

    瀏覽量

    131803
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41753
  • RTC
    RTC
    +關注

    關注

    2

    文章

    544

    瀏覽量

    67030
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11622
收藏 人收藏

    評論

    相關推薦

    STM32F103正點RTC RTC_Alarm_Set不能作用是為什么?

    STM32F103正點RTC RTC_Alarm_Set根本不能作用
    發表于 04-08 07:28

    stm32alarm觸發不是按照我程序設定的

    最近一直在玩STM32,但是遇到了一些問題,看看大家能不能幫幫忙。我編寫的stm32程序執行過程是這樣的:stm32處于stop低功耗模式,每次由RTC
    發表于 03-28 15:33

    stm32l0 rtc WakeupTimer 和 alarm設置問題

    目前我在學習用 stm32 的低功耗模式,打算通過wakerup timer 或 alarm 來喚醒。現在對這兩項功能還有些疑惑:wakeup timer喚醒mcu后,是否可以操作wakeup
    發表于 02-02 19:52

    教你使用RT-Thread開啟STM32H7系列的RTCAlarm組件

    背景【ART-PI】默認沒有開啟Alarm組件,嘗試適配并開啟有部分工程師想使用RT-Thread 基于STM32H7系列的RTCAlarm(鬧鐘功能)驗證平臺Keil MDK5
    發表于 03-16 14:05

    淺談基于Apollo3平臺Alarm組件的移植

    ;rtdbg.h> static struct rt_rtc_device rtc_device; #ifdef RT_USING_ALARM靜態 rt_err_t
    發表于 03-21 10:52

    STM32L431 RTC設置和Alarm callback時區不一致是為什么?

    ALarm配置好后一直無法進入callback函數,后來發現是alarm函數的時間是UTC時間,但是在排除了這個問題后發現依然無法進入call back函數,看了下社區不止我一個STM32L4的有類似問題
    發表于 05-26 14:58

    分析在RTT中RTC alarm文件的實現方法

    ;_container.event, 1);}4. 這樣,只要在驅動drv_rtc.c添加相應的配置代碼,實驗alarm功能即可完成alarm.c的功能。配合stm32
    發表于 07-22 10:49

    RTC alarm組件不能進入回調函數該怎樣去解決呢

    芯片類型stm32F407ZGT6,用rt threadstudio進行調試,rtthread 版本用的是4.0.3,studio中seting 設置開啟rtc驅動組件和alarm驅動組件
    發表于 08-17 12:21

    基于STM32F1的RTCAlarm(鬧鐘功能)實現定時控制的要求

    功能背景想使用RT-Thread 基于STM32F1系列的RTCAlarm(鬧鐘功能)實現項目定時控制的要求。實現環境WIN10操作系統、RT-Thread Studio2.1.0
    發表于 09-15 14:42

    STM32L431 RTC設置和Alarm callback時區不一致怎么辦呢

    alarm函數的時間是UTC時間,但是在排除了這個問題后發現依然無法進入call back函數,看了下社區不止我一個STM32L4的有類似問題;而且date set_date set_time等設置時間的函數都是帶時區設置的,這一點不知道后期版本能否統一,否則在涉及到按
    發表于 11-02 11:55

    RTC alarm組件不進入回調函數的原因是什么?

    芯片類型stm32F407ZGT6,用rt threadstudio進行調試,rtthread 版本用的是4.0.3,studio中seting 設置開啟rtc驅動組件和alarm驅動組件
    發表于 05-17 14:14

    RTCalarm中斷事件能否喚醒standby或者shutdown模式?

    274頁中有描述: 文檔中是可以用RTC的中斷事件來喚醒的。但是我在工程中配置好的PWR、RTC,卻喚醒不了。只能在stop模式下喚醒。 查閱了RM0490《STM32C0x1 advanced
    發表于 08-08 07:22

    STM32單片機RTC時鐘的使用方法及步驟

    STM32RTC使用步驟: 打開PWR時鐘和Backup區數據訪問 若使用外部低速時鐘(LSE),打開LSE并等待起振 選擇和打開RTC時鐘,等待時鐘同步 配置時間格式,分頻
    發表于 02-11 10:00 ?3.5w次閱讀
    <b class='flag-5'>STM32</b>單片機<b class='flag-5'>RTC</b>時鐘的使用方法及步驟

    RT-Thread 應用筆記 - RTC Alarm 組件的使用

    RT-Thread 應用筆記 - 不正確使用LOG也會引發hard faultRT-Thread 應用筆記 - RTC Alarm 組件的使用RT-Thread 應用筆記 - freemodbus RT...
    發表于 01-25 18:18 ?10次下載
    RT-Thread 應用筆記 - <b class='flag-5'>RTC</b> <b class='flag-5'>Alarm</b> 組件的使用

    STM32片內RTC亞秒特性的應用示例(下)

    不過,今天主要想聊聊如何通過RTC來實現該需求。了解STM32RTC的人可能知道,RTC模塊往往還自帶一個專門的16位向下計數的喚醒定時器,即下面
    的頭像 發表于 04-30 16:32 ?1745次閱讀
    <b class='flag-5'>STM32</b>片內<b class='flag-5'>RTC</b>亞秒特性的應用示例(下)
    主站蜘蛛池模板: 在线黄色网 | 亚洲xx站| 天天摸日日摸 | 男女爱爱爽爽福利免费视频 | 日本特黄特色大片免费播放视频 | 久操青青 | 日本黄色小视频在线观看 | 久久免费99精品久久久久久 | 国产福利2021最新在线观看 | 午夜片 飘香香影院 | 五月天毛片 | 四虎永久精品免费网址大全 | tom影院亚洲国产一区二区 | 日本理论午夜中文字幕第一页 | 在线精品视频成人网 | 国产吧在线视频 | 欧美亚洲天堂网 | 日本午夜视频 | 久久夜靖品 | 奇米影色777四色在线首页 | 一夜七次郎久久综合伊人 | 亚洲最大色网站 | 欧美猛交喷潮在线播放 | 久久综合九色综合98一99久久99久 | 亚洲成人在线免费观看 | 1024你懂的在线观看 | 4虎.最新地址 | 国产特黄特色的大片观看免费视频 | 国产叼嘿网站免费观看不用充会员 | 欧美午夜片 | 狂野欧美性猛交xxxx免费 | 免费精品一区二区三区在线观看 | 精品国产一区二区三区成人 | 一级午夜免费视频 | 国产叼嘿网站免费观看不用充会员 | 99精品久久99久久久久久 | 综合激情五月婷婷 | 狠狠色噜噜狠狠狠狠888奇米 | 色站在线 | 99久久精品免费看国产免费 | 噜噜噜狠狠夜夜躁 |