关于串口上电发送0x00的解决方法

来源:互联网 发布:咕咚运动软件最新 编辑:程序博客网 时间:2024/05/21 13:56

我今天运行公司主板上的程序时发现它的串口总是在板子刚上电的时候向外发送0x00. 主板上的芯片是avr的at90usb1287. 我前几天写的串口程序烧到主板上却没有这个问题。 同样的板子,同样的串口初始化程序!!所以我果断认为不是初始化程序的问题,当然 也不是硬件的问题!! 问题自然还是出在程序身上!!!仔细比较了两个程序,发现有一个不同点!! 那就是公司主板里的程序在一开始初始化了TX的复用IO引脚,而我的却没有!!!


我在示波器里看到,公司的程序初始化TX的IO复用口以后,TX线为低电平,初始化串口以后TX又变为高。 低为start bit, 高为stop bit,另一端的串口误认为这是一次串口传输,又由于TX一直保持低到串口初始化,所以数据被识别为0x00.


解决方案就是在TX的IO复用口以后,立即初始化串口,中间间隔时间极短,形不成一次串口数据传输!!!!也就是说和TX复用的引脚要和串口在一起初始化,中间隔任何程序!!!!



大多数人都是在程序中先初始化各种IO口,然后再初始化中断服务,串口之类的。这之间往往隔了一些代码。