单片机跑起来第三章:中断机制
扫描二维码
随时随地手机看文章
中断机制
中断机制在单片机及嵌入式系统中是重中之重,我们必须深入理解。首先我们要明白一点:CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的。因为这段代码的优先级更高,或者说它更加紧迫,CPU必须暂时放下手上的的工作,立即去执行它,否则就可能导致不良的后果,甚至是严重的事故。这个“突然跳转”有时是可以人为预见的,或者是设计人员故意使然,但有些时候却是随机的,无法事先断定它发生的具体时间。这就是“中断”最为通俗的表述,如图1.22所示。
图1.22 对“中断机制”的表述
有人说:“中断似乎是在给CPU捣乱嘛,它总是在打断程序的正常执行。”不错,但是不能说是“捣乱”,因为中断的存在是合理的,是为了解决实实在在的问题而产生的。比如说,一个单片机正在正常工作,它同时还要接收来自于串口的数据,但是它又不知道数据何时会到,为了解决这一问题,我们可以采用CPU轮询方式,即不停地查看是否有新的数据到来,如果有则进行接收。这样作的最大问题在于浪费CPU的运行时间,这可能会影响到其它任务的执行效率。如果使用中断方式,将使CPU得以解放,在没有数据到来之前它可以安心地去作其它工作。串口控制器(CPU外设)在接收到新的数据后主动通知CPU(这个通知的过程依赖于专门的中断控制电路以及CPU的中断源),CPU立即跳到事先设计好的处理代码(ISR,中断服务程序)去执行,完成数据的接收和处理。最后再跳回到原来的“断点”处继续完成手上的工作。
关于中断,其实包含有非常多的内容,比如现场维护、中断向量、中断优先级、中断响应速度、中断的嵌套等等。要将这一切融会贯通,我们才能在实际的开发过程中游刃有余。不过,中断很多时候要比我们想像得更加复杂一些:如果主程序在顺序执行过程中产生了中断,CPU立即转向中断服务程序,那如果在执行中断服务程序的过程中,再一次产生了中断,CPU又该何去何从呢?这就是上面所说的“中断嵌套”所要解决的问题(这里只是简单说说,让大家心中有初步的认识)。
好,本章到这里就告一段落了。振南希望通过此章能够让大家从根本上实实在在地认识到CPU与单片机体系结构以及运作机理的本质,在脑中建立起一个形象的模型。有了这个基础,大家对单片机的理解才能真正作到入木三分,学习和领悟才能事半功倍。
单片机和C语言其实不难,从某种意义上来说,它只不过是一个“熟练工种”,最重要的是“入门”。基础加上我们的聪明才智,每一个人都能成为高手!