突然发现,比如usart,定时器等,如果用中断的话,直接使能它们的中断即可;但是为啥GPIO口作为中断的时候,为啥还要设置IO口与中断线的映射关系?这是其一。
其二,同样的,如果GPIO口作为中断输入,需要映射中断线,那么像串口这些为啥又不映射中断线呢?
百思不得其解呢,求高手解惑!
stm32中断问题
答案:2 悬赏:10 手机版
解决时间 2021-03-18 20:10
- 提问者网友:最美的风景
- 2021-03-18 05:53
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-03-18 07:12
典型的看书不仔细啊……你该再好好看看参考手册,看上面的示意图是怎么画的。
串口的中断,是数据发接收或发送完成时串口的逻辑产生一个跳变信号来驱动中断控制器的。定时器也如此,因此其中断使用只需要设置中断允许位即可。而GPIO作为EXTI中断信号输入时,你至少要设置是哪个端口的那个位输入的吧?因此需要设置映射关系。你以为STM32的EXTI还像51单片机的INT0、INT1输入那样老土?
串口产中断的位置是寄存器,其中断信号是直接连到NVIC的,没有经过EXTI连接过去!
串口的中断,是数据发接收或发送完成时串口的逻辑产生一个跳变信号来驱动中断控制器的。定时器也如此,因此其中断使用只需要设置中断允许位即可。而GPIO作为EXTI中断信号输入时,你至少要设置是哪个端口的那个位输入的吧?因此需要设置映射关系。你以为STM32的EXTI还像51单片机的INT0、INT1输入那样老土?
串口产中断的位置是寄存器,其中断信号是直接连到NVIC的,没有经过EXTI连接过去!
全部回答
- 1楼网友:青尢
- 2021-03-18 08:19
exti0_irqchannel
表示的是外部中断线exti0对应的中断函数。
以stm32f103vb系列为例,100pin,
一般我们通常使用的io对应外部中断线如下:
pa0,pb0,pc0,pd0,pe0 对应的是exti0中断线;
以此类推
到pa15,pb15,pc15,pd15,pe15对应exti5中断线。
exti0对应的中断函数为exti0_irqchannel;
exti1对应的中断函数为exti1_irqchannel;
exti2对应的中断函数为exti2_irqchannel;
exti3对应的中断函数为exti3_irqchannel;
exti4对应的中断函数为exti4_irqchannel;
exti5 -> exti9对应的中断函数为exti9_5_irqhandler;
exti10 -> exti15对应的中断函数为exti15_10_irqhandler;
你要是使用哪种类型的中断就初始化哪类型的中断, 然后在中断函数里写你想实现的东西,
注意中断函数的操作不易过多。
网上有很多基本的例子,如按键程序,闹钟中断, 可以去看下。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