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.

工程上用的CAN通信里不能用while循环吗?




下面是我写的邮箱 0 的接收代码:
while(ECanbRegs.CANRMP.bit.RMP0 == 1)
{
    ECanbMboxes.MBOX0.MDL.all = CAN_RX_BUF_L[0];
    ECanbMboxes.MBOX0.MDH.all = CAN_RX_BUF_H[0];

    ECanbShadow.CANRMP.bit.RMP0 = 1;
    ECanbRegs.CANRMP.all = ECanbShadow.CANRMP.all;
}

接着下面是一部分发送代码:

ECanbMboxes.MBOX6.MDL.all = CAN_TX_BUF_L[0];
ECanbMboxes.MBOX6.MDH.all = CAN_TX_BUF_H[0];

while(ECanbRegs.CANTA.all != 0x3c0);

ECanbShadow.CANTA.all = 0x3c0;
ECanbRegs.CANTA.all = ECanbShadow.CANTA.all;

这段代码实现CAN收发是绝对没问题的。但是现在 技术总监 告诉我说,

不允许用 while 循环,说万一收发有问题, 程序在一直在 while 循环里跑了。

请问这要如何是好?