对于单cpu中断的理解

对于中断来说,我们要解决的问题大致如下

Cpu如何判断中断?

我cpu就检测一根信号线,有我就认为有中断。在这根线上发出信号是中断管理器的任务

有哪些中断?(这里的一根信号新应该理解成与最终要处理的中断相对应的信息)

所有的中断构成了一个中断源的集合。

允许哪些中断(中断屏蔽问题)?

被允许的中断同时来了怎么办?(优先级问题)。

 

例如cc2430有18个中断源。

一般来说,中断的屏蔽可能是分层次结构的。但是不论层次结构是什么样的,最终的任务还是允许哪些中断请求,不允许哪些中断请求。

       在cc2430中,先要把ien0打开;再把ien0,ien1,ien2中相应中断源的中断标志打开;然后如果有sfr控制中断的屏蔽的话再打开相应的sfr。

       当中断发生时,不管该中断是否在该时刻是被允许的(未被屏蔽的),都会把相应的中断标志位置位。

中断优先级

在cc2430中,中断有一个全序的优先级(可以查找资料)。同时,所有的中断被分成了6个组,每一个组都可以被设置为4个中断优先级之一。中断优先级的判定问题如下:首先找到有中断的优先级最高的组的集合;然后再这些集合中按照全序优先级最高的中断。这样就完成了优先级的判定。

我们在分析某一款cpu时不应该被他的复杂的机制牵着走,而是应该在脑袋里形成这样一个更高抽象的模型。

你可能感兴趣的:(任务)