1.ADC基礎
- ADC(Analog-Digital Converter)模擬-數字轉換器
- ADC可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量,建立模擬電路到數字電路的橋梁
- 12位逐次逼近型ADC,1us轉換時間 輸入電壓范圍:0~3.3V,轉換結果范圍:0~4095
- 18個輸入通道,可測量16個外部和2個內部信號源
- 規則組和注入組兩個轉換單元
- 模擬看門狗自動監測輸入電壓范圍
- STM32F103RCT6 ADC資源:ADC1、ADC2,ADC3
?ADC數據對齊:
數據右對齊數據左對齊
2.查詢方式測量電壓
1)進行基本配置
2)編輯代碼
除了與串口有關的外,代碼主要是在main函數中,主要涉及ADC的轉換流程:啟動--》等待轉換完成--》讀取傳話數值
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_ADC1_Init();/* USER CODE BEGIN 2 */HAL_ADCEx_Calibration_Start(&hadc1); //對 ADC 進行校準,確保采樣準確性uint16_t ADC_Value;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */HAL_ADC_Start(&hadc1); //開啟ADC轉換if (HAL_ADC_PollForConversion(&hadc1, 50) == HAL_OK) { //等待 ADC 轉換完成,超時時間為 50msif(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) // 檢查ADC是否轉換完成 EOC = End Of Conversion,轉換完成標志位{ADC_Value = HAL_ADC_GetValue(&hadc1); //獲取ADC采樣值printf("ADC1 Reading : %d \r\n",ADC_Value); //輸出ADC采樣值printf("PA1 True Voltage value : %.2fV \r\n",ADC_Value*3.3f/4096); //根據參考電壓,計算并輸出采集電壓 3.3f表示浮點計算}}HAL_Delay(500);/* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
3)分析
?