干簧管
记灵动微MM32G0001的一次死机
调试i2c的过程中,突然发现自带的dap-link连接不上了,于是根据报错在keil里面一顿设置,最终发现把i2c外围设备拔掉就ok了,于是怀疑是写的代码哪里有bug导致单片机死机了,于是想着加打印确认下死机在哪,烧写代码后却发现串口挂了,没有打印输出,就连i2c初始化前的打印都没有。好吧!不要气磊,这不是还有个调试器,在线运行下看是死在哪。

结果发现pc在一堆main前面的地址里面跑动,调用栈如上,也看不太懂,然后i2c也是没有跑的,于是想着设置断点跑下看看吧,于是

发现
SystemInit是有跑到的,然后继续往下

执行到跳转_main上面的调试按钮就都灰了,但是这块不是keil自带的吗,起初怀疑是偶然问题,结果复现了几次全是这里,于是开始百度,结果还真找到了网友碰到的类似问题
https://www.cnblogs.com/birdBull/p/15697213.html
https://www.cnblogs.com/zhanxiaohong0303/p/xh_2020_7_1.html

前面手残,不知啥时候去掉了这个Use MicroLIB,于是根据网友的解释弄懂这块由于未使用微库并且未实现printf的重定向导致死机在这一块。好吧,以后不随便乱改了,幸好灵动微赠送了调试器,不然这问题一时半会也无法定位到,再次感谢灵动微以及iceasy赠送的板子!
版块:
灵动微电子
2023/11/04 09:48

全部评论