STM32通过串口如何接收服务器发来的数据代码如下:
//在stm32f10x_it.c中的代码 void USART1_IRQHandler(void) { u8 GetData; if(USART_GetITStatus(USART1, USART_IT_RXNE)!=RESET) { USART_ClearITPendingBit(USART1,USART_IT_RXNE); GetData=(u8)USART_ReceiveData(USART1)&0xff; Usart1_buf[usart1_lent]=GetData; usart1_lent++; } if (USART_GetITStatus(USART1, USART_IT_TC) != RESET) { USART_ITConfig(USART1, USART_IT_TC, DISABLE); USART_ClearITPendingBit(USART1, USART_IT_TC); } if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET) { USART_ClearFlag(USART1,USART_FLAG_ORE); USART_ReceiveData(USART1); } } //main()函数中的代码 //服务器发来的数据放在Usart1_buf数组中 u8 Usart1_buf[256]; unsigned int usart1_lent = 0; void check_ser(void) { a = strstr(Usart1_buf, "1"); b = strstr(Usart1_buf, "12"); c = strstr(Usart1_buf, "123"); d = strstr(Usart1_buf,"1234"); if(NULL != a && usart1_lent==1)//当服务器发来1时干某事 { } else if(NULL != b && usart1_lent==2)//当服务器发来12时干某事 { } else if(NULL != c && usart1_lent==3)//当服务器发来123时干某事 { } else if(NULL != d && usart1_lent==4)//当服务器发来1234时干某事 { } else if(Usart1_buf[0]=='['&&Usart1_buf[17]==']'&& usart1_lent==18)//判断是否为获取时间参数 { } else if (Usart1_buf[0]=='O'&&Usart1_buf[1]=='K' && usart1_lent==2)//判断是否为普通心跳返回 { } }