STM32CubeMX:RTC

芯片:STM32F103C8T6

应用管脚:

USART1、RCC、RTC

配置界面


修改时钟源为LSE


配置RTC,可设置时间及日期


应用函数

			HAL_RTC_GetTime(&hrtc, &stimestructure, RTC_FORMAT_BIN);
			HAL_RTC_GetDate(&hrtc, &sdatestructure, RTC_FORMAT_BIN);
		
			printf("%02d/%02d/%02d\r\n",2000 + sdatestructure.Year, sdatestructure.Month, sdatestructure.Date);
			printf("%02d:%02d:%02d\r\n",stimestructure.Hours, stimestructure.Minutes, stimestructure.Seconds);
设置时间

				stimestructure.Hours=huart1_RxBuffer[1];
				stimestructure.Minutes=huart1_RxBuffer[2];
				stimestructure.Seconds=huart1_RxBuffer[3];
				
				if (HAL_RTC_SetTime(&hrtc, &stimestructure, RTC_FORMAT_BCD) != HAL_OK)
				{
					Error_Handler();
				}
设置日期

				sdatestructure.Year=huart1_RxBuffer[1];
				sdatestructure.Month=huart1_RxBuffer[2];
				sdatestructure.Date=huart1_RxBuffer[3];
				sdatestructure.WeekDay=huart1_RxBuffer[4];
				
				if (HAL_RTC_SetDate(&hrtc, &sdatestructure, RTC_FORMAT_BCD) != HAL_OK)
				{
					Error_Handler();
				}
注意:

设置完成后,重启依旧会恢复到原初始化状态,修改MX_RTC_Init函数,将设置日期及时间注释掉,可解决掉电恢复初始化问题。但掉电日期依旧恢复默认,不知为何原因,后期实际用途中再深入使用。

/* RTC init function */
static void MX_RTC_Init(void)
{
//  RTC_TimeTypeDef sTime;
//  RTC_DateTypeDef DateToUpdate;

    /**Initialize RTC and set the Time and Date 
    */
  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();
  }

//  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();
//  }
}

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用STM32CubeMX配置RTC时,可以按照以下步骤进行操作: 1. 打开STM32CubeMX软件,并选择你的目标芯片型号。 2. 在"Pinout & Configuration"选项卡中,配置RTC引脚。根据芯片的不同,RTC引脚可能会有所不同,你可以参考芯片的数据手册来确定正确的引脚配置。 3. 在"Configuration"选项卡中,找到"RTC"并启用它。你可以选择启用RTC时钟源、配置RTC时钟分频器等。 4. 在"Project"选项卡中,点击"Project Settings"按钮,选择你的编程语言和工程路径等设置。 5. 点击"Generate Code"按钮生成代码,并将生成的代码导入到你的工程中。 在代码中,你可以使用rtc.h头文件中提供的函数来读取和设置RTC时间。例如,你可以使用RTC_Get函数来读取当前时间,使用RTC_Set函数来设置时间。此外,还有一些辅助函数可以帮助你判断是否是闰年、计算星期等。 需要注意的是,RTC是一个掉电后仍然能够继续运行的定时器,它具有掉电保持功能。因此,在使用RTC之前,你需要确保RTC的电源供应是正常的,并且正确配置了RTC的时钟源和分频器等参数。 总结起来,使用STM32CubeMX配置RTC需要在软件中进行引脚配置和RTC功能的启用,并在生成的代码中使用rtc.h头文件中提供的函数来读取和设置RTC时间。 #### 引用[.reference_title] - *1* *3* [STM32开发(18)----CubeMX配置RTC](https://blog.csdn.net/bin_zhang1/article/details/128853067)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32CubeMXRTC设置以及实现](https://blog.csdn.net/m0_51274562/article/details/126914374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值