Здравствуйте.
Я только начал изучать ARM контроллеры и столкнулся с проблемой - не работают прерывания.

Код взят из примеров с одного из сайтов. Я его полностью перечитал - вроде все нормально. Подозреваю что необходимо что-то настроить в самой среде. Работаю в uVision3.
Код
#include <LPC213x.h>

    void IRQ_Handler(void) __irq;

int main(void) {
    // Инициализация портов ввода-вывода
    PINSEL0=0x0C+0xC0;            
    IODIR0 =0x00000001;            
    IOSET0 =0x00000001;               
    
    // Инициализация внешнего прерывания
    EXTMODE=0x03;                
    EXTPOLAR=0x03;                
    
    // Инициализация контроллера прерывания
    VICDefVectAddr     = (unsigned)IRQ_Handler;    
      
    VICIntEnable=0x04000+0x08000; // Разрешение прерываний
    
    while (1) {};
}

void IRQ_Handler(void) __irq {
    if  (EXTINT & 0x01)   IOCLR0=0x00000001;              // Зажечь светодиод
    if  (EXTINT & 0x02)   IOSET0=0x00000001;              // Потушить светодиод
    EXTINT=0x03;                                    // Сбросить флаги внешних прерываний
    VICVectAddr     = 0x00000000;                        // Что эта строчка делает? Подскажите пожалуйста.
}


Когда в Proteus подгружаю hex из архива, то все работает. Сам компилирую - не работает crying.gif