微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32上位机通过串口发送大数据返回接收异常

STM32上位机通过串口发送大数据返回接收异常

时间:10-02 整理:3721RD 点击:
通过串口助手发送一串很长的数据如下上传的图所示,然后下位机原样返回串口助手发送的数据,当发送的字符串超过62个左右时,返回接收的数据在固定位置出现异常,如下图所示。发送的数据不超过62个时,发送的数据与返回数据没有异常,

1.串口中断接收的程序:
void USART1_IRQHandler(void)                        
{
                        char Res1=0;            //(USART_GetFlagStatus)
                        
         if(USART_GetFlagStatus(USART1, USART_FLAG_ORE ) ==SET)//数据过载错误 。USART_IT_ORE          USART_GetFlagStatus
                {
                    USART_ClearFlag(USART1, USART_FLAG_ORE );
                        USART_ReceiveData(USART1);
                //        Res1 =USART_ReceiveData(USART1);
                //        Uart1_Buf[First_Int1] = Res1;            //将接收到的字符串存到缓存中               
                //        First_Int1++;
                }
         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
           {
                    USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
                        Res1 =USART_ReceiveData(USART1);  
                        Uart1_Buf[First_Int1] = Res1;            //将接收到的字符串存到缓存中               
                        First_Int1++;                                        //缓存指针向后移动
                }
         if(First_Int1 > Buf1_Max )                       //如果缓存满,将缓存指针指向缓存的首地址
                {
                        First_Int1 = 0;
                }   
                 
}
2.接收到上位机数据后原样输出的程序:
        if(Find1("901A905300"))   //901A905300检查电话卡属于哪个网络
         {         
          UART1_SendString(Uart1_Buf);
          }
**************************************************************************************************
***************************************************************************************************
希望小编能帮忙看看。这问题困扰了我两个多星期,希望大伙能顶起。

红色框框为出现异常位位置


查看一下你的串口芯片缓存是多大的,有的是64位缓存,是不是发的太快出现丢失

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top