最近负责编写公司的工厂模式指令集,碰到了一些代码之外的问题,困扰了我很久。
因为综测那边对串口响应速度的要求很高,要求从上位机下发指令开始到上位机接收到完整回复,整个过程的响应速度要达到几十个ms之内响应完成,而且要稳定,保证成功率。
此前写的代码,都是响应速度跟不上。
代码排查:
①代码里把日志打印都关了
②减少对flash的读写操作特别是写flash
③RTOS底层的SDK究竟有没有切换到其他任务我不知道,但是可以肯定我程序里应用层只有一个任务,不存在有其他任务,故没有时间片切换造成的时间消耗
④任务优先级调至最高
以上方式,均未能解决响应速度跟不上的问题。
后来才知道,笔记本电脑的设备管理器->端口->端口设置->高级里有个属性存在17ms左右的延迟计时器,就是这个延迟计时器的设定时间影响了设备的串口响应速度,如下图。
将串口默认的延迟计时器改为2ms之后,串口响应速度的波动变为了3~4ms(代码并未修改过)。