一个台湾某32位MCU的奇葩串口调试过程

近期,设计了一个基于台湾某32位MCU的带蓝牙功能的PCB,其它的部分都搞定了,唯独这个串口死活不通。我使用的蓝牙模块与MCU之间以串口通信。编写了一个简单的测试程序,然后仿真,发现只要运行到设置串口参数的语句(该语句使用了库函数的)处,再执行就跑飞了。WHY?确认看门狗已经关闭。然后怎么都无法运行正常。将改行程序屏蔽,再次仿真,没有串口时,运行OK,确认是这条语句的问题,可是,为什么是这条语句呢?经过仔细检查,发现有时能运行到串口中断程序中,可是,我没有开启串口中断和总中断!检查发现串口的RXD引脚是低电平。我就哔了狗了,玩过这么多单片机,没有见过哪个的RXD引脚的IDLE状态是低电平的!串口是低电平,表示有数据,难怪一直进入接收中断,由于串口与输入输出接口复用,我启动了内部上拉电阻,可是这个电阻太大,75K,导致输入电压达不到高电平,0.7*VDD。无奈,我禁止了内部上拉电阻,在RXD和TXD引脚外部各接了一个4.7K的上拉电阻,再次运行程序,不会跑到中断程序了。又仔细看了手册,发现这个串口的中断触发条件是可以设置的。默认是发送和接收缓存为空时执行中断服务程序。我把它设置成发送完一个字节或者接收到一个字节后才能触发中断。现在程序不会乱跑了。可是还有一个问题,就是波形不标准,导致逻辑分析仪识别数据帧错误。这个估计只能先换个比较准确的晶振试验下了。

官方提供的资料也很奇葩,库函数中有使用指南中没有提到的函数,使用指南中也有库函数中没有的函数。使用的开发环境和不知道从哪里整的一个垃圾仿真器,动不动就掉线,卡死。我也是醉了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值