[其他ST产品]

FOC5.4 按键启动变量的传递

[复制链接]
246|2
手机看帖
扫描二维码
随时随地手机跟帖
jcky001|  楼主 | 2022-7-1 09:25 | 显示全部楼层 |阅读模式
各位亲:

       我在5.4的库里面发现按键启动后,开始电机用的是 pMCI[M1] 这个结构体,如下

__weak bool MC_StartMotor1(void)
{
        return MCI_StartMotor( pMCI[M1] );
}

但是,在电机底层执行的时候判断的却是 STM[M1] 这个结构体,如下

  StateM1 = STM_GetState( &STM[M1] );      // STM[M1]->bState
  switch ( StateM1 )
  {
  case IDLE_START:

看了很多遍都没发现是怎么将 pMCI[M1]->pSTM->bState 的 IDLE_START 传递给 STM[M1]->bState 的
哪位大哥哥帮小弟看看哈,感谢,感谢

使用特权

评论回复
cr315| | 2022-7-2 09:00 | 显示全部楼层
__weak bool MCI_StartMotor( MCI_Handle_t * pHandle )
{
  bool RetVal = STM_NextState( pHandle->pSTM, IDLE_START );

  if ( RetVal == true )
  {
    pHandle->CommandState = MCI_COMMAND_NOT_ALREADY_EXECUTED;
  }

  return RetVal;
}

电机启动通过,改变状态机来进行的,bool RetVal = STM_NextState( pHandle->pSTM, IDLE_START );

状态机是在中频任务里固定频率调用的,可以查看文件mc_task.c 里面__weak void TSK_MediumFrequencyTaskM1(void) 这个函数,就清楚怎么回事了。

使用特权

评论回复
sparrow054| | 2022-7-3 10:49 | 显示全部楼层
这是什么产品

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1407

主题

3754

帖子

5

粉丝