STM32CubeMX:RTC(万年历方式)

之前RTC存在不更新日期的问题,后续采用修改更新日期函数,并存储日期,但是并无卵用。后面采用万年历的方式。采用万年历方式首先获取TimeCounter,通过万年历函数计算出日期,TimeCounter是uint32_t类型,可130年内不溢出绰绰有余。

1.修改stm32f1xx_hal_rtc.c文件,增加两个函数

HAL_StatusTypeDef HAL_RTC_SetTimeCounter(RTC_HandleTypeDef *hrtc,uint32_t TimeCounter)
{
	return RTC_WriteTimeCounter(hrtc, TimeCounter);
}

uint32_t HAL_RTC_GetTimeCounter(RTC_HandleTypeDef* hrtc)
{
	return RTC_ReadTimeCounter(hrtc);
}

2.修改stm32f1xx_hal_rtc.h文件,增加函数名

HAL_StatusTypeDef HAL_RTC_SetTimeCounter(RTC_HandleTypeDef *hrtc,uint32_t TimeCounter);
uint32_t HAL_RTC_GetTimeCounter(RTC_HandleTypeDef* hrtc);

3.应用函数

	htimedate.Year=17;
	htimedate.Month=1;
	htimedate.Date=9;
	
	htimedate.Hours=10;
	htimedate.Minutes=56;
	htimedate.Seconds=0;
	TimeDate_SetTime(&hrtc,&htimedate);

		TimeDate_CountTime(&hrtc,&htimedate);
		printf("%d/%d/%d %d:%d:%d\r\n",htimedate.Year,htimedate.Month,htimedate.Date,htimedate.Hours,htimedate.Minutes,htimedate.Seconds);

源文件 点击打开链接

你可能感兴趣的:(STM32CubeMX)