我在用贵公司的at32f437做控制系统。程序基本移植成功跑起来了,但有些异常。 经过调试,发现是数据赋值错误
两个断点之间的指令如果单步执行都是对的。
如果连续跑(F5),R0的结果是正确的。但是[R5,#0x70]里赋值为了0,应该是把R9的值赋值过去了。
所以不是__aeabi_d2f出错了。 而是str r0指令出错了。
基本可以排除中断或者任务切换造成的。
STR R9,[R10,#0x50] 对应的c语言为ret = 0;
如果把ret = 0;这句放到别的地方,系统就可以正确运行了。
请问这是什么原因造成的。
|