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 名称。
我想使用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 名称。