校验和其他高级配置
校验位:通过USART_PERR_EVENPARITY或USART_PERR_ODDPARITY来设置偶校验或奇校验。
数据位:通过USART_WL_8BIT或USART_WL_9BIT来设置数据位长度。
停止位:通过USART_STB_1BIT、USART_STB_2BIT等来设置停止位数量。
配置USART1,波特率为9600,数据位8,停止位1,无校验,并发送字符串
c
#include "gd32e230.h"
void usart_config(void) {
// 启用USART1时钟
rcu_periph_clock_enable(RCU_USART1);
rcu_periph_clock_enable(RCU_GPIOA);
// 配置GPIO引脚PA9(TX)和PA10(RX)为复用功能
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
// 配置USART1:波特率9600,数据位8位,停止位1位,无校验
usart_deinit(USART1);
usart_init(USART1, 9600, USART_WL_8BIT, USART_STB_1BIT, USART_PERR_NOPARITY);
// 启用USART1
usart_enable(USART1);
}
void usart_send_data(uint8_t data) {
usart_data_transmit(USART1, data);
while (usart_flag_get(USART1, USART_FLAG_TC) == RESET); // 等待传输完成
}
int main(void) {
usart_config(); // 配置USART1
const char *str = "Hello, USART!";
// 发送字符串
while (*str) {
usart_send_data(*str++);
}
while (1);
}
|