STM32G474xx HAL 用户手册
stm32g4xx_ hal_ adc. h
跳转到此文件的文档。
00f001 /**
00f002   ******************************************************************************
00f003   * @file    stm32g4xx_ hal_ adc. h
00f004   * @author  MCD 应用团队
00f005   * @brief   ADC HAL 模块头文件。
00f006   ******************************************************************************
00f007   * @attention
00f008   *
00f009   * 版权所有 (c) 20f9 STMicroelectronics。
00010   * 保留所有权利。
00011   *
00012   * 本软件根据 LICENSE 文件中规定的条款获得许可
00013   * 在本软件组件的根目录中可以找到该 LICENSE 文件。
00014   * 如果本软件未附带 LICENSE 文件,则按"原样"提供。
00015   *
00016   ******************************************************************************
00017   */
00018

00019 /* 定义以防止递归包含 -------------------------------------*/
00020 #ifndef STM32G4xx_ HAL_ ADC_ H
00021 #define STM32G4xx_ HAL_ ADC_ H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* 包含头文件 ------------------------------------------------------------------*/
00028 #include "stm32g4xx_ hal_ def. h"
00029

00030 /* 包含底层驱动 */
00031 #include "stm32g4xx_ ll_adc. h"
00032 
00033 /** @addtogroup STM32G4xx_ HAL_ 驱动
00034   * @{
00035   */
00036 
00037 /** @addtogroup ADC
00038   * @{
00039   */
00040

