登录/注册

stm32实时时钟显示

stm32实时时钟显示

更多

在STM32上实现实时时钟(RTC)显示通常包含以下步骤,这里以使用STM32CubeMX配置和HAL库为例进行说明:


1. 硬件准备


2. 配置步骤(使用STM32CubeMX)

(1) 启用RTC时钟源

(2) 配置日期和时间

(3) 配置显示接口

(4) 生成代码


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, &currentTime, RTC_FORMAT_BIN);
    HAL_RTC_GetDate(&hrtc, &currentDate, 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. 关键注意事项

  1. 备份寄存器:通过HAL_RTCEx_BKUPWrite/Read()避免每次上电都重置时间。
  2. 电池供电:确保VBAT引脚连接纽扣电池(典型电压3V)。
  3. 时钟精度:LSE精度较高(±2ppm),LSI精度较低(±5%)。
  4. 中断模式:如需更高效率,可启用RTC秒中断(Alarm A)替代轮询。

通过以上步骤,即可在STM32上实现实时时钟的显示功能。实际开发中需根据具体硬件调整配置。

STM32 RTC实时时钟(一)

STM32处理器内部集成了实时时钟控制器(RTC),因此在实现实时时钟功能时,无须外扩

2023-07-22 15:41:20

RTC是什么?RTC实时时钟实验

文章目录前言一、RTC是什么?二、RTC实时时钟实验1.引入库2.读入数据总结前言前面我们说了OLED实验,是一个比较好的显示测试代码的方法。现在我们学习关于RTC

2022-01-13 07:19:28

C8T6实时时钟+0.96OLED显示资料合集

C8T6实时时钟+0.96OLED显示资料合集

资料下载 赵永强 2022-01-11 10:07:16

STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)

STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)

资料下载 李娜 2021-11-23 18:06:59

1602液晶显示的DS1302实时时钟资料合集

1602液晶显示的DS1302实时时钟资料合集

资料下载 风中浪子111 2021-09-22 10:05:05

STM32系列MCU中使用硬件实时时钟AN3371

在STM32系列MCU中使用硬件实时时钟AN3371

资料下载 舟鱼归雁 2021-07-30 09:57:46

STM32 RTC实时时钟资料下载

电子发烧友网为你提供STM32 RTC实时时钟资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。

资料下载 好名字 2021-04-16 08:48:25

如何去使用STM32实时时钟RTC呢

实时时钟RTC是什么?如何去使用STM32的实时时钟RTC呢?有哪些注意事项?

2021-11-22 08:05:18

如何去实现STM32实时时钟RTC的时间计算部分

STM32的实时时钟RTC是什么?STM32的实时时钟RTC是由哪些部分

2021-11-22 06:33:04

STM32实时时钟介绍

OS:Windows 64Developmentkit:MDK5.14IDE:UV4MCU:STM32F103C8T61、RTC时钟简介  STM32

2021-08-18 07:01:39

浅谈RTC实时时钟特征与原理

一、RTC实时时钟特征与原理 查看STM32中文手册 16 实时时钟(RTC)(308页) RTC (Real Time Clock):

2021-06-30 15:54:18

实时时钟的硬件结构_实时时钟故障怎么解决

 实时时钟的缩写是RTC(Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。

2020-11-16 17:10:14

STM32实时时钟显示问题如何解决

请问一下,我第一次写实时时钟的时候可以显示,但是我忘了放后备电源电池了,直接把电源线给拔了,然后现在再连上不止设置,而且连时钟

2020-06-03 04:35:05

STM32F0xx_ RTC实时时钟配置详细过程

STM32F0xx_RTC实时时钟配置详细过程

2020-04-07 11:50:54

7天热门专题 换一换
相关标签