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

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

  [复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-05-20 08:11:47

36

主题

1151

回帖

2891

积分

荣誉版主

积分
2891
发表于 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;
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:654
  • 最近打卡:2026-07-02 09:27:02
已绑定手机

25

主题

531

回帖

1408

积分

金牌会员

积分
1408
发表于 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_的具体解释,这下明白了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-12-05 20:41:05
已绑定手机

0

主题

1

回帖

16

积分

新手上路

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:333
  • 最近打卡:2026-07-04 08:06:12

0

主题

78

回帖

1230

积分

金牌会员

积分
1230
发表于 2025-12-10 21:12:18 | 显示全部楼层
还没有用过串口UART使用DMA收发,下载尝试一下。谢谢楼主!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:202
  • 最近打卡:2026-07-04 17:28:31
已绑定手机

25

主题

2662

回帖

3411

积分

论坛元老

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

是真的很实用!
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-17 23:42:34
已绑定手机

0

主题

3

回帖

12

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:偶尔看看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
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:92
  • 最近打卡:2026-07-03 13:19:31

50

主题

327

回帖

2772

积分

超级版主

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

#include ".\li ...



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

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

下载链接: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机的串口助手上
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:491
  • 最近打卡:2026-07-04 09:30:11
已绑定手机

6

主题

428

回帖

2183

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-5 08:21 , Processed in 0.079244 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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