基于 STM32 系列微控制器的 ADC(模数转换器)初始化代码示例,这里以 STM32F1 系列为例
时间: 2024-11-09 12:24:58 浏览: 55
在STM32F1系列微控制器上,ADC(模拟到数字转换器)的初始化通常包括设置时钟、配置通道、选择模式和启动转换等步骤。以下是一个基本的ADC初始化代码片段,假设我们使用的是默认的逐次逼近模式:
```c
#include "stm32f1xx_hal.h"
void ADC_Init(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 启动ADC1时钟
// 配置ADC1
ADC_HandleTypeDef adcHandle;
ADC_StructInit(&adcHandle);
adcHandle.Instance = ADC1; // 选择ADC1
adcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2; // 分频比例,取决于系统时钟频率
adcHandle.Init.Resolution = ADC_RESOLUTION_12BIT; // 12位分辨率
adcHandle.Init.ScanConvMode = DISABLE; // 非扫描模式
adcHandle.Init.ContinuousConvMode = DISABLE; // 单次转换
adcHandle.Init.DiscontinuousConvMode = DISABLE; // 不连续模式
adcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; // 外部触发转换边沿无效
adcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 右对齐数据
adcHandle.Init.NbrOfConversion = 1; // 一次转换
HAL_ADC_Init(&adcHandle); // 初始化ADC
// 开启ADC1
HAL_ADC_Start(&adcHandle);
}
阅读全文