ai8051U--USB不停电下载--打卡2
<h1>1. USB-CDC和USB-HID</h1><blockquote>
<p>引用自: https://blog.csdn.net/Darlingqiang/article/details/144365858</p>
</blockquote>
<ul>
<li>
<p><strong>HID优点:</strong></p>
<ul>
<li>实时性高,适合需要周期性小数据包传输的设备,操作系统支持好,无需额外驱动。</li>
<li>缺点是带宽有限,不适合MR串流中需要高吞吐量的应用场景。</li>
</ul>
</li>
<li>
<p><strong>CDC优点:</strong></p>
<ul>
<li>带宽高,支持大数据包传输,灵活性强,能高效处理MR串流中多种类型的数据。</li>
<li>缺点是实时性稍弱,且可能需要安装驱动或配置。</li>
</ul>
</li>
<li>
<p>USB HID和USB CDC是USB接口的两种不同类型,它们具有不同的功能和应用场景。</p>
<ul>
<li>USB HID(Human Interface Device)是一种人机交互设备,通常用于连接键盘、鼠标、游戏控制器等外设。在USB HID接口下,这些设备可以以默认的数据接口形式进行连接和传输数据。</li>
<li>USB CDC(Communication Device Class)则是一种通信设备类,用于模拟提供虚拟 COM 端口 UART 接口的串行端口。通过扫码设置成此接口,开发人员可以使用与以前相同的 COM 端口接口将旧应用程序与新产品一起使用,而只需很少的硬件和软件修改。因此,USB CDC通常被用于开发与串口相关的通信应用中,例如与POS终端等设备进行通信。</li>
</ul>
</li>
</ul>
<p>总体来说,USB HID和USB CDC的主要区别在于它们的应用场景和功能不同。USB HID主要用于连接外设,而USB CDC则主要用于模拟串行端口通信。</p>
<h1>2. 查询方式和中断方式</h1>
<blockquote>
<p>引用自: https://blog.csdn.net/weixin_45604914/article/details/118479618https://blog.csdn.net/weixin_45604914/article/details/118479618</p>
</blockquote>
<ul>
<li><strong>查询方式</strong>:
<ul>
<li>CPU与设备串行工作、数据传送与主程序串行工作;适合于工作不太繁忙的系统。</li>
</ul>
</li>
<li><strong>中断方式</strong>:
<ul>
<li>CPU与设备并行工作、数据传送与主程序串行工作;适合于CPU任务比较忙的情况下,尤其适合实时控制和紧急事件的处理。</li>
</ul>
</li>
<li><strong>DMA方式</strong>:
<ul>
<li>CPU与设备并行工作、数据传送与主程序并行工作;适合于需要高速而又频繁地与存储器进行批量的数据交换的I/O设备。</li>
</ul>
</li>
</ul>
<h1>3. USB不停电下载</h1>
<p>首先导入库文件和头文件,更改项目的配置,然后对main文件进行编程,最后到 ISP 中下载直接点击<strong>发送用户自定义命令并开始下载</strong>。<br />
<font color="red">编译后,hex文件变化时自动装载,需要勾选<strong>当目标文件变化时自动装载并发送下载命令</strong>。</font></p>
<p>项目配置如图:</p>
<p><img src="data/attachment/forum/202508/18/220408xvgcscwbcktwafns.png" alt="项目配置图片.png" title="项目配置图片.png" /></p>
<p>main文件如图:</p>
<p><img src="data/attachment/forum/202508/18/213256m84uv4ueec5uuwsw.png" alt="main文件图片.png" title="main文件图片.png" /></p>
<p>ISP设置如图:</p>
<p><img src="data/attachment/forum/202508/18/221659t31puxejx1xpz15x.png" alt="ISP设置图片.png" title="ISP设置图片.png" /></p>
<p><font color="red">注释如有误请批评指正</font></p>
<h1>4. 出现ERROR L104: MULTIPLE PUBLIC DEFINITIONS错误报警解决方法</h1>
<p>使用最新版的USB-CDC库时(如下图),可以注释掉如下三行,库中已经自带。<br />
<img src="data/attachment/forum/202508/18/214947qbxb6n1jjnn31xrn.png" alt="库和头文件图片.png" title="图片.png" /></p>
<pre><code>// 设备型号描述
//char *USER_DEVICEDESC = NULL;
// 产品信息描述
//char *USER_PRODUCTDESC = NULL;
// 协议头标识--校验指令
//char *USER_STCISPCMD = "@STCISP#";
</code></pre>
<p>如果没有注释会出现如下报错</p>
<pre><code>*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL:USER_STCISPCMD
**L104 错误** 是 Keil C51 编译器的链接错误,提示 **`USER_STCISPCMD` 符号被多次定义**
</code></pre>
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4
页:
[1]