国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32-RTC實時時鐘詳解

這篇具有很好參考價值的文章主要介紹了STM32-RTC實時時鐘詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

RTC

RTC的本質(zhì)很簡單,就是一個時鐘經(jīng)過精確分頻最后得到的一個1Hz的時鐘,也可以說是計數(shù)器,其他大部分功能都是基于這個計數(shù)器設(shè)計的數(shù)字邏輯。

本文講的RTC是基于STM32F030來講的,相比與F1系列的RTC來說,M0的將很多原本需要軟件實現(xiàn)的功能硬件化了,使用起來更加便利。

先說說STM32F030的RTC有些什么功能:

  1. 集成日歷功能,不用像STM32F103一樣需要軟件算法來做;
  2. 夏令時補償;
  3. 鬧鐘功能;
  4. 集成了周期性自動喚醒單元;
  5. 外部參考時鐘;
  6. 時鐘平移校準(亞秒級);
  7. 數(shù)字校準
  8. 時間戳;
  9. 入侵檢測;
  10. 備份寄存器

先看看RTC的框圖:
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

從框圖中圈出來的部分可以看到,上面提到的RTC功能,大部分在框圖上面都有體現(xiàn),接下來我們按照RTC的功能點講一講各個功能的詳細內(nèi)容

RTC的時鐘分頻

在詳述每個功能點之前,我們先了解下RTC的核心,即1Hz的時鐘的來歷。
從框圖中可以看到RTC的時鐘來源有3個,時鐘源先經(jīng)過一個精密校準后,再經(jīng)過一個異步預(yù)分頻器和一個同步預(yù)分頻器后,得到的即是我們想要的1Hz的時鐘,這個時鐘將被送到日歷模塊,供日歷計數(shù)用。
我們常用的一個時鐘源是一個32.768kHz的低速外部時鐘(LSE),為什么是這個特殊的頻率呢?因為這個時鐘經(jīng)過分頻后可以得到一個完美的1Hz的時鐘供給日歷模塊使用,最大程度上保證時鐘的精確性,當然,實際上來說,32.768kHz的時鐘并不是完全精確的,所以就會導(dǎo)致實際上的時間會在一段時間后跑偏,且隨時間的推移,偏差逐漸擴大,所以我們小時候用電子手表時,會發(fā)現(xiàn)時間在我們調(diào)整準確后,慢慢的又會出現(xiàn)一點偏差,偏差可以被RTC內(nèi)部邏輯調(diào)整縮小,后面會詳細講述。

32.768kHz為什么比較容易分頻得到1Hz時鐘呢?
由于我們單片機采用的是二進制數(shù),所以分頻器也是以二進制為基礎(chǔ)進行分頻,32.768kHz在不斷的二分頻(15次)后,能得到一個精確的1Hz時鐘,也就是1秒鐘的時間。
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

而其他兩個時鐘源(HSE/32)和LSI經(jīng)過兩個分頻器后得到的時鐘往往都是約等于1Hz,長久計數(shù)會產(chǎn)生較大的誤差,因為它們的頻率在經(jīng)過無數(shù)次2分頻后,一般來說,最后都不是一個整數(shù),都是游離在1Hz左右。

理論上來說,如果想要一個1Hz的時鐘,一個分頻器就可以做到,為什么會有兩個分頻器呢?因為STM32F030可以精確到亞秒級,在經(jīng)過第一個時鐘分頻器后,此時得到的時鐘ck_apre(一般為256Hz)會作為亞秒計數(shù)器,提供亞秒級別的計數(shù)。

日歷模塊

日歷模塊是我覺得STM32F030相比與103最大的便捷之處,不需要軟件算法的干預(yù),就可以在預(yù)設(shè)初始年月日,時分秒的基礎(chǔ)上開始計時,且還能自動計算星期,閏年也會被自動計算。
日歷模塊有三個寄存器:時間寄存器, 寄存器,亞秒寄存器
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

