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

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

 火 [复制链接]

19

主题

920

回帖

2765

积分

荣誉版主

积分
2765
 楼主| 发表于 2025-11-5 07:52:51 | 显示全部楼层
lly*** 发表于 2025-11-4 21:39
你好,代码精简好用,我目前还是使用的寄存器方式编程,改写过程中对于/*----------------------------------- ...

#define  OS_ENTER_CRITICAL()    {cpu_sr=((!_testbit_(EA))?0X00:0X80);}
#define  OS_EXIT_CRITICAL()     {IE|=cpu_sr;}


即然不理解,那我解释下,或许就明白了。
_testbit_(EA)    这是一个本征库函数调用, 意思是测试一下EA是否置位。
然后,  (!_testbit_(EA))?0X00:0X80, 这是一个条件表达式,
cpu_sr=((!_testbit_(EA))?0X00:0X80)   先读EA值,取反,如果当前EA值为0 则给变量 cpu_sr=0, 否则  cpu_sr=0x80;
整句话的意思是, 取EA的值, 放到变量 cpu_sr 的最高位。 (bit7)

接下来的,IE|=cpu_sr;   就是恢复EA.
这是临界区的可嵌套形式。

如果实在是不理解,就不用吧,把它们删了,用自己习惯的 EA=0;   EA=1;
回复

使用道具 举报 送花

已绑定手机

26

主题

521

回帖

1296

积分

金牌会员

积分
1296
发表于 2025-11-5 08:06:05 | 显示全部楼层
tzz1*** 发表于 2025-11-5 07:52
#define  OS_ENTER_CRITICAL()    {cpu_sr=((!_testbit_(EA))?0X00:0X80);}
#define  OS_EXIT_CRITICAL()  ...

感谢分享,我在网上查了好久,就是没有看到_testbit_的具体解释,这下明白了
回复

使用道具 举报 送花

已绑定手机

0

主题

1

回帖

16

积分

新手上路

积分
16
发表于 2025-12-5 20:41:05 来自手机 | 显示全部楼层
32g8k64单片机,怎么实现串口3和4的奇偶检验?

点评

参照一下USBCDC/usb转2串口,的处理方式  发表于 2025-12-8 08:21
回复

使用道具 举报 送花

已绑定手机

29

主题

2672

回帖

3479

积分

论坛元老

积分
3479
发表于 2026-1-16 11:43:56 | 显示全部楼层
仔细拜读了,很标准,考虑的很细致,佩服!感谢您的分享!

是真的很实用!
回复

使用道具 举报 送花

已绑定手机

0

主题

3

回帖

18

积分

新手上路

积分
18
发表于 2026-1-17 23:42:34 | 显示全部楼层
感谢楼主无私奉献
回复

使用道具 举报 送花

已绑定手机

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
回复

使用道具 举报 送花

50

主题

391

回帖

3088

积分

超级版主

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

#include ".\li ...



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

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

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

使用道具 举报 送花

已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

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

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

使用道具 举报 送花

已绑定手机

6

主题

497

回帖

2552

积分

金牌会员

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

使用道具 举报 送花

已绑定手机

0

主题

1

回帖

6

积分

新手上路

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

点评

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-9 10:23 , Processed in 0.084043 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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