国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
STM32 DMA配置方法
http://blog.csdn.net/zzwdkxx/article/details/9026173

       DMA,全稱為:Direct Memory Access,即直接存儲器訪問。DMA傳輸方式無需CPU 直接控制傳輸,也沒有中斷處理方式那樣保留現(xiàn)場和恢復(fù)現(xiàn)場的過程,通過硬件為RAM 與I/O設(shè)備開辟一條直接傳送數(shù)據(jù)的通路,能使CPU 的效率大為提高。
       STM32中 DMA1有7個(gè)通道,DMA2有5個(gè)通道(DMA2 僅存在大容量產(chǎn)品中)。DMA掛載的時(shí)鐘為AHB總線,其時(shí)鐘為72Mhz,所以可以實(shí)現(xiàn)高速數(shù)據(jù)搬運(yùn)。
       STM32F103RBT6 只有1 個(gè)DMA控制器,DMA1 ,下面我們就針對DMA1 進(jìn)行介紹。
       從外設(shè)(TIMx、ADC、SPIx 、I2Cx 和USARTx )產(chǎn)生的DMA請求,通過邏輯或輸入到DMA控制器,這就意味著同時(shí)只能有一個(gè)請求有效。外設(shè)的DMA請求,可以通過設(shè)置相應(yīng)的外設(shè)寄存器中的控制位,被獨(dú)立地開啟或關(guān)閉。
       DMA1各通道一覽:
這里我們要使用的是串口 1 的 DMA 傳送,也就是要用到通道 4。
DMA1通道4的配置方法如下:


dma.c主要代碼:
  1. u16 DMA1_MEM_LEN;//保存DMA每次數(shù)據(jù)傳送的長度             
  2. //DMA1的各通道配置  
  3. //這里的傳輸形式是固定的,這點(diǎn)要根據(jù)不同的情況來修改  
  4. //從存儲器->外設(shè)模式/8位數(shù)據(jù)寬度/存儲器增量模式  
  5. //DMA_CHx:DMA通道CHx  
  6. //cpar:外設(shè)地址  
  7. //cmar:存儲器地址  
  8. //cndtr:數(shù)據(jù)傳輸量    
  9. void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)  
  10. {  
  11.     RCC->AHBENR|=1<<0;     //開啟DMA1時(shí)鐘  
  12.     delay_ms(1);            //等待DMA時(shí)鐘穩(wěn)定  
  13.     DMA_CHx->CPAR=cpar;      //DMA1 外設(shè)地址   
  14.     DMA_CHx->CMAR=(u32)cmar;//DMA1,存儲器地址  
  15.     DMA1_MEM_LEN=cndtr;     //保存DMA傳輸數(shù)據(jù)量  
  16.     DMA_CHx->CNDTR=cndtr;   //DMA1,傳輸數(shù)據(jù)量  
  17.     DMA_CHx->CCR=0X00000000;//復(fù)位  
  18.     DMA_CHx->CCR|=1<<4;  //從存儲器讀  
  19.     DMA_CHx->CCR|=0<<5;  //普通模式  
  20.     DMA_CHx->CCR|=0<<6;  //外設(shè)地址非增量模式  
  21.     DMA_CHx->CCR|=1<<7;  //存儲器增量模式  
  22.     DMA_CHx->CCR|=0<<8;  //外設(shè)數(shù)據(jù)寬度為8位  
  23.     DMA_CHx->CCR|=0<<10; //存儲器數(shù)據(jù)寬度8位  
  24.     DMA_CHx->CCR|=1<<12; //中等優(yōu)先級  
  25.     DMA_CHx->CCR|=0<<14; //非存儲器到存儲器模式            
  26. }   
  27. //開啟一次DMA傳輸  
  28. void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)  
  29. {  
  30.     DMA_CHx->CCR&=~(1<<0);       //關(guān)閉DMA傳輸   
  31.     DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,傳輸數(shù)據(jù)量   
  32.     DMA_CHx->CCR|=1<<0;          //開啟DMA傳輸  
  33. }  
}  

        在主函數(shù)里主要有這幾個(gè)語句完成DMA傳輸:
1.首先配置DMA1通道4相關(guān)參數(shù)
        MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,5200);//DMA1通道4,外設(shè)為串口1,存儲器為SendBuff,長度5200.
2.然后將待發(fā)送內(nèi)容裝入存儲器
        SendBuff[i]=TEXT_TO_SEND[t];        
3.然后開啟一次DMA傳輸
        MYDMA_Enable(DMA1_Channel4);//開始一次DMA傳輸!
4.監(jiān)控傳送進(jìn)度。
        pro=DMA1_Channel4->CNDTR;//得到當(dāng)前還剩余多少個(gè)數(shù)據(jù)       
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
stm32 DMA數(shù)據(jù)搬運(yùn) [操作寄存器+庫函數(shù)]-Changing's Blog
STM32單片機(jī)實(shí)現(xiàn)SPI通信連續(xù)傳送24位數(shù)據(jù)
【STM32】DMA基本原理、寄存器、庫函數(shù)
STM32測試程序 ADC+DMA+串口發(fā)送。全代碼奉獻(xiàn)(操作寄存器)
STM32的DMA
usb接口,usb接口的分類,usb接口參數(shù)指標(biāo)等|捷配電子通
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服