STM32 實時時鐘(RTC)詳解

一、RTC 簡介

RTC(Real Time Clock)即實時時鐘,本質上是一個 32 位的秒級計數器:

  • 最大計數值為 4294967295 秒,約合 136 年:

     

    復制編輯

    4294967295 / 60 / 60 / 24 / 365 ≈ 136 年

  • RTC 初始化時,主要配置兩項:

    1. 時鐘源(決定 1 秒的基準周期)

    2. 計數器初值(轉換為日期 + 時間)

RTC 表現形式對比

MCU型號表現形式
STM32F103僅提供一個以秒為單位的數值,由軟件完成時間轉換
STM32F407硬件直接提供時間和日期寄存器


二、RTC 模塊特性

  • 可編程的 預分頻系數,最大支持 2^20。

  • 32 位計數器,用于長時間測量。

  • 支持三種 RTC 時鐘源:

    • HSE / 128

    • LSE(32.768KHz)→ 1Hz

    • LSI

  • 兩種獨立復位機制:

    • APB1 接口系統復位

    • RTC 核心(后備域)復位

  • 三種中斷:

    • 鬧鐘中斷(Alarm)

    • 秒中斷(每秒觸發)

    • 溢出中斷(計數器回到0)


三、RTC 架構簡析

RTC 模塊主要由兩部分構成:

  1. APB1 接口部分

    • 與 MCU 通信,通過一組 16 位寄存器控制 RTC 配置。

    • 由 PCLK1 驅動。

  2. RTC 核心部分

    • 預分頻器模塊:產生 1 秒基準時鐘 TR_CLK

    • 計數器模塊:32 位,累加系統時間,支持鬧鐘中斷比較


四、RTC 初始化流程(STM32F1 示例)

  1. 使能 PWR、BKP 時鐘:

     

    RCC_APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN;

  2. 允許訪問后備寄存器:

     

    PWR->CR |= PWR_CR_DBP;

  3. 復位備份域:

     

    RCC->BDCR |= RCC_BDCR_BDRST; RCC->BDCR &= ~RCC_BDCR_BDRST;

  4. 打開并等待 LSE 時鐘穩定:

     

    RCC->BDCR |= RCC_BDCR_LSEON; while (!(RCC->BDCR & RCC_BDCR_LSERDY));

  5. 選擇 LSE 為 RTC 時鐘源:

     

    RCC->BDCR |= RCC_BDCR_RTCSEL_LSE;

  6. 啟用 RTC 時鐘:

     

    RCC->BDCR |= RCC_BDCR_RTCEN;

  7. 等待上一次寫操作完成(RTOFF = 1)

  8. 等待寄存器同步(RSF = 1)

  9. 進入配置模式(CNF = 1)

  10. 配置分頻器和時間值:

     

    RTC->PRLH = ...; RTC->PRLL = ...; RTC->CNTH = ...; RTC->CNTL = ...;

  11. 退出配置模式(CNF = 0)

  12. 等待寫操作完成(RTOFF = 1)


五、RTC 讀寫注意事項

寫操作流程

  1. 等待 RTOFF = 1(前一次寫完成)

  2. 設置 CNF = 1(進入配置模式)

  3. 寫入目標寄存器(如 PRL、CNT、ALR)

  4. 清除 CNF = 0(退出配置模式)

  5. 等待 RTOFF = 1(確認寫操作完成)

每次寫入至少需要等待 3 個 RTCCLK 周期。

讀操作注意事項

RTC 核心獨立于 APB1 接口,RTC 內部值在 RTC 時鐘上升沿同步 到 APB1 接口:

  • 若系統曾關閉 APB1 時鐘,第一次讀取值可能無效(常為0)

  • 必須等待 RSF = 1(寄存器同步完成)后再讀數據

情況示例:復位后 / 停機喚醒后 / APB1重新打開


六、RTC 寄存器說明

寄存器名描述復位方式
RTC_CNT當前計數值(時間)后備復位
RTC_PRL分頻器設定后備復位
RTC_ALR鬧鐘時間值后備復位
其他寄存器配置與控制系統復位


七、總結

RTC 模塊作為獨立的低功耗定時單元,在低功耗應用中非常重要。STM32 的 RTC 模塊可實現秒級定時、鬧鐘中斷、時間持久化(VBAT 支持)等功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83003.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《AI驅動的智能推薦系統:原理、應用與未來》

一、引言 在當今信息爆炸的時代,用戶面臨著海量的信息選擇,從購物平臺上的商品推薦到流媒體服務中的影視推薦,智能推薦系統已經成為我們日常生活中不可或缺的一部分。AI驅動的智能推薦系統通過分析用戶的行為和偏好,為用戶提供個性…

Django + Celery 打造企業級大模型異步任務管理平臺 —— 從需求到完整實踐(含全模板源碼)

如需完整工程文件(含所有模板),可回復獲取詳細模板代碼。 面向人群:自動化測試工程師、企業中后臺開發人員、希望提升效率的 AI 業務從業者 核心收獲:掌握 Django 三表關系設計、Celery 異步任務實踐、基礎 Web 交互與前后端分離思路,源碼可直接落地,方便二次擴展 一、系…

創建對象

