您好,歡迎訪問上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 單片機(jī)

      ?STM32F0 ADC學(xué)習(xí)

      文章出處:單片機(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
      2020
      11-10

      開始時(shí)候使用的是stdlib的庫,最近發(fā)現(xiàn)cube庫用的越來越廣泛了,遂開始使用cube庫來完成ADC的多通道采集實(shí)驗(yàn)。  

      ADC 的driver 在STM32F0XX_HAL_DRIVER當(dāng)中,有stm32f0xx_hal_adc.c文件中,我們可以在stm32f0xx_hal_conf.h中開啟 宏定義 ADC 模塊。


      ADC有三種工作模式,polling\ interrupt\DMA



      我這里使用了polling的方式來獲取多通道的數(shù)據(jù)。



      首先是要聲明兩個(gè)參數(shù)設(shè)置的結(jié)構(gòu)體


      ADC_HandleTypeDef             AdcHandle;

      ADC_ChannelConfTypeDef        sConfig;


      [cpp] view plain copy

      AdcHandle.Instance = ADC1;  

        

      AdcHandle.Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4;  

      AdcHandle.Init.LowPowerAutoWait      = DISABLE;  

      AdcHandle.Init.LowPowerAutoPowerOff  = DISABLE;  

      AdcHandle.Init.Resolution            = ADC_RESOLUTION_12B;  

      AdcHandle.Init.ScanConvMode          = ADC_SCAN_ENABLE;  

      AdcHandle.Init.DataAlign             = ADC_DATAALIGN_RIGHT;  

      AdcHandle.Init.ContinuousConvMode    = ENABLE;  

      AdcHandle.Init.DiscontinuousConvMode = DISABLE;  

      AdcHandle.Init.ExternalTrigConv      = ADC_SOFTWARE_START;  

      AdcHandle.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE;  

      AdcHandle.Init.EOCSelection          = ADC_EOC_SINGLE_CONV;  

      AdcHandle.Init.DMAContinuousRequests = DISABLE;//  

      AdcHandle.Init.Overrun               = ADC_OVR_DATA_OVERWRITTEN;  

        

      /* Initialize ADC peripheral according to the passed parameters */  

      if (HAL_ADC_DeInit(&AdcHandle) != HAL_OK)  

      {  

        Error_Handler();  

      }  

        

        if (HAL_ADC_Init(&AdcHandle) != HAL_OK)  

      {  

        Error_Handler();  

      }  

        

      /* ### - 2 - Start calibration ############################################ */  

      if (HAL_ADCEx_Calibration_Start(&AdcHandle) != HAL_OK)  

      {  

        Error_Handler();  

      }  


      基本的參數(shù)設(shè)置


      比較重要的參數(shù)有ADC clock設(shè)置,sample cycle,ADC分辨率,多通道 scan mode設(shè)置。


      ADC clock 有兩個(gè)時(shí)鐘源可以選擇,一個(gè)是內(nèi)部的14MHZ的時(shí)鐘,,另一個(gè)為APB的時(shí)鐘 最大為14MHZ.


      get_ADC_value 為讀取AD值的模塊,形參為通道,輸入通道名稱得到該通道對應(yīng)的AD值。



      float get_ADC_value(uint32_t channel)  

      {  

       // uint32_t nResultDMA;  

        float  temp;  

        start_adc();  

        config_channel(channel);  

          

        HAL_ADC_Start(&AdcHandle);  

        HAL_ADC_PollForConversion(&AdcHandle,1);  

          

        temp=HAL_ADC_GetValue(&AdcHandle);  

        HAL_ADC_Stop(&AdcHandle);  

        //temp=temp*3/4096;  

        return temp;  

        

      }  


      上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

      CopyRight 2020-2025 www.topsschool.com All rights reserved   滬ICP備2021005866號

      亚洲精品无码va人在线观看,少妇 逼小 水多,国产区免费av,国产精品无码观看

          国产精品视频无码手机观看| 91精品一区二区在线观看| 亚洲一级毛片Av在线| 免费h网站在线观看的| 亚洲欧美人清高精品aⅴ| 亚洲中文字幕在线第二页| 亚洲成AV人片在线观看天堂无码\| 国产视频亚洲,欧美| 亚洲欧美国产制服日本一区二区| 日韩毛片高清在线观看| 一级国产片在线观看| 真实的国产乱xxxx| 久久91精品视频| 曰本女人牲交免费播放| 一日本道久久久精品国产| 精品人妻在线97视频| 午夜无码精品国产片| 国产色综合免费观看| 日本精品视频一区二区| 国产尤物福利在线不卡| 中文亚洲成a人片在线观看| 亚洲欧洲综合有码无码| 国产AV无码乱码精品国产| 亚洲av网站在线综合| 欧美日韩一区二区在线| 2021无码国产在线视频| 久久精品久久小黄片| 国产一级婬片免费播放| 亚洲第一网站|