-4

嗨,我的 4servos 控制功能有问题。我想使用此代码来运行,但它不起作用。

volatile float servo1;

            variable=  uart_getchar();
            _delay_ms(100);
            variable=variable/10;
            servo1=variable;
            sprintf(bufor,"Servo_1= %4.1f\n",servo1);
            uart_puts(bufor);

当此代码不起作用时,一切正常,伺服工作良好。问题是当我这样做时:

void get(float Servo, char Number)
{
            variable=  uart_getchar();
            _delay_ms(100);
            variable=variable/10;
            Servo=variable;
            sprintf(bufor,"Serwo_%c= %4.1f\n",Number,Servo);
            uart_puts(bufor);
}

当我打电话给get(servo1,'1');伺服时,一直呆在同一个地方..知道出了什么问题吗?

4

1 回答 1

1

如果要更改传递给函数的变量,则必须使用指针

基本上它是这样使用的:

void f(int* x){
  *x = 5;
}

int main() {
  int y = 7;
  f(&y);
  printf("%i\n", y);
  return 0;
}

简而言之,&获取变量的地址,获取地址处*的值

于 2016-05-24T21:44:46.967 回答