STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程相关的知识,希望对你有一定的参考价值。
STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程
- 📌相关篇《【硬件开源电路】STM32G070RBT6开发板》
📋对于STM32G070RBT6来说,它的ADC是12位,ADC最多有16个外部通道和3个内部通道。支持单次,连续以及间断模式扫描。
- 🌼STM32CubeMX配置过程
- 🌷业务代码补充演示
📚工程概要
📑通过ADC DMA采集PA0 ~ PA3的外部电压信号(单片机能承受的电压信号范围:0 ~ 3.6V) ,然后通过串口1分别打印每个通道的数据以及转换后的电压值。
🔨启用以下4个通道:
PA0 ------> ADC1_IN0
PA1 ------> ADC1_IN1
PA2 ------> ADC1_IN2
PA3 ------> ADC1_IN3
- 🌿在DMA功能模块当中添加
ADC1
- 🌿使能串口1功能
默认配置的串口1引脚位PC4和PC5,可以根据个人需求将串口1复用到:PA9和PA10,或者PB6和PB7
📝相关业务代码补充
- 🌿在usart.c文件当中,在指定的位置放置如下实现函数
📑主要功能是实现在需要调试信息输出的地方,Printf函数串口打印,在需要使用printf打印的地方,需要包含其stdio.h头文件,本函数依赖Miicro LIB,需要在Keil中,
Target-
勾选“Micro Lib
”选项。
#include "stdio.h"
/*可调用printf*/
int fputc(int ch,FILE *f)
/*&huart1指的是串口1,如果用别的串口就修改数字*/
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch , 1 , 0xffff);
return ch;
- 🌿编译器版本根据个人安装的版本选择,STM32CubeMX生成的是5.37的,如果安装的是最新的那么就选择ARM Compiler 6版本的。
- 主函数
while
中添加如下代码
for(int i=0; i<ADC_BUFFER_SIZE; i++)
voltage[i] = (float)adc_dma_buffer[i] * (3.3/4096);
printf(" PA%1d ADC_value: %u voltage: %.2fv\\r\\n", i,adc_dma_buffer[i], voltage[i]);
printf("\\r\\n");
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);//板载led状态翻转
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&adc_dma_buffer, ADC_BUFFER_SIZE);
HAL_Delay(800);
📚工程源码
链接:https://pan.baidu.com/s/1yFeJYatGv5E90IMMWFw_Ag
提取码:goq2
以上是关于STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程的主要内容,如果未能解决你的问题,请参考以下文章
STM32G070RBT6基于STM32CubeMX创建串口中断接收数据
STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程
STM32G070RBT6基于STM32CubeMX创建EXTI外部中断工程