0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32中RTC简介及使用方式

jf_78858299 来源:技术让梦想更伟大 作者:技术让梦想更伟大 2023-05-26 16:43 次阅读

STM32H750 的实时时钟是一个独立的 BCD 定时器/计数器,且带了日历功能,它提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。

此外RTC 还有自动唤醒单元,RTC还可以补偿闰年闰月等等,还有备份区域(BKP)写保护,这些这里不细说了。

RTC 的简化框图

图片

时钟和分频

STM32H750 的 RTC 时钟源(RTCCLK)通过时钟控制器,可以从 LSE、LSI、HSE 时钟三选一,如图所示,有两个预分频器RTC_PRER

ck_spre 的时钟可由如下计算公式计算:

Fck_spre = Frtcclk/[(PREDIV_S+1)*( PREDIV_A+1)]

图中,ck_apre 也可作为 RTC 亚秒递减计数器(RTC_SSR)的时钟。

Fck_apre的计算公式如下:

Fck_apre=Frtcclk/( PREDIV_A+1)

当 RTC_SSR 寄存器递减到 0 的时候,会使用 PREDIV_S 的值重新装载 PREDIV_S,得到亚秒时间的精度是:1/256 秒,可以得到更加精确的时间数据。

STM32CubeIDE 配置

默认情况下是如图

图片

一般情况下使用LSE,这里我们需要在RCC使能

图片

然后在RTC中使能时钟源,如果需要日历闹钟功能的可以在这里也使能上。图片

公式如下:

RTC时钟频率 = RTC时钟源 / ((Asynchronous Predivider value + 1) * (Synchronous Predivider value + 1))= 1Hz,也就是1秒

之后到时钟配置里面可以看到已经使能了

图片

初始化

static void MX_RTC_Init(void)
{

  /* USER CODE BEGIN RTC_Init 0 */

  /* USER CODE END RTC_Init 0 */

  /* USER CODE BEGIN RTC_Init 1 */

  /* USER CODE END RTC_Init 1 */
  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN RTC_Init 2 */

  /* USER CODE END RTC_Init 2 */

}

可以看到outline里面有很多我们需要的函数,那么自己扩展就可以使用了

图片

This function configures the hardware resources used in this example

void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  if(hrtc->Instance==RTC)
  {
  /* USER CODE BEGIN RTC_MspInit 0 */

  /* USER CODE END RTC_MspInit 0 */
  /** Initializes the peripherals clock
  */
    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
    PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    {
      Error_Handler();
    }

    /* Peripheral clock enable */
    __HAL_RCC_RTC_ENABLE();
  /* USER CODE BEGIN RTC_MspInit 1 */

  /* USER CODE END RTC_MspInit 1 */
  }

}

最后,可以按需定制自己的实现方式,RTC是特别实用的一个模块了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
  • 计数器
    +关注

    关注

    32

    文章

    2121

    浏览量

    92980
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
收藏 人收藏

    评论

    相关推荐

    RTC简介

    简介RTC—real time clock,实时时钟,主要包含日历、闹钟和自动唤醒这三部分的功能,其中的日历功能我们使用的最多。日历包含两个 32bit 的时间寄存器,可直接输出时分秒,星期、月、日
    发表于 08-10 06:24

    STM32_HAL库开发RTC的使用

    STM32_HAL库开发RTC的使用。目录前言一、RTC简介1.时钟与分频2.开发步骤二、STM32
    发表于 08-11 07:29

    RTC实时时钟简介

    RTC实时时钟1. RTC实时时钟简介2. 硬件设计3. 软件设计3.1 STM32CubeMX设置3.2 MDK-ARM编程4. 下载验证
    发表于 08-18 06:55

    stm32时钟硬件设计简介

    文章目录题目及要求硬件设计stm32时钟简介(1)RTC实时时钟RTC的一般设置作品展示题目及要求1.数字钟。使用ARM Cotex M3 核MCU的定时器产生秒钟发生器。把数字钟的秒
    发表于 08-18 06:58

    STM32 RTC时钟介绍

    STM32 RTC 时钟简介
    发表于 08-18 06:32

    STM32CubeMX RTC简介

    一、RTC简介实时时钟(RTC) 是一个独立的 BCD 定时器/计数器。 RTC 提供具有可编程闹钟中断功能的日历时钟/日历。RTC 还包含
    发表于 08-18 06:37

    STM32RTC简介

    STM32RTC学习笔记Mcu:STM32F103RBT61、RTC简介RTC(Real Ti
    发表于 03-01 06:47

    STM32_RTC程序

    STM32 RTC程序,很好的学习资料,快来下载啊
    发表于 02-16 15:56 34次下载

    STM32F10x_ RTC日历

    STM32F10x_RTC日历
    的头像 发表于 03-25 11:39 3027次阅读
    <b class='flag-5'>STM32</b>F10x_ <b class='flag-5'>RTC</b>日历

    STM32F10x _RTC秒中断

    STM32F10x_RTC秒中断
    的头像 发表于 03-25 11:39 2841次阅读
    <b class='flag-5'>STM32</b>F10x _<b class='flag-5'>RTC</b>秒中断

    浅谈STM32_RTC闹钟

    STM32_RTC闹钟
    的头像 发表于 04-08 11:14 9397次阅读
    浅谈<b class='flag-5'>STM32_RTC</b>闹钟

    STM32开发 -- RTC详解

    RTC实时时钟部分,之前也是有讲到过的。Hi3516A开发–RTC电路接下来看一下STM32RTC该怎么配置一、RTC实时时钟特征与原理查
    发表于 11-30 13:06 27次下载
    <b class='flag-5'>STM32</b>开发 -- <b class='flag-5'>RTC</b>详解

    STM32CubeMX系列|RTC实时时钟

    RTC实时时钟1. RTC实时时钟简介2. 硬件设计3. 软件设计3.1 STM32CubeMX设置3.2 MDK-ARM编程4. 下载验证
    发表于 12-24 19:15 16次下载
    <b class='flag-5'>STM32</b>CubeMX系列|<b class='flag-5'>RTC</b>实时时钟

    AN3371_如何使用STM32硬件RTC

    AN3371_如何使用STM32硬件RTC
    发表于 11-21 17:07 0次下载
    AN3371_如何使用<b class='flag-5'>STM32</b>硬件<b class='flag-5'>RTC</b>

    STM32片内RTC亚秒特性以及应用演示的分享

    绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。
    的头像 发表于 04-15 11:27 1781次阅读
    <b class='flag-5'>STM32</b>片内<b class='flag-5'>RTC</b>亚秒特性以及应用演示的分享