Добрый вечер.
Пытаюсь использовать прерывания в проекте с scmRTOS. При включении прерывания камень зависает. ПОтратив некоторое время понял что описаный мой обработчик прерывания неиспользуется, а используется обработчик по умолчанию (тот что бесконечнй цикл). Решил попробовать решить проблему кардинально, открыл файл startup.c, нашел там строчку
Код
#pragma weak USART1_IRQHandler = Default_Handler
(меня интересует прерывание модуля USART)
закомментировал ее, чтобы проверить корректно ли отрабатывается дериктива #pragma weak. Компилятор начал ргатся что отсутствует оприсание функии USART1_IRQHandler. Вообщем стало понятно почему уходить в бесконечный цикл.
Вот теперь вопрос: Почему компилятор(линкер) может некорректно отрабатывать?
Заранее спасибо за помощь.
PS. использую "ARM Sourcery Linux GCC C++ Linker"
Проблему решил. )
Лобавил OS_INTERRUPT перед определением обработчика и все получилос.
Сообщение отредактировал abutorin - Jan 13 2013, 17:20