STM32CubeMx学习笔记--RTC实时时钟

一、RTC实时时钟简介

RTC(Real-Time Clock)实时时钟是一种可以像时钟一样输出实际时间的电子设备,一般为集成电路,因此也称为时钟芯片。它的主要功能是为我们提供时间、日历及闹钟等与时间相关的服务。

RTC的工作原理基于一个32位的计数器,它以固定的时间间隔(通常为1秒)递增。这个计数器可以通过预分频器来调整,以满足不同应用的需求。当计数器溢出时,它会产生一个中断或者触发其他的事件,比如闹钟功能。RTC模块还具有多种功能,比如自动校准、低功耗模式等,可以进一步提高其灵活性和可靠性。

RTC通常用于在软件或硬件中跟踪时钟时间和日历日期,它的许多功能是非常专业的,是维持高精度和非常可靠的操作所必需的。在STM32F103这样的微控制器中,RTC模块提供了自动闹钟、自动唤醒、定时器和日历功能,可以通过软件配置来实现各种功能。同时,RTC模块还提供了备份寄存器,用于保存RTC模块的配置和状态信息,以便在掉电后能够继续保持数据。

总的来说,单片机RTC实时时钟是一个重要的组成部分,为各种需要时间计数和日期显示的应用场景提供了精确的时间计数和日期显示功能。

下面我们通过STM32F407ZFT6为例进行讲解:

二、新建工程

1、选择芯片型号

2、配置时钟RCC

选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

这个项目我们要用到RTC实时时钟,所以下面的Low Speed Clock也要选上Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

3、Timers里的RTC勾选Activate Clock Source(激活时钟源)和Activate Calendar(激活万年历),只有完成上面这两步操作,才能进行下面的时钟树配置,时钟树我们需要讲To RTC(kHz)前面选择LSE

4、时钟树配置

在clock Configuration中将HCLK配置为最高频率然后回车

RTC 设备因为其独特的运行方式(即掉电依旧运行)使用 HSE 分频时钟或者 LSI 的时候,在主电源 VDD 掉电的情况下,这两个时钟来源都会受到影响,资源消耗太大,小小的纽扣电池根本吃不消。没法保证 RTC 正常工作.所以 RTC 一般都时钟低速外部时钟 LSE。

5、选择调试模式

SYS 设置,选择 Debug 为 Serial Wire

Timebase Source时钟源可以选择SysTick

6、参数配置

7、生成代码

每个外设生成独立的 ’.c/.h’ 文件
不勾:所有初始化代码都生成在 main.c
勾选:初始化代码生成在对应的外设文件。

点击 GENERATE CODE 生成代码。

三、修改代码

添加全局变量

在 main.c 头部添加 RTC 相关结构体 GetData 和 GetTime

/* Private variables ---------------------------------------------------------*/
RTC_HandleTypeDef hrtc;

UART_HandleTypeDef huart1;

/* USER CODE BEGIN PV */
RTC_DateTypeDef GetData;  //获取日期结构体
RTC_TimeTypeDef GetTime;   //获取时间结构体
/* USER CODE END PV */

                        

在while中添加读取时间函数