日歷寄存器是有兩套的,一套是RTC域的本體,一套是由系統(tǒng)時鐘控制的影子寄存器。每隔兩個RTC_CLK,就會將本體寄存器中的值復(fù)制到影子寄存器中。
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

由于RTC的特性,所以很多情況下在芯片斷電后,希望內(nèi)部的時間系統(tǒng)不受到影響,所以RTC域通常被要求單獨供電,即在芯片斷電后,RTC還能夠正常工作,當下次芯片上電后,影子寄存器在和RTC域本體的日歷寄存器同步后,仍然能得到正確時間。

夏令時

支持夏令時功能,可以將日歷寄存器中的時間增加或減少一個小時。
利用 SUB1H 或 ADD1H,軟件只需單次操作便可在日歷中減去或增加一個小時,無需執(zhí)行
整個初始化步驟,還可以使用 BKP 位來記錄是否曾經(jīng)執(zhí)行過此操作
因為有的國家實行夏令時制度,需要在夏天時,將全國時間集體向前撥一個小時,在夏令時結(jié)束后,又將時間往回撥一個小時,所以030集成了這個功能(有興趣的可以百度一下夏令時)。

鬧鐘功能

鬧鐘功能就是通過在鬧鐘寄存器設(shè)置一個預(yù)定時間,當日歷寄存器中的時間和鬧鐘寄存器時間匹配后,會產(chǎn)生一個鬧鐘信號,在配置鬧鐘中斷以后,也會生成中斷。
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

要注意的是鬧鐘寄存器是沒有年份和月份的,只有日期,時分秒及亞秒。鬧鐘寄存器還有一個掩碼功能(MSK),開啟后日期,時、分、秒及亞秒都可以被單獨屏蔽,不和日歷寄存器中對應(yīng)值作比較。

周期性自動喚醒單元

配置此功能后,可以在器件進入低功耗模式后,根據(jù)配置時間在到達預(yù)定時間后使器件退出低功耗模式??膳渲玫臅r間范圍為1s到36小時。

外部參考時鐘,時鐘平移校準,數(shù)字校準

把這三個功能放在一起的原因是,三個功能都是RTC的時鐘精度進行調(diào)整的功能,但是三個功能調(diào)整時間的方法和調(diào)整精度上又是不同的。

外部參考時鐘(一般為50Hz或者60Hz):
通過特定GPIO口輸入一個參考時鐘源,外部參考時鐘的精度我們認為是高于現(xiàn)在RTC使用的32.768kHz時鐘精度的(32.768kHz由于偏差,并非一定為該數(shù)值),具體的做法是用1Hz時鐘每次在邊沿時檢測是否有高精度外部時鐘的邊沿,如果兩個時鐘的時鐘沿正好對齊。則認為1Hz時鐘無偏差,若時鐘不對齊,會對異步預(yù)分頻寄存器進行重載,微調(diào)后續(xù)1Hz時鐘邊沿,使其對齊外部參考時鐘邊沿。
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32

時鐘平移校準:
參考一個更高精度的遠程時鐘,可以對當前的RTC時鐘進行秒級或者亞秒級的增加或減少時間。我的理解是,獲取到一個我們認為的更高精度的時鐘當前值后,手動對自身RTC的值進行調(diào)整,以提高RTC的精度。

數(shù)字校準:
數(shù)字校準是三種校準方式中最為細微的校準方式,分為正校準和負校準。
正校準可以在8秒或者16秒的時鐘周期內(nèi),對RTC的源時鐘。RTC_CLK,在每2的11次方的脈沖內(nèi),多插入一個脈沖。
負校準可以在32秒的時鐘周期內(nèi),在每2的20次方的脈沖內(nèi),減少1~255個脈沖,由寄存器決定具體減少數(shù)值。
由于RTC的32.768KHz的時鐘源多少都會存在一點偏差,數(shù)字校準可以做到從源頭上對RTC的精度進行調(diào)整,但是首先我們得獲取到時鐘源的具體偏差值才能更好的對偏差進行校準。

