打印
[其他ST产品]

cubeide中浮点函数返回值错误

[复制链接]
52|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
七毛钱|  楼主 | 2024-10-16 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在某个.c文件中定义了一个float函数,在函数内设置断点查看return运算结果是正确的,但我在另一个.c文件中引用这个函数给某个变量赋值时,变量的值就错误了。感觉像是cubeide的浮点运算设置问题,已经开启了cubeide的支持浮点运算和sprintf的选项。
这个是浮点函数的运行结果,我在函数内设置断点查看,计算运行是正确的 Name : value Details:4.37491322 Default:4.37491322 Decimal:1082916682 Hex:0x408bff4a Binary:1000000100010111111111101001010 Octal:010042777512 这个是引用函数赋值后得到的错误结果,通过引用函数赋值之后得到的变量直接飞了,引用函数后得到的结果是错误的 Name : mid_angle Details:1.08291674e+009 Default:1.08291674e+009 Decimal:1317083135 Hex:0x4e8117ff Binary:1001110100000010001011111111111 Octal:011640213777 我确保函数类型和赋值的类型一致,都是float,且代码在keil中编译运行没问题,在cubeide中未改动代码,但函数传递值时就错了,不知道咋解决 floatgetAngle11(void)
{
float angle_data,d_angle,value;angle_data = I2C_getRawCount();// tracking the number of rotations // in order to expand angle range form [0,2PI] to basically infinityd_angle = angle_data - angle_data_prev;// if overflow happened track it as full rotationif(fabs(d_angle) > (0.8*cpr) ) full_rotation_offset += d_angle > 0 ? -_2PI : _2PI; // save the current angle value for the next steps// in order to know if overflow happenedangle_data_prev = angle_data;// return the full angle // (number of full rotations)*2PI + current sensor angle value=(full_rotation_offset + ( angle_data / (float)cpr) * _2PI);return  value ;
} 引用时是这样的 volatilefloat mid_angle,end_angle; mid_angle=getAngle11(); 感觉是cubeide的浮点设置问题,我之前开启了支持浮点数编译和打印的设置,不知道还有啥浮点数问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

333

主题

2296

帖子

4

粉丝