小弟初学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 );
- }
- }
复制代码
|