STM32 USB 中断中加入串口输出 导致USB无法识别

2019-03-23 19:55发布

STM32 的Joystick 摇杆例程 工作OK
然后我在USB中断服务程序中加入串口输出信息(像 电脑00 的 《圈圈教你玩USB》中说的那样 用#ifdef 。。。#endif)
串口是输出了中断(RET ,CTR,...)信息  但是 结果导致USB无法识别  
把串口输出注释掉 就正常工作
是不是因为串口输出 占用了太多时间 导致设备来不及响应主机的命令 导致等待超时之类的?

请问有人遇到过这样的情况吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
beyond696
1楼-- · 2019-03-24 02:46
/ 应该是串口打印花时比较多,建议串口用DMA的方式输出,详细思路如下:
1,设计一个定时器,定时时间间隔根据你一次串口输出所花的最大时间,比如设计为100ms。
2,串口设置为DMA的方式,改写printf底层函数,使打印输出的数据拷贝到一个发送数据缓冲区中。
3,定时中断到后可以判断发送数据缓冲区是否有数据,若有则启动DMA将数据发送出去。
这样做可以使printf函数用时最少,牺牲的是打印输出的实时性,有可能要100ms后才能输出,不过对于打印一般影响不大
hua19900322
2楼-- · 2019-03-24 06:38
 精彩回答 2  元偷偷看……

一周热门 更多>