STM32CubeMX笔记(11)-- AD模块使用

AD模块使用

  • [<font size=5 >1、STM32CubeMX引脚设置和代码生成](#1、STM32CubeMX引脚设置和代码生成)
    • [1.1 相关STM32CubeMX生成代码配置如下:](#1.1 相关STM32CubeMX生成代码配置如下:)
    • [1.2 生成代码](#1.2 生成代码)
  • [<font size=5 >2、编写相关的C函数文件](#2、编写相关的C函数文件)
  • [<font size=5 >3、编译工程文件,使用ST-Link烧录,测试串口数据的发送](#3、编译工程文件,使用ST-Link烧录,测试串口数据的发送)

1、STM32CubeMX引脚设置和代码生成

1.1 相关STM32CubeMX生成代码配置如下:

相关外部晶振的设置参考:STM32CubeMX笔记(5)--定时器中断
相关芯片的AD采样引脚设置:(ADC_IN0)


相关时钟的参数设置:(分频设置)


1.2 生成代码

1、在STM32CubeMX 软件右上角,点击GEBERATE CODE项,生成代码。


2、编写相关的C函数文件

2.1、相关ADC函数开启:

相关的中断函数在stm32f1xx_hal_adc.c文件中可以查看得到。

HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)这个函数中,我们可以看到相关ADC的DMA采样开启函数的处理。


2.2、相关ADC采样函数的编写:

HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)函数复制,放置于到main.c中的用户代码区,开启ADC的DMA采样模式。


定义数组

c 复制代码
/* USER CODE BEGIN PV */
uint16_t adc_buf[1];
																					
/* USER CODE END PV */

开启ADC的DMA采样模式

c 复制代码
 /* USER CODE BEGIN 2 */
HAL_ADC_Start_DMA((ADC_HandleTypeDef*) &hadc1, (uint32_t*) adc_buf, (uint32_t) 1);

 /* USER CODE END 2 */

相关参数的介绍:

第一个参数:(ADC_HandleTypeDef*) &hadc1,ADC结构体,

例如:&hadc1,即使用ADC1采样,相关的结构体名称&hadc1可通过生成代码的ADC初始化函数MX_ADC1_Init();进行查看;

第二个参数:(uint32_t*) adc_buf,采样到的数据数组地址

例如:即使用开启了多少个ADC1采样引脚,则设置多长的数据数组,adc_buf[1] 对应1个通道,adc_buf[2] 对应2个通道;

第三个参数:== (uint32_t) 1==,采样到的数据数组长度,

例如:开启了多少个通道,则设置多长的数据长度,adc_buf[1] 设置1个长度,adc_buf[2] 设置2个长度;


2.2、相关ADC采样输出函数的编写:

使用串口打印输出相关的采样到的AD数据,相关串口编写看前面章节

相关函数编写

c 复制代码
/* Infinite loop */
 /* USER CODE BEGIN WHILE */
 while (1)
 {
   /* USER CODE END WHILE */

   /* USER CODE BEGIN 3 */
   UART1_printf_DMA("ADC1 = %d \r\n", adc_buf[0]);
   HAL_Delay(1000);
 }
 /* USER CODE END 3 */

3、编译工程文件,使用ST-Link烧录,测试串口数据的发送


相关推荐
问君能有几多愁~6 小时前
C++ 数据结构复习笔记
数据结构·c++·笔记
r_oo_ki_e_6 小时前
Java Map 集合学习笔记
java·笔记·学习
liuyicenysabel8 小时前
大模型学习笔记 · 第八篇 · 进阶:偏好对齐与多卡训练
人工智能·笔记·学习
番茄育学园11 小时前
我的三款主流云存储音乐库实测笔记
笔记·分类·媒体
水利行业RTU手艺人12 小时前
RTU固件中的“数据保险箱”——离线数据补发系统设计
c++·stm32·单片机·物联网
十月的皮皮14 小时前
C语言学习笔记20260706-栈的压入、弹出序列验证
c语言·笔记·学习
2301_7931210414 小时前
基于单片机的水平角度仪系统设计
单片机·嵌入式硬件
KaifuZeng14 小时前
通信与接口协议面试十、PCIe
单片机·嵌入式硬件·面试·通信与接口协议
lzx1864884370215 小时前
【AH8966】可替代 KP3211 非隔离 AC110220V转12V 0.5A 降压转换芯片
人工智能·单片机·嵌入式硬件·集成测试·硬件工程·ic
维他奶糖6115 小时前
基于 DrissionPage 实现小红书搜索笔记批量采集
笔记