外部中断开启IO口复用时钟,设置IO口与中断线的映射关系问题

2019-07-21 04:12发布

今天自己写了一下例程中的实验5,外部中断实验(库函数版),在设置IO口复用的时候发现,PA0口作为外部中断时不开启复用时钟,也可以正常进入中断,但是其他的IO口(PE2,3,4)不开启复用时钟就进不去中断,我写的EXTI初始化代码如下,并且我将战舰开发板例程里的PA0口的GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);注释掉之后程序也可以完美运行,其他的IO口GPIO_EXTILineConfig注释掉就不行了,看了STM32中文参考手册也没找到问题所在,有知道的能不能告诉下原因。 [mw_shl_code=c,true]void exit_init(void) { EXTI_InitTypeDef EXIT_InitStructure; GPIO_Config(); EXIT_InitStructure.EXTI_Line = EXTI_Line0 ; EXIT_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXIT_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXIT_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXIT_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2); EXIT_InitStructure.EXTI_Line = EXTI_Line2; EXIT_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXIT_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXIT_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXIT_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3); EXIT_InitStructure.EXTI_Line = EXTI_Line3; EXTI_Init(&EXIT_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4); EXIT_InitStructure.EXTI_Line = EXTI_Line4; EXTI_Init(&EXIT_InitStructure); }[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-21 08:22
复用时钟,是不是在其他地方开启了?
看下寄存器状态!
至于后者,总有个默认配置的,默认如果就是你要设置的值,那么不设置也可以。
掠过留影
2楼-- · 2019-07-21 12:58
回复【2楼】正点原子:
-------------------------
明白了,又看下参考手册,设置PA0的复用时钟时,由于设置的结果是设置外部中断配置寄存器 1(AFIO_EXTICR1) 的EXTI0[3:0]位的值是0000:PA[x]引脚 ,这和复位的默认值是一样的,设置和不设置没差
谢了,原子哥

一周热门 更多>