OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2168|回复: 0

将接受的数据发送出去,有丢失

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-7-18
在线时间
9 小时
发表于 2017-7-18 10:53:48 | 显示全部楼层 |阅读模式
1、接收到三个数据包,但用串口打印出来只能显示两个。
2、添加后不可以连续接受多个数据包,但可以连续接受单个数据包
void USART3_IRQHandler(void)
{
        u8 inbyte;
        inbyte = USART_ReceiveData(USART3);
       
        if ( sio_rx_buf.len  >= (SIO_BYTE_BUF_MAX - 1) )
        {
                sio_rx_buf.len = 0;
                sio_byte_buf_flush(&sio_rx_buf);
        }
       
        if ( (sio_rx_buf.len == 0 ) && (inbyte != RCP_PKT_PRAMBL)  )
        {
                return;
        }

        sio_byte_buf_enqueue(&sio_rx_buf, inbyte);

        if(sio_rx_buf.len >= (sio_rx_buf.data[4] + RCP_HEADEND_CRC_LEN))
        {
                if(        sio_rx_buf.data[sio_rx_buf.data[4] + RCP_PRAMBL_LEN + RCP_HEADER_LEN] == RCP_PKT_ENDMRK)
                {                       
                        sio_post_received_data(&sio_rx_buf.data[0],sio_rx_buf.len);
                }

        }
}

void sio_post_received_data(u8* data, u8 len)
{

        while(len--)
        {
    while((USART1->SR&0x40)==0);       
        USART_SendData(USART1,*data++);                                                //将接收到的数据发送出去

        }       
        sio_byte_buf_flush(&sio_rx_buf);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-19 01:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表