找回密码
 立即注册
查看: 157|回复: 5

请教 擎天柱板子 printf_usb不输出问题

[复制链接]
已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
发表于 2026-8-13 18:06:22 | 显示全部楼层 |阅读模式
请问擎天柱板子,我没有实验箱。 我按视频操作的,连上串口,收不到消息,试过多次,看了小李 小赵 冲哥都不行。


usb库文件也加了,没用


我看了一下擎天柱版本是v1.1 20240930, 是不是不支持 usb-hid?  谢谢
回复

使用道具 举报 送花

已绑定手机

19

主题

3551

回帖

8057

积分

论坛元老

积分
8057
发表于 2026-8-13 21:38:28 | 显示全部楼层
这边是否是已关闭
截图202608132137582427.jpg
回复

使用道具 举报 送花

已绑定手机

232

主题

234

回帖

1258

积分

版主

积分
1258
发表于 2026-8-14 09:46:13 | 显示全部楼层
截图202608140945501018.jpg
回复

使用道具 举报 送花

已绑定手机

232

主题

234

回帖

1258

积分

版主

积分
1258
发表于 2026-8-14 09:46:36 | 显示全部楼层

我已经掌握了足够的信息来给用户一个全面的排查分析。现在我来组织回答。

我需要强调的关键点:

  1. 确认在正确的界面:必须在"CDC/HID-串口助手"选项卡中打开串口
  2. 程序侧:确认包含 usb_init()EA=1,且定义了 PRINTF_USB
  3. 硬件侧(最可能):下载程序后必须断电重新上电(冷启动),让用户程序实际运行,USB-CDC设备才会被正确枚举为COM口,而不是停留在ISP下载模式(HID1 USB Writer)
  4. 用户截图显示下载成功,COM3已扫描到,串口已打开,但接收为空——这很可能是USB-CDC设备没真正枚举成功,或者程序没在运行

让我完整回答用户。

从用户截图来看,他的情况是:程序编译下载都成功了,COM3也出现了,串口也打开了,但接收不到"Hello World",发送"11"也没有回显。

这里最核心的问题,我认为用户下载后可能没有让程序真正跑起来(冷启动),或者是界面选择问题。但既然COM3已经被识别(说明板子已经枚举为CDC设备),那主要问题可能在程序侧没有正确输出。

不过,既然他已经看到COM3,说明USB-CDC已经枚举成功了。那么问题就在于程序是否真的在循环发送。

让我给出针对性排查建议。


我注意到一个非常重要的细节:用户发送"11"后,接收[0]。这有两种可能:

  1. 用户程序没有回显功能(程序只是printf_usb输出Hello World,没有把接收到的数据回显),所以发送"11"没回显是正常的。
  2. 但Hello World也没有显示,说明printf_usb可能没在输出。

根据手册,printf_usb()USB_SendData() 都有内置检测USB状态和发送忙的逻辑,当USB为非配置状态或忙时,会跳过当前操作。所以如果USB-CDC没有正常枚举(DEVSTATE未到CONFIGURED),printf_usb会静默跳过,不输出任何内容。

这正好解释了为什么用户什么也收不到。可能USB设备虽然出现了COM3,但状态没有正确进入CONFIGURED,或者程序内部usb_init没被正确调用。

我给出完整的排查步骤回答用户。

我给出回答,覆盖硬件、程序、软件三个方面,重点放在冷启动和程序配置上。

我注意到手册中非常重要的一个细节,说明下载后板子处在什么状态。让我确保回答准确。

实际上,从用户截图看,他已经出现了COM3且串口已打开。所以重点是程序侧。让我聚焦在程序配置排查上,同时提示下载后要按P3.2冷启动重新上电让用户程序运行。

我来组织一个清晰的回答。你好!很理解你遇到的情况。从你的截图看,程序编译(0 Error)、下载都成功了,COM3 串口也扫描到了,串口也打开了,但接收缓冲区一直收不到 "Hello World"。下面我从硬件、软件、程序三个层面帮你排查。

一、最可能的问题:下载后没有"冷启动"让用户程序真正运行

这是擎天柱板上最常踩的坑。

你在下载程序时,板子是通过 P3.2 按键按住 + 重新上电 进入 ISP 下载模式的。但下载完成后,板子此时可能仍停留在"ISP 下载程序状态",此时系统识别到的是 "(HID1) USB Writer",而不是你程序里的 USB-CDC 串口

正确操作: 下载成功后,按一下板子上的电源开关(或断电)再重新上电,并且不要按住 P3.2(或松开 P3.2),让板子从用户程序区正常启动,这样你程序里的 usb_init() 才会把 USB 枚举成 CDC 串口。

