STM32系列微控制器外部中断详解

控制/MCU

1822人已加入

描述

在最近的一个项目中,用了多个外部中断线,刚开始并没有注意外部中断的个数,看资料认为所有 10 口都可以配置为中断,然后原理图就直接连接 6 根外部中断。

后来发现,PA0、PB0、PC0 这些共用一个外部中断线,注意是共用,根本就不能同时存在,同一时间只能有一个中断使用这个中断线,初始化的时候,谁是最后初始化的,那么这根中断线就分配给了谁。希望大家今后不要出现我这种错误。

微控制器

这是我的引脚分配:但最终有效的中断的是 BUTT3、BUTT4、BUTT5,而 BUTT1、BUTT2 中断无效。

以下是资料截图摘自《N32L40x 系列于 基于 32 位 位 ARM Cortex-M4F 微控制器 用户手册 V2.0》,后经查证 STM32 系列也是同样的问题。

微控制器

微控制器

微控制器

微控制器

EXT10-4 中断是这样的,每个中断有一个外部中断线。

微控制器

EXT19_5 和 EXT110_15 中断也是那样,只不过是共用的中断函数,而不是共用一个中断线,这可以中断之后查询是哪根线触发了。

微控制器

当然,如果工程师明确知道 PA0 和 PB0 不会同时触发,并目触发有相互依赖关系,可以通过分时设置 PA0 和 PB0 的外部中断功能。但在大多数情况下,外部中断的触发都是随机的,那么在设计原理图的时候就要考虑到这种情况,把用到的外部中断管脚设置到后缀不同的管脚上,例如 PA0、PA1、PB3、PC8…PD12、PF16,在一个工程中最多能使用 16 个外部中断,并且每个管脚的后缀不同。如果设计电路板没有考虑到这种情况,则需要根据实际情况把触发频繁的设置为外部中断,不频繁的通过检测管脚电平变化来判断是否有触发。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分