智能车制作
标题:
求助!同一个变量分别定义char和float类型,用IAR J-lINK调试时char型值比float大10
[打印本页]
作者:
擦肩。回首。
时间:
2013-11-16 15:55
标题:
求助!同一个变量分别定义char和float类型,用IAR J-lINK调试时char型值比float大10
本帖最后由 擦肩。回首。 于 2013-11-16 16:02 编辑
求助!同一个变量分别定义char和float类型,用IAR J-lINK调试时char型值比float大10倍。比如我定义float angle=0;时计算得angle为32,而定义u8 angle=0 ;计算得的angle为3.2
但是我串口输出时用
if(angle>10.0) printf("angle:%d \n",(u8)angle);输出都为32.
我用的是野火的库,u8是unsigned char型。
float angle=0;时
[attach]52223[/attach]
u8 angle=0 ;时
[attach]52222[/attach]
作者:
野火
时间:
2013-11-16 16:38
把完整的 main 函数代码发来看看
作者:
擦肩。回首。
时间:
2013-11-16 18:03
本帖最后由 擦肩。回首。 于 2013-11-16 18:04 编辑
野火 发表于 2013-11-16 16:38
把完整的 main 函数代码发来看看
void main(){
DisableInterrupts;
/************初始化*******************/ PIT_init(); //PIT定时中断初始化
PWM_init(); //电机PWM输出初始化
Coder_init(); //编码器脉冲读取初始化
//CCD_init();
ADC_init(); //加速度计\陀螺仪输入初始化
// LCD_KEY_init();
uart_init(UART0,115200); //初始化串口0
// time_delay_ms(6000);
/************************************/
EnableInterrupts; //开总中断
while(1)
{
Kalman_Filter(accelerometer_angle,gyroscope_rate);
if(angle>10.0)
printf("angle:%d \n",(u8)angle);
//uart_putchar(UART0,(char)asin((accelerometer_angle-111.0)*0.009));
//printf("gyroscope_rate:%d\n",(u16)(gyroscope_rate));
time_delay_ms(100);
}
}
float angle_zero=164.0; //平衡角度63
float angle=0;
void Kalman_Filter(float angle_m,float gyro_m)
{
angle_m=(accelerometer_angle-MID)/ACC; //sin值
if(angle_m>1) //正弦值不能大于1或小于-1
angle_m=1;
else if(angle_m<-1)
angle_m=-1;
angle_m=180/3.14159*asin(angle_m);
angle=angle_m;
}
作者:
rubick
时间:
2013-11-16 19:26
void main(){
DisableInterrupts;
/************初始化*******************/
PIT_init(); //PIT定时中断初始化
PWM_init(); //电机PWM输出初始化
Coder_init(); //编码器脉冲读取初始化
//CCD_init();
ADC_init(); //加速度计\陀螺仪输入初始化
// LCD_KEY_init();
uart_init(UART0,115200); //初始化串口0
// time_delay_ms(6000);
/************************************/
EnableInterrupts; //开总中断
while(1)
{
Kalman_Filter(accelerometer_angle,gyroscope_rate);
if(angle>10.0)
printf("angle:%d \n",(u8)angle);
//uart_putchar(UART0,(char)asin((accelerometer_angle-111.0)*0.009));
//printf("gyroscope_rate:%d\n",(u16)(gyroscope_rate));
time_delay_ms(100);
}
}
float angle_zero=164.0; //平衡角度63
float angle=0;
void Kalman_Filter(float angle_m,float gyro_m)
{
angle_m=(accelerometer_angle-MID)/ACC; //sin值
if(angle_m>1) //正弦值不能大于1或小于-1
angle_m=1;
else if(angle_m<-1)
angle_m=-1;
angle_m=180/3.14159*asin(angle_m);
angle=angle_m;
}
复制代码
发代码时用[code]标记可以保留缩进。
作者:
擦肩。回首。
时间:
2013-11-16 19:45
rubick 发表于 2013-11-16 19:26
发代码时用[code]标记可以保留缩进。
谢谢!知道了!
作者:
擦肩。回首。
时间:
2013-11-24 20:38
后来我发现float是科学计数法表示的 后面还有E+1。刚好是乘以10没有错
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2