<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        STM32 AD交替觸發模式

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月09日   【字體:

          今天配置了STM32 AD的交替觸發模式,采樣基本做到1us一個樣本了。

        void  Adc_Init(u16 period)
        {    
        GPIO_InitTypeDef GPIO_InitStruct;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_Init(GPIOC,&GPIO_InitStruct);
           RCC->APB2ENR|=1<<9;    //ADC1時鐘使能  
           RCC->APB2ENR|=1<<10;   //ADC2時鐘使能
        RCC->APB2RSTR|=1<<9;   //ADC1復位
        RCC->APB2RSTR&=~(1<<9);//復位結束  

         
           RCC->APB2RSTR|=1<<10;   //ADC2復位
        RCC->APB2RSTR&=~(1<<10);//復位結束  
        RCC->CFGR&=~(3<<14);   //分頻因子清零
        RCC->CFGR|=2<<14;      //SYSCLK/DIV2=12M ADC時鐘設置為12M,ADC最大時鐘不能超過14M!    
        ADC1->CR1=0x00070000;
        ADC1->CR2=0x00180100;
        ADC1->SQR3=0x0000000A;
           ADC1->SMPR1=0x00000000;
        ADC1->SMPR2=0x00000000;
        ADC2->CR1=0x00000000;
        ADC2->CR2=0x00180100;   
           ADC2->SQR3=0x0000000A;
        ADC2->SMPR1=0x00000000;     //通道10  1.5周期,使用交替模式,采樣時間小于7.5 ADCclock 
        ADC2->SMPR2=0x00000000;
           ADC1_DMA_Config((u32)&(ADC_conver),320);
          
           ADC1->CR2|=1<<0;     //開啟AD轉換器  
        ADC1->CR2|=1<<3;        //使能復位校準  
        while(ADC1->CR2&1<<3);  //等待校準結束  
             
        ADC1->CR2|=1<<2;        //開啟AD校準   
        while(ADC1->CR2&1<<2);  //等待校準結束
        ADC2->CR2|=1<<0;     //開啟AD轉換器  
        ADC2->CR2|=1<<3;        //使能復位校準  
        while(ADC2->CR2&1<<3);  //等待校準結束  
             
        ADC2->CR2|=1<<2;        //開啟AD校準   
        while(ADC2->CR2&1<<2);  //等待校準結束
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
           TIM_TimeBaseStructure.TIM_Period =period-1; //計數器值    
           TIM_TimeBaseStructure.TIM_Prescaler =0;//預分頻值,1分頻       
           TIM_TimeBaseStructure.TIM_ClockDivision =0x0; //采樣分頻72mhz   
           TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數 
           TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);//初始化定時器結構體
        TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);
        TIM_Cmd(TIM3,ENABLE);

         
        }  
        void ADC1_DMA_Config(u32 MemoryAddress,u16 num)
        {
        DMA_InitTypeDef DMA_InitStructure;
         
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
         
        DMA_DeInit(DMA1_Channel1);
        DMA_InitStructure.DMA_PeripheralBaseAddr=0x40012400+0x4c;
        DMA_InitStructure.DMA_MemoryBaseAddr=MemoryAddress;
            DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
        DMA_InitStructure.DMA_BufferSize=num;
        DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
        DMA_InitStructure.DMA_Priority=DMA_Priority_VeryHigh;
        DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;
        DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;
        DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
        DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
        DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
        DMA_Init(DMA1_Channel1,&DMA_InitStructure);
        DMA_Cmd(DMA1_Channel1 ,ENABLE);
        }
        50k時的波形
         


         


         

         
        100k時

         

         
        10k時

         



         

         
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