一、中断的概念、分类及其用途
1.中断的概念
CPU执行时原本是按程序指令一条一条向下顺序执行的。 但如果此时发生了某一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务). 待CPU将事件B处理完毕后, 再回到原来被中断的地方继续执行程序(中断返回),这一过程称为中断 。(比如说你原本在做arduino,中间教学设计小组要开会,你放下手中定时器中断的PPT去开会,开完会回来再接着原来做的PPT继续做)
2.中断的分类
中断可以被分为内部中断和外部中断,内部中断的来源来自CPU内部(软件中断指令,溢出,除法错误等,例如操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。
3.中断的用途
①提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并作相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态。
②维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施。
③满足实时处理要求,在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理。
④提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。
二、Arduino的定时器中断
任务171.定时器中断
定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。
任务172. Arduino 定时器中断的基本使用方法与注意事项
(1)定时器中断代码如下
任务17(2)定时器中断运行结果
任务17注意事项
如果编译过程出现错误“error: 'MsTimer2' has not been declared”,多半是因为MsTimers库未安装。
3.Arduino 定时器中断函数库 MsTimer2的安装与使用
进入https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FPaulStoffregen%2FMsTimer2网址
(1) 新建一个目录名为 MsTimer2, 在 https://github.com/PaulStoffregen/MsTimer2 下载全部文件, 存入目录中。
任务17(2)将MsTimer2导入库
任务17三.外部中断
1.实验目标:外接一个按键一个LED灯,按下按键后,随机等待10-20秒,LED灯熄灭,当按键者看到LED熄灭时,立即松手让按键弹起
2.实验连线图
任务173.代码
任务17还有另一种简单的函数实现上述功能
随机产生10到20的数字,用函数random()
描述:生成伪随机数。
函数原型:
random(max)
random(min,max)
参数:
min: 随机数区间下限值,且包括在内。此参数可选,省略则从0开始。
max: 随机数区间上限值,且不包括在内。
返回值:min和max-1之间的随机数。
四.按键实现外部中断
1.实现目标:按键按下,串口显示器显示“KEY DOWM”;按键松开,串口显示器显示“KEY UP”
2.实验连线图
任务173.代码及结果
任务17任务17
attachInterrupt函数用于设置外部中断,函数有3个参数:interrupt、function和mode,分别表示中断源、中断处理函数、触发模式。参数中断源可选值0或1,在Arduino中一般对应2号和3号数字引脚;参数中断处理函数用来指定中断的处理函数,参数值为函数的指针,触发模式有4种类型:LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)。
网友评论