状态机实现

有限状态机可以实现:字符串匹配(参照算法导论)、多状态转换(闸机控制、温度控制、水位控制等)

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
    switch(RxState)
    {
        case 0:
        {
            if(RxData==0x55)
                RxState=1;
        }break;
        
        case 1:
        {
            len = RxData;
            RxState=2;
        }break;
        
        case 2:
        {
            switch(RxData)
            {
                case 0xFA:                            //查询设备指令
                    HAL_UART_Transmit(&huart1, Inquire,11,10);
                    RxState=0;
                    break;
                
                case 0xFC:                            //停止运行指令
                    htim4.Instance->CCR1 = 1500;
                    RxState=0;
                    break;
                
                case 0xFB:
                    RxState=3;
                    break;
                
                default:RxState=0;
            }
        }break;
        
        case 3:
            Speed=RxData*256;
            RxState=4;
            break;
        
        case 4:
            Speed += RxData;
            RxState=5;
            break;
        
        case 5:
            htim4.Instance->CCR1 = Speed;
            RxState=0;
            break;
        
        default:RxState=0;
    }
    /* 采用中断方式接收1个数捿 */
    HAL_UART_Receive_IT(&huart1, &RxData,1);
}
原文地址:https://www.cnblogs.com/tangyuanjie/p/12942868.html