我是 C 编程的新手,我正在为我的 MCU 开发固件应用程序。当我使用 KEIL 编译器(Big Endian)时,此方法工作正常,但当我切换到 SDCC 编译器(Little Endian)时,它无法正常工作。有人可以解释我做错了什么吗???
目标设备是基于 8051 架构的 Silicon Labs C8051F320。
unsigned **int** MotorSteps = 0; //"Global" variables
unsigned **int** MotorSpeed = 0;
bit RampUp()
{
float t = 0;
t = MotorSteps;
if ( t < 51 )
{
t = (1-((50 - t)/50))*15;
t = (t * t);
MotorSpeed = 100 + t;
return 0;
}
else return 1;
}
添加:首先,我现在将 MotorSteps 和 MotorSpeed 更改为无符号整数。 在我的调试器中,由于某种原因,如果我在 if 语句行设置断点,在此函数 MotorSteps = 00 的第一个入口处,因此 t 也应该分配为 0,但调试器显示 t=0.031497(十进制)。如果我将调试器切换为以十六进制显示,t = 0x3d010300。这就像 t 永远不会被分配......