1. 程式人生 > >STM32 串列埠DMA方式接收

STM32 串列埠DMA方式接收

      STM32 是一款基於ARM Cortex-M3核心的32位MCU,主頻最高可達72M。最近因為要在車機上整合TPMS功能, 便開始著手STM32的開發工作,STM32F10x系列共有5個串列埠(USART1~USART5),支援DMA方式通訊,DMA方式由於不需要CPU的參與,而是直接由DMA控制器完成串列埠資料的讀寫,因而可以很大程度的提高CPU的利用率。在使用STM32串列埠之前需要做一系列的初始化工作:

1.RCC(復位和時鐘控制暫存器)初始化,啟用GPIO、DMA、USART時鐘。

2.NVIC(巢狀向量中斷控制暫存器)初始化,完成各個硬體中斷的配置。

3.USART初始話,配置串列埠,設定DMA通道等。

4.DMA初始化,完成DMA的配置。

最後是使能USART和DMA。下面是通過DMA的方式從串列埠USART1接收資料,STM32工作後串列埠資料由DMA控制器接收存到指定buffer,讀取資料直接從DMA buffer中讀取即可。傳送資料採用非DMA方式,首先將待發送的資料存入到傳送佇列,然後在任務迴圈中將佇列中的資料傳送給USART1。例項程式碼如下: