Part Number:TMS320F2812
如XINT2中断, 目前可以通定义GPIO引脚为XINT2(INT1.5)功能,并能成功通过引脚置位的方式来中断。
如果想在程序某处, 在GPIO引脚电平不改变的情况下想通过程序的方式增加一次中断,
1. 怎么实现?可以用TARP或INTR指令吗?具体怎么用?
2. 如果用了TARP或INTR指令,那么在中断程序中EINT后,能被高优先级中断程序中断吗?
Yale Li:
1.1. 可以使用INTR来软件触发中断,相关的助记符句法在spru127c_TMS320C20x User's Guide第261页:
不建议使用TRAP,TRAP有自己专门的中断向量,一般被TI用来处理错误;
1.2. 既然是通过GPIO触发的,试着通过改写相应的GPIO结果寄存器来触发中断;
1.3. 其实换个角度往简单里想,软件触发中断的话,程序都执行到触发这里了,直接把代码加在这里不就好了?
2. C2000器件默认是不支持中断嵌套的。
,
fw yang:
Yale Li said:其实换个角度往简单里想,软件触发中断的话,程序都执行到触发这里了,直接把代码加在这里不就好了?
处于中间优先级, 需要被高优先级中断, 同时比其他任务优先级又要高.
高优先级的任务运行一段时间后就运行此任务,其他任务挂起。如果把此任务放在最高优先级程序里,会导致最高优先级程序来不及;如果把此程序放在低优先级里,会导致不能及时跟上。
Yale Li said:1.2. 既然是通过GPIO触发的,试着通过改写相应的GPIO结果寄存器来触发中断;
GPIO口已经被配置XINT2,不能再操作了吧,当然可以通过把此GPIO连到基他GPIO上再来操作基他GPIO。
,
Yale Li:
fw yang said:
处于中间优先级, 需要被高优先级中断, 同时比其他任务优先级又要高.
高优先级的任务运行一段时间后就运行此任务,其他任务挂起。如果把此任务放在最高优先级程序里,会导致最高优先级程序来不及;如果把此程序放在低优先级里,会导致不能及时跟上。
好的,我明白了。可以使用方法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
fw yang said:GPIO口已经被配置XINT2,不能再操作了吧,
第二代三代器件可以,不冲突。但是我没有在F2812上试过。这个问题的关键也更在于外部连接对于引脚状态的影响。