完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
通过串口助手发送一串很长的数据如下上传的图所示,然后下位机原样返回串口助手发送的数据,当发送的字符串超过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); } ************************************************************************************************** *************************************************************************************************** 希望版主能帮忙看看。。这问题困扰了我两个多星期,希望大伙能顶起。。
|
|
相关推荐
1个回答
|
|
|
查看一下你的串口芯片缓存是多大的,有的是64位缓存,是不是发的太快出现丢失
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:53 , Processed in 0.582259 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4387