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

 
 
> stm32 проблемы с RTC, некоректно считывается год
Nikitoc
сообщение Jun 22 2011, 08:42
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Прошу помощи уважаемого сообщества. Не могу понять, где я допустил ошибку. При считывании года из часов получаю левые данные. Остальные параметры корректны и соответствуют установленным.


Вот код инициализации часов:

Код
void RtcInit (void) {
</p>        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
        /* Allow access to RTC */
        PWR_RTCAccessCmd(ENABLE);
        /* Reset Backup Domain */
        RCC_RTCResetCmd(ENABLE);
        RCC_RTCResetCmd(DISABLE);
         /* LSE Enable */
        RCC_LSEConfig(RCC_LSE_ON);
         /*Wait till LSE is ready */
        while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
        {}
         /* LCD Clock Source Selection */
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
        /* Enable the RTC Clock */
        RCC_RTCCLKCmd(ENABLE);
        /* Wait for RTC APB registers synchronisation */
        RTC_WaitForSynchro();                                /* Wait until last write operation on RTC registers has finished */
  
<p>   }


Установка времени:

Код
void DateSetup(DWORD TimeDate) {
</p>       RTC_InitTypeDef   RTC_InitStructure;
      RTC_TimeTypeDef   RTC_TimeStructure;
      RTC_DateTypeDef   RTC_DateStructure;
  
RTC_TimeStructure.RTC_Hours   = 12;
RTC_TimeStructure.RTC_Minutes = 10;
RTC_TimeStructure.RTC_Seconds = 0;
      
        /* Set the Date */
RTC_DateStructure.RTC_Month = 6;
RTC_DateStructure.RTC_Date =  22;
RTC_DateStructure.RTC_Year =  11;
  
        /* Calender Configuartion */
        RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
        RTC_InitStructure.RTC_SynchPrediv    =  0xFF;
        RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
        RTC_Init(&amp;RTC_InitStructure);
  
        RTC_SetTime(RTC_Format_BIN, &amp;RTC_TimeStructure);
        RTC_SetDate(RTC_Format_BIN, &amp;RTC_DateStructure);
<p>   }


Считывание времени:

Код
DWORD GetSystemTime (void) {
</p>  DWORD time = 0;
      DWORD sec = 0;
      DWORD min = 0;
      DWORD hour = 0;
      DWORD day = 0;
      DWORD month = 0;
      DWORD year = 0;
      RTC_DateTypeDef   RTC_DateStructure;
      RTC_TimeTypeDef   RTC_TimeStructure;
  
      RTC_GetDate(RTC_Format_BIN, &amp;RTC_DateStructure);        // Get the current Date
      RTC_GetTime(RTC_Format_BIN, &amp;RTC_TimeStructure);        // Get the current Time
                                                  
year =  ((BYTE)RTC_DateStructure.RTC_Year);&nbsp;
month = ((BYTE) RTC_DateStructure.RTC_Month);&nbsp;
day =   ((BYTE)RTC_DateStructure.RTC_Date);&nbsp;
hour =  ((BYTE)RTC_TimeStructure.RTC_Hours);&nbsp;
min =   ((BYTE)RTC_TimeStructure.RTC_Minutes);&nbsp;
sec =   ((BYTE)RTC_TimeStructure.RTC_Seconds);
<p>   }


И вот здесь-то при считывании я и получаю некорректное значение <strong>year.</strong>Заранее благодарен за любые советы.


Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:02
Рейтинг@Mail.ru


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