SM32有个关中断的小问题,在选择NVIC_IRQChannel 参数的问题,具体看图片与补充

这里有很多参数,但是我具体想问外部中断0、1、2、3、4线中断是什么意思
STM32一个A的IO接口有16个,那么只有5个不是不够用吗?!
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
其中的 EXTI15_10_IRQn又是什么意思
还有DMA通道中断的意思,

STM32的每个线0-15均可以编程为外部中断,线0,1,2,3,4分别对应IO的GPIOx 0-4
他们分别有各自的中断入口EXTI0_IRQHandler 到 EXTI4_IRQHandler
GPIOx5-9特通过一个入口EXTI9_5_IRQHandler 然后进入中断后在通过比较来判断是那路触发了中断 ;同理GPIOx10-15通过EXTI15_10_IRQHandler进入中断,依旧采用在中断中判断那路触发了中断
这样STM32可以直接出来16路外部中断信号,并且不同组的IO可以混合使用,比如GPIOA.0,GPIOB.1这样,但同一个外部线只能支持一路外部输入,即你GPIOA.0已经使用了外部中断的话,GIPIOB,C,D,E,F,G的。0都不能在用这个外部中断线了。追问

追答

他15-10只有这么一个线,就好像规定汽车5-7座的走左侧通道,你非去右侧跑,不罚你罚谁,而这个比汽车还严格,你根本就没给他说对路,他根本就找不到入口!

追问

哦!我明白了15-10只是代表一条线而已
最后一个问题:假如我设置的是GPIOD中的 0线,那么我在哪里查到,应该使用
?_?_IRQHandler

追答

0,1,2,3,4是自己独立的,你截图也有,然后5-9一路,10-15一路

追问

我其实就是想问,我怎样知道5-9,,10-15,,是对应哪一个管脚的,我怎么假设我这时候要控制10号管脚,我到哪里查,我应该写?-?来表示我是选中那一条管脚的

追答

给你个我的外部中断9-5的
//外部中断9~5服务程序
void EXTI9_5_IRQHandler(void)
{
delay_ms(5); //消抖
if(X05==1)
{
TIM3->CR1&=0XFE;
}
else if(X06==1)
{
}
EXTI->PR=1PR=1<<6; //清除LINE6上的中断标志位
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-09
查中断向量表

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网