使用VSCode+CubeMx开发STM32,这里介绍使用ADC测量电位器电压;

1.建立工程

1.1 创建项目文件

从已有的仓库中创建一个工程:

1
git clone https://github.com/makerinchina-iot/vscode_stm32cubemx_hello.git adc

使用VSCode打开工程后,需要更改如下名字:

  • 文件夹根目录下CMakeLists.txt 文件中修改工程名字为adc:
1
set(CMAKE_PROJECT_NAME adc)
  • stm32cubemx配置文件更改为 adc.ioc ,并更改以下文件名:
1
2
3
4
...
ProjectManager.ProjectFileName=adc.ioc
ProjectManager.ProjectName=adc
...
1.2 引脚配置

使用STM32CubeMx打开ioc配置文件,然后配置对应的ADC引脚;

  • 这里设置为连续转换模式

2. 编写代码

2.1 基本的ADC使用

因为之前设置了ADC为连续转换模式,因此在设置ADC开始后,可以连续获取ADC结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HAL_ADC_Start(&hadc1);

/* USER CODE END 2 */

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

/* USER CODE BEGIN 3 */
HAL_Delay(400);

uint32_t adc_value = HAL_ADC_GetValue(&hadc1);
float adc_voltage = adc_value * 3.3f / 4096.0f;
char buff[32] = {0};
float_to_string(buff, adc_voltage);
log_debug("ADC value: %d, vol = %s", adc_value, buff);
}

3.编译并烧录代码

3.1 编译和烧录
  • 点击生成按键即可编译工程;

  • 在VSCode中执行task:openocd-flash烧录;

3.2 硬件连接与结果
  • 按照如下方式连接硬件:
STM32 电位器
GND 1
PA0 2
3.3V 3
  • 结果如下: