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

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

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

???本次課程采用單片機型號為STM32F103C8T6。
???課程鏈接:江協(xié)科技 STM32入門教程


??往期筆記鏈接:
??STM32學(xué)習(xí)筆記(一)丨建立工程丨GPIO 通用輸入輸出
??STM32學(xué)習(xí)筆記(二)丨STM32程序調(diào)試丨OLED的使用
??STM32學(xué)習(xí)筆記(三)丨中斷系統(tǒng)丨EXTI外部中斷
??STM32學(xué)習(xí)筆記(四)丨TIM定時器及其應(yīng)用(定時中斷、內(nèi)外時鐘源選擇)
??STM32學(xué)習(xí)筆記(五)丨TIM定時器及其應(yīng)用(輸出比較丨PWM驅(qū)動呼吸燈、舵機、直流電機)
??STM32學(xué)習(xí)筆記(六)丨TIM定時器及其應(yīng)用(輸入捕獲丨測量PWM波形的頻率和占空比)
??STM32學(xué)習(xí)筆記(七)丨TIM定時器及其應(yīng)用(編碼器接口丨用定時器實現(xiàn)編碼器測速)
??STM32學(xué)習(xí)筆記(八)丨ADC模數(shù)轉(zhuǎn)換器(ADC單、雙通道轉(zhuǎn)換)
??STM32學(xué)習(xí)筆記(九)丨DMA直接存儲器存取(DMA數(shù)據(jù)轉(zhuǎn)運、DMA+AD多通道轉(zhuǎn)換)
??STM32學(xué)習(xí)筆記(十)丨I2C通信(使用I2C實現(xiàn)MPU6050和STM32之間通信)
??STM32學(xué)習(xí)筆記(十一)丨SPI通信(W25Q64芯片簡介,使用SPI讀寫W25Q64存儲器芯片)


一、計算機底層計時系統(tǒng)——時間戳

1.1 時間戳簡介

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

??Unix 時間戳(Unix Timestamp)定義為從UTC/GMT的1970年1月1日0時0分0秒開始所經(jīng)過的秒數(shù),不考慮閏秒。

  • 時間戳存儲在一個秒計數(shù)器中,秒計數(shù)器為32位/64位的整型變量。

??2038年危機:由于之前的Unix系統(tǒng)采用一個32位的有符號數(shù)來計時,這個計時系統(tǒng)最大的計時時間會在2038年的1月19日溢出,這可能會讓一部分不健全的計算機程序崩潰。STM32的32位秒計數(shù)器是一個無符號的計數(shù)器,在2106年才會溢出。

  • 世界上所有時區(qū)的秒計數(shù)器相同,不同時區(qū)通過添加偏移來得到當(dāng)?shù)貢r間。

??可以看到,用時間戳來計時的方法是很簡單粗暴的一種計時方法,但是計算機底層通過時間戳來計時,有以下幾點好處:

  1. 硬件電路設(shè)計簡單:設(shè)計RTC時,只需要一個很大的秒計數(shù)器即可,不需要年月日、大月小月、平年閏年等寄存器來記錄。
  2. 計算時間間隔時很方便。
  3. 存儲方便,只需要一個變量。

??當(dāng)然,使用時間戳計數(shù)器來計時也有一定的缺陷,例如在將秒數(shù)轉(zhuǎn)化為我們熟知的時間格式的時候,需要進行復(fù)雜的計算,比較占用軟件資源。

1.2 GMT/UTC

  • GMT(Greenwich Mean Time)格林尼治標(biāo)準(zhǔn)時間是一種以地球自轉(zhuǎn)為基礎(chǔ)的時間計量系統(tǒng)。它將地球自轉(zhuǎn)一周的時間間隔等分為24小時,以此確定計時標(biāo)準(zhǔn)。但是由于地球自轉(zhuǎn)一周的時間實際上是不固定的,它是越來越慢的,所以這種計時系統(tǒng)已經(jīng)不再適用于現(xiàn)代科學(xué)和社會的發(fā)展

  • UTC(Universal Time Coordinated)協(xié)調(diào)世界時是一種以原子鐘為基礎(chǔ)的時間計量系統(tǒng)。它規(guī)定銫133原子基態(tài)的兩個超精細(xì)能級間在零磁場下躍遷輻射9,192,631,770周所持續(xù)的時間為1秒。當(dāng)原子鐘計時一天的時間與地球自轉(zhuǎn)一周的時間相差超過0.9秒時,UTC會執(zhí)行閏秒來保證其計時與地球自轉(zhuǎn)的協(xié)調(diào)一致。Unix時間戳不考慮閏秒,所以每產(chǎn)生一個閏秒,國家授時中心的標(biāo)準(zhǔn)時間和時間戳的標(biāo)準(zhǔn)時間就會產(chǎn)生一秒的偏差。

1.3 C語言和time.h庫

STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
???在一系列函數(shù)中,最復(fù)雜的函數(shù)是struct tm* localtime(const time*);time_t mktime(struct tm*);,這兩個函數(shù)也是STM32的RTC編程中需要掌握的函數(shù),所以需要重點掌握,其他的了解即可。
???struct tm* localtime(const time_t*)函數(shù)的參數(shù)是一個靜態(tài)的指針變量,如果不特殊指定為32位計時系統(tǒng),就默認(rèn)為64位的計時系統(tǒng),所以可以認(rèn)為time_t就是一個64位的int類型的變量。這個函數(shù)的返回值是一個結(jié)構(gòu)體指針,在這個結(jié)構(gòu)體中存放一些時間信息,可以供用戶方便的查看。time_t mktime(struct tm*)函數(shù)也是同理。
STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

二、STM32的BKP和RTC時鐘

2.1 BKP(Backup Registers)備份寄存器

???BKP可用于存儲用戶應(yīng)用程序數(shù)據(jù)。當(dāng)VDD(2.0 ~ 3.6V)電源被切斷,他們?nèi)匀挥蒝BAT(1.8 ~ 3.6V)維持供電。當(dāng)系統(tǒng)在待機模式下被喚醒,或系統(tǒng)復(fù)位或電源復(fù)位時,他們也不會被復(fù)位

  • TAMPER引腳產(chǎn)生的侵入事件將所有備份寄存器內(nèi)容清除
  • RTC引腳輸出RTC校準(zhǔn)時鐘(外部設(shè)備測量這個輸出時鐘,可以對內(nèi)部RTC微小的誤差進行校準(zhǔn))、RTC鬧鐘脈沖或者秒脈沖(可以輸出,為別的設(shè)備提供時鐘)
  • RTC時鐘校準(zhǔn)寄存器,用于存儲校準(zhǔn)配置
  • 用戶數(shù)據(jù)存儲容量:20字節(jié)(中容量和小容量)/ 84字節(jié)(大容量和互聯(lián)型)

???下圖展示了BKP的基本結(jié)構(gòu),橙色部分為后備區(qū)域。BKP是后備區(qū)域中的一部分電路,后備區(qū)域中還有RTC的相關(guān)電路。STM32F103C8T6的VBAT,TAMPER,RTC三個功能復(fù)用在了同一個引腳上,所以這三個功能在同一時間只能使用一個
STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

2.2 RTC(Real Time Clock)實時時鐘

2.2.1 RTC簡介

  • RTC是一個獨立的定時器,可為系統(tǒng)提供時鐘和日歷的功能
  • RTC和時鐘配置系統(tǒng)處于后備區(qū)域,系統(tǒng)復(fù)位時數(shù)據(jù)不清零,VDD(2.0 ~ 3.6V)斷電后可借助VBAT(1.8 ~ 3.6V)供電繼續(xù)走時
  • 32位的可編程計數(shù)器,可對應(yīng)Unix時間戳的秒計數(shù)器
  • 20位的可編程預(yù)分頻器(分頻系數(shù)可以為1到 2 20 2^{20} 220),可適配不同頻率的輸入時鐘
  • 可選擇三種RTC時鐘源:
    • HSE(高速外部時鐘)時鐘除以128(通常為8MHz/128)
    • LSE(低速外部時鐘)振蕩器時鐘(通常為32.768KHz),只有這一路的時鐘可以由VBAT供電,所以如果要實現(xiàn)掉電自動走時的功能,必須使用這一路時鐘
    • LSI(低速內(nèi)部時鐘)振蕩器時鐘(40KHz)

時鐘信號選擇32.768kHz的原因

  1. 32.768kHz對于晶振或振蕩器的,在硬件設(shè)計或者工業(yè)生產(chǎn)時可能會有一些便利,使這一頻率的晶振或振蕩器穩(wěn)定性高,益于生產(chǎn);
  2. 32768恰好為2的15次方,如果要產(chǎn)生一個1Hz的信號供RTC計時,可以簡單地設(shè)計一個15位的計數(shù)器,讓其不斷計時,它的自然溢出頻率就是1Hz,不用額外設(shè)計計數(shù)器的目標(biāo)值存儲寄存器,也不用把計數(shù)值和目標(biāo)值不斷作比較,對于芯片內(nèi)部的電路設(shè)計非常友好。

2.2.2 RTC的內(nèi)部結(jié)構(gòu)及工作原理

STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
???上圖展示了RTC的內(nèi)部框圖和工作原理?;疑牟糠譃楹髠鋮^(qū)域,在主電源斷電時可以由VBAT供電繼續(xù)工作。RTC_DIV余數(shù)寄存器是一個自減計數(shù)器。自建到0后,在下一個上升沿到來時產(chǎn)生溢出信號,并江RTC_PRL中的值裝載進來繼續(xù)自減。
???RTC電路可以產(chǎn)生三個中斷信號:

  • RTC_Second秒中斷:每秒產(chǎn)生一個中斷信號。
  • RTC_Overflow溢出中斷:這個中斷會在2106年觸發(fā)一次。
  • RTC_Alarm鬧鐘中斷:該中斷可以讓STM32從待機模式中喚醒,并且執(zhí)行一個中斷服務(wù)函數(shù)。這可以實現(xiàn)讓STM32在一些環(huán)境惡劣的地方工作,在節(jié)約電量的前提下自動執(zhí)行定時采集數(shù)據(jù)的功能。
    STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
    ???實際設(shè)計的硬件電路及推薦電路如下圖所示:
    STM32學(xué)習(xí)筆記(十二)丨RTC實時時鐘,STM32 學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

