如圖所指示,有些不理解;使用的是透傳例程,因為我做的透傳模塊需要接受AT指令并解析,所以進(jìn)行指令解析測試;利用了串口超時中斷對數(shù)據(jù)包進(jìn)行處理;另外串口超時機(jī)制也是很疑惑,如果我不用4字節(jié)觸發(fā),直接屏蔽case UART_II_RECV_RDY的話,超時也無法觸發(fā)了,不屏蔽的話又會產(chǎn)生一個數(shù)據(jù)包不完整的無效中斷,所以我將程序改成了第二章圖的樣子;這兩張圖是我現(xiàn)在的測試代碼,出現(xiàn)了圖1描述的奇怪現(xiàn)象。。。;請哪位大神幫忙看下,搞了半天了沒搞明白串口機(jī)制,感謝;圖中所說的發(fā)送“AT+TEST”是指發(fā)送的“AT+TEST\r\n”
2022.08.12更新:熬夜到3點(diǎn)鐘算是有點(diǎn)理解串口工作機(jī)制了:超時中斷必須以觸發(fā)中斷為前提,如果觸發(fā)設(shè)置為4字節(jié),只發(fā)送四字節(jié)數(shù)據(jù)是會產(chǎn)生觸發(fā)中斷,也就是數(shù)據(jù)有效中斷,但不會觸發(fā)超時中斷,發(fā)送5個字節(jié)產(chǎn)生一次數(shù)據(jù)有效中斷和一次超時中斷,這樣我發(fā)送一個20字節(jié)的數(shù)據(jù)要觸發(fā)5次數(shù)據(jù)有效中斷。。。,每一次中斷都會置位串口接收標(biāo)志,也就是在原SDK中執(zhí)行了5次TMOS UART_TO_BLE_SEND_EVT。雖然有些理解了,但還是有一個問題,我們一直應(yīng)用的AT指令的問題,串口發(fā)送來的AT指令,我需要做解析才能確定是否透傳或者設(shè)置藍(lán)牙本身工作狀態(tài),所以我將觸發(fā)字節(jié)設(shè)置為1,一直接收數(shù)據(jù),判斷接收到\r\n才認(rèn)為接收完成,判斷數(shù)據(jù)是指令還是透傳數(shù)據(jù),是指令的話執(zhí)行操作,是數(shù)據(jù)的話去掉AT指令前綴,將數(shù)據(jù)一次透傳過去。但是這樣卻會導(dǎo)致不斷重啟。。。。,難受,請問根據(jù)我的項目需求,有沒有好的方案,感謝
????????????????????????????????????????????????????????????????????????????????????????????圖1 Uart數(shù)據(jù)處理函數(shù)
????????????????????????????????????????????????????????????????????????????????????????????????????圖2 Uart3中斷處理函數(shù)