通过单片机1去控制wifi模块扫描周围wifi信号,wifi模块接在单片机2上

我有问题想请教一下
目前的环境是:通过单片机1去控制wifi模块扫描周围wifi信号,wifi模块接在单片机2上。
今天遇到了一个问题,解决的过程中又出现了其他的问题,我觉得这些问题都是类似的,请教下您
1, 第一次上电运行,调试的时候。全速运行停止了,但是在代码中找不到停止的位置。如果点击单步运行,左上角这个CPU寄存器的值就会一直变。好像是没进入程序。
重新上电之后,就没有这个问题了。
请问是什么原因导致的?怎么解决呢?(不能每次都重新上电吧)
image
2, 如图1,重新上电,1的问题解决了之后,过一会再调试时,又出现问题了:在Pre_Process();设置了断点,程序可以运行到这。再点击“step over”时,应该是运行到switch。但是却直接跳到了如图2的位置。
我rebuild了一下,再试就没这个问题了。这是什么原因呢?



3, 和2的问题非常类似,如图3、4。
下一步应该执行Uart4_Rx_Index1 = 0; 却直接跳到了while循环开始的位置。
这是为啥呢?

全速运行停止后没有找到停止的位置,估计是程序跑飞了。比如访问了野指针,调用了没有实际定义实现的函数等等,很多情况都会导致这个现象。
调试的时候乱跳一般都是软件的优化等级高导致的。把优化等级关掉重新编译再去调试看看。

谢谢
优化等级一直是0。
后面rebuild之后,这两天再没出现过类似的问题
但还是没有发现具体的原因 :upside_down_face: