STM32F1x HAL库学习笔记(10)ADC 配置

本文开发环境:

  • MCU型号:STM32F103C8T6
  • IDE环境: MDK 5.27
  • 代码生成工具:STM32CubeMx 5.4.0
  • HAL库版本:STM32Cube_FW_F1_V1.8.0

本文内容:

  1. STM32CubeMx 配置 ADC
  2. 示例工程

文章目录

  • 一、 ADC 简介
  • 二、使用 STM32CubeMx 配置 ADC
  • 三、ADC 的配置
  • 四、程序设计
  • 五、附件

一、 ADC 简介

ADC(analogue-to-digital conversion)指的是将模拟量转换为数字量的过程,在 MCU 中有广泛的应用,通常用以测量电压的值,比如,测量热敏或光敏的电阻两端的电压,就可以获取当前温度或光线的强度。

二、使用 STM32CubeMx 配置 ADC

使用 STM32CubeMx(以下简称 Mx) 可以非常方便的配置外设,一般有以下几个步骤:

  • 选择目标单片机
  • 选择系统时钟源,配置系统时钟树
  • 打开调试 IO 口
  • 配置外设
  • 生成指定 IDE 的工程

由于除配置外设以外为通用配置,不再赘述。

三、ADC 的配置

STM32F1x HAL库学习笔记(10)ADC 配置_第1张图片

四、程序设计

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_ADC1_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
     // 启动ADC转换
        HAL_ADC_Start(&hadc1);
        // 等待转换完成,第二个参数表示超时时间,单位ms
        HAL_ADC_PollForConversion(&hadc1, 100);
        // 为换取ADC状态
        int adc_value = HAL_ADC_GetValue(&hadc1);
        // 采取的右对齐除以2的12次方,参考电压为3.3V
        float  voltage = (float)adc_value / 4096 * 3.3;
        printf("voltage = %f\r\n", voltage);
        HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}
  • HAL_ADC_Start() :开启一次ADC转换
  • HAL_ADC_PollForConversion():等待转换完成
  • HAL_ADC_GetValue():获取得到的数值

最后通过 电压的值为: v = A D C 值 / 4096 ( 16 b i t ) ∗ 3.3 V ( 参 考 电 压 ) v = ADC 值/4096(16bit) * 3.3V(参考电压) v=ADC/4096(16bit)3.3V(

五、附件

STM32 ADC MDK5 工程
提取码:5bo6

测试
STM32F1x HAL库学习笔记(10)ADC 配置_第2张图片

你可能感兴趣的:(#,使用,STM32CubeMx,配置,STM32,外设)