请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8035万 工具/软件:TI C/C++编译器
您好,
我认为我已经有了解决此问题的有效解决方案,但我想为遇到此问题的其他人发布帖子,看看是否有人可以找到解决方案的问题。
我遇到的问题是,当我调用Cla1ForceTask8AndWait时,它会立即返回,因为(在我的情况下)任务1正在运行。 它有助于了解定义:
#define Cla1ForceTask8andWait()__ASM(" IACK #0x0080"); \
_ASM (" RPT #3 || NOP"); \
while (Cla1Regs.MIRUN.bit.INT8 == 1);
宏只查找MIRUN.bit.INT8。 如果另一个任务正在运行,则任务8将进入挂起状态(INT8=0),并且在其它任务完成之前不会运行;同时,上述代码已返回给调用方。
我的解决方案是检查MFR标志寄存器,并等待是否设置。
#define Cla1ForceTask8andWaitFixed()__ASM(" IACK #0x0080"); \
_ASM (" RPT #3 || NOP"); \
while (Cla1Regs.MIFR.bit.INT8 == 1);\
while (Cla1Regs.MIRUN.bit.INT8 == 1);
我的方法是否有任何问题被我忽略?
谢谢