单片机的内部中断
单片机的内部中断时怎么得到处理的?
打个比方说,串口中断:是不是(1)使能中断——》(2)发送、接收完数据以后——》(3)标志位改变
?是不是CPU在本身主程序运转的时间片转轮之间加插不停轮询,检测到IFG变化,就进入中处理机制。
?还有就是这个中断,接收和发送信号没有通过CPU控制么?是他自己的模块实现的么?
内部中断都是本模块自己在工作,进而触发的么?? 中断 单片机 串口 cpu 内部中断
[解决办法]
还有就是这个中断,接收和发送信号没有通过CPU控制么?是他自己的模块实现的么?
假设硬件串口,你写入SBUF后是由芯片内部硬件模块自动发送和CPU没关系,发送完成后置中断标记
中间标记的检测是在一个CPU指令周期的某一个时钟周期里检测的,
没自己研究过中断检测流程似乎是这样的,51一个CPU是12个时钟周期,在其中的某个时钟周期进行了中断检测,
详细情况还得问做芯片开发的
[解决办法]
我印象中当年上课的时候老师是这么说的:
外设正确配置完成后,如果满足中断触发条件,在硬件上会产生一个中断标志
MCU里的一个是什么部件来着(忘了)检测到这个标志后(当然,会按照一定的使能关系和优先级顺序)
如果条件允许,就会把当前的PC指针(程序指针,大概就是指向下一条要运行指令的寄存器)压栈
再把触发中断标志对应中断向量地址送入PC。这样就实现了中断跳转
当中断响应完成,用专用的中断返回指令或者程序主动清除中断标志后,把之前压栈的PC弹出
这就完成了中断返回。至于,期间的上下文保护什么的,很多情况下是由用户或者IDE实现,MCU不管这事
不知道,清楚没有,时间长了,可能记忆有出入,不对的,大伙帮补充,谢谢