如果USART_RX_BUF[0]里的数据是0xf8,
snprintf(temp, sizeof temp, "%X", USART_RX_BUF[0]);
temp[0]的值为0x46;
temp[1]的值为0x38;
这都没问题,但是如果USART_RX_BUF[0]里的数据是0x00;
就只有temp[0]的值为0x30;而temp[1]的值为0x00;
不知道为什么,怎样才能让temp[0],temp[1]内的值都为0x30呢??
很急急急急急急急急急急!!
在线等
把源码贴上来,你这问题问的没头没脑的!
void UART1SendByte(void) { int a; int t; // USART_SendData(USART1,SendData); for(a=3;a<19;a++) { // snprintf(temp, sizeof temp, "%X", USART_RX_BUF[a]); snprintf(temp, 3, "%02X", USART_RX_BUF[a]); // while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET); for(t=0;t<2;t++) { //u8 data=USART1_Sed_buf[t]; USART_SendData(USART1, temp[t]);//向串口1发送数据 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束 } } }
snprintf(temp, sizeof temp, "%02X", USART_RX_BUF[0]);
%02x 格式控制: 以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0