找回密码
 立即注册
查看: 701|回复: 8

STC8H8K64U使用串口2DMA接受发送和查询模式的ADC3程序无法正常运行 | 已解决

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-01 18:54:42

2

主题

12

回帖

144

积分

注册会员

积分
144
发表于 2024-3-11 08:28:28 | 显示全部楼层 |阅读模式
RT
主频44.2368 波特率460800
使用USBCDC作为调试输出,单独配置串口2DMA可以使用,单独使用查询模式的AD也可以使用,但是两个合到一起就不能使用了
串口2DMA使用样例代码,ADC使用的是STC-ISP给出的例程



主程序

主程序

串口2使用DMA中断模式与电脑收发测试.zip

346.79 KB, 下载次数: 80

全部代码

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-11 09:08:27 | 显示全部楼层
这几行代码看不出问题,需要提供完整的程序才能分析原因。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-01 18:54:42

2

主题

12

回帖

144

积分

注册会员

积分
144
发表于 2024-3-11 09:48:00 | 显示全部楼层
乘风*** 发表于 2024-3-11 09:08
这几行代码看不出问题,需要提供完整的程序才能分析原因。

我改了一下,补上代码了,麻烦大佬看看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-11 11:24:55 | 显示全部楼层
woo*** 发表于 2024-3-11 09:48
我改了一下,补上代码了,麻烦大佬看看

能说一下具体的测试步骤跟产生的问题吗?不能使用是指出现什么情况?
有个地方需要注意以下,扩展寄存器访问使能,在初始化时开启,之后就不要再关闭了。

截图202403111123433175.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-3-11 12:47:22 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-01 18:54:42

2

主题

12

回帖

144

积分

注册会员

积分
144
发表于 2024-3-11 14:52:17 | 显示全部楼层
乘风*** 发表于 2024-3-11 11:24
能说一下具体的测试步骤跟产生的问题吗?不能使用是指出现什么情况?
有个地方需要注意以下,扩展寄存器 ...

主要就是串口2DMA和ADC查询模式不能一起用,甚至,就是不能在同一个固件里面启用他们两个。比如,我初始化的ADC,但是我不用,我还是用串口DMA的例程代码,这个时候给串口2发消息就不会回复。初始化串口2DMA,不用串口2DMA的功能,我用CDC输出查询的ADC值,这个时候我连接CDC也没有消息发出来。我想知道我应该如何修改才能实现同时使用串口2DMA和ADC查询或者ADC DMA。(另外这里注释掉的原因是,在主函数已经开启扩展了)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-11 17:14:36 | 显示全部楼层
本帖最后由 乘风飞扬 于 2024-3-11 17:18 编辑
woo*** 发表于 2024-3-11 14:52
主要就是串口2DMA和ADC查询模式不能一起用,甚至,就是不能在同一个固件里面启用他们两个。比如,我初始 ...
截图程序是我修改过的,你的原始代码里面是这么写的:
  1.     P_SW2 |= 0x80;
  2.     // ADCTIM = 0x3f;                              //设置ADC内部时序
  3.     P_SW2 &= 0x7f;
复制代码
另外,如果初始化USB之后,其它的初始化程序里面有修改到IE2寄存器的话,在全部初始化完成之前需要重新使能USB中断,如图所示:
截图202403111717519294.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-01 18:54:42

2

主题

12

回帖

144

积分

注册会员

积分
144
发表于 2024-3-11 17:20:48 | 显示全部楼层
乘风*** 发表于 2024-3-11 11:24
能说一下具体的测试步骤跟产生的问题吗?不能使用是指出现什么情况?
有个地方需要注意以下,扩展寄存器 ...

抱歉,刚刚看错了,现在问题解决了,多谢大佬了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-01 18:54:42

2

主题

12

回帖

144

积分

注册会员

积分
144
发表于 2024-3-11 17:51:23 | 显示全部楼层
乘风*** 发表于 2024-3-11 17:14
截图程序是我修改过的,你的原始代码里面是这么写的:
另外,如果初始化USB之后,其它的初始化程序里面有修 ...

好的,多谢大佬指点
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:25 , Processed in 0.273180 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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