STM32F103基于RTC实现简单日历

一、 RTC

1.定义:

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片。 RTC芯片是一种能提供日历/时钟(世纪、年、月、时、分、秒)及数据存储等功能的专用集成电路。

2.应用

  • 跟踪日期和时间。
  • 报警、闹钟、看门狗、高精度的校准寄存器。
  • 在待机状态下,作为逻辑电路的主时钟。
  • 信号时钟源和参数设置存储电路。

3.应用领域

  • 适合于一切需要微功耗及准确计时的场合。

  • 嵌入式领域:车载电子、手机、数码相机、MP3、MP4、电子词典等

  • 电器仪表:电视机、复费率电表、高精度时钟、可编程时间控制器等。

  • 通信工程、电气自动化、工业控制等自动化程度高的领域中的无人值守环境。

4.特点

计时准确、耗电低、体积小、价格便宜。

二、CubeMX创建项目

1.配置RCC

在这里插入图片描述

2.配置RTC

在这里插入图片描述

3.配置串口

在这里插入图片描述

4.配置时钟

在这里插入图片描述

5.配置项目

在这里插入图片描述

三、RTC操作

1.HAL库RTC相关操作函数

/*设置系统时间*/
HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format) 
/*读取系统时间*/
HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
/*设置系统日期*/
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
/*读取系统日期*/
HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
/*启动报警功能*/
HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
/*设置报警中断*/
HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
/*报警时间回调函数*/
__weak void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
/*写入后备储存器*/
void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
/*读取后备储存器*/
uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister  

2.读取RTC初始日期

定义日期时间对象

RTC_DateTypeDef date;  //获取日期结构体

RTC_TimeTypeDef time;   //获取时间结构体

获取日期和时间并输出

		HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN);
		HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN);
		printf("%02d/%02d/%02d %02d:%02d:%02d\r\n",date.Year,date.Month,date.Date,time.Hours,time.Minutes,time.Seconds);
		HAL_Delay(1000);

结果

可以发现输出的默认日期为0000/01/01 00:00:00,HAL库的日期是需要默认+2000的,也就是2000/01/01 00:00:00。
在这里插入图片描述

3.输出当前时间

初始化日期和时间

	date.Year=21;
	date.Month=11;
	date.Date=29;
	date.WeekDay=RTC_WEEKDAY_FRIDAY;
	
	time.Hours=20;
    time.Minutes=20;
	time.Seconds=20;
	
	HAL_RTC_SetDate(&hrtc,&date,RTC_FORMAT_BIN);
	HAL_RTC_SetTime(&hrtc,&time,RTC_FORMAT_BIN);

获取日期和时间并输出

		HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN);
		HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN);
		printf("%0004d/%02d/%02d %02d:%02d:%02d\r\n",date.Year+2000,date.Month,date.Date,time.Hours,time.Minutes,time.Seconds);
		HAL_Delay(1000);

结果

在这里插入图片描述

4.使用keil仿真查看串口

红色为PC13的波形,蓝色为串口一的波形。
由于没有明显的划分字节,不好分析。所以建议使用下面的SaleaeLogic16逻辑分析仪进行分析。
在这里插入图片描述

5.使用SaleaeLogic16逻辑分析仪分析串口协议

截取5秒的波形图

CH0为串口1的输出波形,CH1为GPIOC13的波形
在这里插入图片描述

GPIOC13LED波形

可以发现PC13引脚每秒发生一次翻转,参考代码可以发现确实如此
在这里插入图片描述

串口波形

放大串口的波形
在这里插入图片描述
每八个点对应一个字节
其中高电平对应1,低电平对应0。
从右往左读,第一个的二进制为00110010,对应十进制的50,也就是数字2对应的ASCII码值。

在这里插入图片描述
该波形全部数据依次为2021/11//29 20:43:25\r\n
在这里插入图片描述

四、总结

RTC可以帮助我们获取时间戳

五、参考

https://blog.csdn.net/as480133937/article/details/105741893

六、源码

https://github.com/TangtangSix/RTCProject

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 电子日历是一种基于STM32F103RTC实时时钟部件的电子设备,它可以显示当前日期、时间和天气等信息。它可以帮助人们更方便地了解时间和日期,同时还可以提供一些实用的功能,比如闹钟、倒计时等。电子日历的设计需要考虑到硬件和软件的结合,以及用户界面的友好性和易用性。同时,还需要考虑到电源管理和节能等问题,以确保设备的稳定性和可靠性。 ### 回答2: 随着当代科技的快速发展,我们已经习惯了电子日历。当我们想要了解今天是星期几、几号、有哪些节日时,我们可以轻松地通过电子日历了解这些信息。那么,什么是电子日历呢?它又是如何工作的呢? 电子日历就是利用电子元器件来实现日期和时间显示的设备。它可以通过内置的时钟来自动地显示日期和时间,实现闹钟、倒计时等功能。而stm32f103是一款基于ARM Cortex-M3内核的微控制器,具备高性能、低功耗和可扩展性等优点,因此,它成为了很多电子设备的首选芯片。 与此同时,RTC实时时钟部件是硬件电路中的一种电子部件,它可以根据电源掉电、干扰等情况来保证电子设备的时间准确,实现长时间的时间计算和存储。在电子日历中,RTC实时时钟部件起着非常重要的作用,它的精确定时功能可以保证日历的时间和日期准确无误。 基于stm32f103RTC实时时钟部件的电子日历除了传统的日期和时间显示功能外,还可以实现一些实用的功能,比如闹钟、温度、湿度、气压等传感器功能。通过传感器和RTC实时时钟部件,可以实现各种功能的联动,比如在特定时间点开启电风扇、自动调节温度、提醒用户下雨天要关窗等等。同时,电子日历也可以实现对数据的存储和读取,例如存储用户喜欢的音乐、记录某些事件发生的时间等等。 总之,基于stm32f103RTC实时时钟部件的电子日历,可以实现多种实用功能,如闹钟、传感器和数据存储等,为人们提供更加方便的生活方式。未来,我们相信电子日历将会在各个领域得到更广泛的应用。 ### 回答3: 电子日历是一款功能多样、实用性强的电子产品,其主要功能是显示年、月、日、星期和时间,还可以提供闹钟、定时等功能。基于STM32F103RTC实时时钟部件设计的电子日历,可以准确地保存时间,避免用户手动设置时间带来的误差,同时也可以实现闹钟、定时等多种功能。 STM32F103是一款功能强大、性能稳定、集成度高的32位微控制器,常用于各种嵌入式系统设计中。其具有丰富的模拟和数字外设,可以满足不同应用需求。 RTC实时时钟部件是一种用于精确计时的电子元件,可以使用电池供电,在掉电情况下仍然能够继续计时。通过STM32F103RTC实时时钟部件的结合,可以实现电子日历的年、月、日、星期和时间的准确显示。同时,由于RTC实时时钟部件具有低功耗的特性,可以有效延长电子日历的使用寿命。 在电子日历的设计中,需要采用合适的显示器件来显示日期和时间信息。这些显示器件可以是液晶显示器、数码管等,具体选择可以根据产品设计的需求来确定。 电子日历设计时,也需要考虑用户体验和易用性。可以加入人机交互界面,通过按钮、旋钮等方式进行用户操作,实现闹钟、定时等功能。同时,还可以提供语音提示、震动反馈等功能,进一步提升用户体验。 总之,基于STM32F103RTC实时时钟部件设计的电子日历,具有实用性高、功能丰富、使用寿命长等特点,可以广泛应用于生活和工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值