历史上的今天
返回首页

历史上的今天

今天是:2025年12月07日(星期日)

正在发生

2022年12月07日 | STM32单片机外部中断配置讲解

2022-12-07 来源:zhihu

01
单片机外部中断简介
所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平、低电平)、边沿变化(上升沿、下降沿)等。51单片机有5个中断源,其中有两个是外部中断,分别为INT0和INT1,INT0被分配在P3.2引脚,INT1被分配在P3.2引脚,也即是说如果使用51单片机的外部中断0,则必须将信号接在P3.2上,否则无效。


02
举例说明什么是中断
单片机在执行程序时有两种方式:
查询方式
中断方式
所谓查询方式就是单片机一遍一遍的扫描,查看所监视的目标有没有发生变化,是一种主动式的监视方法,用一个成语可以很客观的描述:守株待兔。
所谓中断方式就是单片机不主动去监视目标,而是目标主动通知单片机状态发生了变化,是一种被动式的监视方法,也可以用一个成语来形容:不速之客。
有一所学校的院墙破了一个洞,为了防止学生半夜跑出去上网,在墙修好之前,学校安排保安每天夜里守在那个洞的旁边监视,这就是守株待兔。到了半夜保安很困想睡觉但是又害怕扣工资,怎么办?这个保安很聪明就在洞口拉了一条绳子把绳子的另一端绑在自己的手腕上,只要有人想出去就会绊倒绳子从而惊醒睡觉的保安,这就是不速之客。这样既不影响保安睡觉,又能捉住半夜出去上网的学生,还能避免保安被扣工资,由此可见通过使用中断大大节省了保安的精力。这就是使用中断的好处。


03
STM32单片机外部中断简介
STM32单片机的每一个GPIO都可以被设置为外部中断输入,根据引脚序号的不同可以将外部中断分为不同的组,分别为PA0-PG0为EXti0组,以此类推,PA15-PG15为EXTI15组,共16组,并且每一组中同一个时刻只能有一个中断源工作,所以,STM32单片机最多允许同时有16个外部中断。外部中断的分配方式如下表所示:

STM32单片机的外部中断触发方式为边沿触发,即上升沿触发和下降沿触发。

04
STM32外部中断配置步骤
STM32单片机在配置外部中断时可以按照以下步骤来操作:
1.初始化GPIO为输入;
2.开启复用时钟,设置映射关系;
3.设置触发条件;
4.分配中断向量控制器,并使能;
5.编写中断服务函数;


05
STM32外部中断相关的寄存器
1.初始化GPIO时要用到如下寄存器:
APB2ENR:开启GPIO时钟和复用时钟;
CRH:端口配置高寄存器;
CRL:端口配置低寄存器;
EXTICR[0]-EXTICR[3]:外部中断配置寄存器
IMR:中断屏蔽寄存器;
EMR:事件屏蔽寄存器;
FTSR:下降沿触发选择寄存器;
RTSR:上升沿触发选择寄存器
ISER[0]-ISER[3]:NVIC中断向量控制器;

推荐阅读

史海拾趣

问答坊 | AI 解惑

PCB大疑问

如上图所示 焊盘周围那个银黄色的圈 出现是什么原因 DRC检查通过! 急…

查看全部问答>

s3c6410-DVFS(动态电压频率调整)功能

哪位高手搞过s3c6410的DVFS(动态电压频率调整)功能吗?在三星的文档里,关于DVFS的介绍很少,只要set BSP_USEDVS=1 就可以使用些功能了好像,但问题是,它体现在哪里?搜索BSP_USEDVS,没找到相关的代码, 有研究过这个功能的前辈吗?大家讨论一 ...…

查看全部问答>

色表要怎么写才能编译通过啊?请高手指点,不胜感激~

#include \"stdio.h\" #include \"ugl/ugl.h\" UGL_LOCAL struct_colorStruct/*这是定义一个色表,就是这部分编译不过去*/ {  UGL_ARGB rgbColor;  UGL_COLOR uglColor; } colorTable[]= { {UGL_MAKE_ARGB(0xff,0,0,0),0}, {UGL_MAKE_A ...…

查看全部问答>

关于规整贴&规整第一帖:LM311测量电路

    关于规整贴         上周,琳子姐跟我谈了谈目前DIY的进展和一些组织的问题。     主要是说到现在大家是按照原计划,分任务独立去做,有时候我们单独发贴,显得有点乱 ...…

查看全部问答>

【低功耗】Lattice坚定发展低功耗低价格FPGA不动摇

Lattice坚定发展低功耗低价格FPGA不动摇 Lattice也是大家熟悉的FGPA生产厂商,有自己的特点~希望更多的人能认识到 …

查看全部问答>

嵌入式培训的烦恼

 最近总在思考要不要去嵌入式培训,好矛盾,一方面觉得在大学学的东西真的太少了(虽然我觉得我在班上学习还是比较刻苦的,但是实践太少了,毕业压力太大了)自己自学又难度太大好多东西要花好多时间,我经常在21ic看arm的论坛好多都看不懂, ...…

查看全部问答>

关于Stellaris系列UART的FIFO新认识,经典

关于Stellaris系列UART的FIFO新认识,经典!(ZZ 21ic) 【经典提问】  有没有办法去掉UART的FIFO,或者怎样才能实现每收发一个字符就中断一次呢?Stellaris系列ARM的UART好像无法做到这一点,存在缺陷!【精妙解答】  误解了,根本就不是缺陷, ...…

查看全部问答>

求助:ad637可以转换直流为直流吗?

ad637可以转换 直流 为直流吗? 做一个交直 流毫伏表,10mv到10v 可以提供一些方案吗…

查看全部问答>

找高手协助开发项目

有那位高手愿意协助开发一个单片机应用的项目,有意向的请联系我,邮箱:willli@foxmail.com…

查看全部问答>

关于NORFLASH、NANDFLASH、SDRAM大小的选择

大侠们好:我看到一个系统有NORFlash 8MB、NANDFlash 32MB、DDR2 128MB、 我想问下,他们分别用来存储什么东西,这些容量的选择是依据什么呢?DDR2是不是用来存储临时的数据?那两个flash呢? 菜鸟一个,求助~~~…

查看全部问答>