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

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

 

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

状态机的基本结构是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值