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

 
 
> STM32 библиотечный RTC_GetCounter, Исправление
podelkin
сообщение Feb 4 2013, 11:07
Сообщение #1





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



на мой взгляд теущая реализация RTC_GetCounter в стандартной библиотеки от ST не совсем корректная
и при переполнении нижнего 16 битного регистра может вернутся неверное значение (что происходит примерно раз в 18 часов)

Код
uint32_t RTC_GetCounter(void)
{
  uint16_t tmp = 0;
  tmp = RTC->CNTL;
  return (((uint32_t)RTC->CNTH << 16 ) | tmp);
}


предлогаю следующий вариант, что скажете? если

Код
uint32_t RTC_GetCounter(void)
{
  uint32_t counter;
  uint16_t tmp;

  do
  {
    tmp = RTC->CNTL;
    counter = (((uint32_t)RTC->CNTH << 16 ) | tmp);
  } while(tmp != RTC->CNTL);

  return counter;
}

Go to the top of the page
 
+Quote Post



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

 


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


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