同样的处理方法UART0、UART1正常,UART2、UART3死机,下面是那段程序:<br />#include <LPC23xx.h><br />#define CR 0x0D<br />void Delay(unsigned int cnt)<br />{<br /> do<br /> {<br /> cnt--;<br /> }<br /> while(cnt!=0);<br />}<br />int sendchar0 (int ch) <br />{<br /> if (ch == '\n') {<br /> while (!(U0LSR & 0x20));<br /> U0THR = CR; /* output CR */<br /> }<br /> while (!(U0LSR & 0x20));<br /> return (U0THR = ch);<br />}<br />int sendchar1 (int ch) <br />{<br /> if (ch == '\n') {<br /> while (!(U1LSR & 0x20));<br /> U1THR = CR; /* output CR */<br /> }<br /> while (!(U1LSR & 0x20));<br /> return (U1THR = ch);<br />}<br />int sendchar2 (int ch) <br />{<br /> if (ch == '\n') {<br /> while (!(U2LSR & 0x20));<br /> U2THR = CR; /* output CR */<br /> }<br /> while (!(U2LSR & 0x20));<br /> return (U2THR = ch);<br />}<br /><br />int sendchar3 (int ch) <br />{<br /> if (ch == '\n') {<br /> while (!(U3LSR & 0x20));<br /> U3THR = CR; /* output CR */<br /> }<br /> while (!(U3LSR & 0x20));<br /> return (U3THR = ch);<br />}main()<br />{<br /> PINSEL0 |= 0x00000050; // Enable TxD0 and RxD0<br /> PINSEL4 |= 0x0000000A; // Enable RxD1 and TXD0<br /> PINSEL0 |= 0x00500000; // Enable TXD2 and RXD2<br /> PINSEL9 |= 0x0F000000; // Enable TXD3 and RXD3<br /> PINSEL10 = 0;<br /><br /> U0FDR = 0; <br /> U0LCR = 0x83; <br /> U0DLL = 16; <br /> U0DLM = 0; <br /> U0LCR = 0x03; <br /><br /> U1FDR = 0; <br /> U1LCR = 0x83; <br /> U1DLL = 16; <br /> U1DLM = 0; <br /> U1LCR = 0x03; <br /><br /> U2FDR = 0; <br /> U2LCR = 0x83; <br /> U2DLL = 16; <br /> U2DLM = 0; <br /> U2LCR = 0x03; <br /><br /> U3FDR = 0; <br /> U3LCR = 0x83; <br /> U3DLL = 16; <br /> U3DLM = 0; <br /> U3LCR = 0x03; <br /> while(1)<br /> {<br /> sendchar0(0x55);<br /> sendchar1(0x55);<br /> sendchar3(0x55);<br /> Delay(10000);<br /> }<br />}<br /> |
|