申明下:我发的字符串格式是这样的: “F0AF”
两个‘F’是用来判断数据的正确性的 ‘A’这个数据就是我需要的。求人帮忙!!!谢谢!!
void USART1_IRQHandler(void) //串口1中断服务程序
{
int i=0;
if(USART_Ge
tiTStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是‘F’,'F'结尾)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
USART_RX_BUF[Usart1_Rx_Num]=USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
Usart1_Rx_Num++;}
//判断数据的正确性
if((USART_RX_BUF[0]==0x46)&&(USART_RX_BUF[Usart1_Rx_Num-1]==0x46)) //数据时'F' 'F'开头与结尾 例如'F0AF'
USART_RX_STA=1;//接收标志位
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)//清除溢出错误标志位
{
USART_ClearFlag(USART1,USART_FLAG_ORE);//清除
USART_ReceiveData(USART2);//读DR
}
if(USART_RX_STA)
{ switch (USART_RX_BUF[2]) {
case 0x41:run();break;
case 0x42:right();break;
case 0x43:left();break;
case 0x44:back();break; }
for(;i
你可以连上仿真器设个断点看看,能不能收到数据,数据个数对不对,然后在考虑后面的比较问题
一周热门 更多>