STM32
直播中

梁宏满

8年用户 1057经验值
私信 关注
[问答]

请问STM32CubeMX 4.20.1自动生成的RTC备份寄存器能否让用户选择?

4.17生成的代码和4.20.1的RTC初始化代码区别为红色部分,备份寄存器我做了其它用途,你这自动把RTC的备份配置到备份寄存器1上,不利于用户选择,能否在UI上让用户自行选择RTC的备份寄存器?
/* RTC init function */
static void MX_RTC_Init(void)
{

  RTC_TimeTypeDef sTime;
  RTC_DateTypeDef DateToUpdate;

    /**Initialize RTC Only
    */
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
  if (HAL_RTC_Init( hrtc) != HAL_OK)
  {
    Error_Handler();
  }

    /**Initialize RTC and set the Time and Date
    */
  if(HAL_RTCEx_BKUPRead( hrtc, RTC_BKP_DR1) != 0x32F2){
  sTime.Hours = 0x1;
  sTime.Minutes = 0x0;
  sTime.Seconds = 0x0;

  if (HAL_RTC_SetTime( hrtc,  sTime, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }

  DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
  DateToUpdate.Month = RTC_MONTH_JANUARY;
  DateToUpdate.Date = 0x1;
  DateToUpdate.Year = 0x0;

  if (HAL_RTC_SetDate( hrtc,  DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }

    HAL_RTCEx_BKUPWrite( hrtc,RTC_BKP_DR1,0x32F2);
  }

}



回帖(1)

小黑羊

2024-5-6 16:55:25
STM32CubeMX 是 STMicroelectronics 提供的一个图形化软件配置工具,它可以帮助用户配置 STM32 微控制器的各种外设,并生成初始化代码。在您提到的 4.20.1 版本中,RTC 备份寄存器的配置似乎是自动的,可能没有提供让用户自行选择的选项。

然而,您可以通过修改生成的代码来实现自定义的备份寄存器配置。以下是一些建议:

1. 在 STM32CubeMX 中生成初始化代码后,打开生成的代码文件(通常是 `main.c` 或 `stm32xx_hal_msp.c`)。

2. 找到 RTC 初始化函数,例如 `MX_RTC_Init(void)`。

3. 在该函数中,找到与备份寄存器相关的代码部分。这通常是在配置 RTC 时钟源和预分频器之后。

4. 修改备份寄存器的配置,将其设置为您希望使用的寄存器。例如,如果您希望使用备份寄存器 2 而不是 1,您可以找到类似以下代码的部分:

```c
/* Set RTC Backup Register 1 */
HAL_RTCEx_BKUPWrite(hrtc, RTC_BKP_DR1, 0x32F2);
```

5. 将上述代码中的 `RTC_BKP_DR1` 替换为您希望使用的备份寄存器,例如 `RTC_BKP_DR2`:

```c
/* Set RTC Backup Register 2 */
HAL_RTCEx_BKUPWrite(hrtc, RTC_BKP_DR2, 0x32F2);
```

6. 保存修改后的代码文件。

7. 如果您需要在 STM32CubeMX 中进行其他配置更改,请确保重新生成代码并替换相应的文件。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分