單片機模塊化程序: 單片機發送數據之緩存管理,DMA


------------恢復內容開始------------

 

 

 

 1. 前言

 在單片機通信項目中,經常會用到發送數據,大家有沒有想過什么方式才是最優的方式?
大家是否想過有沒有什么標准的方案可以解決一切可能?

2. 基本應用

 1.創建一個緩存區

 

 

 

 

 

 

 

 

 

2.串口接收的數據插入緩存,每隔500ms插入數據到緩存

 

 

 

 

3.沒有在中斷發送數據,提取緩存數據,執行中斷發送

 

 

 

 

4. 測試

 

 

 

 

3.說明

上面的程序實際上還是使用中斷發送數據,只不過數據是先存入緩存,然后從緩存里面取出來以后再發送.
以上發送數據程序基本上適用於各種大大小小的項目.

 

4.擴展(加入時間間隔-方式1)

以上程序有個問題:每條數據之間基本上沒有時間間隔
只要發送完了上一條,立馬發送下一條

 

 

 

 

 

 

 

 

 

發送完數據以后設置一個變量為20,該變量在定時器每隔1ms減一,
等到減到0以后才會再次提取發送數據.
但是上面的發送時間受主循環延時的影響.

 

5.擴展(加入時間間隔-方式2)

1.在定時器里面每隔20ms提取一次數據,打開串口發送中斷

 

 

 

 

2.串口中斷發送數據

 

 

 

 

3.其它地方只需要插入數據即可

 

 

 

 

6.DMA發送

1.配置串口以DMA方式發送數據

 

 

 

 

2.配置DMA

 

 

 

 

3.如果DMA沒有發送數據,則重新設置DMA

 

 

 

 

4.測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM