stm32实时时钟显示
stm32实时时钟显示
在STM32上实现实时时钟(RTC)显示通常包含以下步骤,这里以使用STM32CubeMX配置和HAL库为例进行说明:
1. 硬件准备
- STM32开发板(需支持RTC,如F1/F4/F7系列)
- 后备电池(VBAT引脚连接纽扣电池,保证断电时RTC继续运行)
- 显示设备(如LCD屏、OLED、串口调试助手等)
2. 配置步骤(使用STM32CubeMX)
(1) 启用RTC时钟源
- 在RCC配置中启用低速时钟源:
- LSE (外部32.768kHz晶振): 高精度(推荐)
- LSI (内部RC振荡器): 精度较低(若无外部晶振则使用)
- 在RTC配置中:
- 激活时钟源(Activate Clock Source)
- 启用日历(Activate Calendar)
- 配置预分频器(Asynchronous / Synchronous Prescaler):
- 例如:异步分频值 = 127,同步分频值 = 255 → 时钟频率 = 32768Hz / (127+1)/(255+1) = 1Hz(每秒触发一次更新)
(2) 配置日期和时间
- 在
RTC标签页设置初始日期和时间(支持二进制或BCD格式):// 示例初始时间:2023年10月25日 12:00:00 hrtc.Init.HourFormat = RTC_HOURFORMAT_24; // 24小时制 sTime.Hours = 12; // 时 sTime.Minutes = 0; // 分 sTime.Seconds = 0; // 秒 sDate.Date = 25; // 日 sDate.Month = 10; // 月 sDate.Year = 23; // 年(2023年的后两位)
(3) 配置显示接口
- 串口输出:启用USART/UART,波特率115200。
- LCD显示:配置I2C/SPI接口(根据屏幕选择)。
(4) 生成代码
- 点击"GENERATE CODE"生成Keil/IAR工程。
3. 代码实现
(1) 初始化RTC
#include "main.h"
#include <stdio.h>
RTC_HandleTypeDef hrtc; // CubeMX生成的RTC句柄
void SystemClock_Config(void);
static void MX_RTC_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_RTC_Init(); // 初始化RTC
// 检查是否需要设置时间(首次运行或备份寄存器标志)
if (HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x1234) {
// 设置初始时间
RTC_TimeTypeDef sTime = {.Hours=12, .Minutes=0, .Seconds=0};
RTC_DateTypeDef sDate = {.Date=25, .Month=10, .Year=23};
HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR0, 0x1234); // 写入标志
}
while(1) {
RTC_TimeTypeDef currentTime;
RTC_DateTypeDef currentDate;
// 获取当前时间和日期
HAL_RTC_GetTime(&hrtc, ¤tTime, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, ¤tDate, RTC_FORMAT_BIN);
// 通过串口打印时间
printf("Date: %04d-%02d-%02d\n", 2000 + currentDate.Year, currentDate.Month, currentDate.Date);
printf("Time: %02d:%02d:%02d\n", currentTime.Hours, currentTime.Minutes, currentTime.Seconds);
HAL_Delay(1000); // 每秒更新一次
}
}
(2) 重定向printf到串口
// 在main.c中添加
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE {
HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
return ch;
}
4. LCD显示示例(以I2C OLED为例)
// 使用SSD1306驱动OLED显示
void Display_RTC_Time(RTC_TimeTypeDef *time, RTC_DateTypeDef *date) {
char buffer[20];
sprintf(buffer, "Time: %02d:%02d:%02d", time->Hours, time->Minutes, time->Seconds);
SSD1306_GotoXY(0, 0);
SSD1306_Puts(buffer, &Font_7x10, SSD1306_COLOR_WHITE);
sprintf(buffer, "Date: %04d-%02d-%02d", 2000 + date->Year, date->Month, date->Date);
SSD1306_GotoXY(0, 15);
SSD1306_Puts(buffer, &Font_7x10, SSD1306_COLOR_WHITE);
SSD1306_UpdateScreen(); // 刷新显示
}
5. 关键注意事项
- 备份寄存器:通过
HAL_RTCEx_BKUPWrite/Read()避免每次上电都重置时间。 - 电池供电:确保VBAT引脚连接纽扣电池(典型电压3V)。
- 时钟精度:LSE精度较高(±2ppm),LSI精度较低(±5%)。
- 中断模式:如需更高效率,可启用RTC秒中断(Alarm A)替代轮询。
通过以上步骤,即可在STM32上实现实时时钟的显示功能。实际开发中需根据具体硬件调整配置。
RTC是什么?RTC实时时钟实验
文章目录前言一、RTC是什么?二、RTC实时时钟实验1.引入库2.读入数据总结前言前面我们说了OLED实验,是一个比较好的显示测试代码的方法。现在我们学习关于RTC
STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)
STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)
资料下载
李娜
2021-11-23 18:06:59
STM32 RTC实时时钟资料下载
电子发烧友网为你提供STM32 RTC实时时钟资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
资料下载
好名字
2021-04-16 08:48:25
STM32的实时时钟介绍
OS:Windows 64Developmentkit:MDK5.14IDE:UV4MCU:STM32F103C8T61、RTC时钟简介 STM32
浅谈RTC实时时钟特征与原理
一、RTC实时时钟特征与原理 查看STM32中文手册 16 实时时钟(RTC)(308页) RTC (Real Time Clock):
2021-06-30 15:54:18
STM32实时时钟显示问题如何解决
请问一下,我第一次写实时时钟的时候可以显示,但是我忘了放后备电源电池了,直接把电源线给拔了,然后现在再连上不止设置,而且连时钟
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 传感器常见类型有哪些?
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机