最新回答
這就看你程序邏輯了。UDR表示發(fā)生了underrun錯誤,發(fā)生在從模式的發(fā)送階段的發(fā)送FIFO為空時。
確保在主機啟動時鐘之前,TxFIFO中已經(jīng)有足夠的數(shù)據(jù)。
在TxFIFO為空時,不要清除UDR標志。確保在清除UDR標志之前,TxFIFO中已經(jīng)有數(shù)據(jù)。
至于OVR錯誤,那就比較常見,發(fā)生在接收時前面數(shù)據(jù)沒取走又來新數(shù)據(jù)了。盡量保證數(shù)據(jù)提取的即使性。
合理安排代碼中的中斷,不必要的中斷就別開了,比方DMA傳輸半完成中斷,中斷處理代碼力求簡潔。
可以屏蔽其他代碼試試,或者固定和簡化通訊數(shù)據(jù)。
看看是配置上的問題還是軟件架構上的問題。
閱讀全文