蓝桥杯 stm32 实现 ADC 采集数据功能 CubeMX

本文详细介绍了如何使用STM32G431芯片通过CubeMX配置ADC,实现模拟信号到数字信号的转换。内容包括ADC原理图解析,CubeMX配置步骤,以及关键代码讲解,帮助读者理解STM32内部12位ADC的工作机制,并能实际操作进行ADC数据采集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章内的代码使用 HAL 库。
ADC 即 模数转换器,是指 将 连续变化的模拟信号 转换成 离散的数字信号 的器件


前言


一、ADC 原理图

在这里插入图片描述
从原理图我们可以看到 STM32G431 内部集成 两个 最高位 12 位 的 ADC :。ADC1 , ADC2

对应的 可变电阻 是 R38 , R37
对应的 IO 接口是 PB12 , PB15

通过 改变 可变电阻,可以得到不同的电压值
VDD 接的电压是 0 ~ 3.3V。


二、CubeMX 配置

(1)配置 RCC (异步)

### 蓝桥杯 ADC 采集 R37 CubeMX 配置教程 #### 使用CubeMX配置ADC模块 对于蓝桥杯竞赛中的R37单片机,在使用STM32CubeMX工具进行ADC配置时,需先启动软件并创建新项目。选择目标微控制器型号后进入图形化界面设置阶段。 - **配置时钟树**:确保系统时钟被正确设定以满足ADC转换速率需求[^1]。 - **使能ADC外设**:通过点击左侧栏内的“Analog”选项卡找到ADC组件,并勾选启用该功能。随后调整参数如分辨率、数据对齐方式等来适应具体应用场景的要求[^2]。 - **指定通道与采样时间**:针对所需测量信号所连接的具体模拟输入端口(例如PA0),在右侧属性面板里为其分配合适的采样周期长度以及扫描模式下的优先级顺序。 完成上述硬件资源初始化工作之后保存工程项目文件导出至IDE环境准备后续编程实现部分。 #### 示例代码展示如何读取ADC值 下面给出一段简单的C语言程序片段用于演示怎样利用HAL库函数获取来自选定通道上的电压数值: ```c #include "stm32f1xx_hal.h" // 声明全局变量存储最终结果 uint32_t adcValue; int main(void){ HAL_Init(); // 初始化HAL库 SystemClock_Config(); // 设置系统时钟 MX_GPIO_Init(); MX_ADC1_Init(); while (1){ if(HAL_OK == HAL_ADC_Start(&hadc1)){ if(HAL_OK == HAL_ADC_PollForConversion(&hadc1, 100)){ adcValue = HAL_ADC_GetValue(&hadc1); // 这里可以加入处理逻辑 HAL_Delay(100); // 简短延时防止过快循环 } } } } ``` 此段代码实现了基本的ADC初始化过程及其连续模式下单次手动触发后的读数操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值