你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ESP8266与STM32通讯,串口通讯出现数据丢失。

[复制链接]
chenran0001 提问时间:2015-7-21 14:07 /
小弟初学STM32不久,做的是wifi模块与STM32的通讯与数据处理,现在我有组数据,数据的HEX码如下:01 03 05 00 00 00 00 7F 7A 00 00 2C E5由于STM32函数的原因,串口只能打印:01 03 05 但我想调用数据7F 7A 应该如何修改这些函数或者有什么其他方法呢?谢谢大神指点
STM32接收数据代码:
  1. char * ESP8266_ReceiveString ( FunctionalState enumEnUnvarnishTx )
  2. {
  3.         char * pRecStr = 0
  4.         strEsp8266_Fram_Record .InfBit .FramLength = 0;
  5.         strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;  
  6.         while ( ! strEsp8266_Fram_Record .InfBit .FramFinishFlag );
  7.         strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';
  8.         if ( enumEnUnvarnishTx )
  9.         {
  10.                 if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, ">" ) )
  11.                         pRecStr = strEsp8266_Fram_Record .Data_RX_BUF;

  12.         }
  13.         else
  14.         {
  15.                 if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD" ) )
  16.                         pRecStr = strEsp8266_Fram_Record .Data_RX_BUF;
  17.         }
  18.         return pRecStr;
  19. }
复制代码
STM32串口打印代码:
  1. void USART2_printf( USART_TypeDef* USARTx, char *Data, ... )
  2. {
  3.         int n;
  4.         const char *s;
  5.   int d;   
  6.   char buf;
  7.         int i;
  8.         
  9.   va_list ap;
  10.   va_start(ap, Data);
  11.         
  12.         n=sizeof(Data);

  13.         for (i=0;i<n;i++)  
  14.         {                                                         
  15.                 if ( *Data == 0x5c )  //'\'
  16.                 {                                                                          
  17.                         switch ( *++Data )
  18.                         {
  19.                                 case 'r':
  20.                                         USART_SendData(USARTx, 0x0d);
  21.                                         Data ++;
  22.                                   i++;
  23.                                         continue;

  24.                                 case 'n':
  25.                                         USART_SendData(USARTx, 0x0a);        
  26.                                         Data ++;
  27.                                   i++;
  28.                                         continue;
  29.                                 
  30.                                 default:
  31.                                         Data ++;
  32.                                   i++;
  33.                                   continue;
  34.                         }                        
  35.                 }
  36.                 else if ( *Data == '%')
  37.                 {                                                                          //
  38.                         switch ( *++Data )
  39.                         {                                
  40.                                 case 's':                                                                                 
  41.                                         s = va_arg(ap, const char *);
  42.           for ( ; *s; s++)
  43.                                         {
  44.                                                 USART_SendData(USARTx,*s);
  45.                                                 while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
  46.           }
  47.                                         Data++;
  48.                                         i++;
  49.           continue;

  50.        case 'd':                                                                                
  51.           d = va_arg(ap, int);
  52.           itoa(d, buf, 10);
  53.           for (s = buf; *s; s++)
  54.                                         {
  55.                                                 USART_SendData(USARTx,*s);
  56.                                                 while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
  57.           }
  58.                                         Data++;
  59.                                         i++;
  60.           continue;
  61.                                  default:
  62.                                                 Data++;
  63.                                     i++;
  64.                                     continue;
  65.                         }                 
  66.                 }  /*end of else if */
  67.                  USART_SendData(USARTx, *Data++);
  68.                 while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
  69.         }
  70. }
复制代码


收藏 评论2 发布时间:2015-7-21 14:07

举报

2个回答
stary666 回答时间:2015-7-21 17:45:30
看看,,,,,,,,,
chenran0001 回答时间:2015-7-21 18:03:58
自己帮顶,求大神解救
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版