STM32CubeMX学习笔记-RTC实时时钟使用

news2024/10/6 8:37:36

STM32CubeMX学习笔记-RTC实时时钟使用

  • 一、RTC简介
  • 二、新建工程
  • 三、RTC
    • 3.1 选择时钟
    • 3.3 生成代码
    • 3.5 添加读取时间函数

原创链接 1

一、RTC简介

实时时钟(RTC) 是一个独立的 BCD 定时器/计数器。 RTC 提供具有可编程闹钟中断功能的日历时钟/日历。RTC 还包含具有中断功能的周期性可编程唤醒标志。两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。只要芯片的备用电源一直供电,RTC上的时间会一直走。

STM32 的 RTC 外设(Real Time Clock),实质是一个掉电后还继续运行的定时器。从定时器的角度来说,相对于通用定时器 TIM 外设,它十分简单,只有很纯粹的计时和触发中断的功能;但从掉电还继续运行的角度来说,它却是 STM32 中唯一一个具有如此强大功能的外设。所以 RTC 外设的复杂之处并不在于它的定时功能,而在于它掉电还继续运行的特性。在主电源 VDD有效的情况下(待机),RTC 还可以配置闹钟事件使 STM32 退出待机模式。

二、新建工程

1. 打开 STM32CubeMX 软件,点击“新建工程”在这里插入图片描述

2. 选择 MCU 和封装
在这里插入图片描述
3. 配置时钟
RCC 设置,选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
开启 LSE(外部低速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
在这里插入图片描述

选择 Clock Configuration,配置系统时钟 SYSCLK 为 72MHz
修改 HCLK 的值为 72 后,输入回车,软件会自动修改所有配置
在这里插入图片描述

4. 配置调试模式
非常重要的一步,否则会造成第一次烧录程序后续无法识别调试器

SYS 设置,选择 Debug 为 Serial Wire
在这里插入图片描述

三、RTC

3.1 选择时钟

选择 Clock Configuration,RTC 时钟选择为 外部低速晶振(LSE),频率为 32.768KHz。

RTC 设备因为其独特的运行方式(即掉电依旧运行)使用 HSE 分频时钟或者 LSI 的时候,在主电源 VDD 掉电的情况下,这两个时钟来源都会受到影响,资源消耗太大,小小的纽扣电池根本吃不消。没法保证 RTC 正常工作.所以 RTC 一般都时钟低速外部时钟 LSE。
在这里插入图片描述

3.2 参数配置
Timers 中选择 RTC 设置,并勾选 Activate Clock Source 激活时钟源,勾选 Activate Calendar 激活万年历。
在这里插入图片描述

RTC OUT:Disable(是否使能 tamper(PC13)引脚上输出校正的秒脉冲时钟)
Tamper:不勾选(是否使能tamper(PC13)引脚作为入侵检测功能)

RTC校验功能,使能侵入检测功能。RTC时钟经64分频输出到侵入检测引脚TAMPER上
当 TAMPER引脚上的信号从 0变成1或者从 1变成 0(取决于备份控制寄存器BKP_CR的 TPAL位),会产生一个侵入检测事件。侵入检测事件将所有数据备份寄存器内容清除。

Parameter Settings 进行具体参数配置。
在这里插入图片描述

●Calendar Time

●Data Format(日期格式):BCD data format

在这里插入图片描述

●Hours(小时)
●Minutes(分钟)
●Seconds(秒)

Calendat Date

●Week Day(星期)
●Month(月份)
●Date(日期)
●Year(年份)

3.3 生成代码

输入项目名和项目路径
在这里插入图片描述

选择应用的 IDE 开发环境 MDK-ARM V5
在这里插入图片描述

每个外设生成独立的 ’.c/.h’ 文件
不勾:所有初始化代码都生成在 main.c
勾选:初始化代码生成在对应的外设文件。 如 GPIO 初始化代码生成在 gpio.c 中。
在这里插入图片描述

点击 GENERATE CODE 生成代码
在这里插入图片描述

3.4 添加全局变量
main.c 头部添加 RTC 相关结构体 GetDataGetTime

/* Private variables ---------------------------------------------------------*/
RTC_HandleTypeDef hrtc;

UART_HandleTypeDef huart1;

/* USER CODE BEGIN PV */
RTC_DateTypeDef GetData;  //获取日期结构体
RTC_TimeTypeDef GetTime;   //获取时间结构体
/* USER CODE END PV */

3.5 添加读取时间函数

在while循环中添加:

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_USART1_UART_Init();
  MX_RTC_Init();
  /* USER CODE BEGIN 2 */
  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* Get the RTC current Time */
    HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);
    /* Get the RTC current Date */
    HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);

    /* Display date Format : yy/mm/dd */
    printf("%02d/%02d/%02d\r\n",2000 + GetData.Year, GetData.Month, GetData.Date);
    /* Display time Format : hh:mm:ss */
    printf("%02d:%02d:%02d\r\n",GetTime.Hours, GetTime.Minutes, GetTime.Seconds);

    printf("\r\n");

    HAL_Delay(1000);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

3.6 查看打印
串口打印功能查看 STM32CubeMX学习笔记(6)——USART串口使用
在这里插入图片描述


  1. 链接:https://www.jianshu.com/p/4a1d0c221a4a 作者:Leung_ManWah ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java开源商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

flume安装

安装之前要先注意一下版本兼容,就是jdk的版本与flume的版本 下载flume压缩包 Index of /dist/flume (apache.org)https://archive.apache.org/dist/flume/然后解压到一个目录,以/opt/moudle为例 进入/opt/moudle/apache-flume-1.9.0-bin/conf cp flume-env.sh.template flu…

