我的還沒除錯出來,先寫寫要注意的部分:
1.位址問題 stm32f051採用的是cortex m0核心。在暫存器上與現在使用較多的cortex m3核心的晶元還有點區別。在這裡用到的應該是串列埠的資料暫存器。在cm3的**中就是 乙個dr。而在coretx m0的**中將傳送和接收資料暫存器分開了。乙個事tdr 乙個rdr。在配置dma時需要將tdr的位址配置為外設位址,如果是dma串列埠傳送的話
2.可以用dma_getcurrdatacounter 這個函式去檢視dma快取中還有多少未傳送的資料
3串列埠對映的問題,串列埠的 dma傳送可以對映到dma1的通道2 或者通道4上,設定就在syscfg 暫存器中。syfcfg_cfgr1中的usart1_tx_dma_rmp為0的話 對映到通道2上。如果為1 則對映到通道4上。
STM32 串列埠DMA(一)
今天調usart,資料在晶元內部用dma傳到串列埠快取,發現dma真的很好,很快,而且不消耗系統資源。只是在傳輸完的時候中斷的標誌置位。下面解釋一下程式。void dma configuration void 再弄幾個重要的語句。這裡是開始dma傳輸前的一些準備工作,將usart1模組設定成dma方...
STM32F103 串列埠 DMA中斷實現資料收發
02 stm32f103 串列埠 dma中斷實現資料收發 講了 串列埠 dma空閒中斷實現不定長資料收發的功能,除了利用空閒中斷實現資料收發,還可以利用dma的中斷實現資料的收發,不同之處是後者不能實現不定長資料的接收,本文講解dma中斷的方式實現資料的收發。使用dma的中斷時,無需配置串列埠的中斷...
STM32F103 串列埠DMA 庫函式程式設計
串列埠dma實質上就是在dma控制器的控制下將記憶體中的資料 比如我們定義的乙個陣列 乙個位元組乙個位元組複製到,串列埠資料暫存器,然後傳送出去,傳送過程由dma控制,不用我們 控制。而對於傳統串列埠傳送,要傳送字串一般是要用迴圈語句,而用dma只需要配置好相關暫存器就可以自動傳送字串。dma時鐘和...