中断是指CPU在执行程序时,遇到某些需要立即处理的事件时,会暂停当前程序的执行,跳转到一个另外的程序去执行,等到执行完这个程序后再返回原来的程序。这样就能够让CPU充分发挥其处理和响应速度。
对于单片机来说,中断是一种非常重要的工作模式,它可以使单片机在执行程序的同时,及时响应各种外部事件,如定时器芯片、串口通信、IO口状态变化等,从而提高单片机的响应速度。
单片机中断分为硬件中断和软件中断两种。其中,硬件中断是由硬件信号引起的,如定时器中断、串口中断等;软件中断是由软件执行指令INT或者调用相关API函数产生的,它可以在程序的任何地方产生中断。
中断重入是指在一个中断还没有执行完毕时,又产生了一个相同或者更高优先级的中断,这时CPU需要先处理这个新的中断,等这个中断处理完毕后再返回之前的中断继续执行。
对于单片机来说,中断重入是一个非常严重的问题,因为中断处理函数可能会使用到一些同样被其他中断所使用的全局变量,如果这些全局变量在中断执行的过程中被修改,那么就会导致程序出现异常,甚至导致系统崩溃。
在单片机中,如果一个中断正在执行的过程中,又出现了一个相同或者更高优先级的中断,那么CPU将会跳转到新的中断去执行。这时CPU会自动保存当前中断的现场,并在新的中断处理函数执行完毕后,再回到之前的中断去继续执行未完成的任务。
在单片机中,当一个中断处理函数执行完毕后,会重新开启中断并返回之前的程序,这时程序会从中断之前的位置继续执行。如果中断开启了定时器功能,那么定时器就会在重新开启中断之后重新开始计时,然后等待下一次中断的到来。