GD32F407 UART串口通信详解
创作时间:
作者:
@小白创作中心
GD32F407 UART串口通信详解
引用
CSDN
1.
https://blog.csdn.net/m0_63235356/article/details/139904819
GD32F407是一款高性能的ARM Cortex-M4微控制器,广泛应用于工业控制、消费电子等领域。其内置的UART串口通信功能,可以实现设备之间的数据传输。本文将详细介绍如何使用GD32F407的USART0进行串口通信,包括硬件配置、软件编程以及printf重定向到串口的方法。
硬件配置
首先确定串口的TX和RX引脚。使用USART0时,对应的引脚是GPIOB的6和7号引脚。需要打开GPIOB的外设时钟,并配置引脚复用和模式。
rcu_periph_clock_enable(RCU_GPIOB);
gpio_af_set(GPIOB, GPIO_AF_7, GPIO_PIN_6 | GPIO_PIN_7);
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6 | GPIO_PIN_7);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
UART配置
接下来配置UART,首先打开对应的外设时钟。
rcu_periph_clock_enable(RCU_USART0);
然后进行串口设置:
- 复位串口
- 设置波特率(常用值如9600、115200)
- 设置校验位(一般选择无校验)
- 设置数据位长度(通常是8位)
- 设置停止位(通常是1位)
usart_deinit(USART0);
usart_baudrate_set(USART0, 9600);
usart_parity_config(USART0, USART_PM_NONE);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
使能串口发送和接收:
usart_enable(USART0);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
数据收发
发送数据时需要注意数据类型,实际使用中应以uint16_t为准。
void sendData(uint16_t data) {
while (RESET == usart_flag_get(USART0, USART_FLAG_TBE));
usart_data_transmit(USART0, data);
}
接收数据需要开启接收中断:
usart_interrupt_enable(USART0, USART_INT_RBNE);
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
nvic_irq_enable(USART0_IRQn, 1, 1);
在中断处理函数中检测并清除中断标志位:
void USART0_IRQHandler(void) {
if ((RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))) {
uint8_t data = (uint8_t)usart_data_receive(USART0);
sendData(data);
usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);
}
}
printf重定向
在GD32F407中,不能使用Keil的Use MicroLib选项。解决方案是在代码中添加以下内容:
#if !defined(__MICROLIB)
#if (__ARMCLIB_VERSION <= 6000000)
struct __FILE {
int handle;
};
#endif
FILE __stdout;
void _sys_exit(int x) {
x = x;
}
#endif
int fputc(int ch, FILE *f) {
sendData(ch);
return ch;
}
这样就可以在主循环中使用printf打印信息到串口助手:
热门推荐
在这件事上,能打败长三角的只有历史上的长三角
猫咪呕吐怎么办?7大原因解析与4步处理指南
孕妇可以坐飞机吗?安全出行无忧虑
血常规检查中,这8项指标升高需警惕,建议进一步检查
《象棋的故事》:茨威格笔下的人性寓言
情绪消费,未来市场的下一个爆发点?
科普 | 氢气纯化技术:制氢到用氢的必经之路
基尼系数对社会经济稳定的影响
Fama-French 五因子模型
色盲基因遗传规律
乌梅三豆饮:宝宝冬季养生的食疗佳品
把长江文化保护好、传承好、弘扬好
夏季穿搭指南:24套衬衫、裙子牛仔裤素人亲身示范,清凉洋气
玛特宇宙:一篇文章带你了解3D建模与渲染技术
提升住房品质,点亮美好生活——“好房子”建设赋能更高水平“住有所居”
毛利率与净利率:深入解析及案例剖析
苹果供应链管理转型:从濒临破产到全球第一
家庭娱乐必备:如何选择理想的4K投影仪指南
英超:南安普顿主场捍卫尊严,布莱顿客场冲击排名
三角形内角之和:揭秘几何图形的隐藏规律
王者荣耀买号防骗指南:四大骗局类型及防范建议
教育的多维度探索:革新、公平、质量、挑战
无法解析服务器DNS地址的原因和解决方法
皖间“古”事 | 涂山有“禹”
《英雄联盟》等待界面中的玩家心态变化与优化策略
从亚运到奥运,VR技术不仅是直播,还成了运动员特训的秘密武器
加入学生会的好处和意义 怎么申请
CBA半程最大黑马:山西男篮凭什么“闹他”?
家庭养花自制土方法(最简单的养花万能土)
港娱:四大天王,魅力底下的传奇