C功能有什么问题?

时间:2016-05-24 21:17:21

标签: c avr servo

嗨我有控制我的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');时,伺服器一直停留在同一个地方......任何想法有什么不对?

1 个答案:

答案 0 :(得分:1)

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

基本上它是这样用的:

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

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

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