0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机中断程序是如何被中断的?

麦克泰技术 来源:灵动MM32 MCU 2023-05-16 14:06 次阅读

你有没有想过一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断该如何处理?

中断一般是由硬件(例如外设、外部引脚)产生,当某种内部或外部事件发生时,MCU的中断系统将迫使 CPU 暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去,所有的Cortex-M 内核系统都有一个用于中断处理的组件NVIC,主要负责处理中断,还处理其他需要服务的事件。嵌套向量式中断控制器(NVIC: Nested Vectored Interrupt Controller)集成在Cortex-M0处理器里,它与处理器内核紧密相连,并且提供了中断控制功能以及对系统异常的支持。

处理器中的NVIC能够处理多个可屏蔽中断通道和可编程优先级,中断输入请求可以是电平触发,也可以是最小的一个时钟周期的脉冲信号。每一个外部中断线都可以独立的使能、清除或挂起,并且挂起状态也可以手动地设置和清除。

主程序正在执行,当遇到中断请求(Interrupt Request)时,暂停主程序的执行转而去执行中断服务例程(Interrupt Service Routine,ISR),称为响应,中断服务例程执行完毕后返回到主程序断点处并继续执行主程序。多个中断是可以进行嵌套的。正在执行的较低优先级中断可以被较高优先级的中断所打断,在执行完高级中断后返回到低级中断里继续执行,采用“咬尾中断”机制。

1b4a05b0-f3a2-11ed-90ce-dac502259ad0.png  

内核中断(异常管理和休眠模式等),其中断优先级则由SCB寄存器来管理,IRQ的中断优先级是由NVIC来管理。

NVIC的寄存器经过了存储器映射,其寄存器的起始地址为0xE000E100,对其访问必须是每次32bit。

SCB寄存器的起始地址:0xE000ED00,也是每次32bit访问,SCB寄存器主要包含SysTick操作、异常管理和休眠模式控制。

NVIC具有以下特性:

灵活的中断管理:使能清除、优先级配置

硬件嵌套中断支持

向量化的异常入口

中断屏蔽

1. 中断使能和清除使能

arm将处理器的中断使能设置和清除设置寄存器分在两个不同的地址,这种设计主要有如下优势:一方面这种方式减少了使能中断所需要的步骤,使能一个中断NVIC只需要访问一次,同时也减少了程序代码并且降低了执行时间,另一方面当多个应用程序进程同时访问寄存器或者在读写操作寄存器时有操作其他的中断使能位,这样就有可能导致寄存器丢失,设置和清除分成两个寄存器能够有效防止控制信号丢失。

1b686118-f3a2-11ed-90ce-dac502259ad0.png

因此我可以独立的操作每一个中断的使能和清除设置。

1.1 C代码


*(volatileunsignedlong)(0xE000E100)=0x4;//使能#2中断

*(volatileunsignedlong)(0xE000E180)=0x4;//清除#2中断

1.2 汇编代码

wKgZomRjHbmAY85fAAB75Iwx-Ms999.jpg

1.3 CMSIS标准设备驱动函数

wKgZomRjHdeAXJHbAAEJ3BvWQ24343.jpg

2. 中断挂起和清除挂起

如果一个中断发生了,却无法立即处理,这个中断请求将会被挂起。挂起状态保存在一个寄存器中,如果处理器的当前优先级还没有降低到可以处理挂起的请求,并且没有手动清除挂起状态,该状态将会一直保持。

可以通过操作中断设置挂起和中断清除挂起两个独立的寄存器来访问或者修改中断挂起状态,中断挂起寄存器也是通过两个地址来实现设置和清除相关位。这使得每一个位都可以独立修改,并且无需担心在两个应用程序进程竞争访问时出现的数据丢失。

1b75f1f2-f3a2-11ed-90ce-dac502259ad0.png

中断挂起状态寄存器允许使用软件来触发中断。如果中断已经使能并且没有被屏蔽掉,当前还没有更高优先级的中断在运行,这时中断的服务程序就会立即得以执行。

2.1 C代码

wKgaomRjHfWAG0w9AABLY-88aMc508.jpg

2.2 汇编代码

wKgaomRjHgeAGhqEAADvcSpnZFw058.jpg

2.3 CMSIS标准设备驱动函数

wKgaomRjHiKACoL4AAD-zupzdFk376.jpg





审核编辑:刘清

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

    关注

    68

    文章

    19259

    浏览量

    229649
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634629
  • 中断控制器
    +关注

    关注

    0

    文章

    59

    浏览量

    9452
  • Cortex-M
    +关注

    关注

    2

    文章

    229

    浏览量

    29752

