华大HC32F460的USB cdc虚拟串口编程问题
使用的库是2.2.0版本的,例程名是usb_dev_cdc。原来例程的程序功能是可以通过串口与USB虚拟串口收发,自己改动了一下程序使用USB虚拟串口直接通信是可以正常收发的,但是遇到了一个奇怪的问题。当我把原来的程序里关于UART初始化相关的函数调用注释掉之后,板子连接电脑就无法正常识别USB设备了。
也是最近才接触USB编程对这方面了解不多,想不通为什么USB和UART应该是两个没太大关系的模块,UART的初始化却会影响到USB的识别。
好像误打误撞解决了,把ddl_config.h里的printf配置成OFF就可以了
#define DDL_PRINT_ENABLE (DDL_OFF)
虽然解决了问题还是不懂为啥 FAE召唤术 应该是printf功能关联了UART接口,你给禁止了。 在【hc43f460_utility.c】里有一个函数【Ddl_AssertHandler】,在华大的库里许多其他模块的初始化也调用了这个函数【DDL_ASSERT】。如果配置了DDL_PRINT_ENABLE为ON的话,则会使这个函数中的printf语句生效。由于我删除了工程中包括UART、printf在内的串口相关函数调用,并没有初始化串口和printf相关配置,所以导致了程序异常。
这很明显是使用了UART外设功能。 检查时钟配置部分,在修改UART设置时是否意外地改变USB所需的时钟设置。 引脚复用冲突了把 UART的初始化改变了中断优先级设置 检查库的文档和源代码,看看是否有任何与UART初始化相关的注意事项或依赖项。 USB模块可能没有被正确初始化 检查时钟、引脚配置和中断优先级设置。 建议查数据手册和库的文档 JTAG、SWD或其他调试接口来诊断一下 电脑就无法正常识别USB设备
页:
[1]