本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发
向上代码兼容GD32F450ZGT6中使用
后续项目主要在下面该专栏中发布:
https://blog.youkuaiyun.com/qq_62316532/category_12608431.html?spm=1001.2014.3001.5482
感兴趣的点个关注收藏一下吧!
电机驱动开发可以跳转:
GD32F103RCT6/GD32F303RCT6-实战项目-无刷电机驱动(1)_gd32f103rct6例程-优快云博客
BMS电源系统开发可以跳转:
暂未放链接
DCDC-双向BUCK-BOOST实战链接:
向上代码兼容GD32F303RCT6中使用
本项目配套开发板:
基于GD32F103RCT6国产GD32平台,以下教程编写基于该开发板
图片:
原理图以及例程请联系客服获取!
注意:
本教程致力于解决所有在调试中出现的所有问题,如有未包含在的问题,请联系QQ:2049363803,有奖更新文档!
库函数介绍:
GPIO的库函数声明都在""gd32f10x_usart.h"文件中。
官方资料路径:GD32F10x_Firmware_Library_V2.2.4\Firmware\GD32F10x_standard_peripheral\Include\gd32f10x_usart.h
函数声明:
复位USART/UART
/* reset USART */
函数声明如下:
void usart_deinit(uint32_t usart_periph);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
返回
无
无
配置USART/UART波特率
/* configure USART baud rate value */
函数声明如下:
void usart_baudrate_set(uint32_t usart_periph, uint32_t baudval);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
baudval
参数2
具体波特率值
返回
返回
无
配置USART/UART校验功能(奇偶)
/* configure USART word length */
函数声明如下:
void usart_parity_config(uint32_t usart_periph, uint32_t paritycfg);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
paritycfg
参数2
USART_PM_NONE
USART_PM_ODD
USART_PM_EVEN
返回
返回
无
参数2:
值
含义
USART_PM_NONE
无校验
USART_PM_ODD
奇校验
USART_PM_ODD
偶校验
配置USART/UART字长
/* configure USART word length */
函数声明如下:
void usart_word_length_set(uint32_t usart_periph, uint32_t wlen);
参数1:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
wlen
参数2
USART_WL_8BIT
USART_WL_9BIT
返回
返回
无
参数2:
值
含义
USART_WL_8BIT
8bits
USART_WL_9BIT
9bits
配置USART/UART停止位
/* configure USART stop bit length */
函数声明如下:
void usart_stop_bit_set(uint32_t usart_periph, uint32_t stblen);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
stblen
参数2
USART_STB_1BIT
USART_STB_0_5BIT
USART_STB_2BIT
USART_STB_1_5BIT
返回
返回
无
参数2:
值
含义
USART_STB_1BIT
1bit
USART_STB_0_5BIT
0.5bit,该位对UARTx(x=3,4)无效
USART_STB_2BIT
2bit
USART_STB_1_5BIT
1.5bit,该位对UARTx(x=3,4)无效
USART正常模式通信:
使能USART/UART
/* enable USART */
函数声明如下:
void usart_enable(uint32_t usart_periph);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
返回
返回
无
失能USART/UART
/* disableUSART */
函数声明如下:
void usart_disable(uint32_t usart_periph);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
返回
返回
无
USART/UART发生(使能/失能)配置
/* configure USART transmitter */
函数声明如下:
void usart_transmit_config(uint32_t usart_periph, uint32_t txconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
txconfig
参数2
USART_TRANSMIT_ENABLE
USART_TRANSMIT_DISABLE
返回
返回
无
参数2:
值
含义
USART_TRANSMIT_ENABLE
使能发送
USART_TRANSMIT_DISABLE
失能发送
USART/UART接收(使能/失能)配置
/* configure USART receiver */
函数声明如下:
void usart_receive_config(uint32_t usart_periph, uint32_t rxconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
txconfig
参数2
USART_TRANSMIT_ENABLE
USART_TRANSMIT_DISABLE
返回
返回
无
参数2:
值
含义
USART_TRANSMIT_ENABLE
使能发送
USART_TRANSMIT_DISABLE
失能发送
USART/UART发送数据函数
/* USART transmit data function */
函数声明如下:
void usart_data_transmit(uint32_t usart_periph, uint16_t data);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
data
参数2
发送的数据
返回
返回
无
USART/UART接收数据函数
/* USART receive data function */
函数声明如下:
uint16_t usart_data_receive(uint32_t usart_periph);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
返回
返回
接收的数据
硬件流通信:
配置USART/UART硬件RTS控制流(使能/失能)
/* configure hardware flow control RTS */
函数声明如下:
void usart_hardware_flow_rts_config(uint32_t usart_periph, uint32_t rtsconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
rtsconfig
参数2
USART_RTS_ENABLE
USART_RTS_DISABLE
返回
返回
接收的数据
参数2:
值
含义
USART_RTS_ENABLE
使能RTS
USART_RTS_DISABLE
失能RTS
配置USART/UART硬件CTS控制流(使能/失能)
/* configure hardware flow control CTS */
函数声明如下:
void usart_hardware_flow_cts_config(uint32_t usart_periph, uint32_t ctsconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
ctsconfig
参数2
USART_CTS_ENABLE
USART_CTS_DISABLE
返回
返回
接收的数据
参数2:
值
含义
USART_CTS_ENABLE
使能CTS
USART_CTS_DISABLE
失能CTS
DMA通信:
配置USART DMA接收(使能/失能)
/* configure USART DMA for reception */
函数声明如下:
void usart_dma_receive_config(uint32_t usart_periph, uint8_t dmaconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
dmaconfig
参数2
USART_RECEIVE_DMA_ENABLE
USART_RECEIVE_DMA_DISABLE
返回
返回
无
参数2:
值
含义
USART_RECEIVE_DMA_ENABLE
使能DMA接收
USART_RECEIVE_DMA_DISABLE
失能DMA接收
配置USART DMA发送(使能/失能)
/* configure USART DMA for transmission */
函数声明如下:
void usart_dma_transmit_config(uint32_t usart_periph, uint8_t dmaconfig);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
dmaconfig
参数2
USART_TRANSMIT_DMA_ENABLE
USART_TRANSMIT_DMA_DISABLE
返回
返回
无
参数2:
值
含义
USART_TRANSMIT_DMA_ENABLE
使能DMA发送
USART_TRANSMIT_DMA_DISABLE
失能DMA发送
标志函数/状态函数:
获取STAT寄存器的标志
/* get flag in STAT register */
函数声明如下:
FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
dmaconfig
参数2
USART_FLAG_CTSF
USART_FLAG_LBDF
USART_FLAG_TBE
USART_FLAG_TC
USART_FLAG_RBNE
USART_FLAG_IDLEF
USART_FLAG_ORERR
USART_FLAG_NERR
USART_FLAG_FERR
USART_FLAG_PERR
返回
FlagStatus
SET or RESET
参数2:
值
含义
USART_FLAG_CTSF
CTS更改标志
USART_FLAG_LBDF
LIN中断检测标志
USART_FLAG_TBE
传输数据缓冲区空
USART_FLAG_TC
传输完成
USART_FLAG_RBNE
读数据缓冲区不空
USART_FLAG_IDLEF
空闲帧检测标志
USART_FLAG_ORERR
溢出错误
USART_FLAG_NERR
噪声错误标志
USART_FLAG_FERR
帧错误标志
USART_FLAG_PERR
奇偶校验错误标志
清除STAT寄存器中的标志
/*clear flag in STAT register */
函数声明如下:
void usart_flag_clear(uint32_t usart_periph, usart_flag_enum flag);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
usart_flag_enum
参数2
USART_FLAG_CTSF
USART_FLAG_LBDF
USART_FLAG_TC
USART_FLAG_RBNE
返回
无
无
参数2:
值
含义
USART_FLAG_CTSF
CTS更改标志
USART_FLAG_LBDF
LIN中断检测标志
USART_FLAG_TC
传输完成标志
USART_FLAG_RBNE
读数据缓冲区不空
中断功能:
USART/UART中断(使能)
/* enable USART interrupt */
函数声明如下:
void usart_interrupt_enable(uint32_t usart_periph, uint32_t interrupt);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
interrupt
参数2
USART_INT_PERR
USART_INT_TBE
USART_INT_TC
USART_INT_RBNE
USART_INT_IDLE
USART_INT_LBD
USART_INT_ERR
USART_INT_CTS
返回
返回
接收的数据
参数2:
值
含义
USART_INT_PERR
奇偶校验错误中断
USART_INT_TBE
发送缓冲区空中断
USART_INT_TC
发送完成中断
USART_INT_RBNE
读数据缓冲区不空中断和溢出错误中断
USART_INT_IDLE
空闲线检测中断
USART_INT_LBD
LIN中断检测中断
USART_INT_ERR
错误中断
USART_INT_CTS
CTS中断
USART/UART中断(失能)
/* disable USART interrupt */
函数声明如下:
void usart_interrupt_disable(uint32_t usart_periph, uint32_t interrupt);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
interrupt
参数2
USART_INT_PERR
USART_INT_TBE
USART_INT_TC
USART_INT_RBNE
USART_INT_IDLE
USART_INT_LBD
USART_INT_ERR
USART_INT_CTS
返回
返回
接收的数据
参数2:
值
含义
USART_INT_PERR
奇偶校验错误中断
USART_INT_TBE
发送缓冲区空中断
USART_INT_TC
发送完成中断
USART_INT_RBNE
读数据缓冲区不空中断和溢出错误中断
USART_INT_IDLE
空闲线检测中断
USART_INT_LBD
LIN中断检测中断
USART_INT_ERR
错误中断
USART_INT_CTS
CTS中断
获取USART中断标志位状态
/*get USART interrupt and flag status */
函数声明如下:
FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, uint32_t int_flag);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
int_flag
参数2
USART_INT_FLAG_PERR
USART_INT_FLAG_TBE
USART_INT_FLAG_TC
USART_INT_FLAG_RBNE
USART_INT_FLAG_RBNE_ORERR
USART_INT_FLAG_IDLE
USART_INT_FLAG_LBD
USART_INT_FLAG_CTS
USART_INT_FLAG_ERR_ORERR
USART_INT_FLAG_ERR_NERR
USART_INT_FLAG_ERR_FERR
返回
无
无
参数2:
值
含义
USART_INT_FLAG_PERR
校验错误中断和标志
USART_INT_FLAG_TBE
发送缓冲区空中断和标志
USART_INT_FLAG_TC
发送完成中断和标志
USART_INT_FLAG_RBNE
读数据缓冲区非空中断和标志
USART_INT_FLAG_RBNE_ORERR
读数据缓冲区非空中断和过载错误中断标志
USART_INT_FLAG_IDLE
空闲线检测中断和标志
USART_INT_FLAG_LBD
LIN断开检测中断和标志
USART_INT_FLAG_CTS
CTS中断和标志
USART_INT_FLAG_ERR_ORERR
错误中断和过载错误
USART_INT_FLAG_ERR_NERR
错误中断和噪声错误标志
USART_INT_FLAG_ERR_FERR
错误中断和镇错误标志
清楚USART中断标志位状态
/*clear interrupt flag in STAT register*/
函数声明如下:
void usart_interrupt_flag_clear(uint32_t usart_periph, uint32_t int_flag);
参数:
usart_periph
参数1
USARTx(x=0,1,2)/UARTx(x=3,4)
int_flag
参数2
USART_INT_FLAG_PERR
USART_INT_FLAG_TBE
USART_INT_FLAG_TC
USART_INT_FLAG_RBNE
USART_INT_FLAG_RBNE_ORERR
USART_INT_FLAG_IDLE
USART_INT_FLAG_LBD
USART_INT_FLAG_CTS
USART_INT_FLAG_ERR_ORERR
USART_INT_FLAG_ERR_NERR
USART_INT_FLAG_ERR_FERR
返回
无
无
群号:621154399
有问题欢迎大家加入我们一起交流,这个群是开源性技术交流群。