27,375
社区成员
发帖
与我相关
我的任务
分享
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 );
}
}
改了之后,还是不能01 03 05 00 00 00 00 7F 7A 00 00 2C E5显示7F 7A的数据,是什么原因呢?void USART2_printf( USART_TypeDef* USARTx, char *Data, uint n)
{
uint i;
for(i=0;i<n;i++)
{
USART_SendData(USARTx, *Data);
Data++;
}
}