圆点博士小四轴主程序状态机结构

圆点博士小四轴主程序状态机结构

 

圆点博士小四轴主程序采用状态机结构的方式编写。

状态机的基本结构是:

1。有一个驱动时钟

2。在各个状态中设置下一个需要运行的状态。

 

下面我们结合源代码进行分析:

system_timer_1ms_event是一个每1ms触发一次的事件。在定时器的控制下,每1ms,事件标志system_timer_1ms_event北置位到1。

while(1)是一个死循环,代码不断检测1ms事件到达标志。

 

圆点博士小四轴状态机主要由下列三个事件组成:

 IDLE 为开机后的初始化状态,主要用于检查陀螺仪数据的稳定性。

UPDATE_COMMAND 为接收遥控器指令以及读取陀螺仪数据的状态

UPDATE_MOTOR 为更新电机转速的状态

RESET_MOTOR 为关停电机的状态。

 

圆点博士小四轴主程序状态机结构

 

 

while(1)
 {
  if(system_timer_1ms_event)   //圆点博士:1MS事件触发
  
   system_timer_1ms_event=0;   //圆点博士:清除事件
   system_timer_counter++;       //圆点博士:系统计数器
   //
   switch (system_timer_state)
   {
    case IDLE:
     system_idle_counter++;
     BS004_Get_MPU6050_Data();
     //
     if(system_idle_counter>5) system_timer_state=UPDATE_COMMAND;
     break;

    case UPDATE_COMMAND:
     BS004_Get_MPU6050_Data();
     system_status=BS004_COM1_Task_Process();
     //
     if(system_status) system_timer_state=UPDATE_MOTOR;
     else system_timer_state=RESET_MOTOR;
     break;
    
    case UPDATE_MOTOR:
     BS004_Get_MPU6050_Data();
     BS004_Motor_Control();
     //
     system_timer_state=UPDATE_COMMAND;
     break;

    case RESET_MOTOR:
     BS004_Get_MPU6050_Data();
     BS004_Motor_Reset();
     //
     system_timer_state=UPDATE_COMMAND;
     break;
    
    default:
     break;
   }
  }

}

 


 




原文地址:https://www.cnblogs.com/jins-note/p/9512733.html