STM32/STM8技术论坛
直播中

傅梦麒

未满1年用户 7经验值
擅长:可编程逻辑
私信 关注
[问答]

使用cubeide编译时出现浮点函数传递错误咋解决

这个是浮点函数的运行结果,我在函数内设置断点查看,计算运行是正确的
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 infinity

d_angle = angle_data - angle_data_prev;

// if overflow happened track it as full rotation

if(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 happened

angle_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的浮点设置问题,我之前开启了支持浮点数编译和打印的设置,不知道还有啥浮点数问题

回帖(1)

傅梦麒

昨天 10:58
使用的是stm32F103RC
T6
举报

更多回帖

发帖
×
20
完善资料,
赚取积分