(6)蓝桥杯嵌入式——实时时钟

(1)个人习惯

会新建单独的 RTC.c 和 RTC.h 放到HARAWARE文件夹下

(2)准备

  • 一、RTC介绍
    STM32 的实时时钟(RTC)是一个独立的定时器
    STM32 的 RTC 模块拥有一组连续计数的计数器,
    在相应软件配置下,可提供时钟日历的功能。
    修改计数器的值可以重新设置系统当前的时间和日期。
    RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域
    在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。
    在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。
    在要设置时间之前, 先要取消备份区域(BKP)写保护

  • 二、看到这里可见电源控制(PWR) 与 **备份寄存器(BKP)**非常重要——相关文件:在这里插入图片描述
    在这里插入图片描述

  • 三、时钟源选择
    那么很重要的一点来了,我们蓝桥杯嵌入式板子,只能使用LSI时钟源,据官方说明是用不了其他时钟源的,所以这点是非常重要的。
    在这里插入图片描述

  • 四、秒中断
    在这里插入图片描述

(3)编写 void RTC_init(u8 HH,u8 MM,u8 SS) 初始函数

在这里插入图片描述

(4)编写 void RTC_IRQHandler(void) 秒中断函数

在这里插入图片描述

(5)编写 void DealWith_0(void)时钟数据处理函数

在这里插入图片描述

(6)问题

读取到的时钟数据 TimeVal 1就代表1秒,1小时=3600秒。所以:
时 = TimeVal / 3600秒
分 = TimeVal % 3600 / 60秒
秒 = TimeVal % 3600 % 60秒

猜你喜欢

转载自blog.csdn.net/m0_46278925/article/details/113436777