找回密码
 立即注册
查看: 143|回复: 3

USB中建议增加是否自动写入USBLIB_OUT_Done()函数选项

[复制链接]

9

主题

28

回帖

183

积分

注册会员

积分
183
发表于 2026-8-25 12:25:53 | 显示全部楼层 |阅读模式
AICUBE中,选择USB查询后,生成的KEIL项目中的main.c文件中,在while主循环中会自动增加USBLIB_OUT_Done();代码,实际中对USB接收的数据往往要自己写对应的处理语句,每次更新cube后会自动添加,还要记得注释掉,比较麻烦,建议增加一个选项,可不自动添加该语句。
回复

使用道具 举报 送花

39

主题

600

回帖

3586

积分

超级版主

积分
3586
发表于 2026-8-25 14:33:54 | 显示全部楼层

对该建议的分析与说明

  1. 为什么 AiCube 会默认添加 usb_OUT_done():
    从手册可以看出,查询方式下 usb_OUT_done() 是必须调用的——否则 USB 将无法接收下一包数据。AiCube 自动生成这段代码是为了保证生成的工程开箱就能正常工作,避免用户遗漏这个关键调用导致 USB 通信卡死。

  2. 您的困扰是完全合理的:
    查询方式下确实存在"生成代码 → 自己写处理逻辑 → 重新生成 → 又自动加了回来"的循环。从论坛反馈(帖子:USB中建议增加是否自动写入USBLIB_OUT_Done()函数选项)来看,这个问题已被多名用户提出。

  3. 目前的建议解决方案(过渡方案):
    在官方更新增加该选项之前,您可以:

    • 将 usb_OUT_done(); 注释掉,替换为您自己的处理逻辑
    • 或者将 USB 通信方式改为 中断方式——根据手册说明,中断方式下用户不需要调用 usb_OUT_done();,库函数内部会自动处理,这样 AiCube 生成的代码中就不会出现这个手动调用,您就可以在中断服务函数中自由编写接收处理逻辑,不受自动生成干扰。

    论坛中已有用户采用中断方式方案成功实现 USB 数据收发,并建议"推荐优先看"相关 AIcube USB 实验。

  4. 关于您的建议:
    您提到的"增加一个选项,可不自动添加该语句"这个改进建议非常合理,符合实际开发需求。该建议已在论坛中提交,官方后续版本可考虑在 AiCube 的 USB 配置界面中增加一个类似"是否自动添加 usb_OUT_done() 调用"的开关,让用户在"开箱即用模板"和"自由控制"之间自主选择。


总结

项目 说明
usb_OUT_done() 的作用 查询方式下数据处理完成后必须调用,否则无法接收下一包数据(见手册原文)
中断方式 不需要手动调用 usb_OUT_done(),库自动处理
您的建议 合理且已记录,可在下一代 AiCube 中考虑增加开关选项
当前过渡方案 改用中断方式,或生成后手动注释该行

如果您需要,我可以为您提供一份 USB 中断方式接收数据的完整示例程序(在中断服务程序中处理数据,无需手动调用 usb_OUT_done()),这样就不会再受到自动生成代码的干扰。是否需要?

电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11465
发表于 2026-8-25 17:05:36 | 显示全部楼层
查询模式,用户自己的USB数据处理应集中在这里。
截图202608251704173532.jpg


也可以改中断模式:

截图202608251705317385.jpg

三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

9

主题

28

回帖

183

积分

注册会员

积分
183
 楼主| 发表于 2026-8-26 14:46:11 | 显示全部楼层
好的,我改为中断,谢谢!
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-8 03:09 , Processed in 0.070973 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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