gd32f103单片机两个串口初始化
时间: 2023-10-13 17:03:12 浏览: 271
要初始化gd32f103单片机的两个串口,首先需要打开串口时钟。通常情况下,USART1的时钟默认是开启的,如果需要使用USART2,需要手动开启其时钟。
步骤如下:
1. 首先,在库文件中找到对应的寄存器地址。USART1的寄存器地址是0x40013800,USART2的寄存器地址是0x40004400。
2. 对串口1进行初始化:将USART1的时钟使能位USART1EN设置为1,即RCC_APB2ENR寄存器中对应位设置为1。然后设置寄存器USART1_CR1的UE位为1,使能USART1。
3. 对串口2进行初始化:同样设置USART2的时钟使能位USART2EN为1,即RCC_APB1ENR寄存器中对应位设置为1。然后设置寄存器USART2_CR1的UE位为1,使能USART2。
4. 接下来,需要设置串口的波特率、数据位数、停止位、校验位等参数。这些参数需要根据具体需求进行配置。
5. 最后,需要设置串口的工作模式。可以选择同步模式或异步模式,以及各种中断模式。
需要注意的是,在配置完以上参数后,还需要设置GPIO相应的引脚为串口的功能引脚,以及配置引脚的工作模式(推挽输出或开漏输出),也可以选择是否配置硬件流控等功能。
以上是大致的初始化步骤,具体的代码实现与工具选择会根据不同的开发环境和库文件而有所变化。在具体开发中,可以参考相关的手册和例程来完成串口的初始化操作。
相关问题
gd32f103rct6串口
### GD32F103RCT6 单片机串口通信配置
对于GD32F103RCT6单片机而言,实现其串口通信功能涉及多个步骤的初始化设置以及参数配置。具体来说,在进行USART外设操作前需完成基本时钟配置、GPIO端口映射至相应USART功能引脚上,并开启对应USART模块及其中断服务程序。
#### 初始化时钟与GPIO
为了确保USART能够正常工作,首先要使能相关外设的时钟并配置用于发送/接收数据的GPIO引脚模式:
```c
/* 使能 GPIOA 和 USART1 的时钟 */
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_USART1);
/* 配置 PA9 作为 USART1_TX (推挽输出),PA10 作为 USART1_RX (浮空输入)*/
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
```
#### 设置USART参数
接着要设定波特率、字长、停止位等通信属性,这里给出一个简单的例子来说明如何通过库函数快速建立这些必要条件:
```c
usart_deinit(USART1); /* 复位 USART */
struct usart_init_type usart_struct;
usart_struct.usart_baud = 115200; // 波特率为115200 bps
usart_struct.usart_word_length = USART_WL_8BIT; // 字符长度为8位
usart_struct.usart_stop_bit = USART_STB_1BIT; // 停止位数为1
usart_struct.usart_mode = USART_MODE_RXTX; // 启用收发模式
usart_struct.usart_parity = USART_PM_NONE; // 不使用奇偶校验
usart_struct.usart_hardware_flow_control = USART_HWFCTRL_NONE;
usart_init(USART1,&usart_struct); // 应用上述配置到USART1
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);// 开启传输通道
usart_receive_config(USART1, USART_RECEIVE_ENABLE); // 开启接受通道
```
以上代码片段展示了怎样利用官方提供的固件库APIs来进行基础性的硬件资源分配和接口特性定义[^2]。
#### 发送字符函数示例
下面是一个简单实用的小工具——向指定串行端口写入单个ASCII码值的方法:
```c
void uart_send_char(uint8_t ch){
while(RESET == usart_flag_get(USART1, USART_FLAG_TBE));
usart_data_transmit(USART1,ch);
}
```
此方法会等待直到发送缓冲区为空之后才继续执行下一条指令,从而保证每次调用都能成功地把目标字符传递出去。
#### 接受字符处理逻辑
当接收到新消息时触发相应的事件处理器可以这样设计:
```c
uint8_t receivedChar=0;
if(usart_flag_get(USART1, USART_FLAG_RBNE)!= RESET){
receivedChar = usart_data_receive(USART1);
// 对receivedChar做进一步处理...
}
```
这段代码会在检测到有新的可用读取的数据后立即将其取出存放在变量`receivedChar`里供后续分析或响应之用。
GD32F103RCT6串口3
### 关于GD32F103RCT6单片机串口3的配置与使用
#### USART3初始化设置
对于GD32F103RCT6而言,USART3位于APB1总线上,默认情况下其时钟源来自PCLK1。为了使能USART3的功能并完成初步设定,需先通过RCC控制器开启对应外设时钟,并指定GPIO端口模式为复用推挽输出形式[^1]。
```c
/* 开启USART3及时钟 */
rcu_periph_clock_enable(RCU_USART3);
rcu_periph_clock_enable(RCU_GPIOA);
/* GPIO初始化结构体定义 */
gpio_init_type gpio_init_struct;
void usart_gpio_config(void){
/* 复位PA8, PA9引脚 */
gpio_pin_reset(GPIOA, GPIO_PIN_8 | GPIO_PIN_9);
/* 设置PA8(TX), PA9(RX)为复用推挽输出 */
gpio_init_struct.gpio_mode = GPIO_MODE_AF_PP;
gpio_init_struct.gpio_out_speed = GPIO_OSPEED_50MHZ;
/* 初始化PA8(PA9同理)*/
gpio_init(GPIOA, &gpio_init_struct);
}
```
#### 配置波特率及其他参数
接着是对通信速率(即波特率)、字长、停止位等属性的具体规定。这里采用标准异步半双工传输协议,数据帧由起始位、8个数据位构成,不带校验位且仅有一个终止位[^2]。
```c
usart_init_type usart_init_struct;
void usart_parameter_config(void){
/* 波特率为115200bps */
usart_init_struct.baud_rate = 115200U;
/* 字符长度为8位 */
usart_init_struct.word_length = USART_WL_8BIT;
/* 奇偶校验关闭 */
usart_init_struct.stop_bits = USART_STPB_1;
/* 禁用硬件流控制 */
usart_init_struct.hardWARE_flow_control = USART_HFC_DISABLE;
/* 发送/接收使能 */
usart_init_struct.transmit_enable = USART_TE_ENABLE;
usart_init_struct.receive_enable = USART_RE_ENABLE;
/* 应用于USART3实例化对象上 */
usart_init(USART3,&usart_init_struct);
}
```
#### 中断服务程序设计
当希望利用中断机制处理接收到的数据包时,则还需注册相应的ISR入口地址至向量表内,并编写具体的响应逻辑[^4]。
```c
extern "C" void USART3_IRQHandler(void){
if(RESET != usart_interrupt_flag_get(USART3, USART_INT_FLAG_RBNE)){
char ch = usart_data_receive(USART3);
// 用户自定义业务流程...
usart_interrupt_flag_clear(USART3, USART_INT_FLAG_RBNE);
}
}
// 启动接收中断请求
usart_interrupt_enable(USART3, USART_INT_RBNE);
NVIC_EnableIRQ(USART3_IRQn);
```
以上便是针对GD32F103RCT6型号MCU中USART3接口的一般性介绍及其基础应用示范。值得注意的是实际项目里可能还会涉及到更复杂的场景比如DMA批量传送或是LIN/LPUART低功耗特性支持等问题,在具体实践中应参照官方手册进一步深入研究。
阅读全文
相关推荐
















