реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Прерывания LPC2138
Purposeful
сообщение Jul 14 2010, 00:06
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 21-11-08
Пользователь №: 41 843



Здравствуйте.
Я только начал изучать 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01328 секунд с 7
ELECTRONIX ©2004-2016