|
|
本程序用的是STM32F103RC芯片,ADC用DMA方式獲取ADC數(shù)據(jù)。
本實驗將實現(xiàn)如下功能:利用STM32的ADC1通道0來采樣外部電壓值,并在TFTLCD模塊上顯示出來。實現(xiàn)一個簡單的電壓表的功能。
本實驗可以SWD下載仿真.
- //////////////////////////////////////////////////////////////////////////////////
- #include "dma.h"
- u16 DMA1_MEM_LEN;//保存DMA每次數(shù)據(jù)傳送的長度
- //DMA1的各通道配置
- //這里的傳輸形式是固定的,這點要根據(jù)不同的情況來修改
- //從存儲器->外設(shè)模式/8位數(shù)據(jù)寬度/存儲器增量模式
- //DMA_CHx:DMA通道CHx
- //cpar:外設(shè)地址
- //cmar:存儲器地址
- //cndtr:數(shù)據(jù)傳輸量
- void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
- {
- u32 DR_Base; //做緩沖用,不知道為什么.非要不可
- RCC->AHBENR|=1<<0;//開啟DMA1時鐘
- __nop(); //等待 DMA1 時鐘穩(wěn)定
- __nop(); //經(jīng)測試最少 2 個 nop
- __nop();
- DR_Base=cpar;
- DMA_CHx->CPAR=DR_Base; //DMA1 外設(shè)地址
- DMA_CHx->CMAR=(u32)cmar; //DMA1,存儲器地址
- DMA1_MEM_LEN=cndtr; //保存DMA傳輸數(shù)據(jù)量
- DMA_CHx->CNDTR=cndtr; //DMA1,傳輸數(shù)據(jù)量
- DMA_CHx->CCR=0X00000000;//復(fù)位
- DMA_CHx->CCR|=0<<4; //從外設(shè)讀
- DMA_CHx->CCR|=1<<5; //循環(huán)模式
- DMA_CHx->CCR|=0<<6; //外設(shè)地址非增量模式
- DMA_CHx->CCR|=1<<7; //存儲器增量模式
- DMA_CHx->CCR|=1<<8; //外設(shè)數(shù)據(jù)寬度為16位
- DMA_CHx->CCR|=1<<10; //存儲器數(shù)據(jù)寬度16位
- DMA_CHx->CCR|=2<<12; //中等優(yōu)先級 //最高優(yōu)先級
- DMA_CHx->CCR|0<<14; //非存儲器到存儲器模式
- }
- //開啟一次DMA傳輸
- void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
- {
- DMA_CHx->CCR&=~(1<<0); //關(guān)閉DMA傳輸
- DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,傳輸數(shù)據(jù)量
- DMA_CHx->CCR|=1<<0; //開啟DMA傳輸
- }
-
復(fù)制代碼
0.png (49.9 KB, 下載次數(shù): 57)
下載附件
2016-6-20 12:45 上傳
|
評分
-
查看全部評分
|