启用外部中断时STM32L4R5xx挂起

时间:2018-08-17 14:04:12

标签: interrupt stm32 irq

我想将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配置。

1 个答案:

答案 0 :(得分:2)

如果ISR名称不正确,则会使用某些默认错误代码(其名称取决于配置)。

在我的代码中,其名为EXTI3_IRQHandler而不是EXTI3_IRQnHandler。

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