2.2.3 RTC操作及注意事項

  • 依次執(zhí)行以下操作將使能對BKP和RTC的訪問
    • 設(shè)置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP時鐘(需要同時開啟PWR和BKP的時鐘,RTC才能正常使用,RTC并沒有單獨開啟時鐘的函數(shù))
    • 設(shè)置PWR_CR的DBP,使能對BKP和RTC的訪問
  • 若在讀取RTC寄存器時,RTC的APB1接口曾經(jīng)處于禁止?fàn)顟B(tài),則軟件首先必須等待RTC_CRL寄存器中的RSF位(寄存器同步標(biāo)志)被硬件置1(RTC等待同步):由于PCLK1的時鐘頻率36MHz遠大于RTCCLK,有可能在上電開啟時,RTC的寄存器還沒有更新到APB1總線上,這時將發(fā)生讀取錯誤(讀取到的值為0)。實際使用時調(diào)用一個RTC等待同步的庫函數(shù)即可。
  • 必須設(shè)置RTC_CRL寄存器中的CNF位,使RTC進入配置模式后,才能寫入RTC_PRL、RTC_CNT、RTC_ALR寄存器(庫函數(shù)中已經(jīng)包含)
  • 對RTC任何寄存器的寫操作,都必須在前一次寫操作結(jié)束后進行??梢酝ㄟ^查詢RTC_CR寄存器中的RTOFF狀態(tài)位,判斷RTC寄存器是否處于更新中。僅當(dāng)RTOFF狀態(tài)位是1時,才可以寫入RTC寄存器(調(diào)用一個等待的庫 函數(shù)即可)

???課程鏈接:江協(xié)科技 STM32入門教程,歡迎大家一起交流學(xué)習(xí)。
???持續(xù)更新完善中……


??原創(chuàng)筆記,碼字不易,歡迎點贊,收藏~ 如有謬誤敬請在評論區(qū)不吝告知,感激不盡!博主將持續(xù)更新有關(guān)嵌入式開發(fā)、機器學(xué)習(xí)方面的學(xué)習(xí)筆記~文章來源地址http://www.zghlxwxcb.cn/news/detail-596846.html

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

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

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

相關(guān)文章

  • 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ū)通過添加偏移來得到當(dāng)?shù)貢r間 底層使用秒計數(shù)器可以節(jié)省硬件設(shè)計電路,

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

    STM32-實時時鐘RTC-2

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

    2024年01月20日
    瀏覽(26)
  • STM32-RTC實時時鐘詳解

    STM32-RTC實時時鐘詳解

    RTC的本質(zhì)很簡單,就是一個時鐘經(jīng)過精確分頻最后得到的一個1Hz的時鐘,也可以說是計數(shù)器,其他大部分功能都是基于這個計數(shù)器設(shè)計的數(shù)字邏輯。 本文講的RTC是基于STM32F030來講的,相比與F1系列的RTC來說,M0的將很多原本需要軟件實現(xiàn)的功能硬件化了,使用起來更加便利。

    2024年02月04日
    瀏覽(36)
  • 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中的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)當(dā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實時時鐘(RTC)的配置和使用方法詳解

    STM32實時時鐘(RTC)的配置和使用方法詳解

    實時時鐘(RTC)是STM32系列微控制器上的一個重要模塊,用于提供準(zhǔn)確的時間和日期信息。在本文中,我們將詳細(xì)介紹STM32實時時鐘的配置和使用方法。 ?作者簡介:熱愛科研的嵌入式開發(fā)者,修心和技術(shù)同步精進 ?歡迎關(guān)注我的知乎:對error視而不見 代碼獲取、問題探討及

    2024年02月21日
    瀏覽(25)
  • 【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)
  • STM32CubeIDE開發(fā)(十一), STM32實時時鐘(RTC)寫入及讀取日歷時間開發(fā)要點

    STM32CubeIDE開發(fā)(十一), STM32實時時鐘(RTC)寫入及讀取日歷時間開發(fā)要點

    目錄 一、RTC簡介 二、工程創(chuàng)建及配置 ?三、驅(qū)動代碼設(shè)計實現(xiàn) 四、編譯及測試 ????????實時時鐘的縮寫是RTC(Real_Time Clock),核心是晶振,晶振頻率一般為32768 Hz 。它為分頻計數(shù)器提供精確的與低功耗的實基信號。它可以用于產(chǎn)生秒、分、時、日等信息。為了確保時鐘長期

    2024年01月16日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包