打印
[STM32]

STM32 IO口外部中断程序问题

[复制链接]
1444|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

如上图,我在主函数中初始化了两个函数:Adc_Init() 和 EXTIX_Init(),当把 EXTIX_Init()放在Adc_Init() 前面先初始化时,EXTIX_Init()定义的IO口外部中断服务程序能正常进入;但是当把 EXTIX_Init()放在Adc_Init() 后面初始化时,IO口外部中断服务程序能进不去。通过逐步排除,表面现象是,Adc_Init() 函数中的ADC_Init()函数中定义的局部变量tmpreg1,把它屏蔽了后,哪怕把EXTIX_Init()放在Adc_Init() 后面初始化,IO外部中断服务程序也能正常进入了。注意:只要不屏蔽局部变量tmpreg1,那么就是把ADC_Init()函数中的程序体全部屏蔽也没用(如上图)。请教原因!

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2021-5-25 15:56 | 只看该作者
这只是表现现象,
最大的可能是中断与ADC PIN有冲突了,谁后初始化谁最后有效

使用特权

评论回复
板凳
MeterLeader|  楼主 | 2021-5-25 16:05 | 只看该作者
ayb_ice 发表于 2021-5-25 15:56
这只是表现现象,
最大的可能是中断与ADC PIN有冲突了,谁后初始化谁最后有效 ...

外部中断用的是PB12~PB14,而ADC中断用的管脚是PC1。并且此处现象刚好是反的,外部中断初始化函数放在ADC初始化之前才是正常的,放到ADC后面反而进不了外部中断服务程序。

使用特权

评论回复
地板
ayb_ice| | 2021-5-25 17:24 | 只看该作者
MeterLeader 发表于 2021-5-25 16:05
外部中断用的是PB12~PB14,而ADC中断用的管脚是PC1。并且此处现象刚好是反的,外部中断初始化函数放在ADC ...

调试下,看下相关寄存器的值是否是预期的值

使用特权

评论回复
5
MeterLeader|  楼主 | 2021-5-25 17:49 | 只看该作者
ayb_ice 发表于 2021-5-25 17:24
调试下,看下相关寄存器的值是否是预期的值

恩,测一下电平变化,标志寄存器的状态位变化等等,看到底是那个环节异常。

使用特权

评论回复
6
laocuo1142| | 2021-5-26 08:24 | 只看该作者
有可能还IO冲突了,初始化了ADC就不能用IO了,不管前还是后,只要没有重新初始化端口

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

92

帖子

0

粉丝