二、单片机内部子系统
- 电源及复位子系统
- 时钟子系统
- 中断子系统
1. 电源及复位子系统
此子系统负责监视电源引脚,保证单片机稳定可靠上电,防止误触发、电压抖动以及过流导致的单片机损坏。同时负责看门狗及其他方式引发的复位处理,保证单片机能够可靠复位。
插曲:何为看门狗?
分为软件看门狗和硬件看门狗。本质上就是利用一个定时器电路,将其输出连接到单片机的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”)。如果程序出现故障,不在定时周期内喂狗,就使得看门狗定时器溢出,产生复位信号并重启系统。
2. 时钟子系统
2.1 什么是系统时钟?什么是时钟系统?
通常所说的系统时钟就是指时钟系统,它是由振荡器(信号源)、定时唤醒器、分频器等组成的电路。常用的信号源有晶体振荡器和RC振荡器。
分为外部时钟和内部时钟。
举例:
ARM的时钟系统包括4部分,分为晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。其中晶体振荡器为系统提供基本的时钟信号(频率为Fosc)。当复位或者处理器从掉电模式唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。然后Fosc被PLL提高到一个符合用户需要的频率Fcclk,Fcclk用于CPU内核。因为CPU内核通常比外设部件的工作速度要快,用户可以通过设置VPB分频器,把Fcclk信号降低到一个合适的值Fpclk,该信号用于外设部件。
2.2 时钟系统有什么作用?
时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作。外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。因此时钟对于计算机系统是至关重要的,通常时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。
2.3 定时器
利用单片机时钟子系统,通过软件设置让单片机在某个固定时间后单次动作或以这个固定时间间隔周期性地动作,完成这一功能的硬件即为定时器。定时器是单片机开发中最常用也是最重要的!
还有一个孪生姐妹,叫“计数器”。
3. 中断子系统
3.1 何为中断?
指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
3.2 中断源
凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为“中断源”。
通常中断源有以下几种:
(1)外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务;
(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理;
(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作;
(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断;
(5)程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等。
3.3 中断优先级
如此多的中断,如果同时发生,应该先处理谁?这就需要对各个中断进行优先级排序。比如51系列单片机中,5个中断源优先级顺序依次为(高->低):外部中断0、定时器0、外部中断1、定时器1、串口。
同时还有大的分档,仍以51单片机举例,有高低2个优先级档,只有同档下的中断才按照上边默认优先级顺序。
3.4 中断嵌套
指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时中止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
中断嵌套可以发生N次。
只有高优先级的中断才能打断低优先级的中断,反过来不可以。
3.5 中断屏蔽
不让中断源在满足触发条件时产生相应中断请求的处理方式即为中断屏蔽。
中断分为可屏蔽中断和不可屏蔽中断:
可屏蔽中断 - I/O设备发出的所有中断请求(lRQ)都产生可屏蔽中断;
不可屏蔽中断 -只有几个危急事件(如硬件故障)才引起非屏融中断。非屏蔽中断总是由CPU辨认。