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