S3x44b0x的串口在fifo模式下采用中断方式发送字符串"123456789abcdf"
发送函数为 void __irq Uart0_TxFifoInt(void) { int i; while( !(rUFSTAT0 & 0x200) && (*uart0TxStr != '\0') ) //until tx fifo full or end of string { rUTXH0=*uart0TxStr++; } rI_ISPC=BIT_UTXD0; if(*uart0TxStr == '\0') { rUCON0 &= 0x3f3; rI_ISPC=BIT_UTXD0; rINTMSK|=BIT_UTXD0; } }
结果超级终端没有任何显示
如果增加一个延时函数Delay(),如下所示 void __irq Uart0_TxFifoInt(void) { int i; while( !(rUFSTAT0 & 0x200) && (*uart0TxStr != '\0') ) //until tx fifo full or end of string { rUTXH0=*uart0TxStr++; Delay(70); } rI_ISPC=BIT_UTXD0; if(*uart0TxStr == '\0') { rUCON0 &= 0x3f3; rI_ISPC=BIT_UTXD0; rINTMSK|=BIT_UTXD0; } } 超级终端显示正常
问题: 为什么没有延时的时候,超级终端没有显示?按理说,每次写入数据前,都要检查fifo是否已满,按理说是不会冲掉以前写的数据啊? |