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