您現在的位置是:首頁 > 網路遊戲首頁網路遊戲

微控制器學習的坎坷路:STM32H7串列埠DMA傳送遇到的問題

簡介由於剛剛上手這塊晶片,還不太熟悉,英文手冊看起來也很費勁,所以就決定嘗試一下ST官方推出的STM32Cube-MX配置工具,用它來配置引數生成專案

微控制器dma怎麼用

最近做了一塊STM32H743IIT6的工控板,想學習一下主頻480M的微控制器。和我以前接觸過的微控制器相比,這塊晶片簡直太高階了。自帶

微控制器學習的坎坷路:STM32H7串列埠DMA傳送遇到的問題

USART+UART+LPUART這三種串列埠加起來一共9個,正好可以用來做工控裝置的協議轉換。由於剛剛上手這塊晶片,還不太熟悉,英文手冊看起來也很費勁,所以就決定嘗試一下ST官方推出的STM32Cube-MX配置工具,用它來配置引數生成專案。

微控制器學習的坎坷路:STM32H7串列埠DMA傳送遇到的問題

STM32Cube-MX還是非常強大的,直接視覺化配置,先來試試串列埠DMA傳送資料吧。直接在軟體裡開啟串列埠,然後新增DMA傳送,整個配置過程非常簡單,配置完成後直接生成專案,之後就能開始編制使用者程式了。

微控制器學習的坎坷路:STM32H7串列埠DMA傳送遇到的問題

在測試中發現,用DMA形式透過串列埠傳送初始化時已經賦值的

全域性陣列

時,一切正常,但是在函式中傳送

區域性陣列

或者

全域性陣列動態賦值

時,電腦上串列埠工具收到的資料全是 00,資料個數倒是對了。被折磨了好久都沒有解決。後來查了一下資料,傳送可能是Cache導致的,於是在配置軟體中關閉這兩個Cache,之後全域性陣列動態賦值傳送資料就正常了。

微控制器學習的坎坷路:STM32H7串列埠DMA傳送遇到的問題

大神們解釋說這是Cache一致性的問題,目前我還沒搞太明白,先Mark一下,大家有好的解決方法也可以留言討論!

Top