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转换器
      
    }
  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/penuel/p/11265300.html
Copyright © 2011-2022 走看看