问答

汇集网友智慧,解决技术难题

21ic问答首页 - STM32串口通信控制电机

STM32串口 控制电机 通信控制 串口通信 printf SAR

STM32串口通信控制电机

我想用串口通信来控制无刷电机,串口代码借用正点原子,目前串口可以接收到发送的指令,但是不能控制电机,希望有前辈帮我解答一下,附上主函数代码int main(void)
{
        u8 t;  //typedef unsigned char uint8_t;
        u8 len;       
        u16 times=0;  //typedef unsigned short uint16_t;
        volatile unsigned char  HALL_flag;
            LED_Init();
            delay_init();
            uart2_init(9600);         //串口初始化为9600
            PWM_GPIO_Init();
           HALL_GPIO_Init();
           LED1=1;
  while(1)
        {   
        if(USART_RX_STA&0x8000)  
                {                                          
                        len=USART_RX_STA&0x3fff;
                        printf("\r\n您发送的消息为:\r\n");
                        for(t=0;t<len;t++)
                        {
                                USART2->DR=USART_RX_BUF[t];
                                while((USART2->SR&0X40)==0);
                        }
                        printf("\r\n\r\n");//插入换行
                        USART_RX_STA=0;
                                         if(strcmp((char*)USART_RX_BUF,"电机1正转")==0)
                                        {
                                                          HALL_flag =1;
                                                         BLDC_CW();
                                                    printf("\r\n行走电机正转\r\n");
                                        }
                                         if(strcmp((char*)USART_RX_BUF,"电机1停止")==0)
                                        {
                                                          HALL_flag =0;
                                                          BLDC_STOP();
                                                    printf("\r\n行走电机停止\r\n");
                                       
                                        }
                                       
                               
                }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf("\r\nALIENTEK MiniSTM32开发板 串口实验\r\n");
                                printf("正点原子@ALIENTEK\r\n\r\n\r\n");
                        }
                        if(times%200==0)printf("请输入数据,以回车键结束\r\n");  
                        if(times%30==0)LED1=!LED1;//闪烁LED,提示系统正在运行.
                        delay_ms(10);

}

}

}


回答 +关注 16
4553人浏览 9人回答问题 分享 举报
9 个回答

您需要登录后才可以回复 登录 | 注册