当前位置: 首页 > news >正文

2025年第16届蓝桥杯嵌入式竞赛学习笔记(十四):RTC实时时钟

1.功能实现

①设置时间和日期

②读取时间和日期

③设置一个闹钟

2.STM32CubeMX配置

打开Timers栏,点击RTC进入配置界面,将时钟源与日历使能,随后使能中断

点开参数配置,设置24小时计数法,Data Format选择二进制数据形式,下面三栏分别为小时、分钟、秒。分别设置为23、30、10

日历的配置同时钟的时分秒一样随意配置即可。

进行闹钟A的配置,时分秒设为23、30、20,将Alarm Mask Date Week day 使能(闹钟响起时不考虑日期),配置完成后生成代码

3.代码配置

首先开打CubeMX给配置的rtc.c文件,将第37、38行定义的两个结构体复制到使用处

RTC_TimeTypeDef sTime = {0};RTC_TimeTypeDef sDate = {0};

 之后使用获取时间与日期函数

HAL_RTC_GetTime(&hrtc,&sTime,RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc,&sDate,RTC_FORMAT_BIN);

注意:即使不需要日期,也要将获取日期函数加上,不然时间不会流动

使用LCD屏查看

char Text[20];void LCD_Show(void)
{sprintf(Text,"%2d:%2d:%2d",sTime.Hours,sTime.Minutes,sTime.Seconds);LCD_DisplayStringLine(Line0,(uint8_t *)Text);sprintf(Text,"%d-%d-%d-%d",sDate.Year,sDate.Month,sDate.Date,sDate.WeekDay);LCD_DisplayStringLine(Line2,(uint8_t *)Text);
}

接下来写闹钟的中断

使用闹钟中断的回调函数

void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{//闹钟中断要执行的代码放这里
}

当时间达到闹钟A设置的参数时,触发中断回调函数

相关文章:

  • ESB —— 企业集成架构的基石:功能、架构与应用全解析
  • 详细解释浏览器是如何渲染页面的?
  • 国网B接口协议图像数据上报通知接口流程详解以及上报失败原因(电网B接口)
  • Docker 网络详解:从 docker0 网桥到网络命名空间
  • 深入Docker核心技术:从Namespace到容器逃逸防御
  • OpenCV 04.19 练习
  • Python带有else子句的循环语句
  • 【漫话机器学习系列】210.标准化(Standardization)
  • docker 大模型
  • Cribl 优化EC2 ip-host-region 数据
  • Grouped Query Attention (GQA) PyTorch实现
  • 关于学习STM32的C语言的知识
  • matlab 处理海洋数据并画图的工具包--ocean_data_tools
  • 基于模板匹配的信用卡号码识别系统
  • 学习笔记十七——Rust 支持面向对象编程吗?
  • system V消息队列和信号量的学习
  • Python番外——常用的包功能讲解和分类组合
  • 服务治理-搭建Nacos注册中心
  • @EnableAsync+@Async源码学习笔记之六
  • 【自动化测试框架】什么是对象层?
  • 商务部:试点示范已形成9批190多项创新成果向全国推广
  • 著名世界语教育家、翻译家魏以达逝世
  • “棉花糖爸爸”陈生梨:女儿将落户到贵州纳雍
  • 陈杨梅:为爸爸寻我19年没有放弃而感动,回家既紧张又期待
  • 国家统计局:3月全国城镇不包含在校生的16-24岁劳动力失业率降至16.5%
  • 习近平会见柬埔寨人民党主席、参议院主席洪森