单片机--STM中断系统

news2024/9/30 19:33:36

目录

【1】中断系统

1.基本概念

2.中断的意义

中断提高了CPU效率?

3.中断处理过程

中断处理过程

4. 中断体系结构

5.NVIC 

 NVIC主要功能

6.EXTI

 【2】IIC 

IIC主要特点

【3】485


【1】中断系统

1.基本概念

在处理器中,中断相当于对于突发事件的处理过程。

当遇到内部/外部的紧急事件需要处理时,暂时中止当前程序,转而去处理紧急事件,

待处理完毕后,再返回被打断的程序继续向下运行。

示例:

1 看电影                                 正在执行的主程序

2 来电话                                 中断信号

3 暂停电影                              压栈

4 取快递                                 处理中断事件(中断处理函数)

5 继续看电影                          出栈

2.中断的意义

中断能够对突发事件进行及时处理,实现程序的并行化,进而提高CPU的工作效率。

中断提高了CPU效率?

 因为CPU对于没有发生的事情是在不停的在轮询(询问有没有发生?)

在计算机与外围设备之间传送数据,CPU工作速度快,外围设备工作速度慢,形成CPU等待,效率降低。如果没有使用中断,CPU的大量时间可能会浪费在等待操作上。设置中断后,完全消除了CPU在查询方式中的的等待现象,CPU不必花费大量时间等待和查询外围设备工作,就可以使CPU与外设同步工作,大提高了CPU的工作效率。

3.中断处理过程

中断处理过程

   进入中断 

  • 处理器自动保存现场到堆栈里 
  • {PC, xPSR, R0-R3, R12, LR}
  •  一旦入栈结束,ISR便可开始执行

  退出中断

  •  中断前的现场被自动从堆栈中恢复
  •  一旦出栈完成,继续执行被中断打断的指令
  • 出栈的过程也可被打断,使得随时可以响应新的中断而不再进行现场保存

        R0 - R12 

        R13  栈指针 SP       : 指向栈顶地址

        R14 链接寄存器 LR :存放返回地址

        R15 程序计数器 PC :保存要执行的指令地址

4. 中断体系结构

5.NVIC 

嵌套向量中断控制器(Nested Vectored Interrupt Controller) 

 NVIC主要功能

  负责管理中断 (CPU的小助理)

  1)管理中断事件

     每个中断事件都有执行或禁止两种状态,由NVIC负责将中断事件标记为清除和挂起两种状态。 

(当多个中断事件同时到达时,NVIC会优先处理优先级更高的事件)

(当中断执行完成时,NVIC会将中断事件置为清除状态)

  2)支持中断向量化处理

      当中断事件发生时,处理器会将PC置为中断事件入口函数的地址,进而跳转到中断服务程序去执行,这就是个中断(异常)向量,因为每一个异常源或者中断事件都会对应一个服务程序的入口地址,将这些地址按照优先级进行排布后,组成的一张表就称为中断(异常)向量表。

           Cortex-M0内核 可以处理15个内部异常和32个外部中断

           STM32G030 只使用了6个内部异常和28个外部中断

    3)支持中断嵌套 

          3个固定的优先级,都是负值,不能改变。

          四个可编程优先级,用两个bit位表示,00,01,10,11 

          优先级数值越小,优先级等级越高。

       注意

      不同优先级的中断同时发生,优先处理优先级编号较小的那个

      同样优先级的中断同时发生,中断向量号较小的那个优先响应

6.EXTI

    外部事件/中断控制器

   主要功能: 产生中断,产生事件

产生中断的目的,是将信号送入NVIC,进而运行中断服务程序,实现对应功能,是软件级。

