ESP8266与STM32通讯,串口通讯出现数据丢失。
小弟初学STM32不久,做的是wifi模块与STM32的通讯与数据处理,现在我有组数据,数据的HEX码如下:01 03 05 00 00 00 00 7F 7A 00 00 2C E5由于STM32函数的原因,串口只能打印:01 03 05 但我想调用数据7F 7A 应该如何修改这些函数或者有什么其他方法呢?谢谢大神指点:'(STM32接收数据代码:
char * ESP8266_ReceiveString ( FunctionalState enumEnUnvarnishTx )
{
char * pRecStr = 0
strEsp8266_Fram_Record .InfBit .FramLength = 0;
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;
while ( ! strEsp8266_Fram_Record .InfBit .FramFinishFlag );
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';
if ( enumEnUnvarnishTx )
{
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, ">" ) )
pRecStr = strEsp8266_Fram_Record .Data_RX_BUF;
}
else
{
if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD" ) )
pRecStr = strEsp8266_Fram_Record .Data_RX_BUF;
}
return pRecStr;
}STM32串口打印代码:void USART2_printf( USART_TypeDef* USARTx, char *Data, ... )
{
int n;
const char *s;
int d;
char buf;
int i;
va_list ap;
va_start(ap, Data);
n=sizeof(Data);
for (i=0;i<n;i++)
{
if ( *Data == 0x5c )//'\'
{
switch ( *++Data )
{
case 'r':
USART_SendData(USARTx, 0x0d);
Data ++;
i++;
continue;
case 'n':
USART_SendData(USARTx, 0x0a);
Data ++;
i++;
continue;
default:
Data ++;
i++;
continue;
}
}
else if ( *Data == '%')
{ //
switch ( *++Data )
{
case 's':
s = va_arg(ap, const char *);
for ( ; *s; s++)
{
USART_SendData(USARTx,*s);
while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
}
Data++;
i++;
continue;
case 'd':
d = va_arg(ap, int);
itoa(d, buf, 10);
for (s = buf; *s; s++)
{
USART_SendData(USARTx,*s);
while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
}
Data++;
i++;
continue;
default:
Data++;
i++;
continue;
}
}/*end of else if */
USART_SendData(USARTx, *Data++);
while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
}
}
看看,,,,,,,,, 自己帮顶,求大神解救{:3_59:}
页:
[1]