STM32之RTC

RTC簡介

實時時鐘(Real Time Clock,RTC),本質是一個計數器,計數頻率常為秒,專門用來記錄時間。

普通定時器拿來作時鐘可行嗎?普通定時器無法掉電運行!

RTC特性:

1,能提供時間(秒鐘數) 2,能在MCU掉電后運行 3,低功耗

常用的RTC方案

對比因素

內部RTC

外置RTC

信息差異

提供秒/亞秒信號

提供秒信號和日歷

功耗

功耗高

功耗低

體積

不用占用額外體積

體積大

成本

成本低

成本高

1,一般都需要設計RTC外圍電路; 2,一般都可以給RTC設置獨立的電源; 3,多數RTC的寄存器采用BCD碼存儲時間信息;

BCD碼

時間戳

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

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

世界上所有時區的秒計數器相同,不同時區通過添加偏移來得到當地時間

UTC/GMT

GMT(Greenwich Mean Time)格林尼治標準時間是一種以地球自轉為基礎的時間計量系統。它將地球自轉一周的時間間隔等分為24小時,以此確定計時標準

UTC(Universal Time Coordinated)協調世界時是一種以原子鐘為基礎的時間計量系統。它規定銫133原子基態的兩個超精細能級間在零磁場下躍遷輻射9,192,631,770周所持續的時間為1秒。當原子鐘計時一天的時間與地球自轉一周的時間相差超過0.9秒時,UTC會執行閏秒來保證其計時與地球自轉的協調一致

時間戳轉換

C語言的time.h模塊提供了時間獲取和時間戳轉換的相關函數,可以方便地進行秒計數器、日期時間和字符串之間的轉換

函數

作用

time_t?time(time_t*);

獲取系統時鐘

struct?tm*?gmtime(const?time_t*);

