新手入门
积分 11
金钱 11
注册时间 2019-2-15
在线时间 2 小时
1 金钱
本帖最后由 希佑 于 2019-4-23 21:05 编辑
RTC获取时间必须在之后获取日期,如果不获取日期,时间无法更新,一直停留在当前值,然而实际上RTC内部确实是在更新时间,只是读取的问题
使用的是HAL库
网上貌似也有类似情况,但没找到原因,有知道的前辈请多多指教
部分代码:
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t t=0;
uint32_t k=0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
delay_init(180);
uart_init(115200);
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
LED_Init();
RTC_Init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(HAL_RTC_GetTime(&hrtc,&hrtc_gtime,RTC_FORMAT_BIN)!=HAL_OK)
{
printf("ERROR\r\n");
}
if(HAL_RTC_GetDate(&hrtc,&hrtc_gdate,RTC_FORMAT_BIN)!=HAL_OK) //这句不写时间就无法更新
{
printf("ERROR\r\n");
}
sprintf((char *)RTC_String,"20%2d-%2d-%2d weekday:%1d %02d:%02d:%02d\r\n",
hrtc_gdate.Year,hrtc_gdate.Month,hrtc_gdate.Date,hrtc_gdate.WeekDay,hrtc_gtime.Hours,hrtc_gtime.Minutes,hrtc_gtime.Seconds);
strcat((char *)RTC_String,"RTC RUN NORMALLY!\r\n");
printf("%s",RTC_String);
delay_ms(1000);
LED0 = !LED0;
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
我来回答