【STM32H743】【RT-Thread Studio】RTC功能(基于BSP工程可一键开启)

ops/2025/2/11 13:25:36/

前言

之前建立了文件系统,可是使用mkfs格式化SD卡时会报没有RTC错误,原因是FATFS文件系统需要时间戳
在这里插入图片描述
现在给系统加入RTC功能

环境

1、ATK-STM32H743-APOLLO开发板
2、RT-Thread Studio
3、基于BSP建立工程

BSP设置

在这里插入图片描述

下载验证

在这里插入图片描述
在RT-Thread Studio中开启STM32的RTC功能,需按照以下步骤操作:

1. 创建/打开项目

  • 打开RT-Thread Studio,创建新项目或打开现有STM32项目。

2. 启用RTC硬件驱动

  • 在项目资源管理器中,双击 RT-Thread Settings 文件,进入图形化配置界面。
  • Hardware 部分,找到 RTC 选项并启用(勾选复选框)。

3. 配置时钟源

  • Hardware 配置中,选择RTC时钟源:
    • LSE(外部低速晶振,通常32.768kHz,需硬件支持)。
    • LSI(内部低速RC振荡器,精度较低)。
  • 根据硬件设计选择合适的时钟源。若使用LSE,需确保开发板已焊接外部晶振。

4. 检查BSP配置

  • 打开 board/board.h 文件,确认以下宏定义已启用:
    #define BSP_USING_RTC
    
  • 若未定义,手动添加并保存。

5. 配置时钟树(必要时)

  • 若BSP未自动配置RTC时钟源,需在 board.crt_hw_board_init() 函数中添加时钟初始化代码:
    void rt_hw_board_init()
    {/* 其他初始化代码 */RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);RCC_LSEConfig(RCC_LSE_ON);  // 启用LSE(若使用LSI则替换为RCC_LSICmd(ENABLE))while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); // 等待LSE就绪RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // 选择RTC时钟源RCC_RTCCLKCmd(ENABLE);RTC_WaitForSynchro();/* ... */
    }
    

6. 使用RTC API

  • 在应用程序中,通过RT-Thread的RTC设备接口操作:
    #include <rtdevice.h>void rtc_test()
    {rt_device_t rtc_dev = rt_device_find("rtc");if (rtc_dev == RT_NULL){rt_kprintf("RTC device not found!\n");return;}rt_device_open(rtc_dev, RT_DEVICE_OFLAG_RDWR);/* 设置时间 */struct rt_rtc_time time_set = {2023, 10, 1, 15, 30, 0}; // 年月日时分秒rt_device_control(rtc_dev, RT_DEVICE_CTRL_RTC_SET_TIME, &time_set);/* 读取时间 */struct rt_rtc_time time_get;rt_device_control(rtc_dev, RT_DEVICE_CTRL_RTC_GET_TIME, &time_get);rt_kprintf("Current time: %04d-%02d-%02d %02d:%02d:%02d\n",time_get.tm_year, time_get.tm_mon, time_get.tm_mday,time_get.tm_hour, time_get.tm_min, time_get.tm_sec);
    }
    MSH_CMD_EXPORT(rtc_test, "Test RTC function");
    

7. 编译与下载

  • 保存所有修改,编译项目并下载到目标板。
  • 在串口终端使用 rtc_test 命令测试RTC功能。

注意事项

  • 硬件检查:使用LSE时,确认开发板上的32.768kHz晶振已正确焊接,且VBAT电池引脚连接备用电源(保持时间在断电时)。
  • 驱动依赖:确保RT-Thread版本支持目标STM32系列的RTC驱动,部分BSP可能需要手动完善驱动代码。
  • 时间保持:若RTC时间重置,检查VBAT供电是否正常,或尝试在初始化时检查备份寄存器判断是否为首次上电。

通过以上步骤,即可在RT-Thread Studio中成功启用并使用STM32的RTC功能。如遇问题,可结合硬件调试工具(如STM32CubeMonitor)检查RTC寄存器状态。


http://www.ppmy.cn/ops/157533.html

相关文章

【深度学习】突破数据局限:少样本图像数据的特征提取实战攻略

在进行深度图像处理时最重要的一步往往是图像特征提取检测&#xff0c;尤其是样本特征较少时&#xff0c;接下来我们以人脸识别之舌头识别为例&#xff0c;来讲解一下少数据样本时常用的五种图像数据特征提取的方法。 在构建舌头识别模型时&#xff0c;当样本数据量较少的情况…

畅游Diffusion数字人(16):由音乐驱动跳舞视频生成

畅游Diffusion数字人(0):专栏文章导航 前言:从Pose到跳舞视频生成的工作非常多,但是还没有直接从音乐驱动生成的工作。最近字节跳动提出了MuseDance,无需复杂的动作引导输入(如姿势或深度序列),从而使不同专业水平的用户都能轻松进行灵活且富有创意的视频生成。 目录 贡…

DeepSeek和ChatGPT的优劣或者区别(答案来DeepSeek和ChatGPT)

DeepSeek的答案 DeepSeek与ChatGPT作为当前两大主流AI模型&#xff0c;在架构设计、性能表现、应用场景等方面存在显著差异&#xff0c;以下从多个维度进行对比分析&#xff1a; 一、架构与训练效率 架构设计 DeepSeek&#xff1a;采用混合专家&#xff08;MoE&#xff09;框架…

从零开始:CentOS 7系统中Docker的安装与卸载全记录

准备工作 检查系统环境&#xff0c;确认你的操作系统是CentOS 7&#xff0c;并且处于最新状态&#xff08;包括更新软件包&#xff09; 使用cat命令来查看/etc/centos-release文件的内容。这个文件包含了CentOS操作系统的版本信息。 打开终端。输入以下命令并按下回车键&…

GitHub分支与标签完全指南:从入门到高效管理

GitHub分支与标签完全指南&#xff1a;从入门到高效管理 前言一、分支管理&#xff1a;灵活开发的关键1.1 分支的本质1.2 分支操作全解创建分支的三种姿势分支查看与切换分支合并的艺术分支删除的注意事项 二、标签管理&#xff1a;版本控制的里程碑2.1 标签类型解析2.2 标签操…

列表标签。

一.列表标签 表格是用来展示数据的&#xff0c;列表是用来布局的。 列表可分为三类&#xff1a;无序列表&#xff0c;有序列表和自定义列表。 1.1无序列表(重点) <ul>全称为unorder list&#xff0c;表示html中的无序列表&#xff0c;列表项使用<li>标签使用。…

2025年1月1日起,美国禁止在食品包装中使用PFAS+PFAS标准办理讲解

2025年1月1日起&#xff0c;美国禁止在食品包装中使用PFASPFAS标准办理讲解&#xff1a; 美国国会于2024年9月提议了H.R. 9864法案&#xff0c;即《2024年食品容器禁用PFAS法案》&#xff0c;禁止食品包装中含有故意添加的 PFAS。 根据该提案&#xff0c;《联邦食品、药品和化…

Spring Boot 线程池自定义拒绝策略:解决任务堆积与丢失问题

如何通过自定义线程池提升系统稳定性 背景 在高并发系统中&#xff0c;线程池管理至关重要。默认线程池可能导致&#xff1a; 资源浪费&#xff08;创建过多线程导致 OOM&#xff09;任务堆积&#xff08;队列满后任务被拒绝&#xff09;任务丢失&#xff08;默认拒绝策略丢…