浅谈中断与单片机中断处理的过程
中断是个很重要的一个概念,在计算机组成原理中曾经讲过这一概念,对于嵌入式方向来说,也是一个非常重要的一个知识点,经常出现在笔试中。
中断\ 所谓中断就是:CPU在正常执行程序的过程中,由于内部/外部事件的触发或程序的预先安排引起CPU暂时中断当前正在运行的程序,而转去执行中断服务子程序,待中断服务子程序执行完毕后,CPU继续执行原来的程序,这一过程称为中断;
中断处理过程
第一步:保护现场,将当前位置的PC地址压栈;\ 第二步:跳转到中断服务程序,执行中断服务程序;\ 第三步:恢复现场,将栈顶的值回送给PC;\ 第四步:跳转到被中断的位置开始执行下一个指令
中断服务函数\ 相对于正常子函数,中断服务函数有以下需要注意的地方:
1.中断服务函数不能传入参数;\ 2.中断服务函数不能有返回值;\ 3.中断服务函数应该做到短小精悍;\ 4.不要在中断函数中使用printf函数,会带来重入和性能问题。
中断并不是程序一开始就判断好在那里发生,或者会在什么时候发生。中断发生完全时随机的,中断源连接到硬件,由硬件来产生触发中断,而总所周知,函数、函数内变量等大部分是存储在堆栈区,但是中断是随机产生的,且由硬件告知,那么去哪分配存储位置,自然一二是无法满足的。\ ————————————————
中断是个很重要的一个概念,在计算机组成原理中曾经讲过这一概念,对于嵌入式方向来说,也是一个非常重要的一个知识点,经常出现在笔试中。
中断\ 所谓中断就是:CPU在正常执行程序的过程中,由于内部/外部事件的触发或程序的预先安排引起CPU暂时中断当前正在运行的程序,而转去执行中断服务子程序,待中断服务子程序执行完毕后,CPU继续执行原来的程序,这一过程称为中断;
中断处理过程
第一步:保护现场,将当前位置的PC地址压栈;\ 第二步:跳转到中断服务程序,执行中断服务程序;\ 第三步:恢复现场,将栈顶的值回送给PC;\ 第四步:跳转到被中断的位置开始执行下一个指令
中断服务函数\ 相对于正常子函数,中断服务函数有以下需要注意的地方:
1.中断服务函数不能传入参数;\ 2.中断服务函数不能有返回值;\ 3.中断服务函数应该做到短小精悍;\ 4.不要在中断函数中使用printf函数,会带来重入和性能问题。
中断并不是程序一开始就判断好在那里发生,或者会在什么时候发生。中断发生完全时随机的,中断源连接到硬件,由硬件来产生触发中断,而总所周知,函数、函数内变量等大部分是存储在堆栈区,但是中断是随机产生的,且由硬件告知,那么去哪分配存储位置,自然一二是无法满足的。\ ————————————————