打印
[技术问答]

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

[复制链接]
1604|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接口,你给禁止了。

使用特权

评论回复
5
T3rra|  楼主 | 2024-9-4 14:22 | 只看该作者
在【hc43f460_utility.c】里有一个函数【Ddl_AssertHandler】,在华大的库里许多其他模块的初始化也调用了这个函数【DDL_ASSERT】。如果配置了DDL_PRINT_ENABLE为ON的话,则会使这个函数中的printf语句生效。由于我删除了工程中包括UART、printf在内的串口相关函数调用,并没有初始化串口和printf相关配置,所以导致了程序异常。

使用特权

评论回复
6
chenjun89| | 2024-9-6 08:10 | 只看该作者
这很明显是使用了UART外设功能。

使用特权

评论回复
7
laocuo1142| | 2024-9-6 15:39 | 只看该作者
检查时钟配置部分,在修改UART设置时是否意外地改变USB所需的时钟设置。

使用特权

评论回复
8
powerantone| | 2024-9-6 15:41 | 只看该作者
引脚复用冲突了把

使用特权

评论回复
9
flycamelaaa| | 2024-9-6 16:23 | 只看该作者
UART的初始化改变了中断优先级设置

使用特权

评论回复
10
stormwind123| | 2024-9-6 17:00 | 只看该作者
检查库的文档和源代码,看看是否有任何与UART初始化相关的注意事项或依赖项。

使用特权

评论回复
11
probedog| | 2024-9-6 18:45 | 只看该作者
USB模块可能没有被正确初始化

使用特权

评论回复
12
classroom| | 2024-9-6 20:23 | 只看该作者
检查时钟、引脚配置和中断优先级设置。

使用特权

评论回复
13
两只袜子| | 2024-9-6 20:23 | 只看该作者
建议查数据手册和库的文档

使用特权

评论回复
14
cr315| | 2024-9-6 22:45 | 只看该作者
JTAG、SWD或其他调试接口来诊断一下

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