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

 
 
> 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
 
Start new topic
Ответов
nx6310
сообщение Feb 4 2013, 11:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



Я использую эту конструкцию
Код
counter=(RTC->CNTH << 16)+RTC->CNTL
Go to the top of the page
 
+Quote Post



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

 


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


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