奇迹的2011 发表于 2015-12-9 23:12:12

STM32 串口通信 发送字符串超过64个字符 出现故障

不知道有没有哪位朋友遇到过从上位机发送超过64个字符的字符串到下位机,下位机将接受到的字符串存入缓存,然后原样输出,在缓存超过64个字符后出现有错误情况如以下帖子一样。
链接:https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=604468&page=1#pid2143334

哪位能找到好的办法解决,能否指点一下我,希望大伙能顶起这个帖子,因为该试的我都试了,还是解决不了。

1.个人觉得STM32下位机接收到的字符串是不是不能超过64个;
2.是不是STM32的串口驱动程序有可以修改的限制发送与接收的字符长度,是我没有找到?

发表于 2015-12-10 09:19:33

用的是那个库?要注意发送的缓冲区。

disheng4688 发表于 2015-12-10 09:42:28

帮顶。                                    

奇迹的2011 发表于 2015-12-10 11:29:31

安 发表于 2015-12-10 09:19
用的是那个库?要注意发送的缓冲区。

3.5的。。。。。。。。。。。。。。。。。

奇迹的2011 发表于 2015-12-10 11:29:57

安 发表于 2015-12-10 09:19
用的是那个库?要注意发送的缓冲区。

比如。。。。。。。。。。。。。。。。。。?

发表于 2015-12-10 14:07:54

接收中断里面看看,缓冲区的大小是多少。

dsjsjf 发表于 2015-12-10 19:20:30

帮顶         

奇迹的2011 发表于 2015-12-10 21:56:47

安 发表于 2015-12-10 14:07
接收中断里面看看,缓冲区的大小是多少。

这是中断部分的。缓存我定义了200个
#define Buf1_Max 120                                           //串口1缓存长度
char Uart1_Buf;
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 = Res1;            //将接收到的字符串存到缓存中               
                //      First_Int1++;
                }
         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
         {
                  USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
                        Res1 =USART_ReceiveData(USART1);
                        Uart1_Buf = Res1;            //将接收到的字符串存到缓存中               
                        First_Int1++;                                        //缓存指针向后移动
                }
         if(First_Int1 > Buf1_Max )                     //如果缓存满,将缓存指针指向缓存的首地址
                {
                        First_Int1 = 0;
                }   
               
}

zhangdaijin 发表于 2015-12-11 08:54:11

:):):):):):)

发表于 2015-12-11 15:24:23

看代码没有问题,这样对比一下发送和接收的数据,还有查看一下是否发生过溢出。
页: [1] 2
查看完整版本: STM32 串口通信 发送字符串超过64个字符 出现故障