Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32 проблемы с RTC
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Nikitoc
Прошу помощи уважаемого сообщества. Не могу понять, где я допустил ошибку. При считывании года из часов получаю левые данные. Остальные параметры корректны и соответствуют установленным.

Вот код инициализации часов:
Код
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. Заранее благодарен за любые советы.

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

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

Если считываешь некорректно, то скорее всего и задаешь некорректно). Даташит на часы смотрел? какой формат у значения года?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.