2

我正在开发一个嵌入式 C 程序,即使调用 killnoise 函数并且程序总是到达它,它也不会执行,但是当我检查这个函数输出的值时,我发现没有发生任何事情:

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 

非常感谢您的帮助,(我在使用另一个功能时遇到了同样的问题)

4

1 回答 1

1

我认为你需要__xdataarray参数的声明中KillNoise

void KillNoise( int* __xdata array, int size )

或类似的东西。

于 2012-04-30T10:11:33.930 回答