- 双击图标,启动STM32CubeMX。我的STM32CubeMX版本是6.3.0。在开始建立工程前一定要先把STM32CubeMX安装好,如果出现错误提示请先解决错误提示。
图 1软件主页面
图 2 STM32CubeMX版本
- 新建工程
创建一个新的工程。
图 3新建工程步骤
图 4新建工程界面
选择开发单片机的型号,我们用的型号是STM32F103C8T6。选择好单片机型号单击图标。
等几秒中后,弹出工程配置界面。
图 5工程配置界面
- 工程配置
时钟配置,我们只需配置为外部高速时钟。
配置系统模式
配置ADC引脚,我们这里选择的是ADC1,IN4,IN5。
配置ADC参数。
配置参数
首先要把Number Of Conversion更改为2,因为我们只启用了两个通道。要不然无法配置扫描模式。
更之后会出现两个 Rank 分别配置为
ADC设置
图 6翻译
DMA设置
选择ADC1
配置DMA模式
开启中断
- 系统时钟配置
- 导出工程
设置工程名称、工程导出路径和IDE工具。
代码生成器配置
图 7代码生成器翻译
图 8代码生产器设置
生成代码
点击软件右上角图标,生成代码。
等待几秒钟出现提示框,点击打开工程。
打开工程后先编译一下。
打开main.c文件
修改代码
1.先定义一个数据缓存区
uint16_t dma_adc[2] = {0};
在main函数中添加如下代码
2.校准ADC
HAL_ADCEx_Calibration_Start(&hadc1);
3.开启DMA的adc模式
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)dma_adc, 2);
注意:这里是一个坑见下图红色圈起来部分,非常容易踩到。
图 9代码
再次编译代码,启动调试。监视dma_adc的值
开始运行,查看watch1中已有adc的两路数据了
图 10Watch1中监视的ADC数据