zoukankan      html  css  js  c++  java
  • STM32F4寄存器初始化系列:三重ADC——DMA

    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转换器
      
    }
  • 相关阅读:
    使用DirectX作渲染过程
    记于来北京两个星期
    添加 node mocha 测试模块
    for-of循环
    app-web 开发 追溯debug
    cmd关闭被占用的端口命令及教程详解
    vue使用element-ui的el-input监听不了键盘事件解决
    Nodejs 进阶:Express 常用中间件 body-parser 实现解析
    nodejs设置允许跨域
    nodejs 全局变量和全局对象
  • 原文地址:https://www.cnblogs.com/penuel/p/11265300.html
Copyright © 2011-2022 走看看