智能车制作

标题: 这里是不是用static来计数了?不能领悟啊 [打印本页]

作者: 前行者cross    时间: 2012-3-26 19:48
标题: 这里是不是用static来计数了?不能领悟啊
void Motor_Regler(void)
{
   
  volatile float power_value = 0.0,error_value = 0.0,gyro_value = 0.0;


  static unsigned char FB_Flag = 0,Front_Count = 0,Behind_Count = 0;    //???这我想不灵清啊,static后面会用来计数的?
  error_value = QingJiao/57.3;  //用弧度制
  gyro_value  = Gyro_Data;
  ////倾角检测
// OutData[3]=error_value;
   
  Integral += error_value;
  Different = Error1_Old - Error2_Old;
  Error2_Old = Error1_Old;
  
  Error1_Old = error_value;
// OutData[0] = (float)D_Value*Different;   
  power_value =  fabs((float)P_Value*error_value + (float)I_Value*Integral + (float)D_Value*Different);//PID
  
  OutData[3]=power_value;
         
  if(power_value < -ADJ_Value)   power_value = -ADJ_Value;
  if(power_value > ADJ_Value)    power_value = ADJ_Value;
  //power_value=0.3*power_value*power_value+Min_Power;
if(error_value>0)     //正向倾角判断 正向调节角度 0~Pi/12.0
{
   
  Front_Count = 0;
  Behind_Count++;

if(5==Behind_Count)                     //连续5次检测为正向倾角时标志位置位,
  {
   Behind_Count = 0;
   FB_Flag = 8;
  }
这段程序我想不明白 ,他在函数中定义static变量FB_Flag = 0,Front_Count = 0,Behind_Count = 0;后面却用来计数?难道static可以多次赋值?求高手解释,谢过!!

作者: 前行者cross    时间: 2012-3-27 12:11
dingqi,zijiding




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2