Свежие обсуждения
Микроконтроллеры

FIQ-прерывание в KEIL mVision для LPC2104

Здраствуйте! Помогите тупому с вышеозначенным прерыванием (компилятор RealView). С регистрами разобрался, при запуске симуляции прерывание по событию происходит, а функция прерывания не выполняется. Она имеет вид:
__irq void FIQ_Handler (void) {...}
В справке пишут, что приставку __fiq RealView не воспринимает, использовать надо __irq как я написал выше, а в STARTUP внести изменения:
Vectors LDR PC, Reset_Addr
:
LDR PC, FIQ_Addr ; Instruction at FIQ Vector location
:

PRESERVE8 ; tell linker: stack alignment is 8byte
IMPORT FIQ_Handler ; use external FIQ_Handler
FIQ_Addr DCD FIQ_Handler ; FIQ Entry point

После внесения строк PRESERVE8 и IMPORT..., компилятор выдает ошибку "Multiply defined symbol 'FIQ_Handler' "c указанием на строку
FIQ_Handler B FIQ_Handler
которая в Startup'е ниже располагается. Убирал эту строку - компиляция проходит, но функция не вызывается.

 

Покопайтесь в примерах. Имхо, должно быть так:
В разделе векторов
LDR PC, FIQ_Addr
Ниже константа с адресом
FIQ_Addr DCD FIQ_Handler
Ну и где-то вверху
IMPORT FIQ_Handler