珠海做公司网站,如何做简易的网站,旅游网站怎样做网络宣传,企业手机网站设计本篇解释了STM32中断原理
MCU为什么需要中断
中断#xff0c;是嵌入式系统中很重要的一个功能#xff0c;在系统运行过程中#xff0c;当出现需要立刻处理的情况时#xff0c;暂停当前任务#xff0c;转而处理紧急任务#xff0c;处理完毕后#xff0c;恢复之前的任务…本篇解释了STM32中断原理
MCU为什么需要中断
中断是嵌入式系统中很重要的一个功能在系统运行过程中当出现需要立刻处理的情况时暂停当前任务转而处理紧急任务处理完毕后恢复之前的任务。
中断的优势 在MCU和外设之间进行平衡 MCU的处理速度远高于外设如果没有中断机制系统将不得不定期检查外部设备状态这是一种资源浪费。中断机制避免了不必要的轮询仅在设备就绪时才进行处理。
快速响应外部事件 在实时系统中中断机制使得计算机能够即时响应外部事件很多场景下信号不会等待MCU处理完才消失如果单个时间窗口没有对信号进行采集原始信号就被新的信号覆盖了因此中断对于实时数据处理至关重要。
STM32 如何实现中断 外部中断控制器框图 上图为STM32的外部中断控制器框图可以从右至左来理解这个框图从输入线为起点信号从IO口到达边沿检测电路边沿检测电路可以通过两个寄存器进行配置。 这两个寄存器用于设置中断的触发条件上升沿触发下降沿触发上升沿下降沿同时触发可以理解为这里就是设置条件一旦输入满足条件边沿检测电路就放行信号否则不做任何动作。
接着往左软件中断寄存器和边沿检测电路的输出通过OR门连接在了一起这也意味着可以通过软件来触发这条输入线的中断。即使外部条件未满足软件中断事件寄存器被设置也能触发中断。这个经常被用于通过软件实现故障注入以测试系统的功能是否满足需求。
接着往左触发的中断信号会指向请求挂起寄存器这里就等于高速NVIC我要中断请批准。 而它左侧的中断屏蔽寄存器则是用于设置要不要开启对中断的响应。 当中断屏蔽寄存器没有被开启时即使有对应的中断NVIC也不会响应这个中断请求。 如果一路畅通无阻信号就会进入NVIC中断控制器在经过优先级排序后被MCU进行处理了。
往下看会看到中断请求信号与事件屏蔽寄存器通过AND门连接在一起这里是用于以中断触发事件。即可以通过脉冲发生器快速的去控制其他外设比如点亮LED灯拉低某个PIN脚的电平。
至此中断信号的输入到中断请求的输出就梳理清楚了。 接下来看看在处理中断信号输入中STM32做了哪些设计
AFIO
外部中断/事件线路映像AFIO AFIO在STM32中主要完成选择中断引脚和引脚功能的重映射两种功能。由于芯片空间有限为了更好的提高效率节省资源并不是每一根引脚都有其对应的中断线他们是共用的关系。 1.中断引脚选择 在MCU无法将每一个外部引脚都连接至内核的情况下PIN脚以组的形式共用中断线图中的EXTI0可以看到PA0-PG0都连接至EXTI0AFIO通过配置寄存器来选择具体哪个引脚连接至中断线。
2.引脚功能的重映射 STM32中部分引脚能够通过AFIO进行重定义以实现当前引脚下所能配置的其他功能这一部分内容暂且不表。
NVIC
嵌套向量中断控制器NVIC是外设和MCU之间的桥梁负责接收来自外设的中断并根据中断优先级交给MCU进行处理