STM32 F103C8T6学习笔记20:cubemx 配置 ADC采样 电位器

突然想起自己接触ADC采样比较之少,这里记录一下怎么配置使用AD采样

用的stm32cubemx 加HAL库

文章提供测试代码、截图、工程下载

目录

RCC时钟配置:

ADC配置:

测试应用程序:

测试结果:

测试工程下载:


RCC时钟配置:

一般c8t6最小系统板都有一个8Mhz的外部晶振,这里就给他把频率拉满:

ADC配置:

这里配置ADC1 通道IN1 对应引脚PA1

测试应用程序:

ADC中断最好不要写什么函数,就基础的数据搬运就行了:

复制代码
#include "adc.h"
#include "stdio.h"

ADC_HandleTypeDef hadc1;

// 配置
#define ADC_SAMPLE_COUNT_MAX 200   // 最大缓存
#define SEND_INTERVAL        100   // 00ms 发一次

// 全局变量
uint32_t adc_buf[ADC_SAMPLE_COUNT_MAX];
uint32_t  adc_cnt = 0;              // 实际采了多少个(重点!)
uint32_t adc_avg_val = 0;
uint32_t last_time = 0;

// ========================= ADC 中断回调 =========================
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc->Instance == ADC1)
    {
        // 只在【没满】的时候存数据
        if(adc_cnt < ADC_SAMPLE_COUNT_MAX)
        {
            adc_buf[adc_cnt] = HAL_ADC_GetValue(&hadc1);
            adc_cnt++;  // 实际采样数 +1
        }

        HAL_ADC_Start_IT(&hadc1);
    }
}


void ADC_Task_(void)
{
    if(HAL_GetTick() - last_time >= SEND_INTERVAL)
    {
        last_time = HAL_GetTick();
        if(adc_cnt > 0)  // 必须有数据才计算,防止除0
        {
            uint32_t sum = 0;
            for(uint8_t i=0; i<adc_cnt; i++)
            {
                sum += adc_buf[i];
            }
            adc_avg_val = sum / adc_cnt;
        }

        // 打印
        printf_uart1("100ms 采样数量:%d,平均值:%d\r\n", adc_cnt, adc_avg_val);

        // 清空计数,准备下一轮采集
        adc_cnt = 0;
    }
}

测试结果:

转动电位器可以提供串口1 打印每100ms采样最大200点的平均值

测试工程下载:

STM32F103C8T6学习笔记20:cubemx配置ADC采样电位器资源-CSDN下载

相关推荐
qqacj3 小时前
Spring Security 官网文档学习
java·学习·spring
南無忘码至尊3 小时前
Unity学习90天 - 第 6 天 -学习物理 Material + 重力与阻力并实现弹跳球和冰面滑动效果
学习·unity·游戏引擎
小陈phd4 小时前
多模态大模型学习笔记(三十六)—— 扩散模型与可控生成:从AI涂鸦到精准作画的技术革命
人工智能·笔记·学习
LCMICRO-133108477464 小时前
长芯微LPS6288完全P2P替代TPS61288,是一款具有 15A 开关电流的全集成同步升压转换器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·同步升压转换器
Sss_Ass5 小时前
跟着老师不迷路系列---跟着李述铜老师学习汇编语言之基本汇编程序符号绑定语句
学习·嵌入式·汇编语言·李述铜·符号绑定语句
for_ever_love__5 小时前
UI 学习 Appearance 外观管理
学习·ui·ios·objective-c
雾岛听蓝5 小时前
Qt Widget控件属性详解
开发语言·经验分享·笔记·qt
m0_614619065 小时前
花了一下午学 Git,整理了一份学习笔记
笔记·git·学习
知识分享小能手5 小时前
ECharts入门学习教程,从入门到精通,ECharts 数据可视化入门介绍(1)
学习·信息可视化·echarts