爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
用STM32L051的RTC模块,按下系统复位键时,RTC时间正常,但当断电后再通电时,RTC被复位,时分秒均被清零。STM32L051的1脚有外接3V电池,且电压正常。MX_RTC_Init代码中的时间初始化设置有注释掉。 用STM32CubeMX配的代码(HAL库),RTC.c代码如下: #include "rtc.h" RTC_HandleTypeDef hrtc; void MX_RTC_Init(void) { //RTC_TimeTypeDef sTime = {0}; //RTC_DateTypeDef sDate = {0}; hrtc.Instance = RTC; hrtc.Init.HourFormat =RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut =RTC_OUTPUT_DISABLE; hrtc.Init.OutPutRemap =RTC_OUTPUT_REMAP_NONE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType =RTC_OUTPUT_TYPE_OPENDRAIN; if (HAL_RTC_Init(&hrtc) !=HAL_OK) { Error_Handler(); } /* sTime.Hours = 0x0; sTime.Minutes = 0x0; sTime.Seconds = 0x0; sTime.DayLightSaving =RTC_DAYLIGHTSAVING_NONE; sTime.StoreOperation =RTC_STOREOPERATION_RESET; if (HAL_RTC_SetTime(&hrtc,&sTime, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); } sDate.WeekDay =RTC_WEEKDAY_WEDNESDAY; sDate.Month = RTC_MONTH_MARCH; sDate.Date = 0x1; sDate.Year = 0x23; if (HAL_RTC_SetDate(&hrtc,&sDate, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); } */ } void HAL_RTC_MspInit(RTC_HandleTypeDef*rtcHandle) { if(rtcHandle->Instance==RTC) { __HAL_RCC_RTC_ENABLE(); } } void HAL_RTC_MspDeInit(RTC_HandleTypeDef*rtcHandle) { if(rtcHandle->Instance==RTC) { __HAL_RCC_RTC_DISABLE(); } } 请大佬分析一下,哪个环节出问题了?
|