初级会员

- 积分
- 83
- 金钱
- 83
- 注册时间
- 2018-3-14
- 在线时间
- 19 小时
|
1金钱
本帖最后由 LGM1874 于 2018-4-1 22:55 编辑
串口通过esp8266接收手机发送数据的问题,回显数据格式为(回车换行+IPD,0,字符串长度:字符串)
手机发送led_on和led_off
printf出来应该是+IPD,0,6,led_on和+IPD,0,7,led_off
但是无法实现
请问有老师知道是什么问题嘛?
[mw_shl_code=c,true]
void USART3_IRQHandler(void)
{
u8 res,BufLen,LenBit;
u8 SendLen=0;
u8 SendLen1=0;
u8 SendLen2=0;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//½óêÕμ½êy¾Y
{
res =USART_ReceiveData(USART3);
if((USART3_RX_STA&(1<<15))==0)//½óêÕíêμÄò»Åúêy¾Y,»1ûóD±»′|àí,Ôò2»Ôù½óêÕÆäËûêy¾Y
{
if(USART3_RX_STA<USART3_MAX_RECV_LEN) //»1¿éòÔ½óêÕêy¾Y
{
USART3_RX_BUF[USART3_RX_STA++]=res; //¼Ç¼½óêÕμ½μÄÖμ
if(USART3_RX_BUF[0]!=0x0d)//èç1û½óêüμ½»ØÏÔû½óêÕμ½êÖ»úêy¾Y
{
if(res==0x0a)
USART3_RX_STA|=1<<15;
}
else
{
if((USART3_RX_BUF[USART3_RX_STA-1]==':')&&(USART3_RX_BUF[USART3_RX_STA-3]==','))//»ñè¡¿í»§¶Ë·¢Ëí×Ö·û′®3¤¶è
{
LenBit=1;
SendLen=USART3_RX_BUF[USART3_RX_STA-2]-'0';
BufLen=LenBit+SendLen+10;
printf("¿í»§¶Ë×Ö·û′®3¤¶è=%c\r\n",USART3_RX_BUF[USART3_RX_STA-2]);
}
if((USART3_RX_BUF[USART3_RX_STA-1]==':')&&(USART3_RX_BUF[USART3_RX_STA-4]==','))
{
LenBit=2;
SendLen1=USART3_RX_BUF[USART3_RX_STA-2]-'0';
SendLen2=USART3_RX_BUF[USART3_RX_STA-3]-'0';
SendLen=10*SendLen1+SendLen2;
BufLen=LenBit+SendLen+10;
printf("¿í»§¶Ë×Ö·û′®3¤¶è=%c%c\r\n",USART3_RX_BUF[USART3_RX_STA-3],USART3_RX_BUF[USART3_RX_STA-2]); //»ñè¡¿í»§¶Ë·¢Ëí×Ö·û′®3¤¶è
}
if((SendLen!=0)&&(USART3_RX_STA&0x3fff)>(BufLen-1))
USART3_RX_STA|=1<<15;
}
}
}
}
else
{
USART3_RX_STA|=1<<15;
}
}
[/mw_shl_code] |
-
初始化完成后手机端发送led_on,能正确计算字符串长度,但是无法使USART3_RX_STA置1
|