雖然Object構造函數或對象字面量可以方便地創建對象,但這些方式也有明顯不足: 創建具有同樣接口的多個對象需要重復編寫很多代碼 1.工廠模式 工廠模式是一種眾所周知的設計模式,廣泛應用于軟件工程領域,用于抽象創建特定對象的過程 function createPerson(name,age){let…

深度理解指針(2)

🎁個人主頁:工藤新一 🔍系列專欄:C面向對象(類和對象篇) 🌟心中的天空之城,終會照亮我前方的路 🎉歡迎大家點贊👍評論📝收藏?文章 深入理解指…

數據科學和機器學習的“看家兵器”——pandas模塊 之一

目錄 pandas 模塊介紹 4.1 pandas 數據結構 一、課程目標 二、Series 對象介紹 三、DataFrame 對象介紹 四、Series 和 DataFrame 在具體應用中的注意事項 (一)Series 注意事項 (二)DataFrame 注意事項 五、實戰案例 案例 1:學生成績分析 案例 2:銷售數據分析 案例 3:股…

STM32CubeMX HAL庫 串口的使用

1.配置 2.開啟中斷后,生成代碼 3.串口的接收 1).開啟空閑中斷接收 __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); // 關鍵步驟:啟用空閑中斷 2). 啟動接收 調用 HAL_UARTEx_ReceiveToIdle_IT 啟動異步接收,可以使用…

IIS服務器URL重寫配置完整教程

1.下載URL Rewrite Module 2.1 https://www.iis.net/downloads/microsoft/url-rewrite https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi 2.安裝

vite+vue建立前端工程

? 參考 開始 | Vite 官方中文文檔 VUE教程地址 https://cn.vuejs.org/tutorial/#step-1 第一個工程 https://blog.csdn.net/qq_35221977/article/details/137171497 腳本 chcp 65001 echo 建立vite工程 set PRO_NAMEmy-vue-appif not exist %PRO_NAME% (call npm i…

負進制轉換

當一個數的基數是負數時,將這個數轉換為負進制數時,大體思路和正數的情況一樣,但是因為基數是負數,所以計算出來的余數就有可能是負數所以,需要在余數是負數時:將余數 基數的絕對值,商 1。 代…

K8S已經成為了Ai應用運行的平臺工具

AI應用與K8s的深度融合:加速云原生時代的智能運維與業務創新 摘要: 隨著人工智能(AI)技術的飛速發展,Kubernetes(K8s)作為容器編排領域的領軍者,正逐步成為承載AI應用的核心基礎設施…

NVMe簡介1

它分為兩部分,這里是第一部分。 NVM Express(NVMe)是一種高性能、可擴展的接口協議,用于通過PCI express(PCIe)總線,實現主機軟件與NVM設備之間的通信。目前,由于NVMe SSD相比于SATA…

微服務商城(1)開篇、服務劃分

參考:https://mp.weixin.qq.com/s?__bizMzg2ODU1MTI0OA&mid2247485597&idx1&sn7e85894b7847cc50df51d66092792453&scene21#wechat_redirect 為什么選擇go-zero go-zero 為我們提供了許多高并發場景下的實用工具,比如為了降低接口耗時…

《隱私計算:數據安全與隱私保護的新希望》

一、引言 在數字化時代,數據已成為企業和組織的核心資產。然而,數據的收集、存儲和使用過程中面臨著諸多隱私和安全挑戰。隱私計算作為一種新興技術,旨在解決數據隱私保護和數據共享之間的矛盾。本文將深入探討隱私計算的基本概念、技術原理、…

MySQL 學習(九)bin log 與 redo log 的區別有哪些,為什么快速恢復使用 redo log 而不用 bin log?

目錄 一、bin log 與 redo log 的區別1)實現方式不同:2)日志內容不同:3)記錄方式不同:4)使用場合不同: 二、為什么快速恢復使用 redo log 而不用 bin log? 面試題&#x…

用Array.from實現創建一個1-100的數組

一、代碼實現 let arr Array.from({length: 100}, (_, i) > i 1); 二、代碼分析 1、Array.from(arrayLike, mapFn) (1)arrayLike 類數組對象(如 { length: 100 })本身沒有索引屬性(如 0: undefined, 1: undefi…

javaScript簡單版

簡介 JavaScript(簡稱:JS)是一門跨平臺、面向對象的腳本語言,是用來控制網頁行為,實現頁面的交互效果。 JavaScript和Java是完全不同的語言,不論是概念還是設計。但是基礎語法類似。 組成: ECMAScript:規定了JS基礎語法核心知…

Python刷題練習

文章目錄 1.尋找相同字串2.密鑰格式化3.五鍵鍵盤的輸出4.單詞重量5.輸出指定字母在字符串的中的索引6.污染水域7.九宮格按鍵輸入8.任務最優調度9.高效的任務規劃 1.尋找相同字串 題目描述: 給你兩個字符串t和p,要求從t中找到一個和p相同的連續子串,并輸…

MATLAB實現振幅調制(AM調制信號)

AM調制是通信專業非常重要的一個知識點。今天我們使用MATLAB編程實現AM調制。 我們實現輸入一個載波信號的頻率與調制信號的頻率后,再輸入調幅度,得到已調信號的波形與包絡信號的波形,再使用FFT算法分析出已調信號的頻譜圖。 源代碼&#x…

JJJ:linux ida

文章目錄 1.總結2.各類函數2.1 分配一個倉庫2.2 銷毀倉庫2.3 從倉庫里面分配一個整數id2.4 將上面分配的整數id從倉庫里面刪除2.5 在指定范圍內分配一個id 1.總結 ida使用起來很簡單,就是先分配一個倉庫一樣的實例,再從這個倉庫里面分配一個獨一無二的整…

FastByteArrayOutputStream和ByteArrayInputStream有什么區別

FastByteArrayOutputStream 和 ByteArrayInputStream 是兩種完全不同的 Java I/O 類,它們的主要區別體現在 設計目的 和 使用場景 上。以下是詳細對比: 1. 核心區別總結 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所屬…