STM32简单的外部IO中断一直调试不成功,请大神帮忙!!!!

2025-03-10 19:56:55
推荐回答(2个)
回答1:

看了一下没发现有什么问题,是否是硬件问题或者是程序还初始化了其他外设导致的:

贴出一个我的代码:

#define XC4X_CE_GPIO_PORT GPIOA
#define XC4X_CE_GPIO_PORT_CLK RCC_APB2Periph_GPIOA
#define XC4X_CE_GPIO_PIN GPIO_Pin_8

#define XC4X_IRQ_GPIO_PORT GPIOA
#define XC4X_IRQ_GPIO_PORT_CLK RCC_APB2Periph_GPIOA
#define XC4X_IRQ_GPIO_PIN GPIO_Pin_9

#define XC4X_IRQ_GPIO_EXIT_SOURCE GPIO_PortSourceGPIOA
#define XC4X_IRQ_GPIO_EXIT_PIN GPIO_PinSource9
#define XC4X_IRQ_GPIO_EXIT_LINE EXTI_Line9
#define XC4X_IRQ_EXIT_NO EXTI9_5_IRQn

NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x00 );
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );

/* XC4X-IRQ引脚--中断功能 */
RCC_APB2PeriphClockCmd(XC4X_IRQ_GPIO_PORT_CLK | RCC_APB2Periph_AFIO , ENABLE);
GPIO_InitStructure.GPIO_Pin = XC4X_IRQ_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(XC4X_IRQ_GPIO_PORT, &GPIO_InitStructure);
GPIO_EXTILineConfig(XC4X_IRQ_GPIO_EXIT_SOURCE, XC4X_IRQ_GPIO_EXIT_PIN);

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = XC4X_IRQ_GPIO_EXIT_LINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

/* 注意此处设置优先级大于等于configMAX_SYSCALL_INTERRUPT_PRIORITY */
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = XC4X_IRQ_EXIT_NO;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0B;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

回答2:

代码比较长……你看我的博客中的文章就ok了。