GD32F103RCT6串口3
时间: 2024-12-31 21:39:17 浏览: 6
### 关于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低功耗特性支持等问题,在具体实践中应参照官方手册进一步深入研究。
阅读全文