请教关于SPI转CAN的延时问题。我们在使用CAN总线时,选择的CAN控制器是具有SPI接口的MCP2510,编写了利用SPI发送的函数SendOut()和中断接收函数Receive(),二者都是通过SPI操作CAN控制器的寄存器,从而实现数据的收发。时钟节拍设为1ms,其他节点收到数据后立即返回响应帧。在连续两次发送时,SendOut()之间加入一小段延时,如果采用操作系统的延时函数OSTimeDlyHMSM(0,0,0,1)就会出现接收丢数的现象,即使加长延时时间,也仍然会丢。而如果采用for循环进行延时,例如: for(k=0;k<1500;k++) {;} 则不丢数。而且for循环的延时时间是短于OSTimeDlyHMSM(0,0,0,1)的。请问为什么两个延时会有不同的效果? |