完善资料让更多小伙伴认识你,还能领取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位缓存,是不是发的太快出现丢失
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:37 , Processed in 0.388747 second(s), Total 42, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号