STM32 的Joystick 摇杆例程 工作OK
然后我在USB中断服务程序中加入串口输出信息(像 电脑00 的 《圈圈教你玩USB》中说的那样 用#ifdef 。。。#endif)
串口是输出了中断(RET ,CTR,...)信息 但是 结果导致USB无法识别
把串口输出注释掉 就正常工作
是不是因为串口输出 占用了太多时间 导致设备来不及响应主机的命令 导致等待超时之类的?
请问有人遇到过这样的情况吗?
应该是串口打印花时比较多,建议串口用DMA的方式输出,详细思路如下:
1,设计一个定时器,定时时间间隔根据你一次串口输出所花的最大时间,比如设计为100ms。
2,串口设置为DMA的方式,改写printf底层函数,使打印输出的数据拷贝到一个发送数据缓冲区中。
3,定时中断到后可以判断发送数据缓冲区是否有数据,若有则启动DMA将数据发送出去。
这样做可以使printf函数用时最少,牺牲的是打印输出的实时性,有可能要100ms后才能输出,不过对于打印一般影响不大
谢谢beyond696的关注哈 最近比较忙 也没关注论坛 这两天用这个方法试下 学习。。。。。。。