|
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字节,这点从芯片手册上没有看到啊。
还是这是不是和串口的设置有什么关系?
或者是其他什么问题,如何解决?
|
|