把CAN线接收到的数据发送给串口(16进制显示)监视,出现开始1位丢失,求大神指导我的 TOHEX()子函数

2019-08-28 13:34发布

本帖最后由 hzf924999023 于 2017-3-22 16:46 编辑

void TOHEX(u8 num)//转换成16进制
{  
           u8 strbuffer[10];              
                 if(num>15){sprintf((char*)strbuffer ,"%X" ,num);}//显示16进制保留2位}
                         else if(num<=15){sprintf((char*)strbuffer ,"%02X" ,num);}
                        

         
        
              USART_SendData(USART1, strbuffer[0]);//向串口1发送数据
                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送完成
                        
               
                         USART_SendData(USART1, strbuffer[1]);//向串口1发送数据
                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送完成
                                          
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        key=Can_Receive_Msg(canbuf_R);//收到数据标志
                                if(key)//接收到有数据
                                {               
           printf(" CAN接收: ");
                                       
                                        LCD_Fill(0,270,280,310,WHITE);//清屏
                                        for(i=0;i<key;i++)
                                        {                                                                           
                                                if(i<8)LCD_ShowxNum(0+i*25,270,canbuf_R,2,16,0X80,16);        //显示数据
                                                else LCD_ShowxNum(0+(i-4)*25,290,canbuf_R
,2,16,0X80,16);        //显示数据
                                                TOHEX(canbuf_R);发送给串口,做监视用
                                        }
                                       
                                       
                                         printf(" ");
                                        key=0;
                                }


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。