串⼝调试助⼿发出信号接收不到反馈会怎么样
也许⽤过串⼝调试助⼿的⼈都会觉得,它发出去了就发出去了,不管有没有回复都不影响。那你有试过只插上⼀根USB-串⼝线到电脑上,另⼀头让它空着么?
助⼿版本:v2.2
问题发现:本⼈在学习C51单⽚机(别说什么已经过时的废话,我就是在学),到串⼝这⼀节,试着让单⽚机接到指定的结尾符号时才回发反馈,否则默认为继续接收字符,然⽽奇怪的事情发⽣了,当发送了⼀次不带结尾符的语句之后,不管调试助⼿再发什么,包括带不带结束符,都不再进⾏消息回发,甚⾄看不到开发板串⼝接收消息的指⽰灯闪烁(测试后接收中断应该也是没有进⼊),调试很久没有发现问题到底在哪⾥。开始的时候以为单⽚机串⼝的机制是接收⼀个消息回发⼀个,但很快就被否定了:在发送有结尾符的正常字符串时是分开⼀个个字符接收的,它们最后接收到⼀个结束符才回送消息,却没有出现这个问题,这说明单⽚机收到字符不⼀定需要返回。
后来⼜发现出问题的时候CPU的占⽤率⾮常⾼,甚⾄达到90%-100%之间居⾼不下,其中调试助⼿持续占⽤CPU(要知道正常情况下调试助⼿发送完消息后就会闲置下来的)。因此把注意⼒转移到助⼿上来。我做了个实验:把连接单⽚机那头串⼝线拔掉(可能因为驱动的关系,此时系统仍然是可以打开串⼝的),然后打开串⼝再发送字符,这时候不管发什么都会出现前述的问题。看来,跟单⽚机没关系,应该是调试
助⼿发送消息后会等待反馈,⾄于为什么会这样,我不知道这么做有什么⽬的。
字符串是什么样证实单⽚机通信⽅式不需要反馈:⽤超级终端尝试验证之前的编程思路发现是可⾏的,(编程思路是接到字符以;号为结尾符,否则视为指令的⼀部分,继续等待命令传输直到接到结尾符后把收到的字符拼接成⼀个字符串返回),结果显⽰它把接到的⼏组字符串做了拼接才回发(即前⼏组字符接收后并未做回发但是不影响后续的接收,不存在问题),更证实了本次试验遇到的问题不在于单⽚机,⽽在于调试助⼿。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论