1. USB-CDC和USB-HID
引用自: https://blog.csdn.net/Darlingqiang/article/details/144365858
总体来说,USB HID和USB CDC的主要区别在于它们的应用场景和功能不同。USB HID主要用于连接外设,而USB CDC则主要用于模拟串行端口通信。
2. 查询方式和中断方式
引用自: https://blog.csdn.net/weixin_45604914/article/details/118479618https://blog.csdn.net/weixin_45604914/article/details/118479618
- 查询方式:
- CPU与设备串行工作、数据传送与主程序串行工作;适合于工作不太繁忙的系统。
- 中断方式:
- CPU与设备并行工作、数据传送与主程序串行工作;适合于CPU任务比较忙的情况下,尤其适合实时控制和紧急事件的处理。
- DMA方式:
- CPU与设备并行工作、数据传送与主程序并行工作;适合于需要高速而又频繁地与存储器进行批量的数据交换的I/O设备。
3. USB不停电下载
首先导入库文件和头文件,更改项目的配置,然后对main文件进行编程,最后到 ISP 中下载直接点击发送用户自定义命令并开始下载。
编译后,hex文件变化时自动装载,需要勾选当目标文件变化时自动装载并发送下载命令。
项目配置如图:

main文件如图:

ISP设置如图:

注释如有误请批评指正
4. 出现ERROR L104: MULTIPLE PUBLIC DEFINITIONS错误报警解决方法
使用最新版的USB-CDC库时(如下图),可以注释掉如下三行,库中已经自带。

// 设备型号描述
//char *USER_DEVICEDESC = NULL;
// 产品信息描述
//char *USER_PRODUCTDESC = NULL;
// 协议头标识--校验指令
//char *USER_STCISPCMD = "@STCISP#";
如果没有注释会出现如下报错
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: USER_STCISPCMD
**L104 错误** 是 Keil C51 编译器的链接错误,提示 **`USER_STCISPCMD` 符号被多次定义**