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

2020-01-12 17:28发布

一直用这个命令没问题,后来 用串口屏,有大量的数据,才发现这个命令发送数据时间长,请问有没有办法改一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
32条回答
ZHAOBAO511
1楼-- · 2020-01-15 12:32
hexenzhou 发表于 2019-6-15 12:51
用51还敢用printf,谁给你的勇气?梁静茹吗?^_^

这是为什么?51有那么差?
ZHAOBAO511
2楼-- · 2020-01-15 13:56
huangqi412 发表于 2019-6-15 13:21
100块的呢

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

举个例子,你用115200的波特率传输1k字节内容,为了方便估算,我们按一个字节100us来简单估算,那么1k字节内容就是100ms左右,10k个字符就需要1秒钟才能传完,如果你波特率更低,那么传输时间就成倍的加大了,我认为这个时间比起你的printf里面的一些计算、判断来说,后者完全可以忽略吧? 即使你换个自己写的函数或者DMA什么的,用于都摆脱不了串口本身的传输时间,因为即使不使用DMA,也可以改成上一个字节正在传输的这个100us内计算处理下一个字节的内容,这样整体下来实际上可以等效为处理本身完全不消耗时间了,时间都在串口移位本身上面,
ZHAOBAO511
4楼-- · 2020-01-15 18:55
 精彩回答 2  元偷偷看……
1a2b3c
5楼-- · 2020-01-15 23:06
你都说了中间延时,那么你自己测过么?延时多少,这个时间是不是与串口占用的时间相比到了可以相当的程度或者必须要计较的程度?如果是,前面也说了解决或者降低这个影响的方法,
didadida
6楼-- · 2020-01-16 04:17
楼主有个虚心的态度好不?楼上给你分析的够清楚明白了吧。看你签名,就这水平还教别人呢?

一周热门 更多>