This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6701两个中断冲突问题

请教,C6701有两个中断,一个中断是定时器中断,另一个是硬件中断(执行时间较长,但和定时器中断均是毫秒级)。定时器中断每执行一次就会对一个全局变量执行加1操作,在硬件中断中需要读取这个全局变量。硬件中断触发的时间不定,可能和定时器中断同时到达,也可能在执行其中一个中断期间另一个中断到达。我的问题是:

1. C6701对同时两个中断触发有优先级判断么?如果有请问在哪设置。如果有优先级判断,那么优先级高的中断可以打断现在正在处理的中断么?

2.C6701如果在执行A中断的时候,B中断触发。此时B中断是无法触发?还是等待A中断执行完毕再继续执行?还是两者同时运行互不干扰?

3.在上面说到在硬件中断会读取定时器中断改变的全局变量,出现的情况为:当硬件中断频繁触发时,从硬件中断读取的全局变量并没有改变。请问这个怎么解释?

麻烦大家解答下,谢谢了。

  • 1. 硬件上有中断优先级,按照下面文档第397页上的Table 5-1的中断向量表由高到低。同时发生,先响应高优先级,如果没有其他高优先级的中断,再响应低优先级。高优先级可以打断低优先级的,这个是中断嵌套,见下面的文档第417页介绍。
    http://www.ti.com/lit/ug/spru733a/spru733a.pdf

    2. 看AB优先级的高低以及是否使用中断嵌套。等待高优先级的执行完毕再跳回之前的中断。

    3. 先确定中断有没有发生并且执行全局变量的赋值,另外,变量是否用volatile定义了?