串口通信中遇到的问题
CPU是STM32F103CB,无操作系统。
通过UART1接受GPRS发来的数据,在中断函数中 USART1_IRQHandler 中进行处理
unsigned char a_GPRSData[500];
unsigned int g_DataLength;
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
a_GPRSData[g_DataLength] = USART_ReceiveData(USART1);
g_DataLength++;
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
UART1设置如下:
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_Init(USART1, &USART_InitStructure);
现在的问题是:
每次当接收的GPRS一包数据长度超过128字节,从a_GPRSData[127]开始到a_GPRSData[499],取得的数据便是错误的,而且是百分之百从a_GPRSData[127]开始的,从a_GPRSData[0]到a_GPRSData[126]的数据都没有问题,而且从UART1发送数据超过128字节也没有问题。请问高手这是怎么回事?
是不是由于串口存在什么所谓的硬件接收缓冲只有128字节,这点从芯片手册上没有看到啊。
还是这是不是和串口的设置有什么关系?
或者是其他什么问题,如何解决?
通过UART1接受GPRS发来的数据,在中断函数中 USART1_IRQHandler 中进行处理
unsigned char a_GPRSData[500];
unsigned int g_DataLength;
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
a_GPRSData[g_DataLength] = USART_ReceiveData(USART1);
g_DataLength++;
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
UART1设置如下:
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_Init(USART1, &USART_InitStructure);
现在的问题是:
每次当接收的GPRS一包数据长度超过128字节,从a_GPRSData[127]开始到a_GPRSData[499],取得的数据便是错误的,而且是百分之百从a_GPRSData[127]开始的,从a_GPRSData[0]到a_GPRSData[126]的数据都没有问题,而且从UART1发送数据超过128字节也没有问题。请问高手这是怎么回事?
是不是由于串口存在什么所谓的硬件接收缓冲只有128字节,这点从芯片手册上没有看到啊。
还是这是不是和串口的设置有什么关系?
或者是其他什么问题,如何解决?
...全文
相关推荐
Android 串口通信权限问题
在Android平台上进行串口通信时,开发者可能会遇到一系列权限相关的问题。串口通信是指设备间的通信方式,通过串行接口(如UART)进行数据传输,常用于嵌入式开发、物联网应用以及硬件调试等场景。
串口通信关于串口找不到的问题
"串口通信关于串口找不到的问题"串口通信是计算机与外部设备之间的一种常用的通讯方式,但是在使用串口通信时,一些开发者可能会遇到串口找不到的问题。
C# 串口通信(彻底解决C#串口通信中的数据丢失问题)
### C#串口通信详解与数据丢失问题的解决方法#### 概述串口通信是一种常见的设备间数据传输方式,在工业控制、自动化测试等领域应用广泛。
关于串口通信的常见问题及解答
**串口通信中的常见问题** - **数据同步问题**:由于串口通信是异步的,如果收发两端的波特率不一致,会导致数据无法正确解析。
串口通信以及232,485,422常见问题
在使用串口通信时,需要注意一些常见的问题,如电磁干扰、信号衰减、接地问题等。这些问题可以通过设置正确的串口通信参数、选择合适的串口通信标准和使用屏蔽线等方式来解决。


单片机/工控
