本文是对STM32 HAL库中 ADC 结构体的总结,内容来自《UM1725 User Manual Description of STM32F4xx HAL drivers 》,该文档可在ST官网查询下载。
ADC_HandleTypeDef 结构体
ADC_TypeDef *Instance; /* ADC 寄存器基地址 */
ADC_InitTypeDef Init; /* ADC 所需参数 */
__IO uint32_t NbrOfCurrentConversionRank; /* 当前转换等级的 ADC 数 */ DMA_HandleTypeDef *DMA_Handle; /* DMA 结构体指针 */
HAL_LockTypeDef Lock; /* ADC 锁定对象 */
__IO uint32_t State; /* ADC 工作状态 */
__IO uint32_t ErrorCode; /* ADC 错误代码 */
ADC_InitTypeDef 结构体
uint32_t ClockPrescaler; /* 设置预分频系数,即 PRESC[3:0]位 */
uint32_t Resolution; /* 配置 ADC 的分辨率 */
uint32_t DataAlign; /* 配置 ADC 的对齐方式 */
uint32_t ScanConvMode; /* 扫描模式 */
uint32_t EOCSelection; /* 转换完成标志位 */
uint32_t ContinuousConvMode; /* 开启连续转换模式否则就是单次转换模式 */
uint32_t DMAContinuousRequests; /* DMA 转换请求模式*/
uint32_t NbrOfConversion; /* 设置转换通道数目 */
uint32_t DiscontinuousConvMode; /* 单次转换模式选择 */
uint32_t NbrOfDiscConversion; /* 单次转换通道的数目 */
uint32_t ExternalTrigConvEdge; /* ADC 外部触发极性*/
uint32_t ExternalTrigConv; /* ADC 外部触发源选择 */
下面对 ADC_InitTypeDef 结构体中的各个成员进行详细介绍(内容来自用户手册):
ClockPrescaler,选择ADC的时钟频率,这个时钟适用所有ADC。参数可选:ADC_CLOCKPRESCALER_PCLK_DIV2、ADC_CLOCKPRESCALER_PCLK_DIV4、ADC_CLOCKPRESCALER_PCLK_DIV6、ADC_CLOCKPRESCALER_PCLK_DIV8,即2、4、6、8分频。
Resolution,配置ADC的分辨率。参数可选:ADC_RESOLUTION12b、ADC_RESOLUTION10b、ADC_RESOLUTION8b、ADC_RESOLUTION6b,即12位、10位、8位、6位。
DataAlign,指定ADC的数据对齐是左对齐还是右对齐。参数可选:ADC_DATAALIGN_RIGHT、ADC_DATAALIGN_LEFT。
ScanConvMode,指定是否执行扫描(多通道)模式转换或者单次(单通道)模式转换。参数可选:ENABLE 或 DISABLE。(若使用单通道单次转换则选择 DISABLE)
EOCSelection,指定是否设置EOC标志,在单通道转换完成后或者在全部转换完成后。参数可选:EOC_SINGLE_CONV、EOC_SEQ_CONV。
ContinuousConvMode,指定执行转换是连续模式还是单次模式。参数可选:ENABLE 或 DISABLE。(选择 ENABLE 则开启连续转换模式)
DMAContinuousRequests,指定DMA请求是执行连续模式还是单次模式。参数可选:ENABLE 或 DISABLE。(ENABLE 则开启连续模式)
NbrOfConversion,指定ADC常规转换通道的数量。参数可选:1~16。
DiscontinuousConvMode,指定是否执行不连续转换模式。参数可选:ENABLE 或 DISABLE。(选择 ENABLE 则开启不连续转换模式)
NbrOfDiscConversion,指定ADC不连续转换使用常规装换通道的数目。参数可选:1~8。
ExternalTrigConvEdge,选择外部触发边沿并且使能常规组的触发。参数可选:ADC_EXTERNALTRIGCONVEDGE_NONE(禁止触发检测)、ADC_EXTERNALTRIGCONVEDGE_RISING(上升沿触发)、ADC_EXTERNALTRIGCONVEDGE_FALLING(下降沿触发)、ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING(上升沿下降沿均可触发)。
ExternalTrigConv,触发源选择。
ADC_ChannelConfTypeDef 结构体
uint32_t Channel
uint32_t Rank
uint32_t SamplingTime
uint32_t Offset
Channel,ADC通道配置。
Rank,常规组发生器的序列。
SamplingTime,所选通道的采样时间。
Offset,保留以供未来使用,可设置为0。