Цитата
А почему 0x40002FFF? В доках на микроконтроллер 0x40003FFF верхняя граница.
Потому что я не задумываясь привёл цифру из UserManual, Table 17. LPC21xx and LPC22xx memory and peripheral configuration.
Там десяток опечаток - для всех контроллеров с 16 килобайт ОЗУ указано это значение.
Если верить на слово, что там всё-таки 16 килобайт, то Ваша цифра правильнее.
А обработчик прерывания у IAR'а дурацкий :-)
Кейл даёт следующий стартап:
Код
; Exception Vectors Mapped to Address 0.
; Absolute addressing mode must be used.
Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
NOP ; Reserved Vector
LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr
LDR PC, FIQ_Addr
В этом случае сразу же одной командой загружается адрес прерывания из соответствующего регистра (он не просто так расположен в самом конце адресного пространства!). VICVectAddr = 0; в конце прерывания надо делать самостоятельно.