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

 
 
> STM32F2x, Часики
vlad_new
сообщение Feb 10 2013, 14:35
Сообщение #1


Местный
***

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



Часики не устанавливаются. Инициализация вроде в норме. Часы тикают и читаются, но не записываются.
Записываются если только в отладчике RTC вывести на экран. Вроде как при чтении каких то регистров дебагером часики перезаписываются.
Может кто подскажет чего в супе не хватает?
Код
    RTC_TimeStructure.RTC_Hours = ((str[8]-0x30)<<4)|(str[9]-0x30);
    RTC_TimeStructure.RTC_Minutes = ((str[10]-0x30)<<4)|(str[11]-0x30);
    RTC_TimeStructure.RTC_Seconds = ((str[12]-0x30)<<4)|(str[13]-0x30);

    RTC_DateStructure.RTC_WeekDay = 0;
    RTC_DateStructure.RTC_Date = ((str[6]-0x30)<<4)|(str[7]-0x30);
    RTC_DateStructure.RTC_Month = ((str[4]-0x30)<<4)|(str[5]-0x30);
    RTC_DateStructure.RTC_Year = ((str[2]-0x30)<<4)|(str[3]-0x30);

    RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);                    // Init Time
    RTC_SetDate(RTC_Format_BCD, &RTC_DateStructure);                    // Init Date
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Мусатов Констант...
сообщение Apr 26 2013, 07:10
Сообщение #2


Частый гость
**

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



По поводу снятия защиты, я открываю библиотеку и там
CODE
ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
{
.......
/* Disable the write protection for RTC registers */
RTC->WPR = 0xCA;
RTC->WPR = 0x53;

/* Set Initialization mode */
if (RTC_EnterInitMode() == ERROR)
{
status = ERROR;
}
else
{
/* Set the RTC_TR register */
RTC->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK);

/* Exit Initialization mode */
RTC_ExitInitMode();

if(RTC_WaitForSynchro() == ERROR)
{
status = ERROR;
}
else
{
status = SUCCESS;
}

}
/* Enable the write protection for RTC registers */
RTC->WPR = 0xFF;

return status;
}

Защиту снимают в самой функции. Причем дебагер у меня проходит по этому месту. Как раз после этого идет вызов RTC_EnterInitMode, внутри которого и происходит ошибка.
Сами часы настраиваются в функции, которая при старте ОС проверяет, настроены ли часы и, если надо, их настраивает полностью. Неужели и при назначении даты или времени надо проводить так же полную инициализацию, а не только установку даты и времени?

Сообщение отредактировал IgorKossak - Apr 26 2013, 12:41
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 18:14
Рейтинг@Mail.ru


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