Доброго времени суток, уважаемые форумчане!
Засел я сегодня на ночь с одной проблемой - прерывание от кнопки =(
Код
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)), но на данный момент программа даже не заходит в обработчик, уже просто не знаю куда копать =(
Спасибо за внимание, надеюсь на Вашу помощь!