485通信实验,测试数据到串口,通过485通信线连接到电脑上,在调试助手ATKXcom上显示的数据全是乱码?求解!!

2019-07-20 10:59发布

使用原子提供库函数例程,实验26,485通信实验,测试数据到串口,通过485通信线连接到电脑上,在调试助手ATKXcom上显示的数据全是乱码?求解!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
intelligent
2019-07-21 08:20

先将数据转换成字符串形式,然后再通过485输出就可以了,试下下面的代码,经过验证可以正常显示。

int main(void)
{
  u8 rs485buf[5];
u8 tbuf[5];  
u8 x[8][5]={"",};
  u8 str[]=" ";
u8 len=0;
u8 key;
u8 i=0,t=0;
u8 cnt=0;
    HAL_Init();                     //³õʼ»¯HAL¿â   
    Stm32_Clock_Init(360,25,2,8);   //ÉèÖÃʱÖÓ,180Mhz
    delay_init(180);                //³õʼ»¯ÑÓʱº¯Êý
    uart_init(115200);              //³õʼ»¯USART
    LED_Init();                     //³õʼ»¯LED
    KEY_Init();                     //³õʼ»¯°´¼ü
    SDRAM_Init();                   //³õʼ»¯SDRAM
    LCD_Init();                     //³õʼ»¯LCD
RS485_Init(9600);          //³õʼ»¯RS485
   POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");
LCD_ShowString(30,70,200,16,16,"RS485 TEST");
   LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2016/1/16");   
LCD_ShowString(30,130,200,16,16,"KEY0:Send"); //ÏÔʾÌáʾÐÅÏ¢  
POINT_COLOR=BLUE;//ÉèÖÃ×ÖÌåΪÀ¶É«   
LCD_ShowString(30,150,200,16,16,"Count:");   //ÏÔʾµ±Ç°¼ÆÊýÖµ
LCD_ShowString(30,170,200,16,16,"Send Data:");  //Ìáʾ·¢Ë͵ÄÊý¾Ý
LCD_ShowString(30,210,200,16,16,"Receive Data:"); //Ìáʾ½ÓÊÕµ½µÄÊý¾Ý  
            
while(1)
   {
    key=KEY_Scan(0);
    if(key==KEY0_PRES)//KEY0°´ÏÂ,·¢ËÍÒ»´ÎÊý¾Ý
    {
     for(i=0;i<5;i++)
     {
      rs485buf[i]=cnt+i;//&Igrave;&icirc;&sup3;&auml;·&cent;&Euml;&Iacute;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;
      
      LCD_ShowxNum(30+i*32,190,rs485buf[i],3,16,0X80); //&Iuml;&Ocirc;&Ecirc;&frac34;&Ecirc;&yacute;&frac34;&Yacute;
     //printf("rs485buf[i] %d ",rs485buf[i]);  
     
      }
        for (i=0;i<5;i++)
    {
    sprintf(&x[i][0],"%4d",rs485buf[i]);
     RS485_Send_Data(&x[i][0],5);//·&cent;&Euml;&Iacute;5&cedil;&ouml;×&Ouml;&frac12;&Uacute;   
    }
        RS485_Send_Data(str,2);//·&cent;&Euml;&Iacute;2&cedil;&ouml;×&Ouml;&frac12;&Uacute;      
    }   
   RS485_Receive_Data(rs485buf,&key);
   if(key)//&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&Oacute;&ETH;&Ecirc;&yacute;&frac34;&Yacute;
    {
      if(key>5)key=5;//×&icirc;&acute;ó&Ecirc;&Ccedil;5&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;.
       for(i=0;i<key;i++)LCD_ShowxNum(30+i*32,230,rs485buf[i],3,16,0X80); //&Iuml;&Ocirc;&Ecirc;&frac34;&Ecirc;&yacute;&frac34;&Yacute;
      }
    t++;
   delay_ms(10);
   if(t==20)
   {
    LED0=!LED0;//&Igrave;á&Ecirc;&frac34;&Iuml;&micro;&Iacute;&sup3;&Otilde;&yacute;&Ocirc;&Uacute;&Ocirc;&Euml;&ETH;&ETH;
    t=0;
    cnt++;
    LCD_ShowxNum(30+48,150,cnt,3,16,0X80); //&Iuml;&Ocirc;&Ecirc;&frac34;&Ecirc;&yacute;&frac34;&Yacute;
   }     
  }        
}


一周热门 更多>