【STM32CubeMx你不知道的那些事】第四章:STM32CubeMxADC查詢方式配置

上一章我們講了STM32CubeMx串口的配置,這一張我們來講一下ADC的配置。有些人以前知道ADC就是模數轉換器,具體的沒有去深究,那麼問題來啦,什麼是模數轉換器?他的精度是多少?怎麼計算?

下面我來給大家科普一下什麼叫做模數轉換器。顧名思義,模數轉換器就是把模擬信號轉換爲數字信號的工具。我們要想獲得電壓值,只能將模擬量轉換爲數字量計算。例如我們的例程使用的是STM32F103C8T6,該芯片內置的是一個12位的ADC,什麼是12位呢?12位意思就是採樣分辨率爲2^12 = 4096。ADC採集的電壓範圍是0~3.3V。每一份就是3.3V/4096的電壓值。所以我們後面採集到的電壓值是數字量,其中還牽涉補償,這裏就不細說了。

一、準備工作

1、使用第一章配置好的文件,這裏不多說了。大家也可以用自己配置好的工程文件。

2、準備一塊最小系統核心板。(杜邦線若干)

3、選取自己需要的ADC通道和ADC通道對應的IO口。

二、具體操作

1、在Pinout菜單欄下,ADC的選擇與配置。配置如圖

在外設欄裏選擇ADC1,IN0打鉤。右邊可視圖就看到ADC_IN0變成綠色表示IO配置成功。

2、在Configuration菜單欄下,點擊Analog下的ADC1彈出配置界面,配置如圖

這裏因爲ADC是查詢方式所以,基本配置都是默認的。

3、生成工程

點擊Project菜單欄選擇Generate code,工程生成完畢。

4、打開MDK工程,工程裏面配置

1)首先聲明一個變量用來存儲ADC採集回來的值。

unsigned int AD_Value;

2)在while循環裏面增加幾句話來不斷的獲取當前IO口的值。

  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
      HAL_ADC_Start(&hadc1);

      HAL_ADC_PollForConversion(&hadc1, 50);

      if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
      {
          AD_Value = HAL_ADC_GetValue(&hadc1);

      }

      HAL_Delay(1000);

  }

5、調試測試

1)編譯通過後仿真

①點擊運行。

②在watch窗口觀看變量AD_Value的值。

這裏AD_Value值有三種情況,當PA0口接地時AD_Value爲0、當PA0口接3.3.VCC時AD_Value本來應該是4095但是這裏有了一些偏差可能因素有很多(轉換時間、ADC參考電源、或輸入電源本身),還有當ADC口浮空的情況下,ADC的值是不斷跳變的,所以當看到你的AD_Value值在跳變不用擔心,先接一個固定的電源試試,切記一定是3.3.V以內的直流電源,不然直接會燒芯片!

如有什麼不懂聯繫加QQ羣:1063618791歡迎大家學習交流!

QQ:1320300083

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章