[技术问答]

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

[复制链接]
771|13
手机看帖
扫描二维码
随时随地手机跟帖
T3rra|  楼主 | 2024-9-2 16:55 | 显示全部楼层 |阅读模式
使用的库是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相关配置,所以导致了程序异常。
3466366d7fc46da128.png
6705366d7fb65096fb.png

使用特权

评论回复
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或其他调试接口来诊断一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