请教坛友,KEIL中PRINTF发送时间长如何修改?

2020-01-12 17:28发布

一直用这个命令没问题,后来 用串口屏,有大量的数据,才发现这个命令发送数据时间长,请问有没有办法改一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
33条回答
1a2b3c
2020-01-15 14:29
我觉得楼主描述上更是有问题,或者是误导了大家,
第一就是你说的慢,到底是说因为要传输的内容太多了,所以慢,还是说因为printf函数计算判断本身消耗的mcu周期太长导致太慢,我敢肯定你自己都没有去搞清楚,因为要搞清楚很简单,示波器看一下串口输出的字节间是不是有很长的间隔?而那个就是处理时间,如果是的话,那么可以换个方式,比如前面一些人说的用自己的函数代替库函数,这样精简,以缩短处理时间;
如果不是上面说的那样,那么根本是无解的命题,这个你自己算一下就知道传输你的内容需要多长时间,如果消耗的时间和大致计算出来通信本身消耗的时间比较一致,那唯一解决的办法就是提高通信带宽,也就是提高波特率,这是唯一的解决之道。

举个例子,你用115200的波特率传输1k字节内容,为了方便估算,我们按一个字节100us来简单估算,那么1k字节内容就是100ms左右,10k个字符就需要1秒钟才能传完,如果你波特率更低,那么传输时间就成倍的加大了,我认为这个时间比起你的printf里面的一些计算、判断来说,后者完全可以忽略吧? 即使你换个自己写的函数或者DMA什么的,用于都摆脱不了串口本身的传输时间,因为即使不使用DMA,也可以改成上一个字节正在传输的这个100us内计算处理下一个字节的内容,这样整体下来实际上可以等效为处理本身完全不消耗时间了,时间都在串口移位本身上面,

一周热门 更多>