原文标题:好文推荐 | 单片机中断程序是如何被中断的?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机外部中断的好处

    外部中断单片机实时地处理外部事件的一种内部机制。当外部事件发生时,单片机中断系统将迫使CPU暂停正在执行的程序,转而去进行
    的头像 发表于 10-31 15:58 2253次阅读
    <b class='flag-5'>单片机</b>外部<b class='flag-5'>中断</b>的好处

    51单片机定时器中断_51单片机中断系统_51单片机扩展中断的四种方法

    中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理
    发表于 12-08 10:15 1.1w次阅读
    51<b class='flag-5'>单片机</b>定时器<b class='flag-5'>中断</b>_51<b class='flag-5'>单片机</b><b class='flag-5'>中断</b>系统_51<b class='flag-5'>单片机</b>扩展<b class='flag-5'>中断</b>的四种方法

    单片机中断系统介绍_51单片机中断系统结构

    单片机中断就是当单片机正在执行程序的时候,突然某个按键按下了(产生外部中断),单片机就必须得去处
    发表于 01-10 17:29 1.2w次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>中断</b>系统介绍_51<b class='flag-5'>单片机</b><b class='flag-5'>中断</b>系统结构

    单片机外部中断程序下载

    单片机外部中断程序和电路图,通过按键控制计数和清零操作
    发表于 05-21 10:57 0次下载
    <b class='flag-5'>单片机</b>外部<b class='flag-5'>中断</b><b class='flag-5'>程序</b>下载

    单片机中断序号详细说明

    单片机中断序号决定该中断中断向量的位置(即中断服务程序的入口地址)即
    发表于 08-19 17:31 5次下载
    <b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>序号详细说明

    51单片机有几个中断单片机中断号对应的中断类型说明

    51单片机通常有5个中断,当中断发生时,程序会跳到相应的中断服务程序去执行。为了区别不同的
    发表于 08-06 17:34 5次下载
    51<b class='flag-5'>单片机</b>有几个<b class='flag-5'>中断</b>?<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>号对应的<b class='flag-5'>中断</b>类型说明

    单片机中断程序如何运行

    单片机中断就是类似的一个过程,发生中断时,就会打断正在执行的主程序,先处理完中断任务,返回主程序
    的头像 发表于 01-27 17:11 1.1w次阅读
    <b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b><b class='flag-5'>程序</b>如何运行

    单片机(AT89C51)中断系统详解和中断系统应用实验

    单片机中断系统什么叫做单片机中断?CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或
    发表于 11-17 11:06 14次下载
    <b class='flag-5'>单片机</b>(AT89C51)<b class='flag-5'>中断</b>系统详解和<b class='flag-5'>中断</b>系统应用实验

    51单片机中断

    处理事件B,对事件B处理完毕后,再回到原来中断的地方(即断点),称为 中断返回。实现上述中断功能的部件称为中断系统(
    发表于 11-19 09:06 18次下载
    51<b class='flag-5'>单片机</b>—<b class='flag-5'>中断</b>

    关于单片机中断的若干问题

    中断技术概述中断系统作用:实时测控,单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。
    发表于 11-19 10:36 12次下载
    关于<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>的若干问题

    谨慎处理单片机中断中断等价于比主程序优先级更高的线程

     有些小伙伴喜欢在单片机中断里做任务,殊不知可能会因此遇到棘手的bug,然后查半天查不出个所以然。本文为了纠正这个不良习惯,对单片机中断进行阐述。 无
    发表于 01-14 14:54 2次下载
    谨慎处理<b class='flag-5'>单片机</b><b class='flag-5'>中断</b>,<b class='flag-5'>中断</b>等价于比主<b class='flag-5'>程序</b>优先级更高的线程

    51单片机中断程序示例

    51单片机中断程序示例
    发表于 05-17 18:03 0次下载

    基于单片机的外部中断实验 中断系统知识介绍

    单片机中有两个重要的概念分别叫做中断中断系统,那么他们分别又代表什么意义呢?当单片机CPU正在运行主程序时外界发生了紧急事件请求,要求
    的头像 发表于 07-26 17:23 2743次阅读
    基于<b class='flag-5'>单片机</b>的外部<b class='flag-5'>中断</b>实验 <b class='flag-5'>中断</b>系统知识介绍

    单片机中断功能及其应用

    单片机中断功能及其应用  单片机中断是指在程序执行过程中,根据特定的条件或事件自动暂时中断当前
    的头像 发表于 01-30 14:45 5257次阅读

    单片机有哪些中断类型

    单片机中断是指在单片机执行程序的过程中,当外部设备或内部条件发生某个特定事件时,能够暂停当前正在执行的程序,转而去执行一个特定的服务
    的头像 发表于 10-17 18:12 626次阅读