while (1)
  {
    /* 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);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

附带串口重定向代码:

前提是在CubeMx中配置好了串口以及添加了stdio.h头文件

int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit (&huart1, (uint8_t *)&ch,1,0xffff);
	return ch;
}

int fgetc(FILE *f)
{
	uint8_t ch=0;
	HAL_UART_Receive (&huart1,&ch,1,0xffff);
}

打印成功:

参考链接:https://blog.csdn.net/qq_36347513/article/details/113663264

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32CubeMX是一个用于STM32微控制器的图形化配置工具,可以帮助用户快速配置各种外设和时钟。在STM32CubeMX中配置RTC时钟需要以下步骤: 1. 打开STM32CubeMX软件,选择对应的STM32微控制器型号。 2. 在“时钟配置”选项卡中,勾选“RTC时钟”选项。 3. 在“RTC时钟”选项卡中,选择RTC时钟源和分频系数。常用的RTC时钟源有LSI和LSE,分频系数可以根据需要进行配置。 4. 点击“生成代码”按钮,生成相应的代码。 5. 在生成的代码中,可以找到RTC时钟初始化函数和RTC时钟中断处理函数,根据需要进行修改和调用。 以上就是STM32CubeMXRTC时钟配置的基本步骤。需要注意的是,RTC时钟的配置需要根据具体的应用场景进行调整,以保证系统的稳定性和可靠性。 ### 回答2: STM32CubeMX是STMicroelectronics公司推出的一款自动生成STM32系列微控制器程序框架的软件工具,支持多种嵌入式开发环境,如Keil MDK、IAR、GCCR等。其中,RTC时钟配置是STM32CubeMX中的一个重要功能,在嵌入式系统中常被使用。 首先,RTC(Real Time Clock)是一种能够在STM32微控制器中存储和计算时间信息的电路模块,通常用于时钟管理、计时、定时等应用。RTC模块工作时需要使用独立的振荡器,因此使用RTC需要单独配置其时钟源。下面是关于STM32CubeMXRTC时钟配置的详细步骤: 1.初始化RTC时钟配置 打开STM32CubeMX,进入“Clock Configuration”页面,选择“RTC”时钟配置选项,勾选“LSE”以使RTC时钟使用外部低速振荡器(LSE),勾选“RTC输出来源”以选择RTC时钟输出源(可选)。 2.配置LSE振荡器 在“Pinout & Configuration”页面中,选中“Crystal OSC”菜单,在振荡器引脚配置区域中,选择使用外部低速振荡器(LSE)并设置其频率(例如32.768kHz)。此处需要注意,LSE型号和其供应商要与使用的开发板相对应,同时需要进行测试以确保振荡器正常工作。 3.启用RTC时钟 在“Clock Configuration”页面中,勾选“RTC时钟输出开启”选项即可启用RTC时钟功能,同时选择“RTC输出来源”以选择其时钟源。 4.生成代码 当完成以上配置后,单击“GENERATE CODE”按钮生成代码,STM32CubeMX会自动生成用于配置RTC时钟的C代码,同时将其添加到启动文件中。 上述过程中,还可以对RTC时钟进行其他配置,如时钟中断、闹钟配置等。在STM32CubeMX中,RTC时钟配置非常方便快捷,使得我们能够在嵌入式系统中高效地管理时间,实现定时、计时等功能。同时,还要注意振荡器的选择和质量,以保证RTC时钟的准确性和可靠性。 ### 回答3: STM32CubeMX是一款集成开发环境,可以帮助嵌入式系统开发人员快速搭建STM32微控制器的开发环境,方便用户快速配置微控制器的外设、系统时钟等。 在STM32CubeMX中,RTC实时时钟)是一个重要的外设。RTC是一种独立的时间计数器,常用于需要精确时间计量的嵌入式应用。在STM32系列微控制器中,RTC可以使用外部低速晶振提供时钟信号,可以提供最大到210年的时间计数。 RTC的时钟配置主要包括以下几个步骤: 1. 设置外部低速晶振:在STM32CubeMX中,需要在RCC(Reset and Clock Control)中设置RTC的外部时钟源。用户需要先确定自己所用的外部低速晶振的频率,然后选择相应的外部时钟源。在选择完毕后,需要点击“Clock Configuration”按钮来确认设置。 2. 配置RTC时钟:在STM32CubeMX中,RTC时钟可以和主系统时钟分离,因此需要在RTC中进行配置。用户需要在RTC Configuration中选择“Clock Source”为“LSE”(即外部低速晶振),并设置预分频器,从而得到具体的RTC时钟频率。在确认完毕后,需要点击“Clock Configuration”按钮来保存设置。 3. 生成代码:在配置完毕后,用户需要点击“Generate Code”来生成相应的代码。STM32CubeMX会自动生成相应的初始化代码,用户只需要将其复制到自己的工程中即可。 4. 初始化RTC:在自己的工程中,用户需要调用HAL_RTC_Init()函数来初始化RTC。在初始化过程中,STM32CubeMX会设置RTC的时钟源和预分频器,从而保证RTC能够正常工作。 以上就是STM32CubeMXRTC时钟配置的步骤,用户可以根据自己的实际情况进行修改。在RTC时钟配置过程中,需要特别注意时钟源的选择和预分频器的设置,这一点对于RTC的正常工作非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值