|
使用LPC2142与XBee的Zigebee模块,打算先由UART0读入数据,传入UART1,再从UART1传出数据到Zigbee模块,但发现UART0与UART1之间无法通信,初步估计是UART1的初始化失败,请高人指点,小弟在线等待~~QQ 157493515<br />/******************************************************<br /> * Include files<br /> ******************************************************/<br />#include <general.h><br />#include <lpc2xxx.h><br />#include <config.h><br />#include <printf_P.h><br />#include <ea_init.h><br /><br /><br />/******************************************************<br /> * Defines<br /> ******************************************************/<br />#define UART_DLL_VALUE (tU16)((60000000 / (9600 * 16.0)) + 0.5)<br />#define UART_DLL_VAL (tU16)((60000000 / (38400 * 16.0)) + 0.5)<br /><br /><br />/*****************************************************************************<br /> *<br /> * Description:<br /> * Initializes the UART channel #0 (38400 kbps, 8N1)<br /> *<br /> ****************************************************************************/<br />void<br />initUart1(void)<br />{<br />//enable uart #1 pins (P0.8 = TxD0, P0.9 = RxD0)<br /> PINSEL0 = (PINSEL0 & 0xfff0ffff) | 0x00050000;<br /><br /> //initialize bitrate (by first enable DL registers, DLAB-bit = 1)<br /> U1LCR = 0x80;<br /> U1DLL = (tU8)(UART_DLL_VALUE & 0x00ff);<br /> U1DLM = (tU8)(UART_DLL_VALUE>>8);<br /> U1LCR = 0x00;<br /><br /> //initialize LCR: 8N1<br /> U1LCR = 0x03;<br /><br /> //disable FIFO<br /> U1FCR = 0x00;<br /><br /> //clear interrupt bits, just in case (not used)<br /> U1IER = 0x00;<br /> //U1MCR = 0x00;<br />}<br />void<br />initUart0(void)<br />{<br /> //enable uart #0 pins (P0.0 = TxD0, P0.1 = RxD0)<br /> PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x00000005;<br /><br /> //initialize bitrate (by first enable DL registers, DLAB-bit = 1)<br /> U0LCR = 0x80;<br /> U0DLL = (tU8)(UART_DLL_VAL & 0x00ff);<br /> U0DLM = (tU8)(UART_DLL_VAL>>8);<br /> U0LCR = 0x00;<br /><br /> //initialize LCR: 8N1<br /> U0LCR = 0x03;<br /><br /> //disable FIFO<br /> U0FCR = 0x00;<br /><br /> //clear interrupt bits, just in case (not used)<br /> U0IER = 0x00;<br />}<br /><br />/*****************************************************************************<br /> *<br /> * Description:<br /> * Blocking output routine, i.e., the routine waits until the uart <br /> * buffer is free and then sends the character. <br /> *<br /> * Params:<br /> * [in] charToSend - The character to send/print<br /> *<br /> ****************************************************************************/<br />tBool receiveCharPoll()<br />{ <br /> if(!(U0LSR & 0x01))<br /> {<br /> return 0;<br /> }<br /> else <br /> { <br /> return 1;<br /> }<br />}<br />void<br />sendToZigbee(tBool t)<br />{<br /> //Wait until THR register is empty<br /> while(!(U0LSR & 0x20))<br /> ;<br /> <br /> if(t)<br /> //output character value to THR<br /> { <br /> <br /> U1THR = U0RBR;<br /> } <br /> }<br />void <br />returnState()<br />{<br /> tU8 anrry[10];<br /> tU16 i,j;<br /> i=0;<br /> while(U1LSR & 0x01)<br /> {<br /> anrry=U1RBR;<br /> i++;<br /> }<br /> for(j=0;j<=i;j++)<br /> {<br /> U0THR = anrry;<br /> }<br /> } |
|