好久没发文了,来一篇低级错误的反面教材给大家亮亮眼。
异常描述如下,基于stm32战舰mini开发板自己定制了一下bsp支持包,详细的如何定制特定开发板的bsp已发表在星球,需要的筒子们可以去瞅瞅,我也是首次移植,虽然做不到丝滑,但也是比较顺利的通过了编译。
接下来就是系统级的交互了,下载程序到我的开发板,打开SecureCRT等待奇迹的出现,进入finsh组件交互界面,上电启动,发现没得反应(这个时候有点点慌)~!!!,说明程序没跑起来。
只能接上仿真器,看看软件是否卡死了?心里初步怀疑是卡在晶振配置部分代码,这个错误貌似我犯了不止一次。一般是因为晶振配置不正确导致倍频无法起振,卡在while循环里。当然一切还是以实际仿真为实。
接上仿真器后,进入仿真状态,试了下全速跑,暂停然后单步,发现功能都不正常。。。这。。。难道是仿真器的问题?
于是开始检查仿真器的接线,仿真器的驱动上有没有问号,发现没问题后,再次点击仿真神奇的一幕出现了,提示无法烧录flash(大BUG出现了,大脑开始宕机。。。。)。
开始各种捣鼓,检查电源3.3V是否正常(万用表怼上),检查仿真端口线束(拔了也又插),各种折腾依旧是连不上。。。于是开始查硬件,开发板的原理图,拉出来一点点细看。
到这里,解决方法就简单粗暴了, 焊掉R22和D3两个电阻,uart1就成了一个普通的串口了。
最终finsh组件在uart1设备上正常运行,标志着我们的系统已经流畅的运转起来了,总是在犯低级的路上渐行渐远(唉。。。):