找回密码
 立即注册
楼主: tzz1983

4组串口UART使用DMA收发 @32G系列,易用,高效,稳定 !精品实战代码

  [复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 17:29:03 | 显示全部楼层
楼主大大,首先感谢您无私奉献,我想先学会使用您的程序,下载后发现有几个头文件找不到:

#include ".\library\STC32G_Switch.H"
#include ".\library\STC32G_GPIO.h"

还有这个UART1.h里包含的#include "Config.H",必须需要含有哪些变量么?

方便的时候,请指教一下,占用您宝贵时间,万分感激!

点评

库函数里 有头文件 参考一下 [attachimg]130610[/attachimg]  详情 回复 发表于 2026-1-27 08:56
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:63
  • 最近打卡:2026-03-13 11:14:15

47

主题

295

回帖

2662

积分

超级版主

积分
2662
发表于 2026-1-27 08:56:36 | 显示全部楼层
Yan*** 发表于 2026-1-26 17:29
楼主大大,首先感谢您无私奉献,我想先学会使用您的程序,下载后发现有几个头文件找不到:

#include ".\li ...



库函数里 有头文件 参考一下

STC32G-SOFTWARE-LIB.zip (10.71 MB, 下载次数: 5)

下载链接:https://www.stcai.com/khs
截图202601270854507302.jpg
QQ:3398500488
微信号:18106296592(小刘)
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-27 11:01:13 | 显示全部楼层
芯L*** 发表于 2026-1-27 08:56
库函数里 有头文件 参考一下

感谢您!我慢慢研究一下!其实主要问题在我没有理解我从PC机的串口助手发送给STC32G的数据,通过USB-CDC串口后,UsbOutBuffer[]的完整内容,甚至不会把UsbOutBuffer[]整个通过CDC串口回传到PC机的串口助手上
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:391
  • 最近打卡:2026-03-23 17:22:47
已绑定手机

6

主题

327

回帖

1681

积分

金牌会员

积分
1681
发表于 2026-2-2 20:03:51 | 显示全部楼层
这么多串口了
学习
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-02-06 15:56:27
已绑定手机

0

主题

1

回帖

6

积分

新手上路

积分
6
发表于 2026-2-6 15:56:27 | 显示全部楼层
没有收到完成标志位,怎么解析数据。

点评

串口本身是字节流,没有内置的包边界。常用的区分数据包的方式可以分为以下几类: 1. 基于时间间隔(帧间隔)这是最简单的方法。 2. 带同步头的协议原理:使用特定的同步序列(如0xAA 0x55 0xAA 0x55)作为帧头。 3  详情 回复 发表于 2026-2-7 07:52
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:34
  • 最近打卡:2026-03-21 11:26:47

36

主题

1153

回帖

2871

积分

荣誉版主

积分
2871
发表于 2026-2-7 07:52:28 | 显示全部楼层
dcau*** 发表于 2026-2-6 15:56
没有收到完成标志位,怎么解析数据。

串口本身是字节流,没有内置的包边界。常用的区分数据包的方式可以分为以下几类:
1. 基于时间间隔(帧间隔)这是最简单的方法。
2. 带同步头的协议原理:使用特定的同步序列(如0xAA 0x55 0xAA 0x55)作为帧头。
3. 长度字段法(最常用)在数据包头部包含长度信息。格式:[帧头][长度][数据][校验]
4. 特殊字符分隔,原理:使用特殊字符作为包分隔符(如换行符\n)。

本文中的DMA-USAR是通用的,没用限制用法,适用于各种情形,后续步骤根据自身需求添加比如:
1. 做成 “ 基于时间间隔 ”, 定时调用接收函数查看是否收到数据 -> 判断时间间隔 -> 根据时间间隔组包。
2. 做长度字段法,利用已有的成熟包格式 或 自己定义一个喜欢的任意包格式:[帧头][长度][数据][校验]

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-24 06:00 , Processed in 0.114504 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表