Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-окт-23 05:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Оконный сторожевой таймер.
СообщениеДобавлено: 2017-авг-22 15:47 
Не в сети

Зарегистрирован: 2016-янв-29 14:48
Сообщения: 2
Проблема запуска оконного сторожевого таймера.
Текст программы.
// Основная функция.
void main()
{
VTOR = 0x20000000; // Для отладки в RAM.
// Разрешение процедуры прерывания от WWDG.
NVIC_EnableIRQ(WWDG_Irq);
// Разрешение тактирования WWDG.
PER_CLOCK |= (1<<12);
WWDG->CFR = 0x01FF;
WWDG->CR = 0xFD;
while(1)
{
if(WWDG->SR == 1)
{
WWDG->SR = 0;
WWDG->CR = 0xFD;
}
}
}
// ***********************************
// Обработка прерывания.
void WWDG_IRQHandler(void)
{
NVIC_DisableIRQ(WWDG_Irq);
WWDG->SR = 0x0;
WWDG->CR = 0x7F;
NVIC_EnableIRQ(WWDG_Irq);
}
// ************************************
// Прцедура сброса МП.
PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER(2)
Reset_Handler
;; LDR R0, =SystemInit
;; BLX R0
LDR R0, =__iar_program_start
BX R0

// *************************************
Проблемы.
1.Однако прерывания не возникает.
2.Регистр LR становится равным 0xFFFFFFF9,
затем программа доходит до адреса 0xFFFFFFFF
и останавливается.
В чём ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оконный сторожевой таймер.
СообщениеДобавлено: 2017-авг-27 18:35 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 373
При старте таблица прерываний находится по адресу 0x0800_0000 (флешь).
С этого места контроллер стартует, доходит до main()
Далее вы переносите АДРЕС ТАБЛИЦЫ ВЕКТОРОВ ПРЕРЫВАНИЙ.
Но при этом таблица векторов не проинициализирована.В ней нет адресов тех функций, которые отвечают за обработку прерываний.Для NVIC указан только адрес, относительно которого нужно искать вектора обработки.
При возникновении прерывания (любого) NVIC считывает "ЛЕВЫЙ" адрес обработчика прерывания, затем вероятно пытается считать адрес обработчика отказов (HardFault) и как результат - вываливается по "дикому" указателю - куда повезет.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB