STM32G474xx HAL 用户手册
stm32g4xx_hal_opamp.h
转至此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_opamp.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of OPAMP HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_OPAMP_H
00021 #define STM32G4xx_HAL_OPAMP_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32G4xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 #if defined (OPAMP1) || defined (OPAMP2) || defined (OPAMP3) || defined (OPAMP4) || defined (OPAMP5) || defined (OPAMP6)
00035 
00036 /** @addtogroup OPAMP
00037   * @{
00038   */
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 /** @defgroup OPAMP_Exported_Types OPAMP 导出的类型
00042   * @{
00043   */
00044 
00045 /**
00046   * @brief  OPAMP 初始化结构定义
00047   */
00048 
00049 typedef struct
00050 {
00051   uint32_t PowerMode;                   /*!< 指定功率模式 - 正常或高速。
00052                                              此参数必须是 @ref OPAMP_PowerMode 的值 */
00053 
00054   uint32_t Mode;                        /*!< 指定 OPAMP 模式
00055                                              此参数必须是 @ref OPAMP_Mode 的值
00056                                              模式可以为独立模式、跟随器模式或 PGA 模式 */
00057 
00058   uint32_t InvertingInput;              /*!< 指定独立模式和 PGA 模式下的反相输入
00059                                                - 独立模式时:即当模式为 OPAMP_STANDALONE_MODE 时
00060                                                  此参数必须是 @ref OPAMP_InvertingInput 的值
00061                                                  InvertingInput 可以是 VINM0 或 VINM1
00062                                                - PGA 模式时:即当模式为 OPAMP_PGA_MODE 时
00063                                                  和跟随器模式时:即当模式为 OPAMP_FOLLOWER_MODE 时
00064                                                  此参数不适用 */
00065 
00066   uint32_t NonInvertingInput;           /*!< 指定运算放大器的非反相输入:
00067                                              此参数必须是 @ref OPAMP_NonInvertingInput 的值
00068                                              NonInvertingInput 可以是 VINP0、VINP1、VINP2 或 VINP3 */
00069 
00070   FunctionalState InternalOutput;       /*!< 指定从 OPAMP 到 ADC 的内部输出配置。
00071                                              此参数可以是 ENABLE 或 DISABLE
00072                                              注意:当此输出使能时,常规输出到 I/O 被禁用 */
00073 
00074   uint32_t TimerControlledMuxmode;      /*!< 指定定时器控制的 Mux 模式是使能还是禁用
00075                                              此参数必须是 @ref OPAMP_TimerControlledMuxmode 的单一值
00076                                              或它们的组合,以使用不同的定时器构建更复杂的开关方案 */
00077 
00078   uint32_t InvertingInputSecondary;     /*!< 指定当 TimerControlledMuxmode 使能时运算放大器的反相输入(次级)
00079                                              即当 TimerControlledMuxmode 为 OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE 时
00080                                                - 独立模式时:即当模式为 OPAMP_STANDALONE_MODE 时
00081                                                  此参数必须是 @ref OPAMP_InvertingInputSecondary 的值
00082                                                  InvertingInputSecondary 可以是 VINM0 或 VINM1
00083                                                - PGA 模式时:即当模式为 OPAMP_PGA_MODE 时
00084                                                  和跟随器模式时:即当模式为 OPAMP_FOLLOWER_MODE 时
00085                                                  此参数必须是 @ref OPAMP_InvertingInputSecondary 的值
00086                                                  并用于选择次级模式(PGA 或跟随器) */
00087 
00088   uint32_t NonInvertingInputSecondary;  /*!< 指定当 TimerControlledMuxmode 使能时运算放大器的非反相输入(次级)
00089                                              即当 TimerControlledMuxmode 为 OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE 时
00090                                              此参数必须是 @ref OPAMP_NonInvertingInputSecondary 的值
00091                                              NonInvertingInput 可以是 VINP0、VINP1、VINP2 或 VINP3 */
00092 
00093 /*!< 指定 PGA 模式下的反相引脚
00094                                              即当模式为 OPAMP_PGA_MODE 时
00095                                              此参数必须是 @ref OPAMP_PgaConnect 的值
00096                                              可以是:不连接、连接到 VINM0
00097                                              在后一种情况下,VINM0 可用于输入信号(负增益情况
00098                                              带或不带 VINPx 偏置)或用于输入偏置(正增益情况带偏置) */
00099 
00100 /*!< 指定 PGA 模式下的增益
00101                                              即当模式为 OPAMP_PGA_MODE 时。
00102                                              此参数必须是 @ref OPAMP_PgaGain 的值
00103                                              正增益:(2, 4, 8, 16, 32 或 64)且负增益:(-1, -3, -7, -15, -31 或 -63) */
00104 
00105 /*!< 指定校准模式
00106                                              此参数必须是 @ref OPAMP_UserTrimming 的值
00107                                              UserTrimming 可以是工厂校准或用户校准 */
00108 
00109 /*!< 指定偏置校准值(PMOS)
00110                                              即当 UserTrimming 为 OPAMP_TRIMMING_USER 时。
00111                                              此参数必须是介于 Min_Data = 1 和 Max_Data = 31 之间的数值 */
00112 
00113 /*!< 指定偏置校准值(NMOS)
00114                                              即当 UserTrimming 为 OPAMP_TRIMMING_USER 时。
00115                                              此参数必须是介于 Min_Data = 1 和 Max_Data = 31 之间的数值 */
00116 
00117 } OPAMP_InitTypeDef;
00118 
00119 /**
00120   * @brief  HAL 状态结构定义
00121   */
00122 
00123 00123 typedef enum
00124 {
00125   HAL_OPAMP_STATE_RESET               = 0x00000000UL, /*!< OPAMP 尚未初始化          */
00126 
00127   HAL_OPAMP_STATE_READY               = 0x00000001UL, /*!< OPAMP 已初始化并可使用 */
00128 
00129   HAL_OPAMP_STATE_CALIBBUSY           = 0x00000002UL, /*!< OPAMP 处于自动校准模式 */
00130 
00131   HAL_OPAMP_STATE_BUSY                = 0x00000004UL, /*!< OPAMP 已使能并在正常模式下运行 */
00132 
00133   HAL_OPAMP_STATE_BUSYLOCKED          = 0x00000005UL, /*!< OPAMP 控制寄存器已锁定
00134                                                          只有系统复位才能重新配置 opamp。 */
00135 
00136 } HAL_OPAMP_StateTypeDef;
00137 
00138 /**
00139   * @brief OPAMP 句柄结构定义
00140   */
00141 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
00142 typedef struct __OPAMP_HandleTypeDef
00143 #else
00144 typedef struct
00145 #endif
00146 {
00147 00147   OPAMP_TypeDef       *Instance;                    /*!< OPAMP 实例的寄存器基地址   */
00148 00148   OPAMP_InitTypeDef   Init;                         /*!< OPAMP 所需参数 */
00149 00149   HAL_StatusTypeDef Status;                         /*!< OPAMP 外设状态   */
00150 00150   HAL_LockTypeDef   Lock;                           /*!< 锁定对象          */
00151 00151   __IO HAL_OPAMP_StateTypeDef  State;               /*!< OPAMP 通信状态 */
00152 
00153 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
00154 00154   void (* MspInitCallback)(struct __OPAMP_HandleTypeDef *hopamp);
00155 00155   void (* MspDeInitCallback)(struct __OPAMP_HandleTypeDef *hopamp);
00156 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
00157 
00158 } OPAMP_HandleTypeDef;
00159 
00160 /**
00161   * @brief OPAMP_TrimmingValueTypeDef 定义
00162   */
00163 
00164 00164 typedef  uint32_t OPAMP_TrimmingValueTypeDef;
00165 /**
00166   * @}
00167   */
00168 
00169 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
00170 /**
00171   * @brief  HAL OPAMP 回调 ID 枚举定义
00172   */