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

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

  [复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:30
  • 最近打卡:2025-11-12 16:20:46

35

主题

1147

回帖

2848

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-12-17 10:30:29
已绑定手机

23

主题

489

回帖

1450

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-12-18 07:47:10

0

主题

62

回帖

746

积分

高级会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-18 14:52 , Processed in 0.105672 second(s), 59 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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