【STM32】(F207)_HAL库开发教程(三)—RTC使用

前言

不必害怕未知,无需恐惧犯错,做一个Creator!

目录

  • 前言
  • 一、RTC简介
    • 1.时钟与分频
    • 2.开发步骤
  • 二、STM32CbueMX配置
    • 1.选取RTC进行配置
    • 2.配置RTC模式
    • 3.配置RTC参数
    • 4.配置NVIC中断优先级
  • 三、Keil程序开发
    • 1.主要功能函数
    • 2.相关代码
    • 1.日历更新
    • 2.日历获取
  • 总结

一、RTC简介

STM32F2的实时时钟(RTC)是一个独立的BCD(Binary Coded Decimal)定时器/计时器,提供了一个包括时间与日期的时钟/日历功能,两个闹钟中断,一个定期唤醒中断,并且包括一个自动唤醒单位管理的低功耗模式。

1.时钟与分频

STM32F2的RTC(RTCCLK)时钟源头可以从LES时钟、LSI时钟以及HSE时钟中进行选择,一般我们选择LSE外部低速时钟,即32.768Khz外部晶振作为时钟源。并且通过配置异步预分频器和同步预分频器设置1Hz的时钟核心。

2.开发步骤

1.STM32CubeMX中配置:时钟+RTC模式+RTC参数
2.Keil中对RTC时间和日期进行设置和获取
3.编写中断服务函数

二、STM32CbueMX配置

1.选取RTC进行配置

在STM32CubeMX首页找到并选择RTC进行相关配置
【STM32】(F207)_HAL库开发教程(三)—RTC使用_第1张图片

2.配置RTC模式

主要对RTC的各个模式进行选择,包括使能日历,闹钟和唤醒中断等。这里选择配置图中三处

【STM32】(F207)_HAL库开发教程(三)—RTC使用_第2张图片

3.配置RTC参数

主要对RTC的各个参数进行配置,包括:时间,日期,预分频设置,周期性唤醒的频率和计数值。这里配置如图所示。
【STM32】(F207)_HAL库开发教程(三)—RTC使用_第3张图片

4.配置NVIC中断优先级

主要对唤醒中断和闹钟中断的NVIC优先级进行配置
【STM32】(F207)_HAL库开发教程(三)—RTC使用_第4张图片

三、Keil程序开发

1.主要功能函数

设置日历参数
HAL_RTC_GetDate(&hrtc,&RTC_DateStruct,RTC_FORMAT_BIN);
HAL_RTC_GetTime(&hrtc,&RTC_TimeStruct,RTC_FORMAT_BIN);
获取日历参数
HAL_RTC_SetTime(&hrtc, &RTC_Time, RTC_FORMAT_BIN);
HAL_RTC_SetDate(&hrtc, &RTC_Date, RTC_FORMAT_BIN);

其中,第一个参数为RTC结构体,第二个参数为Time和Date结构体,第三个参数可设置为:RTC_FORMAT_BIN或RTC_FORMAT_BCD

周期性唤醒中断
void RTC_WKUP_IRQHandler(void)

2.相关代码

1.日历更新

日历更新程序如下(示例):

RTC_Time.Hours = 1;
RTC_Time.Minutes = 2;
RTC_Time.Seconds = 3;
RTC_Time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
RTC_Time.StoreOperation = RTC_STOREOPERATION_RESET;
HAL_RTC_SetTime(&hrtc, &RTC_Time, RTC_FORMAT_BIN);
		
RTC_Date.WeekDay = 4;
RTC_Date.Month = 5;
RTC_Date.Date = 6;
RTC_Date.Year = 7;	
HAL_RTC_SetDate(&hrtc, &RTC_Date, RTC_FORMAT_BIN);

2.日历获取

日历获取程序如下(示例):

HAL_RTC_GetTime(&hrtc,&RTC_TimeStruct,RTC_FORMAT_BIN);
printf("Time:%02d:%02d:%02d",RTC_TimeStruct.Hours,RTC_TimeStruct.Minutes,RTC_TimeStruct.Seconds); 
HAL_RTC_GetDate(&hrtc,&RTC_DateStruct,RTC_FORMAT_BIN);
printf("Date:20%02d-%02d-%02d",RTC_DateStruct.Year,RTC_DateStruct.Month,RTC_DateStruct.Date); 

总结

本项目中RTC的使用主要可以归纳为:
1.日历的获取
2.日历的更新
3.周期性唤醒中断的使用
在正确配置好CubeMX后,通过对主要功能函数的使用实现对RTC的灵活使用。


提示:若有错误不足,欢迎批评指正。该系列文章仅供参考,欢迎互相学习交流。

感谢你的阅读,期待你的关注收藏点赞!

你可能感兴趣的:(stm32,嵌入式,rtc)