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

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

请问有人遇到过这样的情况吗?

回复评论 (2)

应该是串口打印花时比较多,建议串口用DMA的方式输出,详细思路如下:
1,设计一个定时器,定时时间间隔根据你一次串口输出所花的最大时间,比如设计为100ms。
2,串口设置为DMA的方式,改写printf底层函数,使打印输出的数据拷贝到一个发送数据缓冲区中。
3,定时中断到后可以判断发送数据缓冲区是否有数据,若有则启动DMA将数据发送出去。
这样做可以使printf函数用时最少,牺牲的是打印输出的实时性,有可能要100ms后才能输出,不过对于打印一般影响不大
点赞  2012-4-26 16:44
谢谢beyond696的关注哈 最近比较忙 也没关注论坛 这两天用这个方法试下 学习。。。。。。。
点赞  2012-5-7 21:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复