一层是硬件相关,目的是执行中断找到中断向量,为中断服务历程提供运行环境(比如保存中断前的各工作寄存器状态,屏蔽中断,中断嵌套计数,或者取消屏蔽)等等,搞定后跳转到中断向量指向的位置,执行中断服务(通常如果是完善的程序,这里应该允许添加多个服务历程)。。
服务例程就是具体要执行的内容,是和硬件无关的,换一个型号的CPU理论上应该保证也能顺利使用不用该代码。。
无非就这两层关系,如果要移植程序,硬件相关的中断处理必须修改,硬件无关的,理论上是不用修改,但写的水平很差劲,没有完全脱离硬件,也得改。。。
中断用于处理在程序正常执行期间不发生但在特定触发发生时发生的事件。例如,如果我们编写一个使 LED 闪烁的程序,微控制器将一个一个地执行每个命令。但是如果我们想监控一个开关来开始或停止闪烁,只有在所有其他任务完成之后才能完成检查,即它不会是实时的。这就是中断发挥作用的地方。有了中断,我们就不需要不断地检查数字输入引脚的状态。当发生中断时,控制器停止执行主程序,并调用称为 ISR 或中断服务程序的函数。然后控制器执行 ISR 内部的任务,然后在 ISR 执行完成后返回主程序。ESP32 的每个内核共有 32 个中断。每个中断都有一定的优先级,大多数(但不是全部)中断都连接到中断多路复用器。因为中断源比中断多,所以有些中断是与多个中断源共享的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)