SM5401是一款锂电池电源管理芯片

简介: SM5401 是一款集成锂电池充电管理, LED 指示功能,升压转换器的移动电源管理芯片,外围只需极少的元件,就可以组成功能强大的移动电源方案。 SM5401 内部集成了 0.8A 的线性充电模式,支持对 0V 电池充电…

第八章 排序 八、堆的插入与删除

一、插入元素 二、删除元素 1、删除元素13,将堆底元素填充到空处 2、为满足小根堆的特性,要让46不断下坠 三、总结

紧固行业内卷严重,张友君的飞沃科技能独善其身吗?

文|新熔财经 作者|文泽 “历经转折”的飞沃科技(301232.SZ)于今年6月,登陆资本市场。 公开资料显示,飞沃科技主要从事风电类高强度紧固件业务,主要产品包括预埋螺套、整机螺栓、锚栓组件。公司的实际控制人是张友君…

mysql-执行计划

1. 执行计划表概述 id相同表示加载表的顺序是从上到下。 id不同id值越大,优先级越高,越先被执行。id有相同,也有不同,同时存在。 id相同的可以认为是一组,从上往下顺序执行;在所有的组中,id的值…

移远通信5G RedCap模组现网实测再获新成果!携手行业伙伴加速5G产业成熟发展

近日,移远通信联合中国移动、爱立信、高通等产业链合作伙伴,在湖南岳阳5G现网中成功完成了基于5G RedCap 模组,开展的行业首个连接建立、数据传输、语音通话等功能测试。这也意味着,移远通信在推动RedCap产业成熟与应用落地上&…

秋日氛围 VoxEdit 大赛

将您的创造力提升到一个新的水平。在这个美妙的季节性 VoxEdit 比赛中释放您惊人的体素设计技能。 下载 VoxEdit 开始创作吧! 主题:秋天的颜色无处不在。红色、黄色和橙色。南瓜、树叶和温暖舒适的毛衣。创造一个秋天相关的资产。无论是一个穿着秋季衣…

基于安卓android微信小程序的校园求职系统

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…

虚拟环境搭建、后台项目创建及目录调整、封装logger、封装全局异常、封装Response、后台数据库创建

1 虚拟环境搭建 #1 虚拟环境作用多个项目,自己有自己的环境,装的模块属于自己的# 2 使用pycharm创建-一般放在项目路径下:venv文件夹-lib文件夹---》site-package--》虚拟环境装的模块,都会放在这里-scripts--》python&#xff0…

Flink---12、状态后端(HashMapStateBackend/RocksDB)、如何选择正确的状态后端

星光下的赶路人star的个人主页 大鹏一日同风起,扶摇直上九万里 文章目录 1、状态后端(State Backends)1.1 状态后端的分类(HashMapStateBackend/RocksDB)1.2 如何选择正确的状态后端1.3 状态后端的配置 1、状态后端&am…

人工智能(AI)技术的行业应用

人工智能(AI)技术具有广泛的应用潜力,几乎可以应用于各个行业和领域。以下是一些AI技术在不同行业中的主要应用领域,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

DM宣传单制作,利用在线模板,快速替换文字

如果你需要制作一批宣传单,但是时间很紧,而且没有专业的设计人员协助,那么你可以选择使用在线模板来快速制作宣传单。本文将介绍如何使用乔拓云平台,快速制作宣传单的方法。 步骤一:选择适合的在线制作工具 首先&…

【刷题笔记10.6】LeetCode:翻转二叉树

LeetCode:翻转二叉树 一、题目描述 给你一颗二叉树的根节点root,翻转这颗二叉树,并返回其根节点。 二、分析 我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。 仔细看下题目的 输入 和 输出,输出的左右…

leetCode 300.最长递增子序列 动态规划 + 图解

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1&#…

WebKit Inside: CSS 样式表的匹配时机

WebKit Inside: CSS 的解析 介绍了 CSS 样式表的解析过程,这篇文章继续介绍 CSS 的匹配时机。 无外部样式表 内部样式表和行内样式表本身就在 HTML 里面,解析 HTML 标签构建 DOM 树时内部样式表和行内样式就会被解析完毕。因此如果 HTML 里面只有内部样式…

unity脚本_GameObject c#

新创建一个脚本 Test02 让场景中除了空物体GameObject全部失活 再将Test02挂载在空物体上 获取成员变量 首先获取挂载脚本的场景物体上的名字 当然也可以修改场景上物体的名字 也可以判断检测场景上的物体是否被激活 我们也可以检测场景上的物体是否静态 检测层级 检测标签 …

JavaScript笔记:数组

1 数组介绍 2 创建数组 3 删减元素 4 切片 5 数组是一个object 6 排序 如果sort里面的函数返回值: 返回值 小于 0 ,则v1 会被排在 v2 之前如果返回值 等于 0 ,则 v1 和 v2 的位置不变如果返回值 大于 0 ,则 v2 会被排在 v1 之前

java进阶-第9章-JDBC

一、引言 数据库访问层 该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之…

腾讯云/阿里云国际站免费账号:腾讯云国际站如何对象存储cos设置防盗链

简介 为了避免恶意程序使用资源 URL 盗刷公网流量或使用恶意手法盗用资源,腾讯云国际站给用户带来不必要的损失。腾讯云对象存储支持防盗链配置,建议您通过控制台的防盗链设置配置黑/白名单,来进行安全防护。 注意: 如果您访问对…