两单片机的串口通信问题

2019-07-20 21:52发布

模仿匿名的上位机传输方式发送板
[mw_shl_code=c,true]void usart1_send_char(u8 c)
{
USART_SendData(USART1,c);        
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕   
         
}
//传送数据给匿名四轴上位机软件(V2.6版本)
//fun:功能字. 0XA0~0XAF
//data:数据缓存区,最多28字节!!
//len:data区有效数据个数
void usart1_niming_report(u8 fun,u8*data,u8 len)
{
        u8 send_buf[32];
        u8 i;
        if(len>28)return;        //最多28字节数据
        send_buf[len+3]=0;        //校验数置零
        send_buf[0]=0X88;        //帧头
        send_buf[1]=fun;        //功能字
        send_buf[2]=len;        //数据长度
        for(i=0;i<len;i++)send_buf[3+i]=data;                        //复制数据
        for(i=0;i<len+3;i++)send_buf[len+3]+=send_buf;        //计算校验和       
        for(i=0;i<len+4;i++)usart1_send_char(send_buf);        //发送数据到串口1
}
//发送加速度传感器数据和陀螺仪数据
//aacx,aacy,aacz:x,y,z三个方向上面的加速度值
//gyrox,gyroy,gyroz:x,y,z三个方向上面的陀螺仪值
void position_send_data(short x,short y,short mode)
{
        u8 tbuf[6];
        tbuf[0]=(x>>8)&0XFF;
        tbuf[1]=x&0XFF;
        tbuf[2]=(y>>8)&0XFF;
        tbuf[3]=y&0XFF;
        tbuf[4]=(mode>>8)&0XFF;
        tbuf[5]=mode&0XFF;

        usart1_niming_report(0XA1,tbuf,6);//自定义帧,0XA1
}       
[/mw_shl_code]
发送可以,
接收的板子却怎么也接收不到想了好久一直不行,求助大家了
[mw_shl_code=c,true]void RC_solve(void)
{  
         u8 sum = 0;
          u8 i=0;
        for(;i<31;i++)
                {
                        cmd[i++]=USART_ReceiveData(USART1);
                        sum += USART_ReceiveData(USART1);
                }
        if(!(sum==cmd[31]))                return;                //判断sum
        if(!(cmd[0]==0x88))                return;                //判断帧头
        if(cmd[1]==0xA1)                                                                //判断功能字,=0xA1,为接收数据
        {
                RC_x = (vs16)(cmd[3]<<8)|cmd[4];
                RC_y= (vs16)(cmd[5]<<8)|cmd[6];
                aa        = (vs16)(cmd[7]<<8)|cmd[8];
        }
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。