一、环境
1.芯片:GD32F10x
2.程序:可在其他板子上正常运行
3.下载器:J-LINK
二、问题
1.程序可以通过J-LINK下载
2.但是主程序没有运行
三、问题现象
1.KEIL仿真:
1)仿真后直接运行,但是并没有运行到主程序(main函数)中。
2)查看汇编,可以执行,但是执行的地址是在0x1FFF Fxxx,并且一直在循环执行。
2.硬件查看
1)晶振没有正常运行
2)3.3v供电正常
四、查资料思考
1.首先仿真时汇编运行的地址不对,如果是在“主FLASH存储器”区域(也就是我们编写代码的地方),那汇编地址应该是0x0800 xxxx。
2.通过GD32使用手册,查到在0x1FFF Fxxx地址运行时是处于“引导装载程序”区域,而决定运行区域的关键时BOOT0,从而确定是“未知原因”导致BOOT0引脚为高电平导致。
五、确定问题所在
1.通过万用表查询,BOOT0引脚确实是高电平
2.通过万用表测量,确定相邻引脚短路,此引脚有上拉
六、在网上找到的一篇同样遇到这个问题的文章,推荐一下
Boot 引脚引发的血案 - 知乎