蓝桥杯 stm32 RTC实时时钟
创始人
2024-05-23 04:34:10
0

文章代码使用 HAL 库。

文章目录

  • 前言
  • 一、RTC 重要特性:
  • 二、CubeMX 创建工程。
  • 三、读取系统日期 函数。
  • 四、读取系统时间 函数。
  • 四、在 LCD 上显示 时间。
  • 总结
        • 实验效果


前言

RTC (Real Time Clock): 实时时钟

RTC 模块拥有一个连续计数的 计数器,在相应的软件配置下,可以提供时钟日历的功能。

一、RTC 重要特性:

参考手册:

在这里插入图片描述
在这里插入图片描述

  1. 实时时钟(RTC)是一个独立的 BCD 计时器/计数器。

  2. 只要电源 电压 保持在工作范围内RTC 永远不会停止,无论设备状态。(在断电情况下 RTC 仍可以独立运行 )

  3. 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。、

  4. RTC 的 三种 时钟源 :
    在这里插入图片描述

(1) . 内部低功率RC振荡器。LSI 典型频率为32 kHz
(2) . 高速外部时钟。 HSE
(3) . 外部谐振器或振荡器。LSE 外部晶振 为 32.768 kHz。(更精确)

虽然 外部谐振器 LSE 更为精确,但是 我们比赛使用的板子 没有外接晶振。 所以 ,我们 使用 内部低功率 32 kHz 的 LSI 。


二、CubeMX 创建工程。

  1. 配置 RCC。在这里插入图片描述

  2. 激活 时钟源,日历。
    在这里插入图片描述

  3. 设置 时钟源 为 LSI。
    在这里插入图片描述

  4. 配置分频器。
    点击1 ,2 处 可以看到 两处的分频 都是 从 0 开始,则 127 相当于 第 128次。
    128 * 256 = 32768,正好是上面 外部谐振器 LSE 的频率
    在这里插入图片描述

由于我们使用的 时钟源 为 LSI, 它是 32 kHz。则 需要 配置 两个分频器(异步 / 同步分频器),将 RTC 模块的时钟 配置成 1HZ。 (那么每过1 秒就会 计时一次)

32 * 1000 = 32000 ,正好是 32KHZ.

在这里插入图片描述

  1. 设置 时间 ,日期。
    在 1 处可以设置 计时格式(12时 / 24 时 一天)。
    在 2 处可以设置 时分秒。(这里便于后面的实验,我们使用 23时 59分 55 秒,过5秒就可以看到变成 0 点)
    在 3 处 设置日期 年月,星期。
    在这里插入图片描述

  2. 设置工程模式和版本。
    在这里插入图片描述

  3. 加入.c /.h文件(便于编写代码)。
    在这里插入图片描述

  4. 创建工程。
    在这里插入图片描述

三、读取系统日期 函数。

HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)

功能: 获取 RTC时钟 的日期.
RTC_DateTypeDef * sDate: 获取 RTC 时间 的结构体.
Format: 获取日期的格式
RTC_FORMAT_BIN 使用16进制
RTC_FORMAT_BCD 使用BCD进制

  • 参数 一 对应的结构体 在 头文件 rtc .h 中。
    在这里插入图片描述

  • 对于 参数 二,参数 三, 我们直接进入 HAL_RTC_GetDate 函数里,就可以找到。
    在这里插入图片描述

例如:读取 时分秒

RTC_TimeTypeDef rtc_time;//获取时分秒HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN);

四、读取系统时间 函数。

HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)

功能: 获取RTC时钟的时间
参数:*RTC_TimeTypeDef sTime: 获取RTC时间的结构体.
Format: 获取时间的格式
RTC_FORMAT_BIN 使用16进制
RTC_FORMAT_BCD 使用BCD进制

  • 这里的参数 是进入 HAL_RTC_GetTime 找到的,具体方法和上面一样。

例如:读取 日期

RTC_DateTypeDef rtc_date;//获取 日期HAL_RTC_GetDate(&hrtc, &rtc_date, RTC_FORMAT_BIN);

四、在 LCD 上显示 时间。

