Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ExtInt LPC1769
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
rasher
Доброго времени суток, уважаемые форумчане!

Засел я сегодня на ночь с одной проблемой - прерывание от кнопки =(

Код
    
EXTI_InitTypeDef EXTICfg;
PINSEL_CFG_Type PinCfg;
PinCfg.Funcnum = PINSEL_FUNC_0;
PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = 10;
PinCfg.Portnum = 2;
PINSEL_ConfigPin(&PinCfg);
EXTI_Init();
EXTICfg.EXTI_Line = EXTI_EINT0;
EXTICfg.EXTI_Mode = EXTI_MODE_EDGE_SENSITIVE;
EXTICfg.EXTI_polarity = EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE;
EXTI_Config(&EXTICfg);
NVIC_SetPriority(EINT0_IRQn, 0);
NVIC_EnableIRQ(EINT0_IRQn);


Данным образом настраиваю пин на получени с него прерываний

Код
void EINT0_IRQHandler(void)
{
    int cnt = 3;
    ledOn &= 0x00FF;
    ledOn |= (1 << (cnt + 8));
    ledOn |= (1 << (15 - cnt));
    ledOff = 0x00FF;
    int tmp = ~0;
    tmp &= ~(1 << (cnt + 8));
    tmp &= ~(1 << (15 - cnt));
    ledOff |= (tmp & 0xFF00);
    pca9532_setLeds(ledOn, ledOff);
    EXTI_ClearEXTIFlag(0);
    vTaskResume(task2);
}


Ну и тут собственно обработка данного прерывания

Вкратце о том, что имею - freertos и EA BaseBoard. Идея какая: при поступлении внешнего прерывания запускается задача на выполнение(vTaskResume(task2)), но на данный момент программа даже не заходит в обработчик, уже просто не знаю куда копать =(

Спасибо за внимание, надеюсь на Вашу помощь!
sysel
Функцию лапе не ту указали:
Цитата
PinCfg.Funcnum = PINSEL_FUNC_0;

Вы же хотите обрабатывать прерывание EINT0, так и ставьте функцию "01"
PinCfg.Funcnum = PINSEL_FUNC_1;

Ну и стандартно:
Убедитесь что разрешены прерывания вообще (регистр PRIMASK).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.