uart의 baudrate를 설정해주는 녀석은
내부적으로 UARTDisable()과 UARTEnable()을 포함하는데
UARTEnable()은 fifo enable을 포함한다.(얘가 악의 축)
그리고 UARTDisable()은 TX 할게 있으면 다 보낼때 까지 기다려주는 역활을 한다.
void UARTConfigSetExpClk(uint32_t ui32Base, uint32_t ui32UARTClk, uint32_t ui32Baud, uint32_t ui32Config) { // Stop the UART. UARTDisable(ui32Base); // Set the baud rate. HWREG(ui32Base + UART_O_IBRD) = ui32Div / 64; HWREG(ui32Base + UART_O_FBRD) = ui32Div % 64; // Set parity, data length, and number of stop bits. HWREG(ui32Base + UART_O_LCRH) = ui32Config; // Clear the flags register. HWREG(ui32Base + UART_O_FR) = 0; // Start the UART. UARTEnable(ui32Base); } void UARTEnable(uint32_t ui32Base) { // // Check the arguments. // ASSERT(_UARTBaseValid(ui32Base)); // // Enable the FIFO. // HWREG(ui32Base + UART_O_LCRH) |= UART_LCRH_FEN; // // Enable RX, TX, and the UART. // HWREG(ui32Base + UART_O_CTL) |= (UART_CTL_UARTEN | UART_CTL_TXE | UART_CTL_RXE); } void UARTDisable(uint32_t ui32Base) { // // Check the arguments. // ASSERT(_UARTBaseValid(ui32Base)); // // Wait for end of TX. // while(HWREG(ui32Base + UART_O_FR) & UART_FR_BUSY) { } // // Disable the FIFO. // HWREG(ui32Base + UART_O_LCRH) &= ~(UART_LCRH_FEN); // // Disable the UART. // HWREG(ui32Base + UART_O_CTL) &= ~(UART_CTL_UARTEN | UART_CTL_TXE | UART_CTL_RXE); } |
근데 도대체!!! 뒤에 0x00은 왜 붙는거야?
'embeded > Cortex-M3 Ti' 카테고리의 다른 글
어? 의외로 RX busy는 없네? (0) | 2017.03.27 |
---|---|
lm3s1607 uart pull up 문제 (0) | 2017.03.24 |
lm3s1607 uart baudrate runtime change (0) | 2017.03.15 |
keil uvision에서 colink-ex 연동하기 (0) | 2016.09.02 |
ekc-lm3s811 를 ICDI로 사용하기 (0) | 2016.08.27 |