你在截图中已经看到 COM3 了,说明 USB-CDC 设备枚举基本成功了。但如果你是通过按住 P3.2 复位/上电,程序可能仍停在系统区,printf_usb() 静默跳过(见下文)。

二、必须在"CDC/HID-串口助手"选项卡里看数据

根据官方手册(《USB库函数使用说明》),printf_usb() 输出的内容只能在软件底部的 "CDC/HID-串口助手" 选项卡的"接收缓冲区"中看到,而不是在普通串口助手或下载页面。

请确认你当前停留在 "CDC/HID-串口助手" 选项卡(你截图里这个位置),并点击 "打开串口" 按钮。截图里显示的是"关闭串口",说明串口已打开,这一步应该没问题。

提示:USB-CDC 虚拟串口是忽略波特率的(USB 本身就带完整的数据率和校验),所以波特率 115200 设成多少都能正常收,这块不是瓶颈。

三、程序侧关键配置(AiCube 生成的项目需核实)

printf_usb() 有两个"静默跳过"的机制,一旦不满足就会什么都不输出(不报错、不卡死):

  • USB 未进入 DEVSTATE_CONFIGURED(即电脑没真正识别好设备)
  • USB 发送忙

另外请重点检查你的 main.c 是否满足以下三点:

  1. 必须调用 usb_init();(一般在你 AiCube 生成的 SYS_Init() 里,请确认包含)
  2. 必须使能总中断 EA = 1;(手册明确要求调用 usb_init() 后要使能 EA,硬件才会自动完成 USB 初始化)
  3. 确认 printf_usb 的头文件:需包含 #include "ai8051u.h"#include "ai_usb.h",并将 USB 库文件(如 stc_usb_cdc_32g.LIB)加入工程

你可以检查一下 SYS_Init() 里是否有类似下面的 USB 初始化代码:

EAXFR = 1;      // 允许访问扩展特殊寄存器
WTST  = 0;      // 程序最快运行
CKCON = 0;      // 最快访问 xdata

usb_init();     // 必须调用,完成 USB 初始化
EA = 1;         // 必须打开总中断,USB 才会被正确枚举

四、关于你发送"11"没回显

你截图中发送"11"后接收为 0,这是正常的——因为你这份程序里只有 printf_usb("Hello World !\r\n") 主动上报,并没有写"收到上位机数据后回显"的代码。所以发送数据没有回显是符合当前程序逻辑的,不代表通信一定失败。


建议的排查顺序

  1. 下载成功后断电重新上电(未按住 P3.2),让用户程序正式运行
  2. "CDC/HID-串口助手" 选项卡打开 COM3
  3. 检查 main.c 确认有 usb_init()EA = 1
  4. 若仍无输出,在 while(1) 循环里给 printf_usb 加个延时(避免连续刷太快)再试:
while (1)
{
    printf_usb("Hello World !\r\n");
    // 加一点延时,避免 USB 发送忙被跳过
}

如果按上面 1、2 步操作后 COM3 消失或者收不到,请告诉我:

  • 你现在所选用的 AiCube 生成的 SYS_Init() 里是否包含了 usb_init() 和 EA=1
  • 重新上电后,设备管理器里显示的是 "USB-CDC" 还是 "USB Writer"

这样我能进一步帮你定位。建议你先试一下「冷启动重新上电」这一步,这是擎天柱上最常见、也最容易被忽略的一环。


🔍 搜索 "擎天柱板子 我没有实验箱。 连上串口 收不到消息"

📌 相关论坛讨论

  1. 擎天柱板子 usb
  2. Ai8051U学习笔记
  3. 求助:用的stc32g12k128芯片红外接收irda9600波特率收不到消息

⏱️ 查找用时 41.2s | 总回答用时 59.4s

回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-26 16:19:17 | 显示全部楼层
依然无法收到hello world
截图202608261619282580.jpg
截图202608261632001710.jpg
1.代码由aiCube生成
2.小李 小赵视频未提PRINTF_HID和PRINTF_USB宏注释,注释与否结果都一样. EA=1尝试加与不加结果都一样。
3. p20 p21灯已点亮 说明代码已运行
4. 此项目未做到不停电下载 只是先做到输出hello world到串口助手。

我按视频步骤操作,是否遗漏步骤。 或者问题不在我?在视频老旧?谢谢指点

截图202608261641469974.jpg 加入延时也没用
usb lib 我用的stc_usb_cdc_32g.LIB





回复

使用道具 举报 送花

已绑定手机

5

主题

53

回帖

159

积分

注册会员

积分
159
 楼主| 发表于 2026-8-30 14:00:37 | 显示全部楼层
我看了一下擎天柱版本是v1.1 20240930, 是不是不支持 usb-hid?  谢谢
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-23 16:09 , Processed in 0.069417 second(s), 68 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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