時間戳和入侵檢測

時間戳
時間戳寄存器和日歷寄存器一樣,只是不會計數(shù),當有時間戳事件發(fā)生的時候,日歷寄存器的當前值就會被保存到時間戳寄存器中。
當RTC的RTC_TS引腳檢測到時間戳事件時,當前的日歷寄存器值就會被保存到時間戳寄存器。
入侵檢測
除此之外,入侵檢測的發(fā)生也可以被當成時間戳時間,當特定的GPIO引腳檢測到入侵事件時,時間戳就會記下當前入侵事件發(fā)生的時間。
入侵檢測事件是當特定的入侵檢測引腳被觸發(fā)時(可以設(shè)置觸發(fā)的電平狀態(tài)及保持時間),擦除RTC的備份域寄存器,也可以生成入侵檢測中斷,從停止模式和待機模式喚醒。
備份寄存器
備份寄存器是一小段空間,大小為16字節(jié),可以由用戶自定義寫入數(shù)據(jù),當主電源域掉電后,只要RTC域有電,備份寄存器內(nèi)的數(shù)據(jù)就不會丟失。但是當入侵事件發(fā)生時,備份寄存器會被復(fù)位,數(shù)據(jù)丟失。

總的來說,RTC本身其實并不復(fù)雜,尤其是F030的RTC,簡單易用,但是它在整個芯片系統(tǒng)中都是一個很特殊的模塊,因為它可以被單獨供電,且RTC域的寄存器值是不受系統(tǒng)復(fù)位影響的,當系統(tǒng)電源域有電時,它由VDD供電,當系統(tǒng)電源域掉電時,它立刻會切換至后備電源域供電。大致示意圖如下:
基于stm32的時鐘,單片機外設(shè),STM32,單片機,實時音視頻,stm32文章來源地址http://www.zghlxwxcb.cn/news/detail-759272.html

