串口1通讯的问题

2019-03-23 17:05发布

我用STM32F107VCT6写程序。
用观察窗口看到的数据如下:
1.png
可是发出来却变了。
2.png
我程序如下:
void SendEight(void)
{
        u16 i,j;
        GPRS[0]=0X7E;
       
        GPRS[2]=0X00;
        GPRS[3]=0X12;
        GPRS[4]=(PM25q>>8);
        GPRS[5]=(PM25q&0XFF);
        GPRS[6]=(PM10q>>8);
        GPRS[7]=(PM10q&0XFF);
        GPRS[8]=(PM100>>8);
        GPRS[9]=(PM100&0XFF);
        GPRS[10]=(Temperature>>8);
        GPRS[11]=(Temperature&0XFF);
        GPRS[12]=(Humidity>>8);
        GPRS[13]=(Humidity&0XFF);
        GPRS[14]=(WindSpeed>>8);
        GPRS[15]=(WindSpeed&0XFF);
        GPRS[16]=(WindDirectionDang>>8);
        GPRS[17]=(WindDirectionDang&0XFF);
        GPRS[18]=(WindDirection360>>8);
        GPRS[19]=(WindDirection360&0xff);
        GPRS[20]=(Sound>>8);
        GPRS[21]=(Sound&0xff);
        check_sum=0;
        for(i=1;i<22;i++)
                check_sum+=GPRS;
        GPRS[22]=check_sum;
        GPRS[23]=0x7f;
        GPRS1[0]=0x7e;
        j=1;i=1;
        while(GPRS[j]!=0x7f)                        //×aòå
        {
                if(GPRS[j]==0x7d)
                {
                        GPRS1[i++]=0x7d;
                        GPRS1[i++]=0x01;
                }
                else if(GPRS[j]==0x7e)
                {
                        GPRS1[i++]=0x7d;
                        GPRS1[i++]=0x02;
                }
               
                else
                        GPRS1[i++]=GPRS[j];
                j++;
        }
        GPRS1[i++]=0x7f;
       
        //Uart1_SendString(GPRS1,i);
        for(j=0;j<i;j++)
                USART1_Send_Byte(GPRS1[j]);
        delay_ms(20);
}

请高手给看看,哪里有问题,谢谢!


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。