STM32DMA方式進(jìn)行USART通信_(tái)第1頁
STM32DMA方式進(jìn)行USART通信_(tái)第2頁
STM32DMA方式進(jìn)行USART通信_(tái)第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、今天嘗試了一卞利用DMA方式進(jìn)行USART通信。這個(gè)做的很簡單。只是將內(nèi)存中的一個(gè)數(shù)組通過DMA方式發(fā)送到USART的數(shù)據(jù)寄存器里邊而已,然后再將該數(shù)據(jù)發(fā)送到PC檢驗(yàn)其是否正確。不過還是很有用,可以很好地了解DMA的工作原理。至于什么開時(shí)鐘啊,就不用說了,主要說一下配置。DMAnitStructure.DMA_PeripheralBaseAddr=0 x40013804;DMAnitStructure.DMA_MemoryBaseAddr=(uint32_t)TxBuffer;這兩個(gè)地址可以在數(shù)據(jù)手冊中找到,比如我用的芯片是STM32F103ZET6iviiIy11i|74Memorymapp

2、ing-rii在數(shù)據(jù)手冊的這一項(xiàng)中可以看到:而USART1的數(shù)據(jù)寄存器2562數(shù)據(jù)寄存器(USART_DR)地址偏移:0 x04復(fù)位值:不確定偏移量為0 x04所以USART_DR的地址為:0 x40013800+0 x00000004=0 x40013804至于TxBuffer只是我定義的一個(gè)數(shù)組罷了,學(xué)過計(jì)算機(jī)的都知道數(shù)組的名字本身就是其在內(nèi)存中的地址。DMAJnitStructure.DMA.DIR=DMA_DIR_PeripheralDST;/外設(shè)作為數(shù)據(jù)傳送的目的地DMAnitStructure.DMA_BufferSize=TxBuffer_Size;緩存人小DMA_lnitStr

3、ucture.DMA_Peripherallnc=DMA_Peripherallnc_Disable;外設(shè)地址寄存器不變DMA_lnitStructure.DMA_Memorylnc=DMA_Memorylnc_Enable;內(nèi)存地址寄存器遞增這兩項(xiàng)的配置還是很好理解的,比如在這里我們是要將TxBuffer里邊的東西發(fā)到USART1中去,每次發(fā)送8位,那么外設(shè)地址當(dāng)然不能改變,而每一次發(fā)送內(nèi)容都是不一樣的,而且數(shù)組在內(nèi)存中的存放就是遞增的,所以內(nèi)存地址寄存器要遞增。下邊是設(shè)置數(shù)據(jù)寬度:DMAnitStructure.DMA_PeripheralDataSize=DMA_PeripheralDa

4、taSize_Byte;11數(shù)據(jù)寬度為8位DMAnitStructureDMA_IVIemoryDataSize=DMA_MemoryDataSize_Byte;這個(gè)模式設(shè)置不是很清楚:DMA_lnitStructure.DMA_Mode=DMA_Mode_Normal;正常緩存模式優(yōu)先級(jí):DMAnitStructure.DMA_Priority=DMA_Priority_VeryHigh;DMAnitStructureDMA_M2M=DMA_M2M_Disable;DMAnit(DMAl_Channel4,&DMAJnitStructure);另外關(guān)于DMA的通道問題,有兩個(gè)DMA控制器,D

5、MAl,DMA2oDMA1有7個(gè)通道,DMA2有5個(gè)通道。他們分別是:DMA1:外設(shè)通道1通道2通道3通道4通道5通道6通道7ADC1ADC1SPI/I2SSPI1.RXSPI1TXSPI/I2S2.RXSPI/I2S2.TXUSARTUSART3.TXUSART3RXUSART1TXUSART1.RXUSART2.RXUSART2TXl2CI2C2.TXI2C2.RXI2C1.TXI2C1RXTIM1TIM1-CH1TIM1.CH2TIM1_TX4TIM1.TRIGTIMVCOMTIMIUPTIM1.CH3TIM2TIM2.CH3TIM2_UPTIM2_CH1TIM2.CH2TIM2CH4T

6、IM3TIM3-CH3TIM3.CH4TIM3.UPTIM3.CH1TIM3.TRIGTIM4TIM4.CH1TIMCH2TIM4.CH3TIM4.UPDMA2:外設(shè)通道1通遒2通道3通逍4通道5ADC3ADC3SPI/I2S3SPI/l2S3RXSPI/I2S3TXUART4UART4RXUART4TXSDIOSDIOTIM5TIM5-CH4TIM5.TRIGTIM5-CH3TIM5.UPTIM5.CH2TIM5.CH1TIM6/DAC通道1Tlh16.UF7DAC通道1TIM7/DAC通道2TIM7.UP/DAC通道2TIM8TIM8_CH3TIM8JJPTIM8_CH4TIM8_TRIG

7、TIM8.COMTIM8_CH1TIM8_CH2由于我用的是USART1,所以選用的DMA1的通道4.這是主函數(shù):voidmain()USART_RCC_Config();USART_GPIO_Config();USART_NVIC_Config();USART_Configuration();DMA_Configuration();USART_DMACmd(USARTlSART_DMAReq_Tx,ENABLE);DMA_Cmd(USART_Tx_DMA_Channel,ENABLE);while(indexTxBuffer_Size)從USART1接收數(shù)據(jù)while(USART_GetFlagStatus(USARTl,USART_FLAG_RXNE)二二RESET)RxBufferindex+=USART_ReceiveData(USARTl);while(D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論