我们首先区别一下中断和轮询
中断和轮询是 嵌入式 的两个基本的编程的思想和 概念
轮询:
while(1){
if(按键按下){
执行程序;
}
}
/*
周期连续 的检测外部事件的发生
消耗大量cpu的处理时间
轮询过程需要和其他代码结合
由于cpu可能需要处理其他事件(可能是无关紧要的),可能丢失关键事件
*/
轮询的坏处
周期连续 的检测外部事件的发生
消耗大量cpu的处理时间
轮询过程需要和其他代码结合
由于cpu可能需要处理其他事件(可能是无关紧要的),可能丢失关键事件
中断
Interrupt();//中断函数
while(1){
//死循环代码
}
/*
由一种类似于硬件的,电路的机制来判断是否发生外部事件并通知Cpu
专用的中断服务程序来处理事件
*/
中断流程图
中断是一个需要cpu 立刻执行的内部/外部事件
内部事件;定时器定时时间到
AD变换结束
外部按键:按键动作
发生外部通信
中断发生时,将主函数所用到的寄存器自动压入堆栈
中断执行完成之后
寄存器器出栈