STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解相关的知识,希望对你有一定的参考价值。

STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解


📢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是分配在:PC4PC5引脚上的,在生成的Keil工程当中,定义在usart.c文件当中。可以将串口1的功能复用到:PA9PA10PB6PB7上。

⛳工程源码

链接:https://pan.baidu.com/s/1IHIIF5GFn41zYKjUMWOTKA 
提取码:3t93

以上是关于STM32G070RBT6基于STM32CubeMX自动生成ADC输入电压采样工程全过程讲解的主要内容,如果未能解决你的问题,请参考以下文章

STM32G070RBT6基于STM32CubeMX创建串口中断接收数据

STM32G070RBT6基于STM32CubeMX创建ADC DMA多通道采样工程

STM32G070RBT6基于STM32CubeMX创建EXTI外部中断工程

STM32G070RBT6基于Arduino框架下点灯程序

STM32G070RBT6基于Arduino框架GPIO外部中断

STM32G070RBT6基于STM32CubeMX创建定时器中断控制LED闪烁