这几天学习调试串口通讯,一连好几天串口收发的都是乱码。之前的乱码毫无规则,发现是串口硬件没有装备好,此处的装备有三处。
(1)程序中,向量中止控制器的初始化装备
(2)电脑硬件串口设置
(3)串口调试帮手
这个装备好了之后,串口调试帮手显现的收发仍是和预期的不一样,不行程序收发数据变得有规则了。如图:
发送a收到q,发送b显现r(图中未显现),从a到q正好相差16位。而假如发送汉字的话,仍是显现乱码。
这中心尝试了许多方法,也调试了好几天,仍然无果。所以我找来开发板配套的源程序设置(源程序的代码能够运转,其他的任何代码都会乱码),逐个对照,之前以为是程序问题。然后我加了stm32的群(118342902),群里的大神看了程序给了一句必定的话说程序没有问题。
其间群主说正好相差16位,阐明的最高位的问题。然后我又将源程序的一切设置从头查看了一遍。最终发现,,,
之前是用的括号里的STM32F10X_MD的发动文件,之后换成STM32F10X_CL之后,一切正常了。
我运用的是107vc的芯片,发动文件的设置导致了高位硬性置位。具体的剖析待有时间在说。
下面把程序贴上。
main函数:
中止函数
这个程序应该是最简略的测验程序了。我们keil的才能有限,源代码不能直接贴上来,只能用图片的形式上传上来,不过也没几行代码。