我想用串口通信来控制无刷电机,串口代码借用正点原子,目前串口可以接收到发送的指令,但是不能控制电机,希望有前辈帮我解答一下,附上主函数代码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);
}
}
}
|