直接把该例程改成两个uart时,由于它们共同使用了静态局部变量g_tx_nbytes,导致在第二个uart要发送时上一个串口还没有发送完成,由中断发送函数决定此时应该等待上次发送完成才能再次调用该函数,所以造成没有进中断的假想。
解决办法1:可以是不使用发送中断发送数据,而直接使用轮询发送,中断接收。
解决办法2:定义两个串口中断发送函数及两个串口中断处理函数,使用不同的变量g_tx_nbytes1和g_tx_nbytes1。这样就可以使用中断发送了。当然值得注意的是中断发送函数使用前应当进行忙碌检测。