MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / uart_init

Function uart_init

bsp/loongson/ls1cdev/libraries/ls1c_uart.c:109–136  ·  view source on GitHub ↗

* 初始化指定的串口模块 * @uart_info_p 串口模块信息 */

Source from the content-addressed store, hash-verified

107 * @uart_info_p 串口模块信息
108 */
109void uart_init(ls1c_uart_info_t *uart_info_p)
110{
111 void *uart_base = uart_get_base(uart_info_p->UARTx);
112 unsigned long baudrate_div = 0;
113
114 // 禁止所有中断
115 reg_write_8(0, uart_base + LS1C_UART_IER_OFFSET);
116
117 // 接收FIFO的中断申请Trigger为14字节,清空发送和接收FIFO,并复位
118 reg_write_8(0xc3, uart_base + LS1C_UART_FCR_OFFSET);
119
120 // 设置波特率
121 reg_write_8(0x80, uart_base + LS1C_UART_LCR_OFFSET);
122 baudrate_div = clk_get_cpu_rate() / 16 / uart_info_p->baudrate / 2;
123 reg_write_8((baudrate_div >> 8) & 0xff, uart_base + LS1C_UART_MSB_OFFSET);
124 reg_write_8(baudrate_div & 0xff, uart_base + LS1C_UART_LSB_OFFSET);
125
126 // 8个数据位,1个停止位,无校验
127 reg_write_8(0x03, uart_base + LS1C_UART_LCR_OFFSET);
128
129 // 使能接收中断
130 if (TRUE == uart_info_p->rx_enable)
131 {
132 reg_write_8(IER_IRxE|IER_ILE , uart_base + LS1C_UART_IER_OFFSET);
133 }
134
135 return ;
136}
137
138
139/*

Callers 2

uart2_initFunction · 0.70
ls1c_uart_configureFunction · 0.50

Calls 3

uart_get_baseFunction · 0.70
reg_write_8Function · 0.70
clk_get_cpu_rateFunction · 0.70

Tested by

no test coverage detected