这是一段简单的串口通信程序<br /><br />#include "config.h"<br /><br />void DelayNS(uint32 dly)<br />{<br /> uint32 i;<br /> for(; dly>0; dly--)<br /> for(i=0; i<50000;i++);<br /> <br />}<br /><br />#define UART_BPS 115200<br /><br />void UART0_Init(void)<br />{<br /> uint16 Fdiv;<br /> U0LCR=0x83;<br /> Fdiv=(Fpclk/16)/UART_BPS;<br /> U0DLM=Fdiv/256;<br /> U0DLL=Fdiv%256;<br /> U0LCR=0x03;<br />}<br /><br />uint8 UART0_GetByte(void)<br />{<br /> uint8 rcv_dat;<br /> <br /> while((U0LSR & 0x01) == 0);<br /> rcv_dat = U0RBR;<br /> <br /> return(rcv_dat);<br />}<br /><br />void UART0_GetStr(uint8 *s, uint32 n)<br />{<br /> for( ; n>0; n--)<br /> {<br /> *s++ = UART0_GetByte();<br /> }<br />}<br />void UART0_SendByte(uint8 dat)<br />{<br /> U0THR=dat;<br /> while ((U0LSR & 0x40) == 0);<br />}<br /><br />void UART0_SendStr(uint8 const *str)<br />{<br /> while(1)<br /> {<br /> if(*str == '\0') break;<br /> UART0_SendByte(*str++);<br /> }<br />}<br /><br />int main (void)<br />{<br /> uint8 snd[32];<br /> PINSEL0 = 0x00000005;<br /> UART0_Init();<br /> UART0_GetStr(snd,18);<br /> DelayNS(10);<br /> UART0_SendStr(snd);<br /> DelayNS(10);<br /> while(1);<br /> return 0;<br />}<br /><br /><br />用串口调试软件发送18个字符,然后回显<br /><br />我用的是com4,用串口调试软件选择这个口时,总是提示这个“端口被占用或者没有发现此串口”<br /><br />我用的是周立功的开发板<br /><br /><br />请高手给我指点 |
|