STM32CubeIDE(CUBE-MX hal庫)----RTC時鐘,時鐘實時顯示

系列文章目錄

STM32CubeIDE(CUBE-MX hal庫)----初嘗點亮小燈
STM32CubeIDE(CUBE-MX hal庫)----按鍵控制
STM32CubeIDE(CUBE-MX hal庫)----串口通信
STM32CubeIDE(CUBE-MX hal庫)----定時器
STM32CubeIDE(CUBE-MX hal庫)----藍牙模塊HC-05(詳細配置)


前言

RTC是一個獨立的定時器,可為系統提供時鐘和日歷的功能

在這里插入圖片描述
在這里插入圖片描述

一、可視化配置

1.配置RCC時鐘源,LSE外部低速時鐘,HSE外部高速時鐘
在這里插入圖片描述

2.配置RTC,Activate Clock Source 激活時鐘源,Activate calendar激活日歷,RTC全局中斷在這里插入圖片描述
3.設置參數,設置當前的時間。BCD data format BCD碼進制,23為2023年的后兩位
在這里插入圖片描述

4.使能串口,將日期發送到上位機在這里插入圖片描述
5.時鐘源設置, 設置RTC時鐘為LSE
在這里插入圖片描述

二、修改代碼

1.頭文件加入<stdio.h>因為加入了printf

/* USER CODE BEGIN Includes */
#include <stdio.h>/* USER CODE END Includes */

2.在USER CODE BEGIN 0中加入重定向代碼

/* USER CODE BEGIN 0 */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endifPUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1,0xFFFF);return ch;
}int fputc(int ch,FILE *f)
{HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);return ch;
}/* USER CODE END 0 */

3.在while (1)中加入獲取時間和日期代碼

  while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *//* Get the RTC current Time */HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);/* Get the RTC current Date */HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);/* Display date Format : yy/mm/dd */printf("%02d/%02d/%02d\r\n",2000 + GetData.Year, GetData.Month, GetData.Date);/* Display time Format : hh:mm:ss */printf("%02d:%02d:%02d\r\n",GetTime.Hours, GetTime.Minutes, GetTime.Seconds);printf("\r\n");HAL_Delay(1000);}

三、實驗現象

實現時鐘的
在這里插入圖片描述

四、擴展

RTC掉電或者復位時時間會進行重置,如果不進行重置則加上改動下面代碼

 void MX_RTC_Init(void)
{/* USER CODE BEGIN RTC_Init 0 */RTC_TimeTypeDef time;   //時間結構體參數RTC_DateTypeDef datebuff;   //日期結構體參數/* USER CODE END RTC_Init 0 */RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef DateToUpdate = {0};/* USER CODE BEGIN RTC_Init 1 */__HAL_RCC_BKP_CLK_ENABLE();       //開啟后備區域時鐘__HAL_RCC_PWR_CLK_ENABLE();		  //開啟電源時鐘/* USER CODE END RTC_Init 1 *//**Initialize RTC Only */hrtc.Instance = RTC;hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;if (HAL_RTC_Init(&hrtc) != HAL_OK){Error_Handler();}/* USER CODE BEGIN Check_RTC_BKUP */if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!= 0x5051){/* USER CODE END Check_RTC_BKUP *//**Initialize RTC and set the Time and Date */sTime.Hours = 0x23;sTime.Minutes = 0x28;sTime.Seconds = 0x20;if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}DateToUpdate.WeekDay = RTC_WEEKDAY_THURSDAY;DateToUpdate.Month = RTC_MONTH_DECEMBER;DateToUpdate.Date = 0x7;DateToUpdate.Year = 0x23;if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}/* USER CODE BEGIN RTC_Init 2 */__HAL_RTC_SECOND_ENABLE_IT(&hrtc,RTC_IT_SEC);	 //開啟RTC時鐘秒中斷datebuff = DateToUpdate;  //把日期數據拷貝到自己定義的data中HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, 0x5051);//向指定的后備區域寄存器寫入數據HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR2, (uint16_t)datebuff.Year);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR3, (uint16_t)datebuff.Month);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR4, (uint16_t)datebuff.Date);HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR5, (uint16_t)datebuff.WeekDay);}else{datebuff.Year    = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR2);datebuff.Month   = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR3);datebuff.Date    = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR4);datebuff.WeekDay = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR5);DateToUpdate = datebuff;if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK){Error_Handler();}__HAL_RTC_SECOND_ENABLE_IT(&hrtc,RTC_IT_SEC);	 //開啟RTC時鐘秒中斷		}}

參考文章:https://blog.csdn.net/as480133937/article/details/105741893

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

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

相關文章

【無標題】安裝環境

這里寫目錄標題 清華鏡像加速 安裝cuda11.3 PyTorch 1.10.1https://pytorch.org/get-started/previous-versions/[如果沒有可以點Previous pyTorch Versions&#xff0c;這里面有更多的更早的版本](https://pytorch.org/get-started/locally/) 復制非空文件夾cp: -r not specif…

傳染病傳播速度

題干 R0值是基本傳染數的簡稱&#xff0c;指的是在沒有采取任何干預措施的情況下&#xff0c;平均每位感染者在傳染期內使易感者個體致病的數量。數字越大說明傳播能力越強&#xff0c;控制難度越大。一個人傳染的人的數量可以用冪運算來計算。假設奧密克戎的R0為10&#xff0…

《LeetCode力扣練習》代碼隨想錄——字符串(翻轉字符串里的單詞---Java)

《LeetCode力扣練習》代碼隨想錄——字符串&#xff08;翻轉字符串里的單詞—Java&#xff09; 刷題思路來源于 代碼隨想錄 151. 反轉字符串中的單詞 雙指針 class Solution {public String reverseWords(String s) {char[] results.toCharArray();resultremoveSpace(result);r…

2023-12-05 Qt學習總結2

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言五 Hello Qt!六 Qt控件和事件七 Qt信號和槽八 Qt自定義信號和槽總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 五 Hello Qt! 現在我們已經有了一個空窗口工程, 傳統上, 我們要實現一個"Hello …

(三潮來襲)探尋2023年科技變革潮流與2024年前瞻展望

2023年對于IT行業來說是一個動蕩而又充滿變革的一年。隨著世界逐漸走出前幾年的挑戰&#xff0c;企業逐漸復蘇&#xff0c;但這個行業仍然在經歷著激烈的變革。在這個時候&#xff0c;我們看到了一些引人注目的技術變化和未來的趨勢。 一、2023年回顧 關鍵詞&#xff1a;Chat…

構建Servlet項目流程

第一步&#xff1a;創建maven項目 部分基礎 依賴的模板基礎部分如下 maven-archetype-quickstart: 這是最基本的Archetype&#xff0c;它創建一個包含簡單Java類和單元測試的項目。 maven-archetype-webapp: 這個Archetype創建一個簡單的Java web應用&#xff0c;包括一個serv…

【C++】算法庫(批量操作、搜索操作)

C算法庫 文章目錄 C算法庫批量操作for_eachfor_each_n 搜索操作all_of ,any_of ,none_offind, find_if, find_if_notfind_endstd::find_first_ofadjacent_findcount, count_ifequalsearchsearch_n 算法庫提供大量用途的函數&#xff08;例如查找、排序、計數、操作&#xff09;…

微信小程序 - PC端選擇ZIP文件

微信小程序 - PC端選擇文件 分享代碼片段場景分析解決思路附魔腳本chooseMediaZip 選擇附魔后的ZIP文件相關方法測試方法 參考資料 分享代碼片段 不想聽廢話的&#xff0c;直接看代碼。 https://developers.weixin.qq.com/s/UL9aojmn7iNU 場景分析 如果你的微信小程序需要選…

TypeScript入門實戰筆記 -- 開篇 為什么要選擇 TypeScript ?

typescript 在線編輯器http://typescript.p2hp.com/play?#code/JYOwLgpgTgZghgYwgAgJIFUDO1Uhge2QG8AoZc5YAEwC5kQBXAWwCNoBuMikOJiOzGCigA5pwrI4ANzhg4UAPwChozgF8SmmAxAIwwfCGRYcefAAoADlHyXMdDNii4CASmJdyCQ5nwAbCAA6P3wRKxs7ABpkAHJrW0wY1xINEhNnM3MiSlpkAEZonj46GIBrROQ1…

openEuler學習05-kernel升級

周末沒事&#xff0c;嘗試下openEuler的kernel升級 [rootlocalhost ~]# more /etc/os-release NAME"openEuler" VERSION"20.03 (LTS-SP3)" ID"openEuler" VERSION_ID"20.03" PRETTY_NAME"openEuler 20.03 (LTS-SP3)" ANSI_…

營收增速持續放緩,博通CEO期待AI崛起救場 | 百能云芯

博通作為蘋果等大型科技公司的芯片供應商&#xff0c;于周四發布了財報。盡管截至10月29日的第四季度營收增長了4%至93億美元&#xff0c;符合市場預期&#xff0c;但增速已經降至2020年以來的最低水平。 由于企業客戶和電信供應商在控制支出方面的謹慎態度&#xff0c;博通的銷…

IDEA構建springBoot新項目時JDK只有17和21,無法選擇JDK8解決方案

今天創建springboot新項目時&#xff0c;發現IDEA里JDK選項只有17和21&#xff0c;無法選擇本機的JDK8&#xff0c;網上查資料后發現是springboot2.7于11.24號后停止維護&#xff0c;基于2.7和java8的spring Initializ官方不再維護&#xff0c;解決方案是在server URL欄&#x…

東北大學Python

目前金屬礦開采&#xff0c;爆破還是主要的破巖方式&#xff0c;為了保證巷道采場的安全&#xff0c;需要對爆破震動進行監測&#xff0c;獲取的監測數據如附件&#xff0c;第1列數據為震動的序號&#xff0c;第2、3、4列為x,y,z三個方向的震動速度&#xff0c;往往由于各種因素…

C++ 運算符重載與操作符重載

目錄 運算符重載 運算符重載的特性 其他運算符重載的實現 默認成員函數——賦值運算符重載 默認成員函數——取地址操作符重載 const成員 附錄 運算符重載 C為了增強代碼的可讀性引入了運算符重載&#xff0c;運算符重載是具有特殊函數名的函數&#xff0c;也具有其返回…

使用Vue實現一個當鼠標懸浮時出現,鼠標離開時消失的雙層菜單

前言 分享一個基于Vue實現一個當鼠標懸浮時出現&#xff0c;鼠標離開時消失的雙層菜單。同時也是為了以后需要類似的需求時&#xff0c;可以提供一個實現思路&#xff0c;以及可以快速ctrlc和ctrlv操作&#xff0c;提高工作效率~ 一、示例代碼 &#xff08;1&#xff09;/sr…

Linux C/C++ 分析網絡流量(十六進制TCP數據包分析)

在分析TCP數據包時&#xff0c;理解TCP協議的工作原理和報文格式是關鍵。TCP是一種面向連接的、提供可靠的、端到端的字節流傳輸服務。其頭部結構包括源端口、目標端口、序列號、確認應答號等字段。序列號是在建立連接時由計算機生成的隨機數作為初始值&#xff0c;每發送一次數…

使用Pytorch從零開始實現BERT

生成式建模知識回顧: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 變分自編碼器 [4] 生成對抗網絡&#xff0c;高級生成對抗網絡 I&#xff0c;高級生成對抗網絡 II [5] 自回歸模型 [6] 歸一化流模型 [7] 基于能量的模型 [8] 擴散模型 I, 擴散模型 II…

前端食堂技術周刊第 107 期:技術播客節、Deno Cron、FEDAY、XState v5、Electron 2023 生態系統回顧

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;烤椰拿鐵 食堂技術周刊倉庫地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童歐巴。歡迎來到前端食堂技術周刊&#xff0c;我們先來看下…

圖論與網絡優化3

CSDN 有字數限制&#xff0c;因此筆記分別發布&#xff0c;目前&#xff1a; 【筆記1】概念與計算、樹及其算法【筆記2】容量網絡模型、遍歷性及其算法【筆記3】獨立集及其算法 6 獨立集及其算法 6.1 獨立集和覆蓋 6.1.1 獨立數和覆蓋數 獨立集&#xff1a;設 S ? V ( G …