STM32CubeMX笔记(11)-- AD模块使用
AD模块使用
- <font size=5 >1、STM32CubeMX引脚设置和代码生成
- 1.1 相关STM32CubeMX生成代码配置如下:
- 1.2 生成代码
- <font size=5 >2、编写相关的C函数文件
- 2.1、相关ADC函数开启:
- 2.2、相关ADC采样函数的编写:
- 2.2、相关ADC采样输出函数的编写:
- <font size=5 >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采样模式。
定义数组
/* USER CODE BEGIN PV */
uint16_t adc_buf[1];/* USER CODE END PV */
开启ADC的DMA采样模式
/* 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数据,相关串口编写看前面章节
相关函数编写
/* 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 */