GD32F407uart串口通信例程
时间: 2025-01-07 21:49:01 浏览: 3
### GD32F407 UART 串口通信 示例代码
针对GD32F407微控制器的UART串口通信,可以参考如下示例代码。此代码实现了基本的串口初始化、发送和接收功能。
#### 初始化配置
为了使能串口接收,在初始化过程中需要设置相应的参数:
```c
void uart_init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_USART0);
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* TX */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10); /* RX */
usart_deinit(USART0);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_over_sample_set(USART0, USART_OVER_SAMPLE_16);
usart_baudrate_set(USART0, 115200U);
usart_receive_config(USART0, USART_RECEIVE_ENABLE); // 使能串口接收[^1]
nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
nvic_irq_enable(USART0_IRQn, 1, 0);
usart_interrupt_enable(USART0, USART_INT_RBNE); // 开启接收中断
usart_enable(USART0);
}
```
#### 中断服务函数
当接收到数据时触发中断,并执行相应操作:
```c
void USART0_IRQHandler(void)
{
if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))
{
uint8_t ch;
ch = usart_data_receive(USART0); // 接收字符
usart_data_transmit(USART0, ch); // 发送回显字符
while(usart_flag_get(USART0, USART_FLAG_TBE) == RESET){} // 等待发送完成
usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE); // 清除中断标志位
}
}
```
上述代码片段展示了如何在GD32F407平台上实现简单的UART串口通信,包括初始化配置以及中断处理机制。值得注意的是,这里采用了类似于STM32的标准外设库接口来进行硬件控制[^2]。
阅读全文