有没有人一起做网站,一个产品的网络营销方案,广东官网网站建设品牌,找房网1. 初始化阶段---cubemx
(1) GPIO初始化
函数#xff1a;HAL_GPIO_Init() 作用#xff1a;配置ADC引脚为模拟输入模式。 代码示例#xff1a;
// 使能GPIOA时钟
__HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA1为模拟输入
GPIO_InitTypeDef GPIO_InitStruct {0};
GPIO_InitStr…1. 初始化阶段---cubemx
(1) GPIO初始化
函数HAL_GPIO_Init() 作用配置ADC引脚为模拟输入模式。 代码示例
// 使能GPIOA时钟
__HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA1为模拟输入
GPIO_InitTypeDef GPIO_InitStruct {0};
GPIO_InitStruct.Pin GPIO_PIN_1;
GPIO_InitStruct.Mode GPIO_MODE_ANALOG; // 必须为模拟模式
HAL_GPIO_Init(GPIOA, GPIO_InitStruct);(2) ADC基础配置---cubemx
函数HAL_ADC_Init() 作用初始化ADC模块设置分辨率、数据对齐方式、扫描模式等。 代码示例
ADC_HandleTypeDef hadc1; // 定义ADC句柄hadc1.Instance ADC1; // 使用ADC1
hadc1.Init.ScanConvMode ADC_SCAN_DISABLE; // 禁用多通道扫描
hadc1.Init.ContinuousConvMode DISABLE; // 单次转换模式
hadc1.Init.DataAlign ADC_DATAALIGN_RIGHT; // 数据右对齐
hadc1.Init.NbrOfConversion 1; // 转换1个通道
HAL_ADC_Init(hadc1); // 初始化ADC(3) ADC校准可选但推荐
函数HAL_ADCEx_Calibration_Start() 作用校准ADC减少转换误差。 代码示例
HAL_ADCEx_Calibration_Start(hadc1); // 执行ADC校准(4) 配置ADC通道---cubemx
函数HAL_ADC_ConfigChannel() 作用设置ADC通道的采样时间、转换顺序等。 代码示例
ADC_ChannelConfTypeDef sConfig {0};
sConfig.Channel ADC_CHANNEL_1; // 使用通道1对应PA1
sConfig.Rank ADC_REGULAR_RANK_1; // 转换序列中的第1个通道
sConfig.SamplingTime ADC_SAMPLETIME_55CYCLES_5; // 采样时间55.5周期
HAL_ADC_ConfigChannel(hadc1, sConfig); // 配置通道2. 启动转换阶段
(5) 启动ADC转换
函数HAL_ADC_Start() 作用启动ADC转换单次模式需手动触发。 代码示例
HAL_ADC_Start(hadc1); // 启动ADC转换(6) 等待转换完成
函数HAL_ADC_PollForConversion() 作用阻塞等待ADC转换完成。 代码示例
// 等待转换完成超时时间100ms
if (HAL_ADC_PollForConversion(hadc1, 100) HAL_OK) {// 转换成功
}3. 读取结果阶段
(7) 获取ADC值
函数HAL_ADC_GetValue() 作用读取ADC转换结果12位值范围0~4095。 代码示例
uint32_t adc_value HAL_ADC_GetValue(hadc1); // 读取ADC值关键函数总结
函数作用HAL_ADC_Init()初始化ADC模块设置分辨率、对齐方式等HAL_ADC_ConfigChannel()配置ADC通道选择通道、设置采样时间HAL_ADCEx_Calibration_Start()校准ADC提高精度需在初始化后调用HAL_ADC_Start()启动ADC转换单次模式需每次手动调用HAL_ADC_PollForConversion()等待转换完成阻塞方式HAL_ADC_GetValue()读取ADC转换结果