STM32CUBEMX + ADC(单通道,双通道DMA)
案例应用 :使用ADC采集电压(单通道、单通道+DMA、双通道+DMA),并利用串口打印采集转换后的电压值
1.工具
- IAR
- STM32CUBEMX
- 开发板STM32F411VET6
- 预备知识参见:【STM32】HAL库 STM32CubeMX教程九—ADC
2.工程配置
2.1 单通道
2.1.1系统时钟RCC、SYS配置
2.1.2 ADC配置,这里强调2点,
-
使用ADC1——>IN4(通道4),本案例使用F4开发版,在12bit分辨率下,最小转换时间为15周期(最小转换时间 > 采样时间,具体可以百度),本案例转换时间为 15/16M = 0.937us
(F4)最小转换时间:
12bit——>15周期
10bit——>13周期
8bit——>11周期
6bit——> 9周期
-
注入模式,可以这样理解:把注入模式看作为中断,若果有注入,注入优先(相较于规则),完成之后在继续规则模式
2.1.3 配置工程文件名、路径、ToolChain/IDE——>GENERATE CODE ,完成之后打开项目
重定义printf函数具体见:【STM32】STM32CUBEMX+UART串口调试,循环接受发送数据
-
main.c
#include "main.h" #include "adc.h" #include "usart.h" #include "gpio.h" #include "stdio.h" void SystemClock_Config(void); uint32_t ADC_Value; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_USART2_UART_Init(); printf("start\r\n