UART Polling Mode
This sample code guide is designed to help users easily and comprehensively understand UART sample. This sample demonstrates how UART sends and receives data in polling mode. This sample code demonstrates the communication between chip and PC terminal, the chip continuously checks for incoming data within the main program and sends the same data back to the PC terminal.
Requirements
For hardware requirements, please refer to the Requirements.
In addition, it is necessary to install serial port assistant tools such as PuTTY or UartAssist on the PC terminal.
Wiring
Connect P3_1 (UART TX Pin) to the RX pin of the FT232 and P3_0 (UART RX Pin) to the TX pin of the FT232.
The hardware connection of UART sample code is shown in the figure below.

UART Sample Code Hardware Connection Diagram
Configurations
The following macros can be configured to modify pin definitions.
#define UART_TX_PIN P3_1
#define UART_RX_PIN P3_0
The entry function is as follows, call this function in
main()
to run this sample code. For more details, please refer to the Initialization.uart_polling_demo();
Building and Downloading
For building and downloading, please refer to the Building and Downloading.
Experimental Verification
Preparation Phase
Start a PC terminal program like PuTTY or UartAssist and connect to the used COM port with the following UART settings:
Baud rate: 115200.
8 data bits.
1 stop bit.
No parity.
No hardware flow control.
Testing Phase
Press the Reset button on the EVB, chip starts with transmitting ### Welcome to use RealTek Bumblebee ###\r\n. Observe that the string appears on the PC terminal program.
Enter a string on the PC terminal program and send it, and then observe whether the same string is received on the PC terminal program.
Code Overview
This section introduces the code and process description for initialization and corresponding function implementation in the sample.
Source Code Directory
For project directory, please refer to Source Code Directory.
Source code directory:
sdk\src\sample\io_demo\uart\polling\uart_polling_demo.c
.
Initialization
The initialization flow for peripherals can refer to Initialization Flow.
UART initialization flow is shown in the following figure.

UART Initialization Flow Chart
Call
Pad_Config()
andPinmux_Config()
to initialize the pin.static void board_uart_init(void) { Pinmux_Config(UART_TX_PIN, UART0_TX); Pinmux_Config(UART_RX_PIN, UART0_RX); Pad_Config(UART_TX_PIN, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); Pad_Config(UART_RX_PIN, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_DISABLE, PAD_OUT_LOW); }
Call
RCC_PeriphClockCmd()
to enable the UART clock and function.Initialize the UART peripheral:
Define the
UART_InitTypeDef
typeuartInitStruct
, and callUART_StructInit()
to pre-filluartInitStruct
with default values.Modify the
uartInitStruct
parameters as needed. The UART initialization parameter configuration is shown in the table below.Call
UART_Init()
to initialize the UART peripheral.
UART Initialization Parameters UART Hardware Parameters
Setting in the
uartInitStruct
UART
div
20
ovsr
12
ovsr_adj
0x252
Parity Check
Stop Bit
Data Format
Hardware Flow Control
RX Trigger Level
Functional Implementation
Send Data
Transmit ### Welcome to use RealTek Bumblebee ###\r\n to the PC terminal:
Call
UART_SendData()
to continuously write data to the TX FIFO. The number of data continuously written to the TX FIFO must not exceed the size of the TX FIFO.Call
UART_GetFlagState()
to checkUART_FLAG_THR_TSR_EMPTY
flag state and wait for both TX FIFO and TX shift register to be empty.Repeat the above process to send all data to TX FIFO in batches.
Receive Data
Wait the PC terminal sends a string:
Call
UART_GetFlagState()
to checkUART_FLAG_RX_DATA_RDY
flag state and wait for RX data to be available.Call
UART_ReceiveByte()
to read one byte of data from UART RX FIFO.Call
UART_SendByte()
to send the same data back to the PC terminal.