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

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


Местный
***

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



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

Вот код инициализации часов:
Код
void RtcInit (void) {
      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 */

}


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

Код
void DateSetup(DWORD TimeDate) {
    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(&RTC_InitStructure);

      RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure);
      RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure);
}



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

Код
DWORD GetSystemTime (void) {

    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, &RTC_DateStructure);        // Get the current Date
    RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);        // Get the current Time
                                                
year =  ((BYTE)RTC_DateStructure.RTC_Year);
month = ((BYTE) RTC_DateStructure.RTC_Month);
day =   ((BYTE)RTC_DateStructure.RTC_Date);
hour =  ((BYTE)RTC_TimeStructure.RTC_Hours);
min =   ((BYTE)RTC_TimeStructure.RTC_Minutes);
sec =   ((BYTE)RTC_TimeStructure.RTC_Seconds);
}



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

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
прыгун
сообщение Jul 2 2011, 18:06
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 13-01-09
Из: Санкт-Петербург
Пользователь №: 43 276



Цитата(Nikitoc @ Jun 22 2011, 14:30) *
Прошу помощи уважаемого сообщества. Не могу понять, где я допустил ошибку. При считывании года из часов получаю левые данные. Остальные параметры корректны и соответствуют установленным.

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

Если считываешь некорректно, то скорее всего и задаешь некорректно). Даташит на часы смотрел? какой формат у значения года?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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