00041 /* 导出类型 ------------------------------------------------------------*/
00042 /** @defgroup ADC_ 导出类型 ADC 导出类型
00043   * @{
00044   */
00045 
00046 /**
00047   * @brief  ADC 规则组过采样结构定义
00048   */
00049 typedef struct
00050 {
00051   uint32_ t Ratio;                         /*!< 配置过采样比率。
00052                                                此参数可以是 @ref ADC_ HAL_ EC_ OVS_ RATIO 的值 */


00054   uint32_ t RightBitShift;                 /*!< 配置过采样器的除法系数。
00055                                                此参数可以是 @ref ADC_ HAL_ EC_ OVS_ SHIFT 的值 */


00057   uint32_ t TriggeredMode;                 /*!< 选择规则触发过采样模式。
00058                                                此参数可以是 @ref ADC_ HAL_ EC_ OVS_ DISCONT_ MODE 的值 */


00060   uint32_ t OversamplingStopReset;         /*!< 选择规则过采样模式。
00061                                                当注入序列中断时,过采样可以是临时停止或复位。
00062                                                如果规则组和注入组都启用了过采样,此
00063                                                参数将被丢弃并强制设置为
00064                                                "ADC_ REGOVERSAMPLING_ RESUMED_ MODE"(过采样缓冲区在
00065                                                注入序列期间被清零
00066                                                此参数可以是 @ref ADC_ HAL_ EC_ OVS_ SCOPE_ REG 的值 */
00067

00068 } ADC_ OversamplingTypeDef;
00069 
00070 /**
00071   * @brief  ADC 实例和 ADC 规则组结构定义。
00072   * @note   此结构的参数在两个范围内共享:
00073   *          - 整个 ADC 范围(影响 ADC 规则组和注入组):ClockPrescaler, Resolution, DataAlign,
00074   *            GainCompensation, ScanConvMode, EOCSelection, LowPowerAutoWait.
00075   *          - ADC 规则组范围:ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion,
00076   *            ExternalTrigConv, ExternalTrigConvEdge, DMAContinuousRequests, Overrun, OversamplingMode, Oversampling,
00077   *            SamplingMode.
00078   * @note   HAL_ ADC_ Init() 函数对这些参数的设置取决于 ADC 状态。
00079   *         ADC 状态可以是:
00080   *          - 对于所有参数:ADC 禁用
00081   *          - 除了 'LowPowerAutoWait'、'DMAContinuousRequests' 和 'Oversampling' 之外的所有参数:ADC 启用
00082   *            规则组无正在进行的转换。
00083   *          - 对于参数 'LowPowerAutoWait' 和 'DMAContinuousRequests':ADC 启用,规则组和注入组
00084   *            均无正在进行的转换。
00085   *         如果 ADC 不在适当的状态来修改某些参数,这些参数的设置将被绕过
00086   *         而不会报告错误(因为在预期更新另一个参数的情况下这可能是预期的行为
00087   *         (满足 ADC 状态条件)实时进行)。
00088   */
00089 00089 typedef struct
00090 {
00f091   uint32_ t ClockPrescaler;        /*!< 选择 ADC 时钟源(源自 APB 时钟的同步时钟或源自
00092                                        系统时钟或 PLL 的异步时钟(请参阅参考手册了解
00093                                        可用时钟列表))和时钟预分频器。
00094                                        此参数可以是 @ref ADC_ HAL_ EC_ COMMON_ CLOCK_ SOURCE 的值。
00095                                        注意:ADC 时钟配置对所有 ADC 实例通用。
00096                                        注意:如果使用注入组的通道,ADC 频率应低于
00097                                              AHB 时钟频率 /4(12 位或 10 位分辨率),
00098                                                         AHB 时钟频率 /3(8 位分辨率),
00f099                                                         AHB 时钟频率 /2(6 位分辨率)。
00f100                                        注意:如果使用基于 HCLK/f1 的同步时钟模式,配置必须
00f101                                              仅在系统时钟具有 50% 占空比时启用(APB
00f102                                              内部预分频器必须被绕过,PCLK 时钟必须具有
00f103                                              50% 占空比)。请参阅参考手册了解详情。
00f104                                        注意:如果使用异步时钟,所选时钟必须
00f105                                              在 RCC 顶层预先启用。
00f106                                        注意:仅当所有 ADC 实例都被禁用时才能修改此参数。 */
00f107 
00f109   uint32_ t Resolution;            /*!< 配置 ADC 分辨率。
00f110                                        此参数可以是 @ref ADC_ HAL_ EC_ RESOLUTION 的值 */


00f112   uint32_ t DataAlign;             /*!< 指定转换数据寄存器中 ADC 数据的对齐方式(右对齐或左对齐)。
00f113                                        有关不同分辨率的对齐格式,请参阅参考手册。
00f114                                        此参数可以是 @ref ADC_ HAL_ EC_ DATA_ ALIGN 的值 */


00f116   uint32_ t GainCompensation;      /*!< 指定要应用于 ADC 原始转换
00f117                                        数据的 ADC 增益补偿系数,基于以下公式:
00f118                                          DATA = DATA(raw) * (增益补偿系数) / 4096
00f119                                        "2.12" 位格式,无符号:2 位指数 / 12 位尾数
00f120                                        增益步长为 1/4096 = 0.000244
00f121                                        增益范围为 0.00000 到 3.999756
00f123                                        此参数值可以是
00f124                                         0           增益补偿将被禁用,系数设为 0
00f125                                         1 -> 0x3FFF 增益补偿将被启用,系数设为指定
00f126 
00f127                                        注意:启用增益补偿时会应用于所有通道。 */


00f128   uint32_ t ScanConvMode;          /*!< 配置 ADC 规则组和注入组的顺序。
00f129                                        此参数可以与参数 'DiscontinuousConvMode' 关联以具有
00f130                                        主序列细分为连续部分。
00f132                                        如果禁用:转换以单次模式执行(转换一个通道,即
00f133                                                     等级 f1 中定义的通道)。参数 'NbrOfConversion' 和
00f134                                                     'InjectedNbrOfConversion' 将被丢弃(等效设为 1)。
00f136                                        如果启用:转换以序列模式执行(多个等级定义
00f137                                                     由 'NbrOfConversion' 或 'InjectedNbrOfConversion' 以及每个
00f138                                                     通道在顺序中的等级)。扫描方向向上:从等级 1 到
00f139                                                     等级 'n'。
00f140                                        此参数可以是 @ref ADC_ Scan_ mode 的值 */
000

00f140   uint32_ t EOCSelection;          /*!< 指定哪个 EOC(转换结束)标志用于轮询和
00f142                                        中断的转换:单次转换结束或序列转换结束。
00f144                                        此参数可以是 @ref ADC_ EOCSelection 的值。 */
000

00f144   FunctionalState LowPowerAutoWait; /*!< 选择动态低功耗自动延迟:新转换仅在
00f146                                        之前的转换(对于 ADC 规则组)或之前的序列(对于 ADC 注入
00f148                                        组)已被用户软件检索后才开始,使用函数 HAL_ ADC_ GetValue()
00f149                                        或 HAL_ ADCEx_ InjectedGetValue()。
00f150                                        此功能自动使 ADC 转换触发的频率适应
00f151                                        系统读取数据的速度。此外,这避免了
00f152                                        低频率应用的超限风险。
00f153                                        此参数可以设为 ENABLE 或 DISABLE。
00f154                                        注意:不建议与中断或 DMA 一起使用(HAL_ ADC_ Start_ IT(),
00f155                                              HAL_ ADC_ Start_ DMA()),因为这些模式必须立即清除 EOC
00f156                                              标志(由 CPU 释放 IRQ 挂起事件或由 DMA)。
00f157                                              自动等待会工作但时间很短,放弃其预期的
00f158                                              好处(CPU 或 DMA 传输高负载的特定情况除外可能
00f159                                              证明自动等待的使用是合理的)。
00f160                                              与轮询一起使用:f1. 使用 HAL_ ADC_ Start() 开始转换,f2. 之后,
00f161                                              当需要 ADC 转换数据时:
00f162                                              使用 HAL_ ADC_ PollForConversion() 确保转换完成并
00f163                                              HAL_ ADC_ GetValue() 检索转换结果并触发另一次
00f164                                              转换开始。 (如果使用 ADC 注入组,请使用
00f165                                              等效函数 HAL_ ADCEx_ Injected_ Start(),
00f166                                              HAL_ ADCEx_ InjectedGetValue(), ...)。 */
000

00f166   FunctionalState ContinuousConvMode; /*!< 指定在第一次 ADC 转换
000
000
000