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.

中断ISR不需要清旗标吗?

Other Parts Discussed in Thread: HALCOGEN

Hello

请问一下,我在试TMS570的一个RTI中断让LED闪烁,而ISR里面,只有HET的代码,如下图:

在ISR执行后,不需要清除任何中断旗标(flag)吗?

由於我之前是c2000的使用者,都会需要去清旗标。

谢谢

  • Shunfan,

      RTI的中断标志清楚操作在另外一个函数里面,你可以查看RTI.c 里面的函数:

    #pragma INTERRUPT(rtiCompare0Interrupt, IRQ)

    void rtiCompare0Interrupt(void)
    {
    /* USER CODE BEGIN (39) */
    /* USER CODE END */

    rtiREG1->INTFLAG = 1U;
    rtiNotification(rtiNOTIFICATION_COMPARE0);

    /* USER CODE BEGIN (40) */
    /* USER CODE END */
    }

    谢谢

      

  • Hello Ken,

    看来是我搞错了,ISR应该是rtiCompare0Interrupt()  才对而不是 rtiNotification(),

    那请问rtiNotification()的功用为何呢? 我发现每一个ISR里面都有一个Notification(),TI内建这个函数的目的为何呢?

    谢谢您

  • rtiNotification()函数你可以把它看做一个中断回调函数,里面可以加上你自己需要执行的操作。HALCOGEN自动生成的rtiCompare0Interrupt()只是做了一个中断标志清楚和相应的中断函数的响应过程。

    当然你也完全可以甩notification函数,把程序都放在interrupt函数里面也行。




    谢谢

  • 请问,如果使用多个rti,每个rti做的操作是不一样的,该如何分开呢,因为我刚开始学习,暂时不知道除了rtiNotification()之外承载ISR的位置