Функция не выполняется вообще или не выполняется должным образом

Я работаю над встроенной 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 

Большое спасибо за вашу помощь, (я столкнулся с той же проблемой с другой функцией)

1 ответ

Я думаю тебе нужно __xdata в декларации array параметр в KillNoise

void KillNoise( int* __xdata array, int size )

или что-то подобное.

Другие вопросы по тегам