void UART3_IRQHandler(void)
{
? ? volatile uint8_t i = 0;
? ? switch(UART3_GetITFlag())
? ? {
? ? ? ? case UART_II_LINE_STAT: // 線路狀態(tài)錯誤
? ? ? ? {
? ? ? ? ? ? UART3_GetLinSTA();
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? case UART_II_RECV_RDY: // 數(shù)據(jù)達到設置觸發(fā)點
? ? ? ? ? ? for(i = 0; i != (trigB -1); i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? RxBuff[i] = UART3_RecvByte();
? ? ? ? ? ? ? ? UART3_SendByte(RxBuff[i]);
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case UART_II_RECV_TOUT: // 接收超時,暫時一幀數(shù)據(jù)接收完成
? ? ? ? ? ? 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); //串口接收到的數(shù)據(jù)保存到flash中:藍牙名字
//? ? ? ? ? ? PRINT("TestBuf1 = %s\n",TestBuf1);//67895
? ? ? ? ? ? PRINT("uart3_11111\n");
? ? ? ? ? ? break;
? ? ? ? case UART_II_THR_EMPTY: // 發(fā)送緩存區(qū)空,可繼續(xù)發(fā)送
? ? ? ? ? ? break;
? ? ? ? case UART_II_MODEM_CHG: // 只支持串口0
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? break;
? ? }
? ? FLAG = 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//接收數(shù)據(jù)完成,關閉停止進入睡眠的標志
}
我串口給uart3發(fā)送數(shù)據(jù)123456789,然后打印RxBuff顯示為67895(錯誤的);可ch582m的uart3在會給我的串口又是123456789(正確的);再次打印RxBuff又顯示為67895(錯誤的);
并且我發(fā)好像只能保存6字節(jié)以下,6的倍數(shù)會被自動清除;例如我發(fā)送123456,數(shù)據(jù)全是正確的,打印RxBuff顯示為7;我發(fā)送1234567,打印RxBuff顯示為7。
并且我對RxBuff的數(shù)據(jù)進行任何操作,里面的數(shù)據(jù)都是錯誤的,只有UART3_SendString的數(shù)據(jù)是對的。
請教一下為什么呢?