ifree 发表于 2024-2-6 11:33:52

RLUSB重定向stdout到CDC遇到的问题,时好时坏。

本帖最后由 ifree 于 2024-2-6 12:31 编辑

通常使用USB CDC都是将USB的数据转发到某个UART,UART的数据转发到USB。


我想尝试一下在代码里直接将stdout重定向到CDC。也就是代码中printf,可在PC机的串口助手上直接看到结果。我的测试工程如下:


其实工程也初步实现了预期功能。
测试代码如下:
测试线程里,不同的printf打印消息

重定向有关代码为:

USB创建了一个线程来从g_tVUart中读取printf的数据Write到USB

串口助手上可以看到如下实验效果


现在的问题是,app_main中我只要把延时时间改短一点,串口就无法收到任何数据。
USB转发的线程里面的延时参数改成较小的值,也容易导致没有任何数据。
调节app_main,usb线程的delay参数值,有时还会遇到USB枚举可以看到设备,但串口助手无法打开串口的问题。

使用MDK的调试功能,也很奇怪。

调试运行时,这个Kernel Tick Count并不增加,但暂停后,这个值就变大了。

还请大佬能指导一下是怎么回事,谢谢!


页: [1]
查看完整版本: RLUSB重定向stdout到CDC遇到的问题,时好时坏。