TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335: 编程报错

Part Number:TMS320F28335

报错:expression must have integral type,

哪位大佬可以帮我看一下程序吗?

我的程序是这样的:

#include "NVSSALMS.h"
#include "f28335a.h"
#include "math.h"

//#pragma DATA_ALIGN(lms_x, 8)
float lms_x[LMS_M]; //输入信号向量存储数组
//#pragma DATA_ALIGN(lms_w_forward, 8)
float lms_w_forward[LMS_M]; //用于存储未来一时刻滤波系数向量w(k+1)
//#pragma DATA_ALIGN(lms_w, 8)
float lms_w[LMS_M]; //用于存储当前时刻滤波系数矢量w(k)
float lms_error[LMS_M]; //存放当前时刻的稳态误差
float lms_error_forward[LMS_M]; //存放未来一时刻的稳态误差
float LMS_MU; //步长

extern Adaptive_Filter_In lms_param_in;
extern Adaptive_Filter_Out lms_param_out;
void LMS_Gradient_Instantaneous_Estimates(Adaptive_Filter_In *lms_in, Adaptive_Filter_Out *lms_out)
{
int i;
static int FIR_order;
static unsigned char First_in_flag = 1;
static float *w_ptr, *w_forward_ptr, *Temp_w_ptr;
static float *error_ptr;
static float *x_ptr;
float temp;

if(First_in_flag )
{
First_in_flag = 0;
FIR_order = lms_in->length_x; //滤波器长度

// memset((void *)lms_w_forward, 0, FIR_order*4);
// memset((void *)lms_w, 0, FIR_order*4);
for(i=0;i<FIR_order;i++)
{
lms_w_forward[i]=0;
lms_w[i]=0; //初次的w值不设为零可以加快权值的更新
}

w_forward_ptr = lms_w_forward;//将来时刻w向量的首地址赋值给指针变量
w_ptr = lms_w; //当前时刻w的指针变量

x_ptr = lms_in->x_ptr;
}
// lms_out->y = DSPF_sp_dotprod(x_ptr,w_ptr,FIR_order); //一共需要82个时钟周期
lms_out->y=0; //y值需要清零,否则在后面点成运算时会发生错误
for(i=0;i<FIR_order;i++) //调用了dsplib.h中的向量点乘运算函数
{
lms_out->y +=x_ptr[i] * w_ptr[i]; 
}
lms_out->error = lms_in->d – lms_out->y;
error_ptr = lms_out->error;

for(i=0; i<FIR_order; i+=8)
{
LMS_MU = (NVSSALMS_GAMA)/(int)(pi*exp(abs(error_ptr[i]*error_ptr[i+1]-NVSSALMS_LAMDA))^2+NVSSALMS_GAMA^2);
temp = (LMS_MU*error_ptr[i])/(0.1 + x_ptr[i]^2);
w_forward_ptr[i] = w_ptr[i] + temp*x_ptr[i];
w_forward_ptr[i+1] = w_ptr[i+1] + temp*x_ptr[i+1];
w_forward_ptr[i+2] = w_ptr[i+2] + temp*x_ptr[i+2];
w_forward_ptr[i+3] = w_ptr[i+3] + temp*x_ptr[i+3];
w_forward_ptr[i+4] = w_ptr[i+4] + temp*x_ptr[i+4];
w_forward_ptr[i+5] = w_ptr[i+5] + temp*x_ptr[i+5];
w_forward_ptr[i+6] = w_ptr[i+6] + temp*x_ptr[i+6];
w_forward_ptr[i+7] = w_ptr[i+7] + temp*x_ptr[i+7];
}

Temp_w_ptr = w_forward_ptr; //新旧滤波系数矢量指针交换
w_forward_ptr = w_ptr;
w_ptr = Temp_w_ptr;
}

相同的报错有四处,分别是绿色部分,能帮忙解答一下吗

Green Deng:

应该就是如报错所述,你的表达式里面包含了其他类型的数据,而这个表达式只能用于整数型

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335: 编程报错
分享到: 更多 (0)