用SMARTARM2200开发板做UART0实验,很奇怪是,发送BUF中数据为0 都没有发出去,不为0均发出去了.一开始用带UCOS操作系统的环境来做,出现了上述现象,后来,干脆不用操作系统,重新写了简单的代码,现象也一样.请高手看看是何原因? 下面是相关的代码.<br /><br />void UART0_Init(void)<br />{ <br /> uint16 Fdiv;<br /><br /> U0LCR = 0x80; // DLAB = 1,可设置波特率<br /> Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率<br /> U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0FCR = 0x00;<br /> U0LCR = 0x03;<br /> U0IER = 0x00; <br />}<br /><br />void UART0_SendByte(uint8 data)<br />{ <br /> while( (U0LSR&0x40)==0 ); // 等待数据发送完毕<br /> U0THR = data; // 发送数据<br />}<br /><br />int main(void)<br />{ <br /> uint8 i;<br /> uint8 Buf[64];<br /> <br /> PINSEL0 = 0x00000005; // 设置I/O连接到UART0<br /> UART0_Init();<br /><br /> for(i=0;i<16;i++)<br /> {<br /> Buf=i;<br /> } <br /> <br /> Buf[16]=0x00;<br /> Buf[17]=0x00;<br /> Buf[18]=0x0a; <br /> Buf[19]=0x0d; <br /> <br /> while(1) <br /> { <br /> <br /> for(i=0;i<20;i++)<br /> UART0_SendByte(Buf);<br /> <br /> DelayNS(1000);<br /> }<br /><br /> return(0);<br />}<br /><br />理论上从串口调试软件串口应该收到(16进制方式):<br />00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 00 0A 0D<br />但实际数据接收为:<br />01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0A 0D<br /><br />其中为0的数据都给丢掉了!!! |
|