Arduino 专题学习

【项目14—任务17—小组5】定时器中断

2019-07-06  本文已影响5人  0204_何晓晴

一、中断的概念、分类及其用途

1.中断的概念

        CPU执行时原本是按程序指令一条一条向下顺序执行的。 但如果此时发生了某一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务).  待CPU将事件B处理完毕后, 再回到原来被中断的地方继续执行程序(中断返回),这一过程称为中断 。(比如说你原本在做arduino,中间教学设计小组要开会,你放下手中定时器中断的PPT去开会,开完会回来再接着原来做的PPT继续做)

2.中断的分类

        中断可以被分为内部中断和外部中断,内部中断的来源来自CPU内部(软件中断指令,溢出,除法错误等,例如操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。

3.中断的用途     

①提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并作相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态。   

②维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施。   

③满足实时处理要求,在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理。     

④提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。

二、Arduino的定时器中断

任务17

1.定时器中断

        定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。

任务17

2. 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.实验连线图

任务17

3.代码

任务17

还有另一种简单的函数实现上述功能

随机产生10到20的数字,用函数random()

描述:生成伪随机数。

函数原型:

random(max)

random(min,max)

参数:

min: 随机数区间下限值,且包括在内。此参数可选,省略则从0开始。

max: 随机数区间上限值,且不包括在内。

返回值:min和max-1之间的随机数。

四.按键实现外部中断

1.实现目标:按键按下,串口显示器显示“KEY DOWM”;按键松开,串口显示器显示“KEY UP”

2.实验连线图

任务17

3.代码及结果

任务17
任务17

attachInterrupt函数用于设置外部中断,函数有3个参数:interrupt、function和mode,分别表示中断源、中断处理函数、触发模式。参数中断源可选值0或1,在Arduino中一般对应2号和3号数字引脚;参数中断处理函数用来指定中断的处理函数,参数值为函数的指针,触发模式有4种类型:LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)。

上一篇下一篇

猜你喜欢

热点阅读