初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2016-12-12
- 在线时间
- 12 小时
|
在使用匿名官网最新上位机时使用自带通信例程出错,搞得一头雾水
匿名上位机4.06
首先出现满屏的红色波浪线,错误的莫名其妙排除了一部分后发现还有一个不是错误的错误
[mw_shl_code=c,true]void ANO_DT_Send_Status(float angle_rol, float angle_pit, float angle_yaw, s32 alt, u8 fly_model, u8 armed)
{
u8 _cnt=0;
vs16 _temp;
vs32 _temp2 = alt;
data_to_send[_cnt++]=0xAA;
data_to_send[_cnt++]=0xAA;
data_to_send[_cnt++]=0x01;
data_to_send[_cnt++]=0;
_temp = (int)(angle_rol*100);
data_to_send[_cnt++]=BYTE1(_temp);
data_to_send[_cnt++]=BYTE0(_temp);
_temp = (int)(angle_pit*100);
data_to_send[_cnt++]=BYTE1(_temp);
data_to_send[_cnt++]=BYTE0(_temp);
_temp = (int)(angle_yaw*100);
data_to_send[_cnt++]=BYTE1(_temp);
data_to_send[_cnt++]=BYTE0(_temp);
data_to_send[_cnt++]=BYTE3(_temp2);
data_to_send[_cnt++]=BYTE2(_temp2);
data_to_send[_cnt++]=BYTE1(_temp2);
data_to_send[_cnt++]=BYTE0(_temp2);
data_to_send[_cnt++] = fly_model;
data_to_send[_cnt++] = armed;
data_to_send[3] = _cnt-4;
u8 sum = 0;
for(u8 i=0;i<_cnt;i++)
sum += data_to_send;
data_to_send[_cnt++]=sum;
ANO_DT_Send_Data(data_to_send, _cnt);
}[/mw_shl_code]
以上代码报错的是这一段:
[mw_shl_code=c,true]for(u8 i=0;i<_cnt;i++)[/mw_shl_code]
原来keil编译器 变量声明需要放到函数开头不能放中间!
但是C语言C99标准是支持这样的语法的,看来我out了,连C语言都在与时俱进
好吧!要么把它改到函数前面,要么就是改C语言编译器标准
选择后者更简单,摩擦摩擦跟上时代的步伐,只要加几个字就OK
mdk设置页面
就是在misc controls里加上“--C99”,让编译器按照C99标准进行编译
下面把我修改的4.06匿名上位机通信程序发上来分享给大家,只有mpu6050的数据上传部分,可以观看3D姿态!
匿名科创官网(可下载最新版上位机)
|
|