Поэтому я использую приложение для смартфона, чтобы установить время и дату RTC на микроконтроллере.RTC работает на LSE.
Форматирование строки, которую я отправил на микроконтроллер, правильное.Я могу быть уверен в этом, когда я устанавливаю соответствующие переменные в «Watch 1».Я использую Keil uVision 5.
/**
* @brief RTC Date structure definition
*/
typedef struct
{
uint8_t WeekDay; /*!< Specifies the RTC Date WeekDay.
This parameter can be a value of @ref RTC_WeekDay_Definitions */
uint8_t Month; /*!< Specifies the RTC Date Month (in BCD format).
This parameter can be a value of @ref RTC_Month_Date_Definitions */
uint8_t Date; /*!< Specifies the RTC Date.
This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
uint8_t Year; /*!< Specifies the RTC Date Year.
This parameter must be a number between Min_Data = 0 and Max_Data = 99 */
}RTC_DateTypeDef;
Так что моя команда, которую я отправил, на самом деле устанавливает DD / MM / YY и, конечно, время, но у меня нет проблем со временем.
После его установки и последующего вызова HAL_RTC_GetDate и HAL_RTC_GetTime все верно, кроме атрибута Year.
Моя команда, которую я отправляю, всегда будет 2018 годом, однако функция GetTime всегда будет возвращать более высокое и случайное значениенапример, 24, 22, 21 и 19. Иногда, после отправки нескольких раз одной и той же команды, но с разными минутами и секундами, год возвращается к 18 ...
В чем может быть проблема?Кроме того, я должен установить параметр WeekDay, так как я устанавливаю только день, месяц и год.
Спасибо!
* У меня есть функция, которая поможет мне взять последние две цифры года2018, который я отправляю, и он передает значение 18 в микроконтроллер.