现在做了一个系统:UART0对后台,传输AD采样、地址码等数据;UART1对一个红外通讯,主要功能是我发送测试码给被测装置,被测装置收到命令后返回数据,单片机收到数据后检验校验位,看被测装置的红外通讯部分是否正常。红外通讯(UART1)必须在UART0完成后才进行,同时UART0完成后除UART1测试外还有其他事情,比如AD采样,测量脉冲信号等中断。为了不使中断打架或是少打架(定时中断是全局的),我设置成完成一个事情(比如AD采样)后再进行下一个事情(测脉冲),只有所有事情完成后(AD采样,测脉冲,红外通讯测试)才把数据整合一起,传给PC机,作为UART0的返回数据。
现在有个问题,红外通讯超时,无反应怎么处理。比如说我在AD、脉冲测试完成后进行红外测试,但我程序UART1发送了测试代码,但过了一定时间没返回(被测装置红外电路有问题)我就判定UART1通讯超时,红外通讯测试失败,置红外通讯完成标志。那么就可以进行下一步--返回PC机数据。 但后台呼叫单片机程序1次是可以的,有返回,为什么呼叫第2次...3次都没返回? 那个红外通讯完成标志什么时候清?UART0完成后?UART0通讯超时? |