中级会员
 
- 积分
- 322
- 金钱
- 322
- 注册时间
- 2020-11-21
- 在线时间
- 50 小时
|
5金钱
我在用串口通信控制无刷电机时,将代码烧录后,led灯没有闪烁,用串口调试助手也没有反应,可当我将关于无刷电机的代码移除后,串口通信恢复了正常,不知道这是何原因,求各位前辈赐教。(无刷电机代码我在单独运行时是OK的)- int main(void)
- {
- u8 t; //typedef unsigned char uint8_t;
- u8 len;
- u16 times=0; //typedef unsigned short uint16_t;
- Nvic_Init();
- LED_Init();
- delay_init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- uart2_init(9600); //串口初始化为9600
- PWM_GPIO_Init();
- HALL_GPIO_Init();
- Timer1_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]; //当接收到从电脑发过来的数据,把接收到的数据保存在 USART_RX_BUF 中,
- while((USART2->SR&0X40)==0);//等待发送结束,串口的状态可以通过状态寄存器 USART_SR 读取。
- }
- printf("\r\n\r\n");//插入换行
- USART_RX_STA=0;
- if(strcmp((char*)USART_RX_BUF,"电机1正转")==0)
- {
- BLDC_CW();
- printf("\r\n电机正转\r\n");
- }
- if(strcmp((char*)USART_RX_BUF,"电机1停止")==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);
-
- }
-
- }
- }
复制代码
|
|