2020-01-12 17:28发布
hexenzhou 发表于 2019-6-15 12:51 用51还敢用printf,谁给你的勇气?梁静茹吗?^_^
huangqi412 发表于 2019-6-15 13:21 100块的呢
最多设置5个标签!
这是为什么?51有那么差?
对哦,100的CPU。
第一就是你说的慢,到底是说因为要传输的内容太多了,所以慢,还是说因为printf函数计算判断本身消耗的mcu周期太长导致太慢,我敢肯定你自己都没有去搞清楚,因为要搞清楚很简单,示波器看一下串口输出的字节间是不是有很长的间隔?而那个就是处理时间,如果是的话,那么可以换个方式,比如前面一些人说的用自己的函数代替库函数,这样精简,以缩短处理时间;
如果不是上面说的那样,那么根本是无解的命题,这个你自己算一下就知道传输你的内容需要多长时间,如果消耗的时间和大致计算出来通信本身消耗的时间比较一致,那唯一解决的办法就是提高通信带宽,也就是提高波特率,这是唯一的解决之道。
举个例子,你用115200的波特率传输1k字节内容,为了方便估算,我们按一个字节100us来简单估算,那么1k字节内容就是100ms左右,10k个字符就需要1秒钟才能传完,如果你波特率更低,那么传输时间就成倍的加大了,我认为这个时间比起你的printf里面的一些计算、判断来说,后者完全可以忽略吧? 即使你换个自己写的函数或者DMA什么的,用于都摆脱不了串口本身的传输时间,因为即使不使用DMA,也可以改成上一个字节正在传输的这个100us内计算处理下一个字节的内容,这样整体下来实际上可以等效为处理本身完全不消耗时间了,时间都在串口移位本身上面,
一周热门 更多>