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

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


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


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



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

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值