STM32
直播中

王涛

7年用户 1206经验值
私信 关注
[问答]

USBH CDC如何修改通讯波特率?

硬件平台:正点原子探索者 + CH340
软件:CubeMX,MDK
已经实现USBH接口通过CH340和外部串口通讯,波特率19200。
目前无法修改通讯波特率,GetLineCoding()和SetLineCoding()返回都是USBH_BUSY,怎么解决?

回帖(1)

李鸿

2024-5-31 16:31:08
要修改USBH CDC的通讯波特率,您需要确保正确地实现了GetLineCoding()和SetLineCoding()函数。以下是一些建议来解决您遇到的问题:

1. 确保您已经正确地初始化了USB Host库。在CubeMX中,您需要配置USB Host库并选择CDC类。

2. 在您的应用程序中,确保您已经正确地初始化了USB Host。这通常涉及到调用HAL_Init(),HAL_RCC_OscConfig(),HAL_RCC_ClockConfig()等函数。

3. 在调用GetLineCoding()和SetLineCoding()函数之前,请确保USB Host已经成功连接到CDC设备。您可以通过检查USBH_CDC_Stop()或USBH_CDC_DeInit()函数的返回值来确认这一点。

4. 在调用GetLineCoding()和SetLineCoding()函数时,请确保您已经正确地设置了LineCoding结构体。LineCoding结构体包括波特率、数据位、停止位和奇偶校验位等信息。

5. 如果GetLineCoding()和SetLineCoding()函数返回USBH_BUSY,这可能意味着USB Host正在忙于处理其他任务。在这种情况下,您可以尝试在调用这些函数之前添加一些延时,或者使用状态机来处理USB Host的状态。

6. 如果问题仍然存在,请检查您的硬件连接,确保CH340和外部串口设备之间的连接正确无误。

7. 最后,您还可以查看ST官方提供的示例代码,以了解如何正确实现GetLineCoding()和SetLineCoding()函数。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分