STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解相关的知识,希望对你有一定的参考价值。
STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解
- 📌相关篇《【硬件开源电路】STM32G070RBT6开发板》
- 🛠STM32CubeMX工程配置过程演示
📢Keil工程完成业务代码以及烧录演示放在资源中,gif文件过大无法上传。
📚工程概要
本工程是基于STM32CubeMX工具来配置项目,功能需求:在PA0引脚接入一个外部模拟量信号(单片机能承受的电压信号范围:0 ~ 3.6V)检测输入电压.然后通过串口打印出来。
📝需要自己补充的代码
- 🌿在adc.c源文件当中,在指定的位置放置如下实现函数
/******************************************************************************************************
* 函 数 名: ADC1_GetVaule
* 入口参数: 无
* 返 回 值: ADC1转换值
* 函数功能: 进行AD转换,采集电压
* 说 明: 多次采样求平均值,可以提高测量的精度,该函数返回的是AD转换得到的寄存器值
*******************************************************************************************************/
uint16_t ADC1_GetVaule(void)
uint8_t i = 0;
uint32_t AD_Vaule = 0; // AD转换值
for(i=0;i<30;i++) // 进行30次转换
HAL_ADC_Start(&hadc1); // 启动转换
AD_Vaule = AD_Vaule + HAL_ADC_GetValue(&hadc1); // 求和
AD_Vaule = AD_Vaule / 30; // 取平均值
return (uint16_t)AD_Vaule; // 返回AD转换值
🌿在adc.h头文件当中添加该函数实现的方法(函数)名。
- 🌿在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配置注意事项
- 通过配置串口,默认串口1是分配在:
PC4
和PC5
引脚上的,在生成的Keil工程当中,定义在usart.c
文件当中。可以将串口1的功能复用到:PA9
和PA10
,PB6
和PB7
上。
⛳工程源码
链接:https://pan.baidu.com/s/1IHIIF5GFn41zYKjUMWOTKA
提取码:3t93
以上是关于STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解的主要内容,如果未能解决你的问题,请参考以下文章
STM32G070RBT6基于STM32CubeMX创建串口中断接收数据
STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程
STM32G070RBT6基于STM32CubeMX创建EXTI外部中断工程