这里 大家 有对 LCD 代码有不懂的,可以参考 我之前的文章:蓝桥杯 stm32 LCD显示及 数据格式化

	u8 display_buf[20];//显示 日期sprintf((char *)display_buf, "Dta: %02d-%02d-%02d",rtc_date.Year,rtc_date.Month,rtc_date.Date);LCD_DisplayStringLine(Line1, display_buf);//显示时分秒sprintf((char *)display_buf, "Time: %02d-%02d-%02d",rtc_time.Hours,rtc_time.Minutes,rtc_time.Seconds);LCD_DisplayStringLine(Line4, display_buf);

总结

实验效果

RTC 实时时钟的实验效果 放在 B 占, 大家有兴趣的可以看看。

以下网址:
https://www.bilibili.com/video/BV1m341197dQ/?vd_source=986c364d205fa1124b337bc665f57c4f

相关内容

热门资讯

我学会了作文 我学会了作文集合15篇  在现实生活或工作学习中,大家都跟作文打过交道吧,通过作文可以把我们那些零零...
畅想未来的作文300字 畅想未来的作文300字(通用59篇)  在平凡的学习、工作、生活中,大家都写过作文,肯定对各类作文都...
田园风光作文 【精品】田园风光作文合集7篇  在学习、工作、生活中,大家对作文都不陌生吧,借助作文人们可以反映客观...
胜似亲人的优秀作文 胜似亲人的优秀作文范文  啦啦啦,啦啦啦 熟悉我的同学一定会发现,最近我经常以这种状态从他们身边经过...
接受自己作文 接受自己作文三篇  无论是身处学校还是步入社会,许多人都写过作文吧,作文根据体裁的不同可以分为记叙文...
开卷是否有益的作文300字 关于开卷是否有益的作文300字6篇  在平凡的学习、工作、生活中,大家对作文都再熟悉不过了吧,作文是...
开学感受作文 关于开学感受作文600字25篇  在平平淡淡的学习、工作、生活中,大家或多或少都会接触过作文吧,借助...
走自己的路作文 走自己的路作文精选10篇  在日常学习、工作抑或是生活中,大家都写过作文吧,作文可分为小学作文、中学...
养蚕成长观察日记 养蚕成长观察日记(通用28篇)  一天即将过去了,心中一定有不少感想,是时候静下心来好好写写日记了。...
奖励自己作文 奖励自己作文(通用49篇)  在学习、工作、生活中,大家都跟作文打过交道吧,借助作文可以宣泄心中的情...
我变成了什么作文 我变成了什么作文15篇  在生活、工作和学习中,大家对作文都不陌生吧,作文是通过文字来表达一个主题意...
儿童童话故事 儿童童话故事(精选40篇)  童话故事是指儿童文学的一种体裁,童话中丰富的想象和夸张可以活跃你的思维...
与诗同行作文 与诗同行作文七篇  无论是身处学校还是步入社会,大家都不可避免地会接触到作文吧,作文是通过文字来表达...
未来城市作文 关于未来城市作文5篇  无论在学习、工作或是生活中,大家都尝试过写作文吧,写作文是培养人们的观察力、...
蚕卵的观察日记 蚕卵的观察日记蚕卵的观察日记1  5月4日第一天  今天,施老师发给我们一人一盒蚕宝宝,让我们带回家...
三年级父母的爱作文 关于三年级父母的爱作文合集10篇  在平凡的学习、工作、生活中,大家都跟作文打过交道吧,借助作文人们...
成长烦恼的作文600字 有关成长烦恼的作文600字4篇  在学习、工作乃至生活中,大家或多或少都会接触过作文吧,作文根据体裁...
女生介绍自己的作文 女生介绍自己的作文10篇  在生活中,人们的个性,职业,年龄及所出的时间,环境和地位不同,说出的话也...
描写自己作文 描写自己作文(通用15篇)  在现实生活或工作学习中,大家总少不了接触作文吧,借助作文可以提高我们的...
自己选择的路作文 自己选择的路作文15篇  在平平淡淡的学习、工作、生活中,许多人都有过写作文的经历,对作文都不陌生吧...