打印

配置USART1,波特率为9600

[复制链接]
40|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmq0v9|  楼主 | 2025-2-22 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校验和其他高级配置
校验位:通过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);
}

使用特权

评论回复
沙发
yangxiaor520| | 2025-2-22 15:41 | 只看该作者
GD的串口最高速率可以跑到几兆?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

135

帖子

0

粉丝