到了這里,關(guān)于STM32-RTC實時時鐘詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【STM32】RTC(實時時鐘)

    【STM32】RTC(實時時鐘)

    本質(zhì):計數(shù)器 RTC中斷是外部中斷(EXTI) 當VDD掉電的時候,Vbat可以通過電源---實時計時 STM32的RTC外設(shè)(Real Time Clock),實質(zhì)是一個 ? 掉電 ? 后還繼續(xù)運行的定時器。從定時器的角度來說,相對于通用定時器TIM外設(shè),它十分簡單, 只有很純粹的計時和觸發(fā)中斷的功能 ;但從

    2024年02月03日
    瀏覽(27)
  • STM32——RTC實時時鐘

    STM32——RTC實時時鐘

    Unix 時間戳(Unix Timestamp)定義為從UTC/GMT的1970年1月1日0時0分0秒開始所經(jīng)過的秒數(shù),不考慮閏秒 時間戳存儲在一個秒計數(shù)器中,秒計數(shù)器為32位/64位的整型變量 世界上所有時區(qū)的秒計數(shù)器相同,不同時區(qū)通過添加偏移來得到當?shù)貢r間 底層使用秒計數(shù)器可以節(jié)省硬件設(shè)計電路,

    2024年01月23日
    瀏覽(24)
  • 【STM32學(xué)習】實時時鐘 —— RTC

    【STM32學(xué)習】實時時鐘 —— RTC

    STM32RTC實時時鐘實驗講解,從入門到放棄 【STM32】RTC休眠喚醒(停機模式)、獨立看門狗開啟狀態(tài)下 關(guān)于STM32使用RTC喚醒停止模式的設(shè)置 RTC(Real Time Clock):實時時鐘,是指可以像時鐘一樣輸出實際時間的電子設(shè)備,一般會是集成電路,因此也稱為時鐘芯片??傊琑TC只是個能靠電

    2024年02月01日
    瀏覽(22)
  • STM32-實時時鐘RTC-2

    STM32-實時時鐘RTC-2

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年01月20日
    瀏覽(26)
  • STM32基礎(chǔ)10--實時時鐘(RTC)

    STM32基礎(chǔ)10--實時時鐘(RTC)

    ?目錄 前言 RTC框圖 STM32實時時鐘電路 功能需要 STM32CubeMx配置RTC 配置RCC 配置RTC 配置時間,鬧鐘,喚醒 開啟中斷 設(shè)置中斷優(yōu)先級 功能代碼實現(xiàn) STM32Cude生成RTC初始化 自定義觸發(fā)鬧鐘次數(shù)變量? 重寫周期喚醒回調(diào)函數(shù) 重寫鬧鐘中斷函數(shù) ????????在做51單片機項目時,如果需

    2023年04月11日
    瀏覽(19)
  • STM32學(xué)習筆記(十二)丨RTC實時時鐘

    STM32學(xué)習筆記(十二)丨RTC實時時鐘

    ???本次課程采用單片機型號為STM32F103C8T6。 ???課程鏈接:江協(xié)科技 STM32入門教程 ??往期筆記鏈接: ??STM32學(xué)習筆記(一)丨建立工程丨GPIO 通用輸入輸出 ??STM32學(xué)習筆記(二)丨STM32程序調(diào)試丨OLED的使用 ??STM32學(xué)習筆記(三)丨中斷系統(tǒng)丨EXTI外部中斷 ??

    2024年02月16日
    瀏覽(23)
  • STM32中的RTC實時時鐘和配套鬧鐘設(shè)置

    主要初始化函數(shù),以及設(shè)置鬧鐘函數(shù),鬧鐘中斷函數(shù) RTC.c RTC.h main.c

    2024年04月23日
    瀏覽(25)
  • stm32-OLED屏+RTC實現(xiàn)簡易實時時鐘(下篇)

    stm32-OLED屏+RTC實現(xiàn)簡易實時時鐘(下篇)

    一、RTC簡介 實時時鐘是一個獨立的定時器。RTC模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應(yīng)軟件配置下,可 提供時鐘日歷的功能。修改計數(shù)器的值可以重新設(shè)置系統(tǒng)當前的時間和日期。 RTC模塊和時鐘配置系統(tǒng)(RCC_BDCR寄存器)處于后備區(qū)域,即在系統(tǒng)復(fù)位或從待機模式喚醒 后,R

    2024年01月18日
    瀏覽(24)
  • stm32-OLED屏+RTC實現(xiàn)簡易實時時鐘(上篇)

    stm32-OLED屏+RTC實現(xiàn)簡易實時時鐘(上篇)

    oled屏選擇ssd1306,使用RTC實現(xiàn)簡易實時時鐘 1、MCU接口選擇 SSD1306單片機接口由8個數(shù)據(jù)引腳和5個控制引腳組成。通過BS[2:0]引腳上的硬件選擇可以設(shè)置不同的MCU模式 ? ?通過控制BS[2:0]引腳可以設(shè)置MCU與OLED屏的通信方式。因為我使用的是正點原子的開發(fā)板,所以我用了適配的接

    2024年01月17日
    瀏覽(20)
  • 【STM32】讀寫B(tài)KP備份寄存器&RTC實時時鐘

    【STM32】讀寫B(tài)KP備份寄存器&RTC實時時鐘

    目錄 BKP BKP簡介 BKP基本結(jié)構(gòu) BKP測試代碼 RTC RTC簡介 RTC框圖 RTC基本結(jié)構(gòu) 硬件電路 RTC操作注意事項 接線圖 初始化 使用BKP解決只初始化一次時間 ?初始化參考代碼 RTC設(shè)置時間 RTC讀取時間 完整代碼 MyRTC.c MyRTC.h main.c BKP(Backup Registers)備份寄存器 BKP可用于存儲用戶應(yīng)用程序數(shù)據(jù)

    2024年04月22日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包