Функция не выполняется вообще или не выполняется должным образом
Я работаю над встроенной 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 )
или что-то подобное.