void UART3_IRQHandler(void)
{
volatile uint8_t i = 0;
switch(UART3_GetITFlag())
{
case UART_II_LINE_STAT: // 线路状态错误
{
UART3_GetLinSTA();
break;
}
case UART_II_RECV_RDY: // 数据达到设置触发点
for(i = 0; i != (trigB -1); i++)
{
RxBuff[i] = UART3_RecvByte();
UART3_SendByte(RxBuff[i]);
}
break;
case UART_II_RECV_TOUT: // 接收超时,暂时一帧数据接收完成
i = UART3_RecvString(RxBuff); //123456789
PRINT("RxBuff_1=%s\r\n",RxBuff); //67895
UART3_SendString(RxBuff, i); //123456789
PRINT("RxBuff_2=%s\r\n",RxBuff); //67895
// strcpy(TestBuf1,RxBuff); //67895
// EEPROM_ERASE(0, EEPROM_BLOCK_SIZE);
// EEPROM_WRITE(0, TestBuf1, 1024); //串口接收到的数据保存到flash中:蓝牙名字
// PRINT("TestBuf1 = %s\n",TestBuf1);//67895
PRINT("uart3_11111\n");
break;
case UART_II_THR_EMPTY: // 发送缓存区空,可继续发送
break;
case UART_II_MODEM_CHG: // 只支持串口0
break;
default:
break;
}
FLAG = 0; //接收数据完成,关闭停止进入睡眠的标志
}
我串口给uart3发送数据123456789,然后打印RxBuff显示为67895(错误的);可ch582m的uart3在会给我的串口又是123456789(正确的);再次打印RxBuff又显示为67895(错误的);
并且我发好像只能保存6字节以下,6的倍数会被自动清除;例如我发送123456,数据全是正确的,打印RxBuff显示为7;我发送1234567,打印RxBuff显示为7。
并且我对RxBuff的数据进行任何操作,里面的数据都是错误的,只有UART3_SendString的数据是对的。
请教一下为什么呢?