static void ADC_Init(void)
{
/********************DMA配置**************************/
DMA2_Stream0->PAR=(uint32_t)&(ADC->CDR); //DMA外设地址 多重ADC->CDR
DMA2_Stream0->M0AR=(uint32_t)_AD_Value; //DMA 存储器0地址
DMA2_Stream0->NDTR=24; //传输数据项个数
DMA2_Stream0->CR=0; //先全部复位CR寄存器值
DMA2_Stream0->CR|=0<<25; //通道选择
DMA2_Stream0->CR|=0<<23; //存储器单次传输
DMA2_Stream0->CR|=0<<21; //外设单次传输
DMA2_Stream0->CR|=1<<16; //中等优先级 2:高 3:非常高
DMA2_Stream0->CR|=1<<13; //存储器数据大小为16位 0:8位 1:16位 2:32位
DMA2_Stream0->CR|=1<<11; //外设数据大小为16位 0:8位 1:16位 2:32位
DMA2_Stream0->CR|=1<<10; //存储器地址递增
DMA2_Stream0->CR|=0<<9; //外设地址固定
DMA2_Stream0->CR|=1<<8; //循环模式
DMA2_Stream0->CR|=0<<6; //外设到存储器 1:存储器到外设 2:存储器到存储器
DMA2_Stream0->CR|=1<<0; //开启DMA传输
/******************************************************/
/********************ADC通用配置**************************/
ADC->CCR|=1<<16; //ADCCLK=PCLK2/4=84/4=21Mhz,ADC时钟最好不要超过36Mhz
ADC->CCR|=1<<14; //多重DMA模式1
ADC->CCR|=1<<13; //多重DMA持续转换
ADC->CCR|=0X16; //仅三重模式规则同时模式
/******************************************************/
/********************CR1配置**************************/
ADC1->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC1->CR1|=1<<8; //扫描模式
ADC2->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC2->CR1|=1<<8; //扫描模式
ADC3->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC3->CR1|=1<<8; //扫描模式
/******************************************************/
/********************采样时间**************************/
ADC1->SMPR2|=7; //通道0的采样时间为480个周期
ADC1->SMPR2|=7<<3*1; //通道1的采样时间为480个周期
ADC1->SMPR2|=7<<3*2; //通道2的采样时间为480个周期
ADC1->SMPR2|=7<<3*3; //通道3的采样时间为480个周期
ADC1->SMPR2|=7<<3*4; //通道4的采样时间为480个周期
ADC1->SMPR2|=7<<3*5; //通道5的采样时间为480个周期
ADC1->SMPR2|=7<<3*6; //通道6的采样时间为480个周期
ADC1->SMPR2|=7<<3*7; //通道7的采样时间为480个周期
ADC2->SMPR2|=7<<3*8; //通道8的采样时间为480个周期
ADC2->SMPR2|=7<<3*9; //通道9的采样时间为480个周期
ADC2->SMPR1|=7; //通道10的采样时间为480个周期
ADC2->SMPR1|=7<<3*1; //通道11的采样时间为480个周期
ADC2->SMPR1|=7<<3*2; //通道12的采样时间为480个周期
ADC2->SMPR1|=7<<3*3; //通道13的采样时间为480个周期
ADC2->SMPR1|=7<<3*4; //通道14的采样时间为480个周期
ADC2->SMPR1|=7<<3*5; //通道15的采样时间为480个周期
ADC3->SMPR2|=7<<3*4; //通道4的采样时间为480个周期
ADC3->SMPR2|=7<<3*5; //通道5的采样时间为480个周期
ADC3->SMPR2|=7<<3*6; //通道6的采样时间为480个周期
ADC3->SMPR2|=7<<3*7; //通道7的采样时间为480个周期
ADC3->SMPR2|=7<<3*8; //通道8的采样时间为480个周期
ADC3->SMPR2|=7<<3*9; //通道9的采样时间为480个周期
ADC3->SMPR1|=7<<3*4; //通道14的采样时间为480个周期
ADC3->SMPR1|=7<<3*5; //通道15的采样时间为480个周期
/******************************************************/
/********************转换序列**************************/
ADC1->SQR1|=7<<20; //8个转换在规则序列中
ADC1->SQR3|=0; //第一次转换ADC_IN0
ADC1->SQR3|=1<<5; //第二次转换ADC_IN1
ADC1->SQR3|=2<<2*5; //第三次转换ADC_IN2
ADC1->SQR3|=3<<3*5; //第四次转换ADC_IN3
ADC1->SQR3|=4<<4*5; //第五次转换ADC_IN4
ADC1->SQR3|=5<<5*5; //第六次转换ADC_IN5
ADC1->SQR2|=6; //第七次转换ADC_IN6
ADC1->SQR2|=7<<5; //第八次转换ADC_IN7
ADC2->SQR1|=7<<20; //8个转换在规则序列中
ADC2->SQR3|=8; //第一次转换ADC_IN8
ADC2->SQR3|=9<<5; //第二次转换ADC_IN9
ADC2->SQR3|=10<<2*5; //第三次转换ADC_IN10
ADC2->SQR3|=11<<3*5; //第四次转换ADC_IN11
ADC2->SQR3|=12<<4*5; //第五次转换ADC_IN12
ADC2->SQR3|=13<<5*5; //第六次转换ADC_IN13
ADC2->SQR2|=14; //第七次转换ADC_IN14
ADC2->SQR2|=15<<5; //第八次转换ADC_IN15
ADC3->SQR1|=7<<20; //8个转换在规则序列中
ADC3->SQR3|=4; //第一次转换ADC_IN4
ADC3->SQR3|=5<<5; //第二次转换ADC_IN5
ADC3->SQR3|=6<<2*5; //第三次转换ADC_IN6
ADC3->SQR3|=7<<3*5; //第四次转换ADC_IN7
ADC3->SQR3|=8<<4*5; //第五次转换ADC_IN8
ADC3->SQR3|=9<<5*5; //第六次转换ADC_IN9
ADC3->SQR2|=14; //第七次转换ADC_IN14
ADC3->SQR2|=15<<5; //第八次转换ADC_IN15
/******************************************************/
ADC1->CR2|=1<<9; //使能ADC1_DMA ADC1->CR2|=1<<8; //使能ADC1_DMA ADC1->CR2|=1<<1; //连续转换 ADC1->CR2|=1<<0; //使能ADC1
ADC2->CR2|=1<<9; //使能ADC2_DMA ADC2->CR2|=1<<1; //连续转换 ADC2->CR2|=1<<0; //使能ADC2
ADC3->CR2|=1<<9; //使能ADC2_DMA ADC3->CR2|=1<<1; //连续转换 ADC3->CR2|=1<<0; //使能ADC3
ADC1->CR2|=1<<30; //开启AD转换器
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章