目录
一、cudemx配置
1,时钟配置
2,RTC配置
3,开启RCT全局中断
二、软件部分
在mian.c中添加如下代码
while (1)
{
HAL_RTC_GetTime(&hrtc,&my_time,RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc,&my_data,RTC_FORMAT_BIN);
printf("%d.%d.%d",my_data.Year+2000,my_data.Month,my_data.Date);
printf(" %d-%d-%d\r\n",my_time.Hours,my_time.Minutes,my_time.Seconds);
Delay_ms(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 *
}
将时间打印到串口方便观察,需要注意的是获取时间和获取日期必须一起使用,而且是先获取时间再获取日期
得到结果如下
三、问题分析与解决方法
好好好,获取的时间是设置的时间,但是时间没有变化,放心,我会出手,上网查了基本都是说获取时间和获取日期顺序的问题,显然我们的代码顺序没有问题,通过串口信息也能看出问题,程序一直打印,但是打印的是同一个值,那么我推测是RTC时钟出现了问题,那么打开cudemx修改RTC时钟源
修改时钟源为40khz(标准是32.768khz),其他不需要改变,生成代码后重新下载程序,观察到串口信息如下
到此问题解决,时间设置正常,综上可知,可能是焊接晶振的时候出现虚焊或者晶振本身出现了问题