在嵌入式系统开发过程中,不可避免的会和“中断”打交道。很多初学者对中断的理解不深,往往是看到中断绕着走。其实不然,费点时间搞懂中断能解决不少问题。
中断英文“Interrupt”,字面很好理解,就是打断的意思。在程序中“Interrupt”打断的自然也是程序。举个例子,有一个遥控的自动避障小车,小车在向前跑的过程中程序一直监测周围环境,实现避障功能,这个时候你想遥控小车停个三分钟,就要用到中断了,也就是打断原有的“监测环境——避障”程序流程。打断的目的就是执行“别跑啦,停下来歇歇”这个程序,我们称中断之后执行的程序为“ 中断服务函数”。一般情况下,中断服务函数执行完后(小车休息三分钟,或者干其他的事情完事后),会清理一下 中断标志位,即告诉主程序中断完事儿了,你该干嘛干嘛。清理了中断标志位后,此时小车又开始呼呼的跑了……
简而言之,中断就是由某个事件触发,打断原有的执行程序,去执行中断服务函数,执行完后再返回被打断的地方继续执行。就像你正在写作业,突然老妈喊你吃饭,你去吃完饭回来继续写作业。“吃饭”就是一个中断,打断了你写作业嘛。
中断英文“Interrupt”,字面很好理解,就是打断的意思。在程序中“Interrupt”打断的自然也是程序。举个例子,有一个遥控的自动避障小车,小车在向前跑的过程中程序一直监测周围环境,实现避障功能,这个时候你想遥控小车停个三分钟,就要用到中断了,也就是打断原有的“监测环境——避障”程序流程。打断的目的就是执行“别跑啦,停下来歇歇”这个程序,我们称中断之后执行的程序为“ 中断服务函数”。一般情况下,中断服务函数执行完后(小车休息三分钟,或者干其他的事情完事后),会清理一下 中断标志位,即告诉主程序中断完事儿了,你该干嘛干嘛。清理了中断标志位后,此时小车又开始呼呼的跑了……
简而言之,中断就是由某个事件触发,打断原有的执行程序,去执行中断服务函数,执行完后再返回被打断的地方继续执行。就像你正在写作业,突然老妈喊你吃饭,你去吃完饭回来继续写作业。“吃饭”就是一个中断,打断了你写作业嘛。