一,建立bsp_usart.h文件中设置
定义各个接口名称
#ifndef _BSP_USART_H
#define _BSP_USART_H
#include "gd32f4xx.h"
#include "systick.h"
#define BSP_USART_TX_RCU RCU_GPIOA
#define BSP_USART_RX_RCU RCU_GPIOA
#define BSP_USART_RCU RCU_USART0
#define BSP_USART_TX_PORT GPIOA
#define BSP_USART_RX_PORT GPIOA
#define BSP_USART_AF GPIO_AF_7
#define BSP_USART_TX_PIN GPIO_PIN_9
#define BSP_USART_RX_PIN GPIO_PIN_10
#define BSP_USART USART0
#endif
二,在bsp_usart.c文件中
#include "bsp_usart.h"
#include "stdio.h"
void usart_gpio_config(void)
{
//开启时钟
rcu_periph_clock_enable(BSP_USART_TX_RCU);
rcu_periph_clock_enable(BSP_USART_TX_RCU);
rcu_periph_clock_enable(BSP_USART_RCU);
//配置gpio复用模式
gpio_af_set(BSP_USART_TX_PORT,BSP_USART_AF,BSP_USART_TX_PIN);
gpio_af_set(BSP_USART_RX_PORT,BSP_USART_AF,BSP_USART_RX_PIN);
//配置gpio模式
//配置tx rx模式上拉模式
gpio_mode_set(BSP_USART_TX_RCU,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_TX_PIN);
gpio_mode_set(BSP_USART_RX_RCU,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_RX_PIN);
//配置模式推挽模式
gpio_output_options_set(BSP_USART_TX_RCU,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,BSP_USART_TX_PIN);
gpio_output_options_set(BSP_USART_RX_RCU,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,BSP_USART_RX_PIN);
/* 配置串口的参数 */
usart_deinit(BSP_USART); // 复位串口
usart_baudrate_set(BSP_USART,115200U); // 设置波特率
usart_parity_config(BSP_USART,USART_PM_NONE); // 没有校验位
usart_word_length_set(BSP_USART,USART_WL_8BIT); // 8位数据位
usart_stop_bit_set(BSP_USART,USART_STB_1BIT); // 1位停止位
/* 使能串口 */
usart_enable(BSP_USART); // 使能串口
usart_transmit_config(BSP_USART,USART_TRANSMIT_ENABLE); // 使能串口发送
}
TX 发送引脚
RX 接受引脚
SWDIO 数据线
SWCLK 时钟线
初始化设置:(端口参照第一步一,建立usart.h文件中设置)
开启时钟
rcu_periph_clock_enable(BSP_USART_TX_RCU);
rcu_periph_clock_enable(BSP_USART_TX_RCU);
rcu_periph_clock_enable(BSP_USART_RCU);
GPIO口设置
gpio_af_set(BSP_USART_TX_PORT,BSP_USART_AF,BSP_USART_TX_PIN);
gpio_af_set(BSP_USART_RX_PORT,BSP_USART_AF,BSP_USART_RX_PIN);
/ /配置模式推挽模式
gpio_mode_set(BSP_USART_TX_RCU,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_TX_PIN);
gpio_mode_set(BSP_USART_RX_RCU,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_RX_PIN);
串口参数设置
usart_deinit(BSP_USART); // 复位串口
usart_baudrate_set(BSP_USART,115200U); // 设置波特率
usart_parity_config(BSP_USART,USART_PM_NONE); // 没有校验位
usart_word_length_set(BSP_USART,USART_WL_8BIT); // 8位数据位
usart_stop_bit_set(BSP_USART,USART_STB_1BIT); // 1位停止位
使能串口设置
usart_enable(BSP_USART); // 使能串口
usart_transmit_config(BSP_USART,USART_TRANSMIT_ENABLE); // 使能串口发送