产生事件的目的,是将采集到的一个脉冲信号送到某个外设,进而驱动某些设备做出动作,是电路级别的传输,是硬件级的。

   结构框图:

     

  • 编号1是信号输入线,EXTI支持产生多达28个外部事件/中断请求。
  • 编号2是边沿检测电路,用于监测上升沿或下降沿信号。它会根据上升沿触发选择寄存(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位的设置来控制信号触发。
  • 边沿检测电路以输入线作为信号输入端,监测是否有边沿跳变,检测到有边沿跳变输出有效信号 1 给编号 3 电路,否则输出无效信号0。
  • 编号3是一个或门电路,信号来源是外部事件或者软件中断/事件寄存器产生。允许我们通过程序控制EXTI_SWIER就可以启动中断/事件线
  • 编号4是一个与门电路,信号来源是编号3送来的信号和中断屏蔽寄存器的值,如果中断屏蔽寄存器为0,也不会将信号送到NVIC,只有编号3送来了中断信号且中断屏蔽寄存器允许产生中断,才会将中断信号送入NVIC.
  • 接下来我们来看看红色虚线指示的电路流程。它是一个产生事件的线路,最终输出一个脉冲信号。
  • 产生事件线路是在编号3电路之后与中断线路有所不同,之前电路都是共用的。
  • 编号5是一个与门电路,信号来源是编号3送来的信号和事件屏蔽寄存器的值,如果事件屏蔽寄存器为0,不会将信号送到脉冲发生器,只有编号3送来了信号且事件屏蔽寄存器允许产生事件,才会将信号送入脉冲发生器(编号6), 进而产生脉冲来控制外部设备做出动作。 这样我们可以简单的控制 EXTI_EMR 来实现是否要产生事件的目的。

 【2】IIC 

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。

在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。

IIC主要特点

通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。

(1)IIC主设备功能:主要产生时钟,产生起始信号和停止信号

(2)IIC从设备功能:可编程的IIC地址检测,停止位检测

(3)IIC的一个优点是它支持多主控(multimastering), 其中任何一个能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

(4)支持不同速率的通讯速度,标准速度(最高速度100kHZ),快速(最高400kHZ)

(5)SCL和SDA都需要接上拉电阻 (大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。

(6)IIC是半双工,而不是全双工 ,同一时间只可以单向通信

【3】485

485通信协议是一种广泛应用于工业自动化领域的串行通信协议,其主要特点是支持多节点通信、远距离传输、高速传输和抗干扰能力强。485通信协议:

(1)物理层:485通信协议采用差分信号传输,即采用两个信号线(A、B)分别传输正向和反向的信号,而接收器则通过两个信号线的差值来判断数据的高低电平。由于采用了差分传输,485通信协议的抗干扰能力比较强,适合在电磁干扰比较强的工业环境中使用。

(2)数据链路层:485通信协议的数据链路层包括了帧同步、地址、数据、校验等部分。其中帧同步由起始位、数据位和停止位组成,地址用于标识数据帧的接收节点,数据包含了实际的数据信息,校验用于检验数据的正确性。

(3)传输速率:485通信协议支持多种传输速率,例如最常用的9600、19200、38400、115200等。传输速率越高,数据传输速度越快,但也会带来传输距离短和抗干扰能力弱的问题。

(4)多节点通信:485通信协议支持多节点通信,即多个节点可以通过同一条485总线进行通信。为了避免数据冲突,485通信协议采用了主从通信方式,即只有主机才能主动向从机发送数据,而从机只能在主机的请求下发送数据。

485就是用来通讯的。就像我们学单片机用的串口:UART、IIC、SPI等,是为了两个设备之间交换数据的。
使用485因为传输数据用的是差分信号,利用两根双绞线进行传输,抗干扰能力强,这是它相对于以上通讯方式最大的优点。

在这里插入图片描述


可以看到左边的网络标号有RXD与TXD,它就是接UART的那两个线。不过比UART多了一个choose,其作为接受和发送的选择端,二者选其一,所以485为半双工通讯。
右边的A和B就是输出差分信号的线,与其他的485器件的A和B连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Scala---02】Scala 类与对象 『 类 | 属性 | 访问权限 | 方法 | 继承 | 伴生对象伴生类』

文章目录 1. 定义类2. 属性3. 访问权限4. 方法4.1 方法 vs 函数4.2 方法重写4.3 方法重载4.4 构造方法(1) 构造器定义(2) 构造器的参数列表(3) 构造器私有化 5. 继承6. 伴生对象 & 伴生类6.1 伴生对象的由来6.2 伴生对象 & 伴生类 7. 后续 1. 定义类 Java文件&#xf…

JavaScript全解析——ES6函数中参数的默认值和解构赋值

本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容&#xf…

AI向百万薪资 高级原画师开刀?!爆Midjourney入局3D模型生成

来源 SoulofArt | ID Soul_Art 现在AI向高级原画师和3D开刀了? 网传爆料AI已入局3D模型生成... 这进化速度放在整个行业都十分炸裂 4月,Midjourney进一步宣布推出Niji-journey V5 这是MJ针对二次元动漫风格预训练好的模型 可在其中添加提示词直接调…

Android 广播使用详解(Broadcast Receivers)

Android 广播接收器(Broadcast Receivers) 广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。这样广播接收器可…

Kubernetes配置管理 ConfigMap

Kubernetes配置管理 ConfigMap 一、ConfigMap 1.1 什么是configmap kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理。可以把ConfigMap看作是一个挂载到pod中的存储卷 1.2 创建ConfigMap的4种方式 1.2.1 在命令行指定参数创建 通过直接在命令行中指定config…

新手玩转腾讯云轻量应用服务器搭建网站(保姆级教程)

腾讯云轻量应用服务器镜像选择宝塔Linux面板,然后在宝塔面板上安装LNMP网站所需的Web环境,在宝塔面板上新建站点,上床网站程序安装包到根目录,并安装网站全流程。腾讯云百科来详细说下腾讯云轻量应用服务器搭建网站全流程&#xf…

opencv显示图片

要使用OpenCV在Python中显示图像,您需要遵循以下步骤: 1. 首先,确保已经安装了OpenCV。您可以使用以下命令安装OpenCV: pip install opencv-python 2. 然后,编写一个简单的程序来读取并显示图像。以下是一个示例代码…

数据可视化之雷达图(Radar Chart)

什么是雷达图? 雷达图(Radar Chart)也称为蜘蛛图、网络图或极坐标图,是一种用于可视化多变量数据的图表。该图表由一系列从中心点向外辐射的辐条组成,每个辐条代表一个不同的变量。数据使用线或区域绘制在每个辐条上&#xff0c…

面试的水太深,年轻人你把握不住.....

前言 去阿里面试测试工程师,这里面水太深,什么未来规划,职业发展的东西都是虚拟的,作者还太年轻,没有那个经历,把握不住。项目只有几个,开心快乐就行,不PK,文明PK。 很…

Partial convolution Gated convolution

组会讨论帖 1. 图像修复 图像修复(Image Inpainting),顾名思义,就是将图像中损坏的部分修复起来,是一种图像编辑技术,可以应用在移除物体、修复老照片、图像补全(eg,地震插值)等等。…

【初始scrapy框架上】——全栈开发——如桃花来

目录索引 scrapy框架的介绍:scrapy第三方包的下载:常见的换源网址: scrapy的图示原理:或者:或者: scrapy原理流程:详细介绍:流程描述:scrapy中的三个内置对象&#xff1a…

open cv 4.6.0 导入maven库以及依赖包 安装教程

windows: 1.官网下载windows安装包 2.安装完成后,复制opencv\build\java\x64\opencv_java451.dll 到 C:\Windows 下 centos: 参考https://www.cnblogs.com/huizhipeng/p/12732019.html 1.先安装cmake3 参考https://www.jianshu.com/p/20…

详谈大模型训练和推理优化技术

详谈大模型训练和推理优化技术 作者:王嘉宁,转载请注明出处:https://wjn1996.blog.csdn.net/article/details/130764843 ChatGPT于2022年12月初发布,震惊轰动了全世界,发布后的这段时间里,一系列国内外的…

莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

在《收获》杂志 65 周年庆典上,莫言在为余华颁奖时表示,余华是自己的好朋友,但给他的颁奖词写了好几天也想不出来,后来找了 ChatGPT 帮忙写。最后,莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词,…

「硬核分享」Docker+jenkinsPipeline 运行实现 python 自动化

一、实现思路 在 Linux 服务器安装 docker 创建 jenkins 容器 jenkins 中创建 pipeline 项目 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 二、环境准…

Defining Timing Constraints and Exceptions(UG945)

在本实验中,将学习为设计创建约束的两种方法。将使用Vivado2019.2 IDE中包含的Kintex-7 CPU网表示例设计。 步骤1:打开示例项目 1.打开Vivado IDE。 Vivado IDE的“Getting Started page”包含打开或创建项目以及查看文档的链接。 2.在“Getting Started…

泛型编程与模板简单介绍,函数模板及其原理与template,typename,模板参数T,函数模板隐式实例化等

泛型编程 比方说现在要去实现一个通用的交换函数,以我们现在的思路,肯定是通过函数重载去解决。但是这样子的话有几个缺点:重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己…

水溶性花菁染料Sulfo-CY7 NHS este标记活性脂Cyanine7-NHS

Sulfo-CY7 NHS ester是一种荧光标记试剂,化学结构为C38H42KN3O10S2,分子量约为803.98 。此外,它的分子中还含有一个N-羟基琥珀酰亚胺酯基团,这个基团可以与生物分子中的氨基结合,从而实现荧光标记。Sulfo-CY7 NHS este…

Moonbeam联合Multichain和AWS Startups正式推出Bear Necessities Hackathon黑客松

我们很高兴宣布Bear Necessities Hackathon正式启动。本次黑客松包含7个挑战,超过7万美金的奖池等你来领!我们欢迎所有的BUILDers参加,这是开发者们探索Moonbeam并构建跨链用例的机会! 本次黑客松由Moonbeam、Multichain和AWS St…

js原生实现pc端日历组件

业务场景 客户要求日期选择使用pc端的样式,前端在x5平台上,也就是需要用原始html、js、css等实现,笔者使用于 原生javascript封装的PC端日历插件,不依赖任何第三方插件,复制的代码文件较长,可跳到 总结 处…