2021-07-19 03:33 PM
Using STM32CubeIDE with a STM32L4R5.
The RTC generated code initializes the RTC then sets the time and date.
Is there a setting that will inhibit setting the RTC time and date during initialization?
2021-07-19 04:15 PM
Hi,
I generally overcome such issues by putting prepocessor macros before and after the generated code.
#define ENABLE_CUBEMX_NONSENSES 0
#if (ENABLE_CUBEMX_NONSENSES == 1)
/* USER CODE END RTC_Init 1 */
/** Initialize RTC and set the Time and Date
*/
RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOUR;
RTC_InitStruct.AsynchPrescaler = 127;
RTC_InitStruct.SynchPrescaler = 255;
LL_RTC_Init(RTC, &RTC_InitStruct);
LL_RTC_SetAsynchPrescaler(RTC, 127);
LL_RTC_SetSynchPrescaler(RTC, 255);
/** Initialize RTC and set the Time and Date
*/
if(LL_RTC_BAK_GetRegister(RTC, LL_RTC_BKP_DR0) != 0x32F2){
RTC_TimeStruct.Hours = 0x0;
RTC_TimeStruct.Minutes = 0x50;
RTC_TimeStruct.Seconds = 0x0;
LL_RTC_TIME_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_TimeStruct);
RTC_DateStruct.WeekDay = LL_RTC_WEEKDAY_TUESDAY;
RTC_DateStruct.Day = 0x20;
RTC_DateStruct.Month = LL_RTC_MONTH_JULY;
RTC_DateStruct.Year = 0x21;
LL_RTC_DATE_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_DateStruct);
LL_RTC_BAK_SetRegister(RTC,LL_RTC_BKP_DR0,0x32F2);
}
/* USER CODE BEGIN RTC_Init 2 */
#endif
And you can copy and paste the required lines of codes before or after this, so that whenever you change something in the CubeMX, your code remains safe.
I know this a far from being ideal, but it works. :smiling_face_with_smiling_eyes:
Regards,
Ogulcan
2021-07-19 04:22 PM
Typically this is solved by checking to see if it's already initialized and if so, skipping the initialization code. This can be done in the user code section.
2021-07-19 04:24 PM
Thanks Ogulcan,
I am already using this method in other places.
The issue this the RTC is that the USER CODE comments cover the actual RTC initialization and TIME/DATE setting; so you lose everything.
My fallback will be to use my own RTC initialization function based on the code that was generated and not use the generated initialization function.
I was hoping for a setting I missed in the GUI.