Добрый вечер!
Решил разобраться с работой прерываний на МК LPC 2294. Начал с самого простого - взял готовый
Не работают прерывания от таймера, да и думаю, что вообще обработка прерываний не работает.
Имеется микроконтроллер LPC2294 и среда IAR EWARM. Имеется пример к этому микроконтроллеру, поставляемый со средой разработки В примере используются прерывания от таймера для формирования задержки. Шьём пример в память МК - не работает. Если убрать прерывания и формировать задержку простым счетом, то пример работает. Но работает если режим процессора установлен как THUMB в настройках проекта.
1) Почему не работают прерывания, в чем может быть причина? 2) Почему запускается программа только в режиме THUMB. 3) Может быть что-то неправильно проинициализировано (не инициализировано вообще) для обработки прерываний? 4) Можно ли обойтись в проекте без файла startup.s. (вопрос возник т.к. в прилагаемом проекте он отсутствовал). Возможно при сборке проекта прилинковывается стандартный файл в каталоге со средой, но подходит ли он для моего процессора? Насколько мне известно, в файле startup.s находится таблица векторов исключительных ситуаций и в нем же производится инициализация указателей стек для различных режимов работы, настройка какой-либо периферии (опционально), ну и передача управления функции main. Вместо файла начальной инициализации в настройках проекта указан файл с расширением *.icf (Linker configuration file), в котором указано расположение векторов исключительных ситуаций и размеры стеков. Может ли этот файл заменить startup код или же придется писаьт его ручками?
5) Если нет, то где можно подчерпнуть информацию по его написанию? В Keil всё очень просто и структура файла довольно понятна, да и в книге Тревора Мартина все подробно описано, а вот в IAR мне не совсем понятно.
|