基于RT-Thread的STM32F4開發第七講——RTC(硬件、軟件)

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 前言
  • 一、RT-Thread工程創建
    • 1.硬件RTC配置
    • 2.軟件RTC配置
    • 3.RTC鬧鐘配置
  • 總結


前言

本章是基于RT-Thread studio實現RTC硬件和軟件下的日歷時鐘功能,開發板是正點原子的STM32F4探索者,使用的RT-Thread驅動是5.1.0。
有關于RTC的介紹和cubemx配置參數含義可以看看這篇文章
基于STM32F4的cubemx關于RTC配置說明


一、RT-Thread工程創建

從以前文章得到驅動5.1.0不報錯工程
在這里插入圖片描述

1.硬件RTC配置

先按照/* RTC CONFIG BEGIN */的STEP的1、2、3配置一下。注意先不要使用軟件模擬RTC,先使用硬件模式。如果你目前的開發板沒有硬件RTC,那么也先這么操作。
如果不出意外,你將會得到以下的報錯和警告
在這里插入圖片描述
第一處錯誤,對于5.1.0版本來說,RT_WEAK改成了小寫rt_weak,我們改過來。吐槽一下,RT-Thread studio的編譯,報錯信息一點都不準。
在這里插入圖片描述
改正后,報錯減少。這里的錯誤是參數類型不匹配的錯誤。
在這里插入圖片描述
結構體參數如下

struct rt_rtc_ops
{rt_err_t (*init)(void);rt_err_t (*get_secs)(time_t *sec);rt_err_t (*set_secs)(time_t *sec);rt_err_t (*get_alarm)(struct rt_rtc_wkalarm *alarm);rt_err_t (*set_alarm)(struct rt_rtc_wkalarm *alarm);rt_err_t (*get_timeval)(struct timeval *tv);rt_err_t (*set_timeval)(struct timeval *tv);
};

報錯函數參數如下

static rt_err_t stm32_rtc_get_secs(void *args)
static rt_err_t stm32_rtc_set_secs(void *args)
static rt_err_t stm32_rtc_get_timeval(void *args)

可以看到形參不匹配,把函數形參改過來就行

static rt_err_t stm32_rtc_get_secs(time_t *args)
static rt_err_t stm32_rtc_set_secs(time_t *args)
static rt_err_t stm32_rtc_get_timeval(struct timeval *args)

這樣,就沒有報錯和警告了。接下來按照手冊上函數**set_date()set_time()**來設置日期和時間也不會有問題。
下載后,可以看到硬件RTC正常工作。
在這里插入圖片描述

2.軟件RTC配置

去設置里面打開軟件RTC。編譯有一個警告說結構體rtc_sync_work沒有使用,這不影響。
在這里插入圖片描述
下載下去,msh控制臺反饋報錯,我們可以看到報錯文件時drv_rtc,內容是rtc創建錯誤。
在這里插入圖片描述
我們找到報錯語句,可以看到,這里是設備名稱時 “RTC”,但是現在使用軟件模擬RTC,那么設備名稱將變成 “soft_rtc”,更改一下,發現下載后控制臺不報錯。可以和硬件定時器一樣正常使用
在這里插入圖片描述

3.RTC鬧鐘配置

目前RT-Thread好像并沒有晚上鬧鐘alarm的配置,我也嘗試著自己配置了一下,但是一直不成功。確實,之前裸機操作時也沒有關心過RTC,對RTC的硬件基礎理解不夠,有些地方無從下手了。在RT-Thread的論壇有很多博主有關于這方面的文章,實在有需要可以看看他們的。


總結

本章是基于RT-Thread studio實現RTC硬件和軟件下的日歷時鐘功能,對于鬧鐘功能還未實現,哪天實現了,再補充。

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

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

相關文章

Java面試:從Spring Boot到分布式系統的技術探討

場景一:電商平臺的訂單處理 面試官: “謝先生,假設我們在一個電商平臺工作,你將如何使用Spring Boot構建一個訂單處理服務?” 謝飛機: “這個簡單,我會使用Spring Boot快速啟動項目&#xff0…

【Redis】string 類型

string 一. string 類型介紹二. string 命令set、getmget、msetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappend、getrange、setrange、strlen 三. string 命令小結四. string 內部編碼方式五. string 的應用場景緩存功能計數功能共享會話手機驗證碼 六. 什…

HTTP/HTTPS與SOCKS5三大代理IP協議,如何選擇最佳協議?

在復雜多變的網絡環境中,代理協議的選擇直接影響數據安全、訪問效率和業務穩定性。HTTP、HTTPS和SOCKS5作為三大主流代理協議,各自針對不同場景提供獨特的解決方案。本文將從協議特性、性能對比到選型策略,為您揭示如何根據業務需求精準匹配最…

【ArcGIS Pro微課1000例】0071:將無人機照片生成航線、軌跡點、坐標高程、方位角

文章目錄 一、照片預覽二、生成軌跡點三、照片信息四、查看方位角五、軌跡點連成線一、照片預覽 數據位于配套實驗數據包中的0071.rar,解壓之后如下: 二、生成軌跡點 地理標記照片轉點 (數據管理),用于根據存儲在地理標記照片文件(.jpg 或 .tif)元數據中的 x、y 和 z 坐…

【C++項目】:仿 muduo 庫 One-Thread-One-Loop 式并發服務器

🌈 個人主頁:Zfox_ 🔥 系列專欄:C從入門到精通 目錄 🔥 前言 一:🔥 項目儲備知識 🦋 HTTP 服務器🦋 Reactor 模型🎀 單 Reactor 單線程:單I/O多路…

【java】aes,salt

AES(高級加密標準)是一種對稱加密算法,廣泛用于數據加密。在使用 AES 加密時,通常會結合鹽值(Salt)來增強安全性。鹽值是一個隨機生成的值,用于防止彩虹表攻擊和提高加密的復雜性。 一、AES 加…

路由器、網關和光貓三種設備有啥區別?

無論是家中Wi-Fi信號的覆蓋,還是企業網絡的高效運行,路由器、網關和光貓這些設備都扮演著不可或缺的角色。然而,對于大多數人來說,這三者的功能和區別卻像一團迷霧,似懂非懂。你是否曾疑惑,為什么家里需要光…

機頂盒CM311-5s純手機免拆刷機,全網通,當貝桌面

需要用到的工具 安卓手機一臺 甲殼蟲adb助手(安卓app) OTG轉換線一個(或者用usb,typec雙頭的U盤一個,未測試) 8g U盤一個 用到的刷機文件 1.放入手機中的文件 misc recovery 2. 放入U盤根目錄 upda…

c/c++類型別名定義

author: hjjdebug date: 2025年 05月 28日 星期三 12:54:25 CST descrip: c/c類型別名定義: 文章目錄 1. #define 是宏替換.2. c風格的typedef 通用形式 typedef type_orig alias3. c風格的using 為類型定義別名的一般格式: using alias type_orig4. using 的優點: 可以直接使…

Virtuoso中對GDS文件進行工藝庫轉換的方法

如果要對相同工藝節點下進行性能評估,可以嘗試將一個廠商的GDS文件轉換到另一個廠商,不過要注意的是不同廠商(比如SMIC和TSMC)之間的DRC規則,盡量采用兩個DRC中的約束較為緊張的廠商進行設計,以免轉換到另外…

Kubernetes 中部署 kube-state-metrics 及 Prometheus 監控配置實戰

文章目錄 Kubernetes 中部署 kube-state-metrics 及 Prometheus 監控配置實戰環境準備創建監控命名空間準備配置文件創建 ServiceAccount配置 RBAC 權限部署 kube-state-metrics部署node_exporter(可選)驗證服務賬號 TokenPrometheus 配置示例小結驗證增加Grafana面板增加prome…

《重塑認知:Django MVT架構的多維剖析與實踐》

MVT,即Model - View - Template,是Django框架獨特的架構模式。它看似簡單的三個字母,實則蘊含著深刻的設計哲學,如同古老智慧的密碼,解開了Web應用開發的復雜謎題。 模型,是MVT架構中的數據核心&#xff0…

【JVM】初識JVM 從字節碼文件到類的生命周期

初識JVM JVM(Java Virtual Machine)即 Java 虛擬機,是 Java 技術的核心組件之一。JVM的本質就是運行在計算機上的一個程序,通過軟件模擬實現了一臺抽象的計算機的功能。JVM是Java程序的運行環境,負責加載字節碼文件&a…

人工智能在智能零售中的創新應用與未來趨勢

隨著電子商務的蓬勃發展和消費者需求的不斷變化,零售行業正面臨著前所未有的挑戰和機遇。智能零售作為零售行業的重要發展方向,通過引入人工智能(AI)、物聯網(IoT)、大數據和云計算等前沿技術,正…

DeepSeek 賦能智能物流:解鎖倉儲機器人調度的無限可能

目錄 一、智能物流倉儲機器人調度現狀1.1 傳統調度面臨的挑戰1.2 現有智能調度的進展與局限 二、DeepSeek 技術探秘2.1 DeepSeek 核心技術原理2.2 DeepSeek 的獨特優勢 三、DeepSeek 在智能物流倉儲機器人調度中的創新應用3.1 智能任務分配與調度3.2 路徑規劃與避障優化3.3 實時…

Vue CLI創建vue項目,安裝插件

Vue CLI創建vue項目,安裝插件 一、創建項目1. 安裝Vue CLI2. 創建項目 二、安裝插件routerlesssassjquery 一、創建項目 1. 安裝Vue CLI npm install -g vue/cli2. 創建項目 vue create project cd project二、安裝插件 router npm install vue-router # 對于 …

小白成長之路-Linux程序管理(二)

文章目錄 一、源碼包(編譯)安裝1.安裝前先查看磁盤大小2.壓縮包的位置3.執行編譯 二、二進制安裝三、Linux操作系統啟動流程3.1概述3.2啟動流程核心階段1.電源與固件階段2.引導加載程序3.內核初始化4.systemd初始化進程5. 用戶登錄階段 四、systemd管理機…

Ansible模塊——Ansible的安裝!

Ansible 安裝 Ansible 有三種安裝方式,源碼安裝、發行版安裝和 Python 安裝。 使用發行版安裝或 Python 安裝兩種方式時,Ansible 的安裝包有兩個,區別如下: ? ansible-core:一種極簡語言和運行時包,包含…

《全面解析鴻蒙相關概念:鴻蒙、開源鴻蒙、鴻蒙 Next 有何區別》

大家好,這里是程序員晚楓,最近接了一個和鴻蒙電腦有關的商單,所以專門花時間研究了一下和鴻蒙有關的概念。 鴻蒙系統相關概念主要有以下三個,它們之間存在多方面的區別,以下是具體介紹: OpenHarmony 定義…

C# 數組與字符串:全面解析與應用實踐

在C#編程語言中,數組和字符串是兩種最基礎也是最重要的數據類型。無論是簡單的控制臺應用程序,還是復雜的企業級系統,數組和字符串都扮演著不可或缺的角色。本文將全面深入地探討C#中數組和字符串的特性、使用方法、性能考量以及實際應用場景…