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

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

3天内不再提示

单片机中提高作业效率的“中断功能”解读

电子设计 来源:面包板社区 作者:面包板社区 2021-01-15 14:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们已经介绍了应用单片机的外设功能的结构和使用方法。本期我们介绍更有效地应用单片机而必须的外设功能——“中断功能”。

提高作业效率的“中断功能”指的是什么?

我们回顾一下本系列第二期的“定时器”篇中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。

轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。

因此就要用到本期介绍的“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1) 。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。

pIYBAGABOryAbCP_AAEXevBfszs377.png

图1:中断与轮询

设想一下你在工作的同时煮鸡蛋的情况。 由于你不想停下手中的工作,所以把鸡蛋放入热水中后就设置定时器并继续工作,10分钟后定时器一响就把鸡蛋从热水中捞起。这时,定时器的鸣叫就是中断 ,而“把鸡蛋从热水中捞起”就是穿插进来的工作。大家可以通过这种方式来了解中断功能。

单片机中的中断处理

中断产生于单片机内部和外部的各种设备。于开关和感应器等单片机外部的中断称为外部引脚中断,来自这些机器的中断信号由名为“IRQ”的引脚接收,再向中断控制器(在RX63N中称被称为“ICUb”)发出通知。IRQ为“Interrupt ReQuest”的略称,意思为“中断请求”。另外,来自单 片机内部的定时器和GPIO、串行通信设备UART等外设机器的中断被称为外部设备中断,中断信号直接从各外部设备通知中断控制器。

在中断控制器中,各种设备的中断信号按照先来后到的顺序,以适当的顺序被传送到CPU。而且,中断被设为无效的设备的中断信号将不会被传送到CPU,也就意味着可以忽视(屏蔽)这些信号。CPU按照从中断控制器接收到的指示来执行对应的程序(中断处理)。

CPU一旦接收到中断控制器的中断信号,首先将终止执行中的程序。然而,会自动保存“从何处重启”的出栈(POP)信息,这被称为“进栈(PUSH)”。进栈结束后,将开始由中断执行的程序。该程序结束时,进栈信息将回 送到CPU,这种现象被称为“出栈”(图2)。由于进栈和出栈都由CPU自动执行,因此程序设计者不必因顺序问题而费心。

pIYBAGABOseAOjorAAEjKHERa6k753.png

图2:中断处理流程

例如,通过UART执行串行通信时,经常监视字节是否被接收了而导致效率不佳。所以,多数情况下都对程序进行如下编程,即在信息送达 时就会产生中断并进行适当的处理,另外,使定时器产生中断的情况也不在少数。进行“经过了一定时间后该做什么”这类处理时,应进行如下编程,即通过来自定时器的信号开始进行处理。如上所述,在有效利用单片机方面,中断功能发挥了很大的作用。

还可使用数据库尝试编写复杂的中断程序!

为了编写与中断相关的程序,就需要了解单片机的运行。由于需要深入了解,所以不能仅是进行简单的尝试。幸好还有本系列中介绍过的GR-SAKURA数据库,可在GR-SAKURA数据库中进行与外部引脚中断相关的处理,所以请尝试使用GR-SAKURA数据库来进行编程。

为了向GR-SAKURA提供外部引脚中断,还需要做些工作。在GR-SAKURA中,从IO30引脚到IO35引脚接收来自外部的中断信号。这次是将定时器输出引导到IO0引脚,再将它传送到IO31引脚作为中断信号。因此,要从IO30引脚到GND的部分设置引脚接口,由底板用的电线将IO0和IO31连接起来(图3)。

o4YBAGABOtKAaDK_AANd8Q_WHAs204.png

图3:GR-SAKURA的准备(引脚设置)

在示例程序(图4)中预先准备了如下功能,即当GR- SAKURA的外部中断信号引脚(从IO30到IO35中的一个)的输入从L电平变为H电平时,LED灯将启动。而且是在检测到相当于上述所说明的“外部引脚中断”的中断信号后才会变化。从IO0引脚进行定时器输出,并将之与中断输入引脚即IO31引脚连接,通过这样的方式便可以与一定的时间间隔发生中断。

※即使 已对该程序进行了汇编,在没有将上述的IO0和IO31引脚进行连接的GR-SAKURA中也无法运行。

93l3ap6v100016964-56723-supp.png

以上为图4的程序

※图4程序结束

※图4:用于外部引脚中断的示例程序

在此数据库中,可对分别与前述中断信号输入引脚对应的处理。本次所示的是根据向IO31引脚输入的变化(从L电平变为H电平)来产生中断的情况。第48行的attachInterrupt()定义了在某个输入引脚出现某种变化时该调用什么函数。因此,设定为根据输入IO31引脚的中断信号来启动irq3()。这样的设定只需在setup()中定义一次便能在整个程序中有效。除此以外,在setup()中还记述了定时器的定义、定时器输出引脚的设定、LED输出的设定等初始条件。

没有通过loop()函数进行的处理。取而代之的是由irq3()这个函数进行处理。从这个函数来看是看不出它是从程序中调用的。但是,正是由于这个函数,才能使中断信号进入IO31引脚时使LED的光发生变化。在函数irq3()中,四盏LED中只有一盏亮灯,这个函数一旦被调用,亮灯的LED就发生一次变化。为了让人看得到这个“变化”,在case标签的部分,通过来自GPIO的输出来灭灯且使旁边的LED亮灯(边缘的LED灯亮灯时,相反侧的边缘的LED亮灯或灭灯)。

