如上两张图所示。
本来只是一个简单的除法求解问题。
原来一直以为是除法计算错误。
但通过这两张图,发现好像不是除法本身的问题,而是这个变量temp的问题。
这个temp是函数内变量,定义为 volatile float temp;为了排除编译问题还特意加了volatile。
但是在用keil里面的go to defined 查找temp的定义时,却弹出了三个不同的定义,其他两个都是别的函数内定义的局部变量。
不知道为何也会一起弹出,而不直接定位到该函数内的定义处。这也可能是别的原因吧。
这个temp在此函数中有多处使用,做为中间变量存放中间值。
但在此计算处,根据仿真结果,可知道,此处temp并没有进行该除法的计算赋值,而是直接读取了相应的变量值做为判断使用。
这个错误,不光是仿真时能发现,而是在实际完全在nucleo板上运行时,这个错误也是存在的。
具体原因就是这个temp的错误,导致该函数的返回值错误,从而整个程序运行出错。
从这两张图看,有点像是函数内存溢出?
但程序数据并不多RW data只有176字节
此是为何
|