本帖最后由 众想@刘洋 于 2016-11-12 08:45 编辑 & u& R, U) v6 V S# o2 J) _ 7 y9 r7 R( e% G. ], w& T 众想【剑齿虎】STM8学习笔记分享 第15讲 STM8中断控制器(ITC)关 目 录 15.1中断定义 中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况。此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 中断是由于软件的或硬件的信号,使得CPU放弃当前的任务,转而去执行另一段子程序。可见中断是一种可以人为参与(软件)或者硬件自动完成的,使CPU发生的一种程序跳转。 15.1.1 计算机为什么要采用中断为了说明这个问题,再举一例子。假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。如果在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的工作去开门,这样就避免等待和浪费时间。计算机也是一样,例如打印输出,CPU传送数据的速度高,而打印机打印的速度低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。而采用了中断方式,CPU可以进行其它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。 15.1.2 中断优先级此外,如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而发出了中断请求,应该如何处理也取决于中断事件的优先级。当新发生的中断事件的优先级高于正在处理的中断事件时,又将中止当前的中断处理程序,转去处理新发生的中断事件,处理完毕才返回原来的中断处理。 15.1.3 STM8单片机中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。其实就是更高一级的中断的"加塞",处理器正在执行着中断,又接受了更急的另一件"急件",转而处理更高一级的中断的行为! STM8单片机有多达4个软件可编程的嵌套等级。 15.1.4 STM8单片机中断控制器功能●硬件中断的管理 ─ 端口A、B、C、D、E的I/O引脚都具有外部中断能力,每一个端口都有独立的中断向量以及独立的标志。 ● 具有灵活的优先级和中断等级管理,支持可嵌套的或同级中断管理: ─ 多达4个软件可编程的嵌套等级 ─ 最多有32个中断向量,其入口地址由硬件固定 ─ 2 不可屏蔽的事件: RESET, TRAP ─ 1个不可屏蔽的最高优先级的硬件中断 (TLI) 基于如下资源的中断管理: ● 位I1和I0位于CPU的条件代码寄存器(CCR) ● 软件优先级寄存器 (ITC_SPRx) ● 复位向量地址0x00 8000位于程序空间的起始部分。对于具有启动ROM的型号,ST公司把复位初始化程序固化在ROM区中。 ● 固定的中断向量地址位于程序空间映像的高位地址段(0x00 8004 to 0x00 807C),其地址顺序即为硬件的优先顺序。 15.2 STM8嵌套中断管理模式和外部中断硬件优先级从低到高按如下顺序给定,即MAIN, IT4,IT3,IT2,IT1,IT0 和TRAP。 通过设定ITC_SPRx寄存器的相应的I1_x和I0_x位来配置每一个中断向量的软件优先级。I1_x和I0_x位具有和CC寄存器的I1 和I0位相同的意思(见 表 15.1)。不可以将中断优先级设为级别0(I1_x=1, I0_x=0),在这种情况下,该中断的优先级将保持为先前的值。RESET 和 TRAP 向量是没有软件优先级的。当两者的任何一个被响应时,CC寄存器的位I1和I0两位都被置位。 表15.1 向量地址映像对应软件的优先级位
STM8S为外部中断事件专门分配了五个中断向量: ● Port A 口的5个引脚:PA[6:2] ● Port B 口的8个引脚:PB[7:0] ● Port C 口的8个引脚:PC[7:0] ● Port D 口的7个引脚:PD[6:0] ● Port E 口的8个引脚:PE[7:0] PD7 是最高优先级的中断源 (TLI)。 为了产生中断,相应的GPIO端口必须被配置为中断使能的输入口,详细内容请参考《STM8S微控制器参考手册》GPIO章节相关内容。
|