为了应对不知何时会发生的意外,中断就是非常有效的应对方法。而且,中断还可以减少程序的不必要运行,从而可降低功耗。也可以说,为了真正有效地利用单片机,这是一项不可缺少的技术。
编辑:hfy

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

    关注

    6078

    文章

    45581

    浏览量

    673728
  • 定时器
    +关注

    关注

    23

    文章

    3373

    浏览量

    124556
  • uart
    +关注

    关注

    22

    文章

    1320

    浏览量

    106979
  • 中断处理
    +关注

    关注

    0

    文章

    96

    浏览量

    11506
  • 中断控制器
    +关注

    关注

    0

    文章

    64

    浏览量

    9852
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Infineon XC866 8位单片机:特性、功能与应用解析

    Infineon XC866 8位单片机:特性、功能与应用解析 在当今的电子设计领域,8位单片机以其成本效益、低功耗和广泛的应用场景,一直占据着重要的地位。英飞凌(Infineon)的XC866 8
    的头像 发表于 03-30 16:30 180次阅读

    Infineon C161K/O 16位单片机:高性能与多功能的完美结合

    Infineon C161K/O 16位单片机:高性能与多功能的完美结合 在电子设计领域,单片机作为核心控制元件,其性能和功能直接影响着整个系统的表现。Infineon的C161K/O
    的头像 发表于 03-30 16:15 183次阅读

    Infineon C505系列8位单片机:特性、应用与设计要点

    推出的C505系列8位单片机,以其丰富的功能和出色的性能,在众多应用场景中展现出强大的竞争力。本文将深入探讨C505系列单片机的特性、功能模块以及设计要点,为电子工程师在实际应用
    的头像 发表于 03-30 14:25 181次阅读

    Infineon XC87xCLM 8位单片机功能、特性与应用深度解析

    单片机以其丰富的功能和出色的性能,在众多应用场景中展现出强大的竞争力。本文将深入剖析XC87xCLM的各项特性,为电子工程师在设计过程中提供全面的参考。 文件下载
    的头像 发表于 03-29 12:15 349次阅读

    Infineon TC1197 32 位单片机功能、特性与应用解析

    Infineon TC1197 32 位单片机功能、特性与应用解析 在嵌入式系统的广阔领域中,32 位单片机以其强大的处理能力和丰富的外设功能,成为众多工程师的首选。Infineon
    的头像 发表于 03-29 10:35 254次阅读

    单片机系统设计方法

    现阶段,单片机系统在军事、民用、工业产品中的应用越来越广泛.其硬件实现的功能是由软件来完成,体积小巧、功能丰富、智能化程度高,而单片机最为显著的特点是进行数据采集由于各个产业的急速发展
    发表于 01-06 06:23

    这几个单片机技巧如果不了解,真的很难再进阶

    的开发,小编总结了几个技巧,帮助大家进阶,在优秀的开发者路上越走越远! 如何提高C的代码效率? 用C语言进行单片机程序设计是单片机开发与应用的必然趋势。如果使用C编程时,要达到最高的
    发表于 01-05 07:22

    单片机的入门准备

    、修改例程,以学习板为载体,自己新建编程工程,用自己的编程思想让外设电路实现想要的功能,程序是灵活的,每个人都有不同的编程思想,多试几种方法,提高程序的执行效率,锻炼自己的编程能力; 单片机
    发表于 12-22 07:39

    编写简单高效单片机汇编程序

    通过中断方式来完成,在中断服务程序中处理各个事件,而不需要在主程序里繁琐地处理。 例如某些单片机的寄存器可以直接进行简单运算,而不需要额外指令,提高执行
    发表于 11-24 07:00

    单片机原理及应用详解

    单片机(Microcontroller Unit, MCC)  是一种集成计算机核心功能(CPU、存储器、I/O接口等)的微型芯片,广泛应用于嵌入式系统中。以下是其原理及应用的详细介绍: 一、单片机
    的头像 发表于 08-11 13:57 2791次阅读

    什么单片机比较耐用

            在工业控制、户外设备、医疗仪器等场景中,单片机的耐用性直接决定了设备的稳定运行与维护成本。耐用的单片机通常具备宽温工作范围、强抗干扰能力、稳定的电源适应性和长寿命的硬件设计。深圳市安
    的头像 发表于 07-31 13:48 910次阅读

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 1079次阅读

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的驱动电路,才能实现稳定
    的头像 发表于 07-25 09:31 1305次阅读

    单片机怎么烧程序

    单片机烧程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机应用开发中不可或缺的环节。无论是简单的灯光控制程序,还是复杂的工业控制算法,都需要通过烧
    的头像 发表于 07-23 11:47 2003次阅读

    单片机定制开发的设计思路

    单片机定制开发是根据特定场景和功能需求,量身打造符合要求的单片机应用方案,其设计过程需要兼顾技术可行性与实际应用价值,涉及多个关键环节。 一、需求分析阶段 单片机定制开发的第一步是深入
    的头像 发表于 07-17 11:14 924次阅读
    <b class='flag-5'>单片机</b>定制开发的设计思路