秒計數器轉換為日期時間(格林尼治時間

struct?tm*?localtime(const?time_t*);

秒計數器轉換為日期時間(當地時間)

time_t?mktime(struct?tm*);

日期時間轉換為秒計數器(當地時間

char*?ctime(const?time_t*);

秒計數器轉換為字符串(默認格式)

char*?asctime(const?struct?tm*);

日期時間轉換為字符串(默認格式)

size_t?strftime(char*,?size_t,?const?char*,?const?struct?tm*);

日期時間轉換為字符串(自定義格式)

STM32 F1 RTC框圖介紹

1,RTC預分頻器

2,32位可編程計數器

3,待機喚醒

4,RTC控制寄存器與APB1接口

3個時鐘源(HSE / 128) ?? ??? ? ? (LSI 40kHz) ?? ??? ?(LSE 32.768kHz)

RTC工作在后備區域,VDD掉電仍正常

F1 RTC相關寄存器介紹

后備寄存器和RTC寄存器特性(F1)

部分寄存器寫保護:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器不會被系統復位?

數據存儲功能:RTC和后備寄存器不會被系統或電源復位源復位;當從待機模式喚醒時,也不會被復位。 后備寄存器可用于保存掉電時的數據。

獨立工作:RTC和后備寄存器通過一個開關供電,在VDD有效時該開關選擇VDD供電,否則由VBAT引腳供電。在VBAT供電時仍可繼續工作。

2個獨立復位:APB1接口由系統復位;RTC核心只能由后備域復位;

RCC_APB1ENR寄存器

使能PWR && BKP時鐘

PWR_CR寄存器

使能后備域和RTC的訪問權限

RCC_BDCR寄存器

通過RCC_BDCR配置: 1,開啟RTC時鐘 2,開啟LSE時鐘; 3,選擇RTC計數時鐘源;

選擇LSE的原因,見F1參考手冊V10 59頁關于RTC時鐘的描述

RTC_CRL寄存器

RTC進入配置模式,關注的位

RTC_CRH寄存器

復位值為0,置1可開啟相關中斷

RTC_PRLH寄存器

使計數器每計數一次就是1秒,即需要32768分頻。

RTC_PRLL寄存器

與RTC_PRL相似的寄存器RTC_DIV可以在不停止分頻計數器的工作,獲得預分頻計數器的當前值。

RTC_CNTH寄存器

注意:進入配置模式才能對寄存器進行操作

RTC_CNTL寄存器

與RTC_CNT相似的寄存器還有RTC_ALR,這里就不做介紹。

RTC相關的HAL庫驅動介紹(F1)

驅動函數

關聯寄存器

功能描述

HAL_RTC_Init(...)

CRL/CRH/PRLH/PRLL

初始化RTC

HAL_RTC_MspInit(…)

初始化回調

使能RTC時鐘

HAL_RCC_OscConfig(…)

RCC_CR/PWR_CR

開啟LSE時鐘源

HAL_RCCEx_PeriphCLKConfig(...)

RCC_BDCR

設置RTC時鐘源為LSE

HAL_PWR_EnableBkUpAccess(...)

PWR_CR

使能備份域的訪問權限

HAL_RTCEx_BKUPWrite/Read()

BKP_DRx

/寫備份域數據寄存器

以下是需要開啟的時鐘源: __HAL_RCC_RTC_ENABLE()

__HAL_RCC_PWR_CLK_ENABLE()

__HAL_RCC_BKP_CLK_ENABLE()

RTC基本驅動步驟(F1)

時間設置和讀取

由于F1的RTC沒有日歷寄存器,使用時只存儲總秒數,不利于直接設置和顯示,所以我們還需要編寫函數把時間變成我們日常的日歷時間

驅動函數

功能描述

rtc_get_time(…)

總秒數轉成日歷時間

rtc_is_leap_year(…)

判斷是否閏年

uint8_t?rtc_get_week(…)

計算公歷日歷對應的星期幾

static?long?rtc_date2sec(…)

日歷時間轉成對應總秒數

全局的結構體變量calendar存儲時間信息

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

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

相關文章

【OC】單例模式

文章目錄前言概念優缺點優點缺點兩種使用模式懶漢模式實現代碼運行結果餓漢模式實現代碼運行結果在自定義類方法時的幾種常見寫法總結前言 在之前我們已經學習過單例模式的有關內容,但是只是最簡單的單例,無法勝任多線程或者稍微多一點的情況便無法確定…

機器學習(七)決策樹-分類

一 概念1 決策節點通過條件判斷而進行分支選擇的節點。將樣本的屬性值,也就是特征值與決策節點上的值進行比較,從而判斷它的流向。2 葉子節點沒有子節點的節點,表示最終的決策結果。3 決策樹的深度所有節點的最大層次數決策樹具有一定的層次結…

IT 服務管理的新格局:從工單系統到一體化 ITSM 平臺

企業 IT 部門的角色轉變在過去,IT 部門更多被視為“技術支持”,主要負責設備維護和故障處理。但隨著數字化轉型加速,IT 已經成為業務連續性和創新的重要推動力。從客戶體驗到數據安全,從業務敏捷到成本控制,IT 服務管理…

創建一個Spring Boot Starter風格的Basic認證SDK

文章目錄前言設計思路SDK實現步驟1. 創建SDK Maven項目(sdk目錄)2. 實現配置類3. 實現認證邏輯4. 實現攔截器5. 實現自動配置6. 創建spring.factories文件使用方集成步驟1. 引入SDK依賴2. 配置Application屬性3. 創建測試接口4. 測試接口訪問SDK擴展功能…

mybatis處理統計sql進度丟失問題

如何處理統計sql進度丟失 SELECT sum(decimal_column) AS sum_value FROM your_table如上sql執行時沒有問題,在數據庫可視工具可以正常顯示,但是在mybatis執行時,卻出現解決辦法 使用轉 decimal 控制精度 SELECT CAST(SUM(decimal_column) A…

全球首款!科聰控制器獲德國 TüV 萊茵功能安全認證

近日,浙江科聰控制技術有限公司(以下簡稱"科聰")的安全移動機器人控制器MSC5000榮獲全球權威認證機構德國萊茵TV集團(TV Rheinland)頒發的功能安全認證證書。這款控制器是全球首款通過SIL3、PLe 認證的移動機…

pureadmin的動態路由和靜態路由

在 PureAdmin(基于 Vue3 的后臺管理框架)中,靜態路由和動態路由是實現路由管理的兩種方式,主要區別在于路由的定義時機、加載方式和靈活性,具體區別如下: 1. 靜態路由 定義方式:路由規則在代碼中…

第3章:CPU實戰

1. Linux操作系統CPU平均負載 以前我們總認為CPU使用率和CPU平均負載是一樣的,負載高了就是CPU使用率提高。但是到底是什么情況呢? 1.1. CPU的平均負載 單位時間內 系統處于 可運行狀態 和不可中斷狀態 的平均進程數,就是平均活躍進程數&a…

【Vue3】06-利用setup編寫vue(1)

其它篇章: 1.【Vue3】01-創建Vue3工程 2.【Vue3】02-Vue3工程目錄分析 3.【Vue3】03-編寫app組件——src 4.【Vue3】04-編寫vue實現一個簡單效果 5.【Vue3】05-Options API和Composition API的區別 6.【Vue3】06-利用setup編寫vue(1) 7.【Vue…

UDS NRC速查

目錄 NRC 一、通用NRC(0x10~0x5F) 二、數據相關NRC(0x70~0x8F) 三、會話與狀態NRC 注意事項 UDS中的NRC(Negative Response Code)即否定響應碼,用于在診斷通信中表示服務端無法成功執行客戶端請求的原因。以下是一些常用的UDS NRC碼及其含義: HEX Name Description 01 …

【AI論文】多模態大型語言模型的視覺表征對齊

摘要:通過視覺指令微調訓練的多模態大型語言模型(MLLMs)在各類任務中均取得了優異表現,然而在以視覺為中心的任務(如物體計數或空間推理)中,其性能仍存在局限。我們將這一差距歸因于當前主流的純…

SKywalking Agent配置+Oracle監控插件安裝指南

SKywalking Agent配置Oracle監控插件安裝指南前言: SkyWalking Elasticsearch8 容器化部署指南 Skywalking版本:V10.2.0 Skywalking Agent版本:V9.4.0 Skywalking Agent下載地址:Downloads | Apache SkyWalking 插件下載地址&…

ES相關問題匯總

問題一:關于【QueryBuilder對象】和【Query String語法】查詢時底層運行方式和結果的差異

5. STM32 時鐘系統分配

文章目錄下述將以stm32f407 為例1. 時鐘系統及頻率分析2. 時鐘配置下述將以stm32f407 為例 1. 時鐘系統及頻率分析 上述STM32F4時鐘系統圖解析入下: STM32F407 系列微控制器(基于 Cortex-M4 內核,帶 FPU)的工作頻率配置如下&…

《從 0 建立測試開發認知:先搞懂 “是什么”,再學 “怎么做”》

🔥個人主頁:草莓熊Lotso 🎬作者簡介:C研發方向學習者 📖個人專欄: 《C知識分享》《Linux 入門到實踐:零基礎也能懂》《數據結構與算法》《測試開發實戰指南》《算法題闖關指南》 ??人生格言&a…

net::ERR_EMPTY_RESPONSE

net::ERR_EMPTY_RESPONSE表現解決表現 Java后端封裝一個接口,透傳前端參數,請求到其他模塊服務 本地開發環境聯調時是沒有問題,測試環境上報錯 1.前端報錯,F12檢查,network上的請求,返回response選項中為空…

在線多功能環境音生成器

https://oltool.cc/toolbox/huanjingyins.html 關于環境音生成器介紹: 1、本工具可以混合各種聲音,比如下雨聲,打雷聲,海浪聲,鳥叫以及蟲鳴聲等,生成新的環境聲。 2、定時器:可以設置倒計時&…

本地電腦映射端口到外網訪問的開啟方法和注意事項,內網服務提供跨網使用簡單操作實現

在計算機網絡中,端口映射是一項重要的技術,它允許外網用戶訪問局域網內的特定設備或服務。當我們在本地電腦搭建部署項目應用后,就可以通過映射端口的方式,簡單快速穩定的提供互聯網訪問服務。以下將詳細介紹如何開啟電腦映射端口…

Java 大視界 -- Java 大數據在智能醫療健康檔案數據分析與個性化健康管理中的應用(410)

Java 大視界 -- Java 大數據在智能醫療健康檔案數據分析與個性化健康管理中的應用(410)引言:正文:一、2023 年 6 月智能醫療健康檔案的核心落地需求(政策 業務雙驅動)1.1 政策倒逼的數據應用痛點&#xff…

微服務架構的基石:Nacos全方位解析與Java實戰指南

引言在云原生與微服務浪潮席卷而來的今天,服務的治理與配置的管理變得前所未有的復雜。一個個單一的應用被拆分為數十甚至上百個微服務,如何讓這些服務輕松地發現彼此?如何在不重啟應用的情況下動態調整所有服務的參數?這些問題直…