Я пытаюсь вернуть число секунд с 1970 с функцией времени с stm32f4
.Отрицательное значение, возвращаемое временем
У меня есть эти тип данных настроен
RTC_HandleTypeDef RtcHandle;
RTC_DateTypeDef dateStruct;
RTC_TimeTypeDef timeStruct;
Я делаю вызов
HAL_RTC_GetTime
HAL_RTC_GetDate
и я называю эту функцию
long SystemClock::getUnixTimestamp()
struct tm timeinfo;
//Setup a tm structure based on the RTC
timeinfo.tm_wday = dateStruct.WeekDay;
timeinfo.tm_mon = dateStruct.Month - 1;
timeinfo.tm_mday = dateStruct.Date;
timeinfo.tm_year = dateStruct.Year + 100;
timeinfo.tm_hour = timeStruct.Hours;
timeinfo.tm_min = timeStruct.Minutes;
timeinfo.tm_sec = timeStruct.Seconds;
time_t rawtime = mktime(&timeinfo);
trace_printf("Current date and time are: %s\n", ctime(&rawtime));
long x = time(&rawtime);
trace_printf("time %lu\n", x);
return x;
}
Я вижу
Current date and time are: Wed Apr 29 22:46:00 2015
time 1430347560
5 second later, i do another call to HAL_RTC_GetTime, HAL_RTC_GetDate, getUnixTimestamp and i get
Current date and time are: Wed Apr 29 22:46:05 2015
time 1430347560
Почему время не изменяется?
Просьба представить подробную информацию «если я пытаюсь отобразить». Какой код вы использовали для отображения 'rawtime'? –
Значение '-1074790400' является подозрительным; это '0xbff00000' в шестнадцатеричном формате. Предполагая обычную эпоху 1970 года, значение, возвращаемое 'time (NULL)' или 'time (& rawtime)' должно быть чем-то вроде '1430445026'. Обновите свой вопрос, чтобы показать, как вы его печатаете. Что-то вроде 'printf ("% ld \ n ", (long) time (NULL));' должно работать. –