首页 > 其他分享 >简单解释STM32中断

简单解释STM32中断

时间:2024-06-10 17:58:03浏览次数:16  
标签:解释 优先级 映射 引脚 中断 STM32 抢占 CPU

中断

作用:高效处理紧急程序,并且不会占用CPU资源。 

在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行

即打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行;

 对于单片机来说,中断是指CPU正在处理某个事件A,发生了另一件事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU处理事件B完成后,再回到原来的事件A(断点)继续执行,这一过程称之为中断。

中断的作用和意义:

  1. 实时控制:在确定的时间内对相应事件做出相应;例如:温度控制;
  2. 故障处理:检测到故障,需要第一时间进行处理;
  3. 数据传输:不确定数据何时会来,利用中断进行控制;

中断共有  68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设。

一个信号从GPIO进入,经过哪些“部门"才能实现中断

APIO(Alternate Function IO)

在STM32中AFIO主要用于引脚复用功能的选择和重定义

  1. 引脚重映射:通过重新映射,可以将特定的外设功能映射到不同的引脚上,以满足设计需求。例如,将UART的TX和RX引脚从默认的引脚映射到其他GPIO引脚上。
  2. 外部中断线映射:通过AFIO可以将外部中断线连接到不同的GPIO引脚上,实现外部中断的触发和处理。
  3. JTAG/SWD接口功能选择:通过配置AFIO,可以切换JTAG或SWD调试接口的功能。这在调试和程序下载过程中非常有用。
  4. Eventout功能选择:通过AFIO可以选择将特定事件映射到GPIO引脚上,以实现事件的触发和监测。

AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择

EXTI(External interrupt/event controller)

是     外部中断     /     事件控制    器,管理了控制器的 20个中断/事件线。

每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性

和整体的联系

NVIC(Nested vectoredinterrupt controller)

即嵌套向量中断控制器,也即中断管家,由NVIC分配中断给CPU,怎么分配?

作用:用于为中断分组,从而分配抢占优先级和响应优先级; 
分组的方式有两种: 
(1)Cortex-m3内核提供了一种3位宽度的PRIGROUP数据区,用于指示一个8位数据序列中的小数点的位置,从而表示中断优先级的分组。 

(2)而实际上STM32并没有用到这么多中断,所以在分组上只分了5个组,并且表示方法有所不同; 

中断优先级

1、抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断;

2、响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能相互打断;

3、抢占优先级和响应优先级都相同的情况下,自然优先级越高的先执行;

4、自然优先级:中断向量表中的优先级;

5、数值越小,表示优先级越高;

NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级 抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队

注意:

牢记在程序中     设置中断服务函数(包括清除中断标志);

参考文章:

外部中断(EXTI)——原理和程序

 中断-NVIC与EXTI外设详解

STM32--中断使用

标签:解释,优先级,映射,引脚,中断,STM32,抢占,CPU
From: https://blog.csdn.net/weixin_51738481/article/details/139576245

相关文章

  • 内网基础名词解释
    工作组WorkGroup 是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。在工作组中所有的计算机都是平等的,没有管理与被管理之分,因此工作组网络也称为对等网络。即没有一个中央管理器。域简单可以理解为工作组升级而来的高级架构,域(Dom......
  • 按键中断驱动程序-异步通知
    在前面的休眠-唤醒、POLL机制中,都是通过休眠等待某一个事件的发生,而程序一旦陷入休眠,就没法再执行其它任务,相当于整个程序卡死了。在很多的场景中,如果发生了某一个事件我们就去处理它,没有发生事件那就可以做其它的事情。这种正常执行程序,当中断发生时才去执行的方式就叫做异步通知......
  • 【esp32 项目】中断读取按键
    原理图:图 按键部分图 单片机部分程序:KEY_USR 引脚配置成上拉输入在Arduino中,配置一个IO为上拉输入可以使用pinMode()函数和digitalWrite()函数。pinMode()函数用于设置引脚模式,而digitalWrite()函数用于设置上拉电阻。以下是一个示例代码,展示如何将Arduino的数字引脚3配......
  • 从零手写实现 nginx-13-nginx.conf 配置例子解释 + nginx 配置文件要如何解析?
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 杂项——编码器控制小车走固定距离(stm32)
    先算出轮子转一周编码器的数值(假设为1000),再算出轮子一周的周长(假设为10cm)。那么要前进1米只需要转1米/10cm等于10圈,10圈编码器数值为10000。我们只需要在代码里面写出编码器数值如果<10000则让小车前进,如果>10000让小车停止,即可实现控制小车走固定的距离编码器.c函数(编码器......
  • STM32单片机开发入门(四) 示波器的介绍及使用方法
    文章目录一.概要二.探头补偿校准三.电压测量四.波形的测量与分析五.串口通讯波形测量解析六.触发捕捉瞬时信号七.小结一.概要示波器主要用于观察电信号的波形变化。在显示屏上,工程师可以直接看到电信号的全过程,从而进行定性和定量的分析。这种仪器通常用于显示电压......
  • 跟着GPT学习Java线程中断机制
    Java中的线程中断是一个复杂但非常重要的概念,它允许一个线程告知另一个线程希望它停止正在做的事情。这个机制是协作式的,意味着被请求中断的线程需要自己检查中断状态,并且决定如何响应中断请求。下面我将系统地讲解Java中的线程中断知识点。 1.中断标志每个线程都有一个内部......
  • 3.7v可充电锂电池,能否直接给STM32F1芯片用?
    原文链接:https://www.amobbs.com/thread-5678061-1-1.html 问:就是18650锂电池,单节,或者那种聚合物锂电池,都是两三千毫安时的。第一个为题:能否直接给STM32F103供电?第二个问题:板子上自带1117-3.3,我直接锂电池接过去,也能输出3.3V,压差可以这么小么?第三个问题:其他的电压转换芯片......
  • 最优阈值的确定方法(详细解释,通俗易懂)
            上一篇文章我们提到,查全率和查准率是一对矛盾的度量,那在实际的应用中怎么选取一个合适的值去平衡这两个度量,这里我们介绍三种方法,这个值就叫做最优阈值。1.方法一:选择平衡点      我们看下图        如图一中所示,Threshold就是阈值,Precision......
  • minos 2.1 中断虚拟化——ARMv8 异常处理
    首发公号:Rand_cs越往后,交叉的越多,大多都绕不开ARMv8的异常处理,所以必须得先了解了解ARMv8的异常处理流程先说一下术语,从手册中的用词来看,在x86平台,一般将异常和中断统称为中断,在ARM平台,一般将中断和异常统称为异常异常的流程,可以分为3个阶段,“设备”产生异常信号,中......