初级会员

- 积分
- 56
- 金钱
- 56
- 注册时间
- 2019-12-20
- 在线时间
- 14 小时
|
各位大佬 帮忙看看!做一个蓝牙小车,利用串口中断编写的程序。 一开始发送STOP 会输出 “xiangqian”,但是切换mode的值后,再回到mode=2,就无法进入到if(strcmp(r,"STOP\r\n") == NULL)。
代码:
u8 mode=2;
u8 i=0;
char res[10];
void USART1_IRQHandler(void)
{
u8 state=0;
char * r;
//缓存10 遇到换行输出
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
res[i]=USART_ReceiveData(USART1);
if(res[i] == '\n')
{
state=1;
}
i++;
}
//一条指令结束
if(state==1)
{
printf("输入为:\n");
for(u8 j=0;j<=i;j++)
{
USART_SendData(USART1,res[j]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
i=0;
//指令判断
r=res;
if(strcmp(r,"MODE1\r\n") == NULL) mode=1;
if(strcmp(r,"MODE2\r\n") == NULL) mode=2;
if(strcmp(r,"MODE3\r\n") == NULL) mode=3;
printf("当前模式为:%d\r\n",mode);
if( mode == 2)
{
printf("over\r\n");
if(strcmp(r,"STOP\r\n") == NULL) {
printf("XIANGQIAN\r\n");
XiaoChe_Stop();
}
if(strcmp(r,"UP\r\n") == NULL) XiaoChe_Forward();
if(strcmp(r,"DOWN\r\n") == NULL) XiaoChe_Back();
if(strcmp(r,"LEFT\r\n") == NULL) XiaoChe_Left();
if(strcmp(r,"RIGHT\r\n") == NULL) XiaoChe_Right();
}
}
}
|
|