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
用的是那个库?要注意发送的缓冲区。
3.5的。。。。。。。。。。。。。。。。。 安 发表于 2015-12-10 09:19
用的是那个库?要注意发送的缓冲区。
比如。。。。。。。。。。。。。。。。。。? 接收中断里面看看,缓冲区的大小是多少。 帮顶 安 发表于 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;
}
} :):):):):):) 看代码没有问题,这样对比一下发送和接收的数据,还有查看一下是否发生过溢出。
页:
[1]
2