關於STM32使用DMA資料丟失的問題

2021-10-05 21:01:30 字數 353 閱讀 7055

一、最後兩個位元組丟失的問題

這個我在使用之前就看了相關的資料,說是使用dma傳送完成中斷來判斷是否傳送完成,就會出現最後兩個位元組丟失的問題。解決方法有說使用延時的,但是這種方式不是很好,對於自己做著玩可以,還有乙個解決方式是使用uart傳送完成中斷來判斷是否傳送完成,我就使用了這種方法沒有出現兩位元組丟失的問題。

二、後半部分位元組丟失的問題

我使用rs485+dma傳送資料,但是發現很低的概率會出現後半部分丟失的問題,丟失的位元組也是不固定的,這裡是我自己寫程式不注意,在呼叫dma傳送函式的時候,把乙個區域性陣列位址傳到了dma中,這就造成了dma還沒有傳送完成,區域性變數的生命週期就結束了,造成不可預知的錯誤,而我這裡就表現為dma資料丟失的現象。

STM32外設DMA使用總結

stm32外設dma使用總結 1 根據需要選擇dam模式 1 迴圈模式 dma mode dma mode circular 2 正常模式 dma mode dma mode normal 2 對於dma1的chanel3,對應外設為usart3的rx 試想 如果串列埠接收中斷和dam中斷同時開啟,...

STM32使用DMA方式Printf

使用庫函式除錯printf時需要占用系統資源所以採用dma方式來printf資料 兩種實現方式 pre 已經有dma傳送管理函式 include stdio.h include stdarg.h brief modbus傳送管理 void startmodbustranst uart handlet...

STM32中DMA的使用入門

今天剛看了乙個adc採集的程式,和之前用其他微控制器寫的程式還是有比較大的差別,這個差別主要就在dma。這裡面總結一下,有一部分是 別人的。什麼是stm32 的dma 其全稱是 direct memory access 根據st 公司提供的相關資訊,dma是 stm32 中乙個獨立與 cortex ...