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.

[参考译文] CCS/TMS320F2.8377万S:如何更改定时器的中断优先级

Guru**** 2482225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/658078/ccs-tms320f28377s-how-to-change-interrupt-priority-of-timer

部件号:TMS320F2.8377万S

工具/软件:Code Composer Studio

尊敬的各位:

我正在 使用TMS320F2.8377万S微控制器进行电机控制。 我使用三个中断PWM,UART (SCI B和C都使用),TIMER0和计时器1。 我想更改 定时器0和定时器1的中断优先级。因为PWM和UART的中断优先级比定时器低,所以我认为它可能会影响  PWM和UART的操作。 请帮助我如何更改计时 器中断优先级。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Sam

    C28中的中断优先级是固定的,因此您不能轻松更改优先级,但有一种方法可以通过软件模拟优先级,您可以通过以下链接阅读它:

    想法:当您输入一些优先级较低的ISR时,您可以通过设置"EINT","PIEACK"+"IFR"+IER"(如果要处理来自同一组的中断)来启用此ISR内的其他中断。

    链接页面上有一个代码示例:

    中断无效EPWM1_TZINT_ISR(void)
    {
    UINT16_t TempPIEIER;
    TempPIEIER = PieCtrlRegs.PIEIEER2.all;//保存PIEIER寄存器供以后使用
    IER |= 0x002; //通过调整IER设置全局优先级
    IER &= 0x002;
    PieCtrlRegs.PIEIER2.ALL &= 0x0002;/通过调整PIEIER2以允许2.2 中断当前ISR来设置组优先级
    PieCtrlRegs.PIEACK.ALL = 0xFFFF; //启用PIE中断
    ASM (" NOP"); //等待一个周期
    EINT; //清除INTM以启用中断
    //
    //在此处插入ISR代码.......
    //现在只需插入一个延迟
    //
    用于(i = 1;i <= 10;I++){}
    //
    //恢复寄存器已保存:
    //
    色调;
    PieCtrlRegs.PIEIER2.ALL = TempPIEIER;
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sam,

    如果这回答了您的问题,请单击绿色的"已验证答案"按钮。 谢谢。

    (谢谢Disona)

    - Ken