STM32L4R5xx 在启用外部中断时挂起

STM32L4R5xx hangs when an external interrupt is enabled

我想使用PC3 引脚作为外部中断。每当我启用中断时,我都会陷入无限循环。

这就是我初始化 gpio 及其中断的方式:

__HAL_RCC_GPIOC_CLK_ENABLE();
 GPIO_InitStruct.Pin = GPIO_PIN_3;
 GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 /* EXTI interrupt init*/
 HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);
 HAL_NVIC_EnableIRQ(EXTI3_IRQn);

我检查了硬件,所有信号都正常。 我试了PB0和PC3,结果是一样的

有谁知道怎么玩stm32l4和exti的?

无限循环:

Default_Handler:
Infinite_Loop:
    b   Infinite_Loop
    .size   Default_Handler, .-Default_Handler

我什至没有在这里打断(我在那里有一个断点)

void EXIT3_IRQnHandler(void)
{
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
    if(!HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_3))
    {
               HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
               HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
    }
    EXTI_ClearITPendingBit(EXTI3_IRQn);
}

也许值得一提的是我在同一项目 (SPI1) 中也有 SPI 配置。

如果 ISR 名称不正确,它将使用一些默认错误代码(其名称取决于配置),就像您的情况一样。

在我的代码中它被命名为 EXTI3_IRQHandler 而不是 EXTI3_IRQnHandler。

检查您的启动文件(在我的设置中称为 startup_stm32l432xx.s)以使用 ISR 名称。