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.

TMS320F2812: 如何手动开启一个PEI中断

Part Number: TMS320F2812

如XINT2中断, 目前可以通定义GPIO引脚为XINT2(INT1.5)功能,并能成功通过引脚置位的方式来中断。

如果想在程序某处, 在GPIO引脚电平不改变的情况下想通过程序的方式增加一次中断,

1. 怎么实现?可以用TARP或INTR指令吗?具体怎么用?

2. 如果用了TARP或INTR指令,那么在中断程序中EINT后,能被高优先级中断程序中断吗?

  • 1.1. 可以使用INTR来软件触发中断,相关的助记符句法在spru127c_TMS320C20x User's Guide261页:

    不建议使用TRAPTRAP有自己专门的中断向量,一般被TI用来处理错误;

    1.2. 既然是通过GPIO触发的,试着通过改写相应的GPIO结果寄存器来触发中断;

    1.3. 其实换个角度往简单里想,软件触发中断的话,程序都执行到触发这里了,直接把代码加在这里不就好了?

    2. C2000器件默认是不支持中断嵌套的。

  • 其实换个角度往简单里想,软件触发中断的话,程序都执行到触发这里了,直接把代码加在这里不就好了?

    处于中间优先级, 需要被高优先级中断, 同时比其他任务优先级又要高.

    高优先级的任务运行一段时间后就运行此任务,其他任务挂起。如果把此任务放在最高优先级程序里,会导致最高优先级程序来不及;如果把此程序放在低优先级里,会导致不能及时跟上。

    1.2. 既然是通过GPIO触发的,试着通过改写相应的GPIO结果寄存器来触发中断;

    GPIO口已经被配置XINT2,不能再操作了吧,当然可以通过把此GPIO连到基他GPIO上再来操作基他GPIO。

  • 处于中间优先级, 需要被高优先级中断, 同时比其他任务优先级又要高.

    高优先级的任务运行一段时间后就运行此任务,其他任务挂起。如果把此任务放在最高优先级程序里,会导致最高优先级程序来不及;如果把此程序放在低优先级里,会导致不能及时跟上。

    好的,我明白了。可以使用方法1.1。有关C2000中断嵌套,请参考:

    https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/82160/c2000-mcu

    https://software-dl.ti.com/C2000/docs/c28x_interrupt_faq/html/index.html#nesting

    GPIO口已经被配置XINT2,不能再操作了吧,

    第二代三代器件可以,不冲突。但是我没有在F2812上试过。这个问题的关键也更在于外部连接对于引脚状态的影响。

x 出现错误。请重试或与管理员联系。