先贴自己写的程序。(望大家帮忙修正! )
说明:我困惑的是如何在串口接收字符串后并进行判断执行相应操作,一个字节还行,假如字符串就不行了
这个程序对于新手来说很重要啊!要从串口助手控制东西也需要它啊!
资料也老实认真看了,论坛也翻了无果
如下程序是要操作:
1.接收数据然后放入BUFF.【接收到"["为开始持续放入数据到BUFF,当接收到"]"或者数组取完了加结尾标识结束】
2.判断buff中的数据是不是"abc"这个字符串
3.判断正确LED闪烁一次
#define Z 20
unsigned char GetDataBuff[Z];
unsigned char Data_Flag = 0;
unsigned char Full = 0;
void USART1_IRQHandler(void) //串口中断1服务函数
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收缓存器非空
{
if(GetDataBuff[Data_Flag]=='[') //接收到文件头
Data_Flag = 0;
else if(!Full)//不是满的
{
GetDataBuff[Z] = USART_ReceiveData(USART1); //从串口1接收数据存入buff中
if(GetDataBuff[Data_Flag]==']'||Data_Flag++==(Z-1)) //如果接收到"]"或者20个数组中没有东西了
{
GetDataBuff[Data_Flag]='\0'; //在末尾加上结尾标识
Full = 1; //buff接收完成
}
}
}
if(GetDataBuff[Data_Flag] == 'a'&&'b'&&'c') //判断buff中数据是不是"abc"三个字符
{
LED0 =! LED0; //是的话LED闪烁一次
delay_ms(200);
}
if(GetDataBuff[Data_Flag] =='c'&&'d' ) //判断数据是不是"cd"
{
LED1 =! LED1;
delay_ms(200);
}
} |