我正在开发一个嵌入式C程序,即使调用了killnoise函数也没有执行,程序总是到达它,但是当我在这个函数的输出处查询值时,我发现nothig发生了:
void KillNoise( int* array, int size )
{
int k;
for (k=0;k<size;k++)
{
if (array[k] < 20)
array[k] = 0;
}
}
这里是我称之为的地方和方式:
void UX_zswDecide( void )
{
float __xdata centerOfMass[UX_NUM_SENSORS];
float __xdata vectx, vecty, module, tg;
int __xdata i,j;
KillNoise( UX_bigUpArray, NUMPOINTS );
KillNoise( UX_bigDownArray, NUMPOINTS );
KillNoise( UX_bigLeftArray, NUMPOINTS );
KillNoise( UX_bigRightArray, NUMPOINTS );
/* the rest of the function */
}
其中NUMPOINTS,biguparray,bigleftarray ......是先前声明的全局变量:
int __xdata UX_bigUpArray[100];
int __xdata UX_bigDownArray[100] ;
int __xdata UX_bigLeftArray[100];
int __xdata UX_bigRightArray[100] ;
#define NUMPOINTS 100
非常感谢你的帮助,(我的另一个功能面临同样的问题)
答案 0 :(得分:1)
我认为__xdata
array
参数的声明中需要KillNoise
void KillNoise( int* __xdata array, int size )
或类似的东西。