Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 EXTInterrupt
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Diamond1309
Привет всем.
Пробую сделать внешнее прерывание по изменению состояния на выводе порта B (пробовал на выводах 3, 6, 7). Делаю вроде все как "по учебнику", но в обработчик прерывания не входит. Хотя если изменить состояние вывода порта А (при запрограммированном прерывании на порт B ) срабатывает обработчик прерывания. Проверял на STM32F100R и на STM32F103R, на обеих контроллерах та же история.
Компилятор CooCox CoIDE (Toolchain arm-2011.03-coocox).

Делаю так:
Код
    NVIC_InitTypeDef v;
    GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef e;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Peri
ph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_3;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_3;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    v.NVIC_IRQChannel = EXTI3_IRQn;
    v.NVIC_IRQChannelCmd = ENABLE;
    v.NVIC_IRQChannelPreemptionPriority = 0;
    v.NVIC_IRQChannelSubPriority = 0;
    NVIC_Init (&v);

    e.EXTI_Line = EXTI_Line3;
    e.EXTI_LineCmd = ENABLE;
    e.EXTI_Mode = EXTI_Mode_Interrupt;
    e.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_Init(&e);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);


Обработчик прерывания:
Код
void EXTI3_IRQHandler()
{

    LED_PORT->ODR ^= GPIO_Pin_9;
    UARTSend("Privet\r\n");
    EXTI_ClearITPendingBit (EXTI_Line3);
}
AHTOXA
Включите тактирование AFIO.
Diamond1309
Спасибо большое. Все заработало.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.