|
void Uart3Init(void)
{
//uint16 Fdiv;
LPC_SC->PCONP |= PCUART3;
//P0.0 TXD3, P0.1 RXD3
//LPC_PINCON->PINSEL0 =(LPC_PINCON->PINSEL0&(~(0x03 << (2 *UART_TXD3_NUM))))|(SECONDFUNC<<(2*UART_TXD3_NUM));
//LPC_PINCON->PINSEL0 =(LPC_PINCON->PINSEL0&(~(0x03 << (2 *UART_RXD3_NUM))))|(SECONDFUNC<<(2*UART_RXD3_NUM));
//P0.25 TXD3, P0.26 RXD3
//LPC_PINCON->PINSEL1 =(LPC_PINCON->PINSEL1&(~(0x03 << (2 *(UART_TXD3_NUM-16)))))|(THIRDFUNC<<(2*(UART_TXD3_NUM-16)));
//LPC_PINCON->PINSEL1 =(LPC_PINCON->PINSEL1&(~(0x03 << (2 *(UART_RXD3_NUM-16)))))|(THIRDFUNC<<(2*(UART_RXD3_NUM-16)));
//P4.28 TXD3, P4.29 RXD3
LPC_PINCON->PINSEL9 =(LPC_PINCON->PINSEL9&(~(0x03 << (2 *(UART_TXD3_NUM-16)))))|(THIRDFUNC<<(2*(UART_TXD3_NUM-16)));
LPC_PINCON->PINSEL9 =(LPC_PINCON->PINSEL9&(~(0x03 << (2 *(UART_RXD3_NUM-16)))))|(THIRDFUNC<<(2*(UART_RXD3_NUM-16)));
LPC_UART3->LCR = 0x83;
//Fdiv = (25000000UL / 16) / UART0_BPS; // set baudrate
//12M:9600--71 115200--6 57600--13 //十进制
//18M:9600--X 115200--x 57600--11 //十进制
//24M:9600--125 115200--13 57600--17 //十进制
//25M:9600--92 115200--10 57600--19 //十进制
LPC_UART3->DLM = 0;///Fdiv / 256;
LPC_UART3->DLL = 17;///Fdiv % 256;
LPC_UART3->LCR = ((U3_DATA_BIT)|(U3_STOP_BIT<<2)|(U3_CHECK_BIT_EN<<3)|(U3_CHECK_BIT<<4));
LPC_UART3->IER = 0x03; // Enable RDA and THRE interrupts
LPC_UART3->FCR = 0xc7;
//12M:9600--0XA1 115200--0XC1 57600--0X20 D=0,M=2
//18M:9600--X 115200--X 57600--0X97 D=7,M=9
//24M:9600--0X41 115200--0X20 57600--0XF8 D=8,M=F
//25M:9600--0XDA 115200--0XE5 57600--0X73 D=3,M=7
LPC_UART3->FDR = 0xF8;
NVIC_SetPriority(UART3_IRQn, 4);
NVIC_EnableIRQ(UART3_IRQn); /* 使能I2C中断 */
} // End of UART0 initialize function |
|