[STM32H7] 【STM32H7S78-DK测评】RTC 打印测评

[复制链接]
957|1
 楼主| abner_ma 发表于 2024-10-7 18:14 | 显示全部楼层 |阅读模式
  STM32H7S7x8 实时时钟(RTC)RTC提供自动唤醒以管理所有低功耗模式。实时时钟(RTC)是一个独立的BCD定时器/计数器。RTC提供具有可编程报警中断的时间时钟/日历。RTC还包括一个具有中断功能的周期性可编程唤醒标志。备份域重置后,所有RTC寄存器都受到保护,防止可能的寄生写入除了在特权模式下配置的访问之外。只要电源电压保持在工作范围内RTC就不会停止,无论设备状态如何(运行模式、低功耗模式或重置下)。

STM32H7S7x8 RTC主要特征如下:
•带有子秒、秒、分钟、小时(12或24格式)、日(日期)的日历
周)、日期(月中的某一天)、月份和年份。
•夏令时补偿可通过软件编程。
•具有中断功能的可编程报警。警报可以由任何人触发
日历字段的组合。
•自动唤醒单元生成周期性标志,触发自动唤醒
中断。
•参考时钟检测:可以使用更精确的第二源时钟(50或60 Hz)
用于提高日历精度。
•使用亚秒级移位功能与外部时钟精确同步。
•数字校准电路(周期性计数器校正):精度为0.95 ppm,在
几秒钟的校准窗口
•用于保存事件的时间戳功能
•可屏蔽中断/事件:
–警报A
–警报B
–唤醒中断
–时间戳

配置 开启RTC
1.png 开启串口打印



2.png
3.png
4.png
重写fputc()函数:

int fputc(int ch,FILE *f)
{
        uint8_t temp[1] = {ch};
      

        HAL_UART_Transmit(&huart4,temp,1,2);
        return ch;
}
  1. static void MX_RTC_Init(void)
  2. {

  3.   /* USER CODE BEGIN RTC_Init 0 */

  4.   /* USER CODE END RTC_Init 0 */

  5.   RTC_PrivilegeStateTypeDef privilegeState = {0};
  6.   RTC_TimeTypeDef sTime = {0};
  7.   RTC_DateTypeDef sDate = {0};

  8.   /* USER CODE BEGIN RTC_Init 1 */

  9.   /* USER CODE END RTC_Init 1 */

  10.   /** Initialize RTC Only
  11.   */
  12.   hrtc.Instance = RTC;
  13.   hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  14.   hrtc.Init.AsynchPrediv = RTC_ASYNCH_PREDIV;
  15.   hrtc.Init.SynchPrediv = RTC_SYNCH_PREDIV;
  16.   hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  17.   hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  18.   hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  19.   hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  20.   hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;
  21.   hrtc.Init.BinMode = RTC_BINARY_NONE;
  22.   if (HAL_RTC_Init(&hrtc) != HAL_OK)
  23.   {
  24.     Error_Handler();
  25.   }
  26.   privilegeState.rtcPrivilegeFull = RTC_PRIVILEGE_FULL_NO;
  27.   privilegeState.backupRegisterPrivZone = RTC_PRIVILEGE_BKUP_ZONE_NONE;
  28.   privilegeState.backupRegisterStartZone2 = RTC_BKP_DR0;
  29.   privilegeState.backupRegisterStartZone3 = RTC_BKP_DR0;
  30.   if (HAL_RTCEx_PrivilegeModeSet(&hrtc, &privilegeState) != HAL_OK)
  31.   {
  32.     Error_Handler();
  33.   }

  34.   /* USER CODE BEGIN Check_RTC_BKUP */

  35.   /* Set Date and Time (if not already done before)*/
  36.   /* Read the Back Up Register 0 Data */
  37.   if (HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x32F2)
  38.   {
  39.     /* Configure RTC Calendar */
  40.   /* USER CODE END Check_RTC_BKUP */

  41.   /** Initialize RTC and set the Time and Date
  42.   */
  43.   sTime.Hours = 0x2;
  44.   sTime.Minutes = 0x0;
  45.   sTime.Seconds = 0x0;
  46.   sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  47.   sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  48.   if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  49.   {
  50.     Error_Handler();
  51.   }
  52.   sDate.WeekDay = RTC_WEEKDAY_WEDNESDAY;
  53.   sDate.Month = RTC_MONTH_NOVEMBER;
  54.   sDate.Date = 0x8;
  55.   sDate.Year = 0x0;

  56.   if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
  57.   {
  58.     Error_Handler();
  59.   }
  60.   /* USER CODE BEGIN RTC_Init 2 */

  61.   /* Writes a data in a RTC Backup data Register0 */
  62.   HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR0, 0x32F2);
  63.   }
  64.   else
  65.   {
  66.     /* Check if the Power On Reset flag is set */
  67.     if (__HAL_RCC_GET_FLAG(RCC_FLAG_BORRST) != RESET)
  68.     {
  69.       /* Turn on LD2: Power on reset occurred */
  70.       BSP_LED_On(LD2);
  71.     }

  72.     /* Check if Pin Reset flag is set */
  73.     if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
  74.     {
  75.       /* Turn on LD2: External reset occurred */
  76.       BSP_LED_On(LD2);
  77.     }
  78.   }
  79.   /* Clear source Reset Flag */
  80.   __HAL_RCC_CLEAR_RESET_FLAGS();

  81.   /* USER CODE END RTC_Init 2 */

  82. }
  1. <blockquote>static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)

5.png

管理
[url=]更多操作[/url]





星辰大海不退缩 发表于 2024-10-8 22:19 | 显示全部楼层
STM32H7S7x8 实时时钟(RTC)RTC提供自动唤醒以管理所有低功耗模式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:项目经理
简介:资深嵌入式开发工程师

104

主题

191

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部