void UART_0_Init(void){ uint32_t tmp = 0; uint32_t actual_baudrate = 0; NVIC_DisableIRQ(USART0_IRQn);//Disable UART0 interrupts //Initialize receive ring buffer. memset(&uart_0_data_rx, 0, UART_0_DATA_RX_SIZE); ringbuf_init(&ring_uart_0_rx, (uint8_t*)&uart_0_data_rx, (uint8_t)UART_0_DATA_RX_SIZE); //Initialize transmit ring buffer memset(&uart_0_data_tx, 0, UART_0_DATA_TX_SIZE); ringbuf_init(&ring_uart_0_tx, (uint8_t*)&uart_0_data_tx, (uint8_t)UART_0_DATA_TX_SIZE); //Initialize Rx and Tx pins /* UART signals on pins PIO0_19 (FUNC3, U0_TXD) and PIO0_18 (FUNC2, U0_RXD) */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 18, (IOCON_FUNC1|IOCON_MODE_INACT)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 19, (IOCON_FUNC1|IOCON_MODE_INACT)); /* Setup UART for 115.2K8N1 */ Chip_UART0_Init(LPC_USART0); Chip_UART0_SetBaud(LPC_USART0, USART_0_BAUDRATE); actual_baudrate = Chip_UART0_SetBaudFDR(LPC_USART0, USART_0_BAUDRATE); Chip_UART0_ConfigData(LPC_USART0, (UART0_LCR_WLEN8 | UART0_LCR_SBS_1BIT | UART0_LCR_PARITY_DIS)); //Setup FIFO buffer for USART0 Chip_UART0_SetupFIFOS(LPC_USART0, (UART0_FCR_FIFO_EN | UART0_FCR_RX_RS | UART0_FCR_TX_RS)); // | UART0_FCR_TRG_LEV2 Chip_UART0_TXEnable(LPC_USART0); /* Ensure a clean start, no data in either TX or RX FIFO. */ while (( LPC_USART0->LSR & (UART0_LSR_THRE | UART0_LSR_TEMT)) != (UART0_LSR_THRE | UART0_LSR_TEMT) ); while ( LPC_USART0->LSR & UART0_LSR_RDR ) { tmp = Chip_UART0_ReadByte(LPC_USART0); /* Dump data from RX FIFO */ } tmp |= tmp; /* Enable receive data and line status interrupt */ Chip_UART0_IntEnable(LPC_USART0, (UART0_IER_RBRINT | UART0_IER_RLSINT | UART0_IER_THREINT)); // | UART0_IER_THREINT NVIC_SetPriority(USART0_IRQn, 3); /* Enable UART 0 interrupt */ NVIC_EnableIRQ(USART0_IRQn); //Start UART_0 task UART_0_TaskID = osThreadCreate(osThread (UART_0_Task), NULL); UART_0_Parse_TaskID = osThreadCreate(osThread (UART_0_Parse_Task), NULL); CONSOL_SendString("Debug init! - [%u][%u][%u][%u]\r\n", UART_0_TaskID, UART_0_Parse_TaskID, actual_baudrate, Chip_Clock_GetMainClockRate()); CONSOL_SendString("DLL - %u\r\n",LPC_USART0->DLL); CONSOL_SendString("DLM - %u\r\n",LPC_USART0->DLM); CONSOL_SendString("FDR - %u\r\n",LPC_USART0->FDR); return; } |