#include "uart.h" /* 函数功能:串口0初始化 */ void Init_Uart0(void) { PERCFG&=~(1<<0); //串口0的引脚映射到位置1,即P0_2和P0_3 //PERCFG :外设控制寄存器 P0SEL|=0x3<<2; //将P0_2和P0_3端口设置成外设功能 //P0SEL :端口 0 功能选择寄存器 U0BAUD = 216; //32MHz的系统时钟产生115200BPS的波特率 U0GCR&=~(0x1F<<0);//清空波特率指数 U0GCR|=11<<0; //32MHz的系统时钟产生115200BPS的波特率 U0UCR |= 0x80; //禁止流控,8位数据,清除缓冲器 U0CSR |= 0x3<<6; //选择UART模式,使能接收器 }解释代码
时间: 2024-01-21 14:02:09 浏览: 149
UART.rar_UART_INIT_uart_init()_串口初始化
这段代码是在进行串口0的初始化,具体解释如下:
```c
#include "uart.h" // 引入头文件,可能包含了一些与串口相关的常量和函数声明
void Init_Uart0(void) {
PERCFG &= ~(1 << 0); // 清除 PERCFG 寄存器的第 0 位,将串口0的引脚映射到位置 1,即P0_2和P0_3
// PERCFG :外设控制寄存器
P0SEL |= 0x3 << 2; // 将 P0_2 和 P0_3 端口设置成外设功能
// P0SEL :端口 0 功能选择寄存器
U0BAUD = 216; // 32MHz 的系统时钟产生 115200bps 的波特率
// U0BAUD :串口0波特率控制寄存器
U0GCR &= ~(0x1F << 0); // 清空波特率指数
U0GCR |= 11 << 0; // 32MHz 的系统时钟产生 115200bps 的波特率
// U0GCR :串口0波特率发生器控制寄存器
U0UCR |= 0x80; // 禁止流控,8位数据,清除缓冲器
// U0UCR :串口0控制寄存器
U0CSR |= 0x3 << 6; // 选择 UART 模式,使能接收器
// U0CSR :串口0状态寄存器
}
```
这段代码主要的作用是对串口0进行初始化,使其能够正常工作。其中,通过设置 PERCFG 寄存器、P0SEL 寄存器、U0BAUD 寄存器、U0GCR 寄存器、U0UCR 寄存器和 U0CSR 寄存器的值,分别实现了以下功能:
- 将串口0的引脚映射到位置1,即P0_2和P0_3
- 将 P0_2 和 P0_3 端口设置成串口功能
- 设置波特率为 115200bps
- 选择波特率指数为 11,实现 115200bps 的波特率
- 禁止流控,设置数据位数为 8 位,清除缓冲器
- 选择UART模式,使能接收器
阅读全文