T3rra 发表于 2024-9-2 16:55

华大HC32F460的USB cdc虚拟串口编程问题

使用的库是2.2.0版本的,例程名是usb_dev_cdc。原来例程的程序功能是可以通过串口与USB虚拟串口收发,自己改动了一下程序使用USB虚拟串口直接通信是可以正常收发的,但是遇到了一个奇怪的问题。
当我把原来的程序里关于UART初始化相关的函数调用注释掉之后,板子连接电脑就无法正常识别USB设备了。

也是最近才接触USB编程对这方面了解不多,想不通为什么USB和UART应该是两个没太大关系的模块,UART的初始化却会影响到USB的识别。

T3rra 发表于 2024-9-2 17:55

好像误打误撞解决了,把ddl_config.h里的printf配置成OFF就可以了
#define DDL_PRINT_ENABLE                            (DDL_OFF)

虽然解决了问题还是不懂为啥

xionghaoyun 发表于 2024-9-3 13:43

FAE召唤术

caigang13 发表于 2024-9-3 15:41

应该是printf功能关联了UART接口,你给禁止了。

T3rra 发表于 2024-9-4 14:22

在【hc43f460_utility.c】里有一个函数【Ddl_AssertHandler】,在华大的库里许多其他模块的初始化也调用了这个函数【DDL_ASSERT】。如果配置了DDL_PRINT_ENABLE为ON的话,则会使这个函数中的printf语句生效。由于我删除了工程中包括UART、printf在内的串口相关函数调用,并没有初始化串口和printf相关配置,所以导致了程序异常。

chenjun89 发表于 2024-9-6 08:10

这很明显是使用了UART外设功能。

laocuo1142 发表于 2024-9-6 15:39

检查时钟配置部分,在修改UART设置时是否意外地改变USB所需的时钟设置。

powerantone 发表于 2024-9-6 15:41

引脚复用冲突了把

flycamelaaa 发表于 2024-9-6 16:23

UART的初始化改变了中断优先级设置

stormwind123 发表于 2024-9-6 17:00

检查库的文档和源代码,看看是否有任何与UART初始化相关的注意事项或依赖项。

probedog 发表于 2024-9-6 18:45

USB模块可能没有被正确初始化

classroom 发表于 2024-9-6 20:23

检查时钟、引脚配置和中断优先级设置。

两只袜子 发表于 2024-9-6 20:23

建议查数据手册和库的文档

cr315 发表于 2024-9-6 22:45

JTAG、SWD或其他调试接口来诊断一下

hehhehee 发表于 2025-1-30 11:28

电脑就无法正常识别USB设备
页: [1]
查看完整版本: 华大HC32F460的USB cdc虚拟串口编程问题