我要用嵌入式知识配置4个按键的中断,下面是stm32外部中断的初始化函数的参考代码,该怎么修改。

2025-05-07 18:38:45
推荐回答(1个)
回答1:

寄存器配置一定要看手册来配,不然谁会

STM32的GPIO多很多,所有的GPIO口都可用作外部中断,但同组的只能选择一个,如GPIOA的第1脚与其他都是1脚(如GPIOC的第一脚)的归为一组,所以SYSCFG->EXTICR[0] &= ~(0x0f << (0 * 4));这句是来配置外部中断0的中断线选择GPIOA的,即GPIOA的第0脚;

EXTICR[0]是选择外部中断0到3的,其他以此类推。

例如你的按键为PC5,则你选择外部中断5,

SYSCFG->EXTICR[1] &= ~(0x0f << (1 * 4));

配置成上升沿触发EXTI->RTSR |= 1 << 5;

或者配置成下降沿触发EXTI->FTSR |= 1 << 5;

或者两者都行,这需要看你的外部电路,按下由低电平转高则选上升沿

最后开放对应中断线的请求EXTI->IMR |= 1 << 5;

后面那几行根据你的要求写中断分组,中断优先级,最后写你的中断函数