關於用串口IDLE中斷,DMA_GetCurrDataCounter()函數值不變的問題

把STM32F103C8T6的USART1 RX配置成用DMA接收,再打開IDLED中斷,

然後再在IDLE中斷時讀取DMA的數據,這時就要去讀取DMA_GetCurrDataCounter(DMA1_Channel5);有傳輸了多少人數據。

但是,每次讀到的數值都是不變的!!!可是DMA讀出來的數據都是正確的。到底是什麼原因呢。

然後仔細觀察數據時會發現,每次IDLE時讀到的數據都是上一幀的數據。這TM奇怪了。都懷疑人生了。

 

最後誤打誤撞時發現,進IDLED中斷後要讀SR,然後讀DR寄存器才能清除本次中斷,不然下次進來還是這次中斷,下下次纔是次中斷。

temp=USART1->SR;
temp=USART1->DR;

之前一直不行原來是自己把USART1寫成USART4了。。。。。。。。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章