標(biāo)題:
STM32四通道ADC+DMA傳輸源碼
[打印本頁(yè)]
作者:
q455627509
時(shí)間:
2018-5-27 17:30
標(biāo)題:
STM32四通道ADC+DMA傳輸源碼
由于STM32F1的DMA1中只有ADC1,所以利用ADC1的掃描模式進(jìn)行開(kāi)4個(gè)通道進(jìn)行DMA的ADC采值。
單片機(jī)源程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "adc.h"
#include "dma.h"
#define ADC1_DR_Address ((uint32_t)0x4001244C)
u16 AD_Value[6];
float volta[6];
u8 i;
int main()
{
SystemInit();
delay_init(72); //延時(shí)初始化
NVIC_Configuration();
uart_init(9600);
DMA_Config(DMA1_Channel1,(u32)ADC1_DR_Address,(u32)&AD_Value,6);//cndtr對(duì)應(yīng)所開(kāi)信道個(gè)數(shù)
Adc_Init();
DMA_Cmd(DMA1_Channel1, ENABLE); //啟動(dòng)DMA通道
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //軟件啟動(dòng)AD轉(zhuǎn)換
while(1)
{
for(i=0;i<6;i++) //循環(huán)6次轉(zhuǎn)換AD值
{
volta[i] =(float) AD_Value[i]/4095*3.3;
}
printf("AD1=%d\n",AD_Value[0]); printf("\r\n volta1 = %f V \r\n",volta[0]);
printf("AD2=%d\n",AD_Value[1]); printf("\r\n volta2 = %f V \r\n",volta[1]);
printf("AD3=%d\n",AD_Value[2]); printf("\r\n volta3 = %f V \r\n",volta[2]);
printf("AD4=%d\n",AD_Value[3]); printf("\r\n volta4 = %f V \r\n",volta[3]);
printf("AD5=%d\n",AD_Value[4]); printf("\r\n volta5 = %f V \r\n",volta[4]);
printf("AD6=%d\n",AD_Value[5]); printf("\r\n volta6 = %f V \r\n",volta[5]);
delay_ms(500);
}
}
復(fù)制代碼
所有資料51hei提供下載:
實(shí)驗(yàn)24 四通道ADC (DMA傳輸).zip
(353.93 KB, 下載次數(shù): 38)
2018-5-27 17:29 上傳
點(diǎn)擊文件名下載附件
程序
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1