问题描述
今天遇到了一个比较有意思的问题,大致就是在做蓝牙串口通信时,发现自己焊接的板子出现了按下reset键时,蓝牙停止传输数据的现象,然后断电程序重新上电后,又可以重新运行的现象。
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题排查
一开始以为是蓝牙的问题,于是直接使用杜邦线进行串口之间的连接,发现情况还是存在。
这个时候我就又以为是串口程序的问题,于是重新找了一个标准例程的串口收发程序,问题仍就存在。
然后,我又以为是单片机串口的问题,于是,我又使用LED的跑马灯实验进行测试,结果,离谱™给离谱开门,离谱到家了,跑马灯竟然也有问题。
这个时候,让我不得不怀疑难道是硬件的问题,于是我在网上搜索,发现也有同学存在这种问题,但最终并没有解决,我又看到很多同学猜测是不是复位电路那部分的问题,我也使用电压表检测了一下,既没有短路也米有虚焊。
二、问题原因
1.boot引脚没有地或者VCC
最终,由于电路板仅仅是把元器件焊完,并没有焊排针等,我猜测是因为boot引脚没有接电平导致的这个奇葩问题,然后,我就尝试着把boot的排针街上,并且将boot1和boot0接地,然后又重新使用跑马灯实验进行测试,最终果然不出所料,无论复位多少次,跑马灯都能够正常运行,最后也是成功的解决了这个问题。
总结
stm32按下复位键后程序停止运行,重新上电又可以运行,问题在于boot引脚悬空了。