news 2026/7/13 17:40:59

PN学堂GD32教程第5篇——UART

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PN学堂GD32教程第5篇——UART

本章代码仓库:

git clone https://gitee.com/jumayusi/unit5-gd32-usart.git

5.1 串口UART基础知识

并行通信在同一时刻可以传输多个二进制位,我们当前使用的GD32F303使用的是16bit并行接口EXMC;STM32对应的接口一般叫做FSMC接口。

数据帧结构:

同步通信通常需要时钟信号,而异步通信通常不需要,所以uart通信我们一般归类为异步通信,IIC、SPI我们归类为同步通信。

TTL电平

RS232电平

RS485

RS232的物理接口标准

ARM32单片机串口硬件结构内是存在CK时钟线的,因此从习惯上,我们把串口通信叫做USART(跟官方API里面的命名同步synchronous)。

5.2 串口UART硬件结构

主要特性

开发板串口资源介绍:

关键寄存器与标志位:

奇偶校验

和校验\异或校验

循环冗余校验

5.3 printf打印通过串口输出

本节课的目标是利用单片机的串口通信功能重定向ARM Mirco库中的printf函数实现打印输出。

今天在使用arm_gnu时遇到了一个奇怪的问题,重定向fputc实现串口打印无效,问了AI才注意到arm_gnu里面printf依赖的是syscalls.c里面的_write函数。注意我们像使用arm_clang(keil)时候那样重写fputc是无效的!因此syscalls.c里面之前为了避免编译器报错的空实现都需要改为弱函数,然后在外部进行强实现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 3:33:20

Sabertooth2x25分组串行协议驱动库详解

1. Sabertooth2x25 驱动库深度解析:面向嵌入式系统的串行协议电机控制实现1.1 库定位与工程价值Sabertooth2x25 是 Dimension Engineering 公司推出的双通道 25A 直流有刷电机驱动器,支持模拟电压、RC PWM、简易串行(Simple Serial&#xff0…

作者头像 李华
网站建设 2026/3/23 3:25:26

从理论到实践:TimeGAN驱动的时间序列场景生成与多维可视化解析

1. TimeGAN:时间序列生成的革命性突破 第一次接触TimeGAN是在处理一组电力负荷预测数据时遇到的难题——我们只有少量历史数据,却需要模拟未来可能出现的各种用电场景。传统方法要么需要复杂的参数假设,要么生成的序列缺乏时间依赖性。直到发…

作者头像 李华
网站建设 2026/3/23 3:22:26

企业多VLAN网络构建实战——DHCP中继与VLAN间通信配置详解

1. 企业多VLAN网络构建的核心需求 在企业网络架构中,不同部门通常需要隔离广播域并实现安全通信。以财务部、市场部、技术部为例,每个部门划分独立VLAN是最常见的做法。但随之而来的问题是:如何让不同VLAN的主机自动获取IP地址?这…

作者头像 李华
网站建设 2026/3/23 3:20:35

跨平台Socket编程头文件兼容性与适配方案

1. 跨平台Socket编程的头文件兼容性问题分析1.1 问题现象与工程背景在嵌入式系统开发与网络应用移植过程中,开发者常遇到一种典型现象:一段在Linux环境下使用GCC编译通过的C语言Socket程序,在Windows平台下使用MinGW-GCC编译时出现大量头文件…

作者头像 李华