串口发送程序出现乱码了,找不出来问题在哪里,求大侠!

2019-08-20 16:10发布

[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
        u8 res,data[16];
        int res1,i=0,num=16,index=0;
       
       
       
         if(USART_GetITStatus(USART1,USART_IT_RXNE))//判断接收到数据没
{
     res= USART_ReceiveData(USART1);
           res1=(int)res;//强制转化为int型
         
         
         while(res1>0)//十进制转为二进制并存入data数组中
                {
                data[index] = res1%2+'0';//将INT变为char
                res1 = res1/2;
                index++;
                }
               
                while(i<num)//逐个发送data中的二进制数据
        {
               
                USART_SendData(USART1,data);
                while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);//等待发送完毕
                i++;   
        }

  }
}[/mw_shl_code]



先说说我代码想要实现的功能吧,电脑通过串口发送一个数据给单片机,单片机把这个数据转为ASCII数值,然后再将十进制的ASCII数值变为二进制存到数组data[16]中,最后单片机将data中的元素逐个通过串口发送给电脑。

但是发现会出现乱码,而且转化的二进制也不对,所以就来求助各位大侠了,我是个菜鸡,希望有所错误的地方请各位指出!下面是我电脑接收到乱码的图片 乱码 乱码

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