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)分析