реклама на сайте
подробности

 
 
> Принцип работы RTC в STM32F107
Auratos
сообщение Feb 28 2018, 09:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 6-10-14
Пользователь №: 83 032



Добрый день. Имеется на руках контроллер серии STM32F107xx. Пользуюсь активно таймером реального времени. И вот, собственно, возник вопрос: а какой у этого таймера диапазон измерения времени? Т.к. там 32-битный секундный счетчик, то максимум он сможет отсчитать ~136 лет. Отсчет начинается, как я понял, с 1900 года, т.е. до 2036 года. А что будет после его переполнения, т.е. после 2036 года? Можно ли самому подвинуть точку отсчета? Или там совсем все устроено по-другому? Объясните, пожалуйста
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Feb 28 2018, 15:04
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Auratos @ Feb 28 2018, 14:29) *
И вы также используете библиотечные функции localtime и mktime? А не могли бы вы, пожалуйста, привести пример своих функций для работы со временем?

Если применять стандартные функции, то там все просто. Вот пример сдвига из программы тестера плат на ПК.
GPSTmp.Time это timestamp в секундах от 1 янв 2000 года. На выходе печатается время в виде строки.
Код
struct tm time;
  time.tm_year = 2000-1900;
  time.tm_mon = 0;
  time.tm_mday = 1;
  time.tm_hour = 0;
  time.tm_min = 0;
  time.tm_sec = 0;
  time.tm_isdst = 0;

  time_t offset2000 = mktime(&time);
  GPSTmp.Time += offset2000;

  struct tm *ptime = localtime((time_t*)&GPSTmp.Time);
  char time_str[81];
  strftime(time_str, 80, "%d-%m-%Y %X", ptime);
  fprintf(fpLog,"Time:       %s\n", time_str);

А в программах на МК использую свои переписанные функции. В качестве примера см. различные открытые библиотеки.
Напр.: date_time.c

Код
UNIX time: 01-01-2000 00:00:00 = 946684800 sec = 10957 days


Цитата(scifi @ Feb 28 2018, 14:44) *
Разрешите поинтересоваться, что за устройство разрабатываете? Откуда тяга заглянуть так далеко в будущее? wacko.gif

2038 год будет уже всего-то через 20 лет. А время бежит быстро. Вот сделаете вы какой-нибудь удачный прибор, и будут люди применять его 20 лет и хвалить. А тут раз - и из-за ошибки времени облом. Зачем сознательно закладывать ошибку, если ее можно легко избежать cool.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 22:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.08187 секунд с 7
ELECTRONIX ©2004-2016