ARM GAS /tmp/ccfpzjW9.s page 1 1 .cpu cortex-m4 2 .eabi_attribute 27, 1 3 .eabi_attribute 28, 1 4 .eabi_attribute 23, 1 5 .eabi_attribute 24, 1 6 .eabi_attribute 25, 1 7 .eabi_attribute 26, 1 8 .eabi_attribute 30, 2 9 .eabi_attribute 34, 1 10 .eabi_attribute 18, 4 11 .file "stm32g4xx_hal_opamp.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.HAL_OPAMP_MspInit,"ax",%progbits 16 .align 1 17 .p2align 2,,3 18 .weak HAL_OPAMP_MspInit 19 .syntax unified 20 .thumb 21 .thumb_func 22 .fpu fpv4-sp-d16 24 HAL_OPAMP_MspInit: 25 .LFB331: 26 .file 1 "Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c" 1:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 2:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ****************************************************************************** 3:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @file stm32g4xx_hal_opamp.c 4:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @author MCD Application Team 5:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief OPAMP HAL module driver. 6:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * functionalities of the operational amplifiers (OPAMP1,...OPAMP6) 8:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * peripheral: 9:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + OPAMP Configuration 10:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + OPAMP calibration 11:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * Thanks to 12:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + Initialization/de-initialization functions 13:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + I/O operation functions 14:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + Peripheral Control functions 15:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * + Peripheral State functions 16:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 17:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @verbatim 18:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ================================================================================ 19:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### OPAMP Peripheral Features ##### 20:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ================================================================================ 21:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 22:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] The device integrates up to 6 operational amplifiers OPAMP1, OPAMP2, 23:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP3, OPAMP4, OPAMP5 and OPAMP6: 24:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 25:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) The OPAMP(s) provides several exclusive running modes. 26:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Standalone mode 27:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Programmable Gain Amplifier (PGA) mode (Resistor feedback output) 28:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Follower mode 29:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 30:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) The OPAMP(s) provide(s) calibration capabilities. 31:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Calibration aims at correcting some offset for running mode. 32:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The OPAMP uses either factory calibration settings OR user defined ARM GAS /tmp/ccfpzjW9.s page 2 33:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** calibration (trimming) settings (i.e. trimming mode). 34:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The user defined settings can be figured out using self calibration 35:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** handled by HAL_OPAMP_SelfCalibrate, HAL_OPAMPEx_SelfCalibrateAll 36:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) HAL_OPAMP_SelfCalibrate: 37:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Runs automatically the calibration in 2 steps. 38:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (90% of VDDA for NMOS transistors, 10% of VDDA for PMOS transistors). 39:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (As OPAMP is Rail-to-rail input/output, these 2 steps calibration is 40:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** appropriate and enough in most cases). 41:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Enables the user trimming mode 42:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Updates the init structure with trimming values with fresh calibration 43:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** results. 44:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** The user may store the calibration results for larger 45:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (ex monitoring the trimming as a function of temperature 46:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** for instance) 47:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) for STM32G4 devices having 6 OPAMPs 48:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_OPAMPEx_SelfCalibrateAll 49:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** runs calibration of 6 OPAMPs in parallel. 50:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 51:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) For any running mode, an additional Timer-controlled Mux (multiplexer) 52:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** mode can be set on top. 53:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Timer-controlled Mux mode allows Automatic switching of inputs 54:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** configuration (inverting and non inverting). 55:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Hence on top of defaults (primary) inverting and non-inverting inputs, 56:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** the user shall select secondary inverting and non inverting inputs. 57:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) TIM1 OC6, TIM8 OC6 and TIM20 OC6 provides the alternate switching 58:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** tempo between defaults (primary) and secondary inputs. 59:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) These 3 timers (TIM1, TIM8 and TIM20) can be combined to design a more 60:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** complex switching scheme. So that any of the selected channel can initiate 61:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** the configuration switch. 62:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 63:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Running mode: Standalone mode 64:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Gain is set externally (gain depends on external loads). 65:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Follower mode also possible externally by connecting the inverting input to 66:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** the output. 67:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 68:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Running mode: Follower mode 69:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Inverting Input is not connected. 70:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 71:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Running mode: Programmable Gain Amplifier (PGA) mode 72:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (Resistor feedback output) 73:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The OPAMP(s) output(s) can be internally connected to resistor feedback 74:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** output. 75:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The OPAMP inverting input can be "not" connected, signal to amplify is 76:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** connected to non inverting input and gain is positive (2,4,8,16,32 or 64) 77:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The OPAMP inverting input can be connected to VINM0: 78:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** If signal is applied to non inverting input, gain is positive (2,4,8,16,32 or 64). 79:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** If signal is applied to inverting input, gain is negative (-1,-3,-7,-15-,31 or -63). 80:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** In both cases, the other input can be used as bias. 81:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 82:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 83:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### How to use this driver ##### 84:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ================================================================================ 85:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] 86:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 87:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** *** High speed / normal power mode *** 88:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ============================================ 89:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] To run in high speed mode: ARM GAS /tmp/ccfpzjW9.s page 3 90:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 91:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Configure the OPAMP using HAL_OPAMP_Init() function: 92:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select OPAMP_POWERMODE_HIGHSPEED 93:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Otherwise select OPAMP_POWERMODE_NORMAL 94:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 95:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** *** Calibration *** 96:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ============================================ 97:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] To run the OPAMP calibration self calibration: 98:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 99:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Start calibration using HAL_OPAMP_SelfCalibrate. 100:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** Store the calibration results. 101:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 102:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** *** Running mode *** 103:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ============================================ 104:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] To use the OPAMP, perform the following steps: 105:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 106:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Fill in the HAL_OPAMP_MspInit() to 107:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Configure the OPAMP input AND output in analog mode using 108:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_GPIO_Init() to map the OPAMP output to the GPIO pin. 109:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 110:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Registrate Callbacks 111:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) The compilation define USE_HAL_OPAMP_REGISTER_CALLBACKS when set to 1 112:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** allows the user to configure dynamically the driver callbacks. 113:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 114:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Use Functions @ref HAL_OPAMP_RegisterCallback() to register a user callback, 115:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** it allows to register following callbacks: 116:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (+++) MspInitCallback : OPAMP MspInit. 117:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (+++) MspDeInitCallback : OPAMP MspDeInit. 118:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** This function takes as parameters the HAL peripheral handle, the Callback ID 119:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** and a pointer to the user callback function. 120:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 121:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Use function @ref HAL_OPAMP_UnRegisterCallback() to reset a callback to the default 122:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** weak (surcharged) function. It allows to reset following callbacks: 123:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (+++) MspInitCallback : OPAMP MspInit. 124:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (+++) MspDeInitCallback : OPAMP MspDeInit. 125:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (+++) All Callbacks 126:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 127:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Configure the OPAMP using HAL_OPAMP_Init() function: 128:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select the mode 129:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select the inverting input 130:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select the non-inverting input 131:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select if the internal output should be enabled/disabled (if enabled, regular I/O output 132:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select if the Timer controlled Mux is disabled or enabled and controlled by specified ti 133:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If the Timer controlled Mux mode is enabled, select the secondary inverting input 134:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If the Timer controlled Mux mode is enabled, Select the secondary non-inverting input 135:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If PGA mode is enabled, Select if inverting input is connected. 136:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If PGA mode is enabled, Select PGA gain to be used. 137:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) Select either factory or user defined trimming mode. 138:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If the user defined trimming mode is enabled, select PMOS & NMOS trimming values 139:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (typ. settings returned by HAL_OPAMP_SelfCalibrate function). 140:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 141:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Enable the OPAMP using HAL_OPAMP_Start() function. 142:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 143:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Disable the OPAMP using HAL_OPAMP_Stop() function. 144:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 145:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Lock the OPAMP in running mode using HAL_OPAMP_Lock() & HAL_OPAMP_TimerMuxLock functions. 146:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** From then the configuration can only be modified ARM GAS /tmp/ccfpzjW9.s page 4 147:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) After HW reset 148:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) OR thanks to HAL_OPAMP_MspDeInit called (user defined) from HAL_OPAMP_DeInit. 149:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 150:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** *** Running mode: change of configuration while OPAMP ON *** 151:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ============================================ 152:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] To Re-configure OPAMP when OPAMP is ON (change on the fly) 153:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) If needed, fill in the HAL_OPAMP_MspInit() 154:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) This is the case for instance if you wish to use new OPAMP I/O 155:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 156:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Configure the OPAMP using HAL_OPAMP_Init() function: 157:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) As in configure case, selects first the parameters you wish to modify. 158:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If OPAMP control register is locked, it is not possible to modify any values 159:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** on the fly (even the timer controlled mux parameters). 160:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (++) If OPAMP timer controlled mux mode register is locked, it is possible to modify any valu 161:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** of the control register but none on the timer controlled mux mode one. 162:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 163:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (#) Change from high speed mode to normal power mode (& vice versa) requires 164:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** first HAL_OPAMP_DeInit() (force OPAMP OFF) and then HAL_OPAMP_Init(). 165:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** In other words, of OPAMP is ON, HAL_OPAMP_Init can NOT change power mode 166:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** alone. 167:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 168:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @endverbatim 169:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ****************************************************************************** 170:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @attention 171:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 172:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** *

© Copyright (c) 2019 STMicroelectronics. 173:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * All rights reserved.

174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * This software component is licensed by ST under BSD 3-Clause license, 176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * the "License"; You may not use this file except in compliance with the 177:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * License. You may obtain a copy of the License at: 178:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * opensource.org/licenses/BSD-3-Clause 179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 180:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ****************************************************************************** 181:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* 184:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** Additional Tables: 185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** The OPAMPs non inverting input (both default and secondary) can be 186:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** selected among the list shown by table below. 187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 188:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** The OPAMPs non inverting input (both default and secondary) can be 189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** selected among the list shown by table below. 190:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 191:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** Table 1. OPAMPs inverting/non-inverting inputs for the STM32G4 devices: 192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** +--------------------------------------------------------------------------------------------+ 193:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | | OPAMP1 | OPAMP2 | OPAMP3 | OPAMP4 | OPAMP5 | OPAMP6 | 194:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** |-----------------|--------|----------|----------|----------|----------|----------|----------| 195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | No conn| X | X | X | X | X | X | 196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | Inverting Input | VM0 | PA3 | PA5 | PB2 | PB10 | PB15 | PA1 | 197:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | (1) | VM1 | PC5 | PC5 | PB10 | PD8 | PA3 | PB1 | 198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** |-----------------|--------|----------|----------|----------|----------|----------|----------| 199:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | VP0 | PA1 | PA7 | PB0 | PB13 | PB14 | PB12 | 200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | Non Inverting | VP1 | PA3 | PB14 | PB13 | PD11 | PD12 | PD9 | 201:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | Input | VP2 | PA7 | PB0 | PA1 | PB11 | PC3 | PB13 | 202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | VP3 | DAC3_CH1 | PD14 | DAC3_CH2 | DAC4_CH1 | DAC4_CH2 | DAC3_CH1 | 203:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** +--------------------------------------------------------------------------------------------+ ARM GAS /tmp/ccfpzjW9.s page 5 204:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (1): No connection in follower mode. 205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** Table 2. OPAMPs outputs for the STM32G4 devices: 207:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** +--------------------------------------------------------------------------------+ 208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | | OPAMP1 | OPAMP2 | OPAMP3 | OPAMP4 | OPAMP5 | OPAMP6 | 209:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** |-----------------|--------|--------|--------|--------|--------|--------|--------| 210:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | Output | | PA2 | PA6 | PB1 | PB12 | PA8 | PB11 | 211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** |-----------------|--------|--------|--------|--------|--------|--------|--------+ 212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | Internal output | | ADC1 | ADC2 | ADC2 | ADC5 | ADC5 | ADC4 | 213:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | to ADCs | | CH13 | CH16 | CH18 | CH5 | CH3 | CH17 | 214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | | | | ADC3 | | | | 215:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | | | | | CH13 | | | | 216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** |-----------------|--------|--------|--------|--------|--------|--------|--------+ 217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 218:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 219:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 220:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Includes ------------------------------------------------------------------*/ 221:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #include "stm32g4xx_hal.h" 222:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 223:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @addtogroup STM32G4xx_HAL_Driver 224:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 227:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #ifdef HAL_OPAMP_MODULE_ENABLED 228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP OPAMP 230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief OPAMP HAL module driver 231:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 232:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Private typedef -----------------------------------------------------------*/ 235:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Private define ------------------------------------------------------------*/ 236:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Private_Define OPAMP Private Define 237:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 239:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* CSR register reset value */ 240:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #define OPAMP_CSR_RESET_VALUE (0x00000000UL) 241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* CSR register TRIM value upon reset are factory ones, filter them out from CSR register check */ 242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #define OPAMP_CSR_RESET_CHECK_MASK (~(OPAMP_CSR_TRIMOFFSETN | OPAMP_CSR_TRIMOFFSETP)) 243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* CSR init register Mask */ 244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #define OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK (OPAMP_CSR_TRIMOFFSETN | OPAMP_CSR_TRIMOFFSETP \ 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | OPAMP_CSR_HIGHSPEEDEN | OPAMP_CSR_OPAMPINTEN \ 246:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | OPAMP_CSR_PGGAIN | OPAMP_CSR_VPSEL \ 247:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | OPAMP_CSR_VMSEL | OPAMP_CSR_FORCEVP) 248:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* TCMR init register Mask */ 249:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #define OPAMP_TCMR_UPDATE_PARAMETERS_INIT_MASK (OPAMP_TCMR_T20CMEN | OPAMP_TCMR_T8CMEN \ 250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | OPAMP_TCMR_T1CMEN | OPAMP_TCMR_VPSSEL \ 251:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** | OPAMP_TCMR_VMSSEL) 252:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @} 254:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 255:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Private macro -------------------------------------------------------------*/ 257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Private variables ---------------------------------------------------------*/ 258:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Private function prototypes -----------------------------------------------*/ 259:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Exported functions ---------------------------------------------------------*/ 260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ARM GAS /tmp/ccfpzjW9.s page 6 261:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Exported_Functions OPAMP Exported Functions 262:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 264:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 265:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Exported_Functions_Group1 Initialization and de-initialization functions 266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Initialization and Configuration functions 267:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @verbatim 269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 270:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### Initialization and de-initialization functions ##### 271:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] This section provides functions allowing to: 273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @endverbatim 275:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 276:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 278:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 279:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Initializes the OPAMP according to the specified 280:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * parameters in the OPAMP_InitTypeDef and initialize the associated handle. 281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @note If the selected opamp is locked, initialization can't be performed. 282:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * To unlock the configuration, perform a system reset. 283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 284:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 285:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp) 287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 288:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 289:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 290:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation and lock status */ 291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Init not allowed if calibration is ongoing */ 292:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 294:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return HAL_ERROR; 295:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_BUSYLOCKED) 297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 298:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return HAL_ERROR; 299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 300:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_CALIBBUSY) 301:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return HAL_ERROR; 303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 305:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 306:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 308:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 310:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set OPAMP parameters */ 311:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_POWERMODE(hopamp->Init.PowerMode)); 312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_FUNCTIONAL_NORMALMODE(hopamp->Init.Mode)); 313:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_NONINVERTING_INPUT(hopamp->Init.NonInvertingInput)); 314:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 316:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_RESET) 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { ARM GAS /tmp/ccfpzjW9.s page 7 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->MspInitCallback == NULL) 319:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 320:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->MspInitCallback = HAL_OPAMP_MspInit; 321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 322:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 323:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 324:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 325:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Init.Mode) == OPAMP_STANDALONE_MODE) 326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 327:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_INVERTING_INPUT(hopamp->Init.InvertingInput)); 328:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_FUNCTIONAL_STATE(hopamp->Init.InternalOutput)); 330:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 331:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_TIMERCONTROLLED_MUXMODE(hopamp->Init.TimerControlledMuxmode)); 332:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 333:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Init.TimerControlledMuxmode) != OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE) 334:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 335:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_SEC_NONINVERTING_INPUT(hopamp->Init.NonInvertingInputSecondary)); 336:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_SEC_INVERTING_INPUT(hopamp->Init.InvertingInputSecondary)); 337:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 338:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 339:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Init.Mode) == OPAMP_PGA_MODE) 340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 341:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_PGACONNECT(hopamp->Init.PgaConnect)); 342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_PGA_GAIN(hopamp->Init.PgaGain)); 343:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 344:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 345:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_TRIMMING(hopamp->Init.UserTrimming)); 346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Init.UserTrimming) == OPAMP_TRIMMING_USER) 347:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValueP)); 349:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_TRIMMINGVALUE(hopamp->Init.TrimmingValueN)); 350:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 352:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Init SYSCFG and the low level hardware to access opamp */ 353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); 354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_RESET) 356:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Allocate lock resource and initialize it */ 358:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Lock = HAL_UNLOCKED; 359:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 362:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->MspInitCallback(hopamp); 363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #else 364:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Call MSP init function */ 365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_OPAMP_MspInit(hopamp); 366:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 368:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set OPAMP parameters */ 369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.Mode value * 370:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.InvertingInput value * 371:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.NonInvertingInput value * 372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.InternalOutput value * 373:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.TimerControlledMuxmode value * 374:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.InvertingInputSecondary value * ARM GAS /tmp/ccfpzjW9.s page 8 375:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.NonInvertingInputSecondary value * 376:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.PgaConnect value * 377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.PgaGain value * 378:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.UserTrimming value * 379:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.TrimmingValueP value * 380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set bits according to hopamp->hopamp->Init.TrimmingValueN value * 381:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 382:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 383:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* check if OPAMP_PGA_MODE & in Follower mode */ 384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* - InvertingInput */ 385:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* is Not Applicable */ 386:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Init.Mode == OPAMP_PGA_MODE) || (hopamp->Init.Mode == OPAMP_FOLLOWER_MODE)) 388:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update User Trim config first to be able to modify trimming value afterwards */ 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, 391:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.UserTrimming); 393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, 394:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PowerMode | 396:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.Mode | 397:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.NonInvertingInput | 398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ((hopamp->Init.InternalOutput == ENABLE) ? OPAMP_CSR_OPAMPINTEN : 0UL) | 399:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PgaConnect | 400:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PgaGain | 401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (hopamp->Init.TrimmingValueP << OPAMP_INPUT_NONINVERTING) | 402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (hopamp->Init.TrimmingValueN << OPAMP_INPUT_INVERTING)); 403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 404:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else /* OPAMP_STANDALONE_MODE */ 405:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 406:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update User Trim config first to be able to modify trimming value afterwards */ 407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, 408:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.UserTrimming); 410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, 411:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 412:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PowerMode | 413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.Mode | 414:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.InvertingInput | 415:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.NonInvertingInput | 416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ((hopamp->Init.InternalOutput == ENABLE) ? OPAMP_CSR_OPAMPINTEN : 0UL) | 417:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PgaConnect | 418:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.PgaGain | 419:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (hopamp->Init.TrimmingValueP << OPAMP_INPUT_NONINVERTING) | 420:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** (hopamp->Init.TrimmingValueN << OPAMP_INPUT_INVERTING)); 421:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((READ_BIT(hopamp->Instance->TCMR, OPAMP_TCMR_LOCK)) == 0UL) 424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->TCMR, 426:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_TCMR_UPDATE_PARAMETERS_INIT_MASK, 427:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.TimerControlledMuxmode | 428:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.InvertingInputSecondary | 429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.NonInvertingInputSecondary); 430:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ARM GAS /tmp/ccfpzjW9.s page 9 432:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update the OPAMP state*/ 433:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_RESET) 434:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 435:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* From RESET state to READY State */ 436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->State = HAL_OPAMP_STATE_READY; 437:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 438:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* else: remain in READY or BUSY state (no update) */ 439:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 440:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 443:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 445:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 446:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief DeInitializes the OPAMP peripheral 447:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @note Deinitialization can't be performed if the OPAMP configuration is locked. 448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * To unlock the configuration, perform a system reset. 449:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 450:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 452:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_DeInit(OPAMP_HandleTypeDef *hopamp) 453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 455:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 457:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* DeInit not allowed if calibration is ongoing */ 458:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 459:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 461:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_CALIBBUSY) 463:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 464:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 465:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 466:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 467:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 468:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 469:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 470:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 471:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set OPAMP_CSR register to reset value */ 472:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** WRITE_REG(hopamp->Instance->CSR, OPAMP_CSR_RESET_VALUE); 473:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 474:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* DeInit the low level hardware: GPIO, CLOCK and NVIC */ 475:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* When OPAMP is locked, unlocking can be achieved thanks to */ 476:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* __HAL_RCC_SYSCFG_CLK_DISABLE() call within HAL_OPAMP_MspDeInit */ 477:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Note that __HAL_RCC_SYSCFG_CLK_DISABLE() also disables comparator */ 478:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 479:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 480:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->MspDeInitCallback == NULL) 481:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 482:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->MspDeInitCallback = HAL_OPAMP_MspDeInit; 483:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 484:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* DeInit the low level hardware */ 485:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->MspDeInitCallback(hopamp); 486:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #else 487:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_OPAMP_MspDeInit(hopamp); 488:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ ARM GAS /tmp/ccfpzjW9.s page 10 489:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 490:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (OPAMP_CSR_RESET_VALUE == (hopamp->Instance->CSR & OPAMP_CSR_RESET_CHECK_MASK)) 491:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 492:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update the OPAMP state */ 493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->State = HAL_OPAMP_STATE_RESET; 494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else /* RESET STATE */ 496:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 497:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* DeInit not complete */ 498:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* It can be the case if OPAMP was formerly locked */ 499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* The OPAMP state is NOT updated */ 502:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 503:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 504:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Process unlocked */ 505:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** __HAL_UNLOCK(hopamp); 506:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 507:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 508:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 510:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 511:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 512:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Initialize the OPAMP MSP. 513:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 514:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval None 515:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 516:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** __weak void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp) 517:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 27 .loc 1 517 0 28 .cfi_startproc 29 @ args = 0, pretend = 0, frame = 0 30 @ frame_needed = 0, uses_anonymous_args = 0 31 @ link register save eliminated. 32 .LVL0: 518:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Prevent unused argument(s) compilation warning */ 519:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** UNUSED(hopamp); 520:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 521:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* NOTE : This function should not be modified, when the callback is needed, 522:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** the HAL_OPAMP_MspInit could be implemented in the user file 523:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 524:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 525:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Example */ 526:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 33 .loc 1 526 0 34 0000 7047 bx lr 35 .cfi_endproc 36 .LFE331: 38 0002 00BF .section .text.HAL_OPAMP_Init,"ax",%progbits 39 .align 1 40 .p2align 2,,3 41 .global HAL_OPAMP_Init 42 .syntax unified 43 .thumb 44 .thumb_func 45 .fpu fpv4-sp-d16 47 HAL_OPAMP_Init: ARM GAS /tmp/ccfpzjW9.s page 11 48 .LFB329: 287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 49 .loc 1 287 0 50 .cfi_startproc 51 @ args = 0, pretend = 0, frame = 8 52 @ frame_needed = 0, uses_anonymous_args = 0 53 .LVL1: 292:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 54 .loc 1 292 0 55 0000 0028 cmp r0, #0 56 0002 5CD0 beq .L13 296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 57 .loc 1 296 0 58 0004 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 59 0008 052B cmp r3, #5 60 000a 58D0 beq .L13 300:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 61 .loc 1 300 0 62 000c 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 63 0010 022B cmp r3, #2 64 0012 54D0 beq .L13 65 .LBB2: 353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 66 .loc 1 353 0 67 0014 3A4B ldr r3, .L24 68 .LBE2: 287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 69 .loc 1 287 0 70 0016 70B5 push {r4, r5, r6, lr} 71 .LCFI0: 72 .cfi_def_cfa_offset 16 73 .cfi_offset 4, -16 74 .cfi_offset 5, -12 75 .cfi_offset 6, -8 76 .cfi_offset 14, -4 77 .LBB3: 353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 78 .loc 1 353 0 79 0018 1A6E ldr r2, [r3, #96] 80 001a 42F00102 orr r2, r2, #1 81 001e 1A66 str r2, [r3, #96] 82 0020 1B6E ldr r3, [r3, #96] 83 .LBE3: 287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 84 .loc 1 287 0 85 0022 82B0 sub sp, sp, #8 86 .LCFI1: 87 .cfi_def_cfa_offset 24 88 .LBB4: 353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 89 .loc 1 353 0 90 0024 03F00103 and r3, r3, #1 91 0028 0193 str r3, [sp, #4] 92 002a 019B ldr r3, [sp, #4] 93 .LBE4: 355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 94 .loc 1 355 0 ARM GAS /tmp/ccfpzjW9.s page 12 95 002c 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 96 0030 03F0FF02 and r2, r3, #255 97 0034 002B cmp r3, #0 98 0036 44D0 beq .L22 99 .L5: 100 0038 0446 mov r4, r0 365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 101 .loc 1 365 0 102 003a FFF7FEFF bl HAL_OPAMP_MspInit 103 .LVL2: 387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 104 .loc 1 387 0 105 003e A368 ldr r3, [r4, #8] 106 0040 23F02002 bic r2, r3, #32 107 0044 402A cmp r2, #64 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 108 .loc 1 390 0 109 0046 2268 ldr r2, [r4] 387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 110 .loc 1 387 0 111 0048 41D0 beq .L23 112 004a 6068 ldr r0, [r4, #4] 113 004c E668 ldr r6, [r4, #12] 407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 114 .loc 1 407 0 115 004e 1168 ldr r1, [r2] 116 0050 2569 ldr r5, [r4, #16] 117 0052 0343 orrs r3, r3, r0 118 0054 3343 orrs r3, r3, r6 119 0056 E06A ldr r0, [r4, #44] 410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 120 .loc 1 410 0 121 0058 666A ldr r6, [r4, #36] 122 005a 2B43 orrs r3, r3, r5 407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 123 .loc 1 407 0 124 005c 21F01001 bic r1, r1, #16 125 0060 0143 orrs r1, r1, r0 410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 126 .loc 1 410 0 127 0062 A56A ldr r5, [r4, #40] 407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 128 .loc 1 407 0 129 0064 1160 str r1, [r2] 410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 130 .loc 1 410 0 131 0066 3343 orrs r3, r3, r6 132 0068 D4E90C60 ldrd r6, r0, [r4, #48] 133 006c 2B43 orrs r3, r3, r5 134 006e 2549 ldr r1, .L24+4 135 0070 1568 ldr r5, [r2] 136 0072 43EAC643 orr r3, r3, r6, lsl #19 137 0076 43EA0063 orr r3, r3, r0, lsl #24 138 007a 207D ldrb r0, [r4, #20] @ zero_extendqisi2 139 007c 2940 ands r1, r1, r5 140 .L21: 141 007e 0128 cmp r0, #1 ARM GAS /tmp/ccfpzjW9.s page 13 142 0080 43EA0103 orr r3, r3, r1 143 0084 14BF ite ne 144 0086 0021 movne r1, #0 145 0088 4FF48071 moveq r1, #256 146 008c 0B43 orrs r3, r3, r1 147 008e 1360 str r3, [r2] 423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 148 .loc 1 423 0 149 0090 9369 ldr r3, [r2, #24] 150 0092 002B cmp r3, #0 151 0094 09DB blt .L10 425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_TCMR_UPDATE_PARAMETERS_INIT_MASK, 152 .loc 1 425 0 153 0096 D4E90635 ldrd r3, r5, [r4, #24] 154 009a 206A ldr r0, [r4, #32] 155 009c 9169 ldr r1, [r2, #24] 156 009e 2B43 orrs r3, r3, r5 157 00a0 0343 orrs r3, r3, r0 158 00a2 21F03F01 bic r1, r1, #63 159 00a6 0B43 orrs r3, r3, r1 160 00a8 9361 str r3, [r2, #24] 161 .L10: 433:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 162 .loc 1 433 0 163 00aa 94F83A30 ldrb r3, [r4, #58] @ zero_extendqisi2 164 00ae 03F0FF00 and r0, r3, #255 165 00b2 4BB9 cbnz r3, .L16 436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 166 .loc 1 436 0 167 00b4 0123 movs r3, #1 168 00b6 84F83A30 strb r3, [r4, #58] 442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 169 .loc 1 442 0 170 00ba 02B0 add sp, sp, #8 171 .LCFI2: 172 .cfi_def_cfa_offset 16 173 @ sp needed 174 00bc 70BD pop {r4, r5, r6, pc} 175 .LVL3: 176 .L13: 177 .LCFI3: 178 .cfi_def_cfa_offset 0 179 .cfi_restore 4 180 .cfi_restore 5 181 .cfi_restore 6 182 .cfi_restore 14 294:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 183 .loc 1 294 0 184 00be 0120 movs r0, #1 185 .LVL4: 442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 186 .loc 1 442 0 187 00c0 7047 bx lr 188 .LVL5: 189 .L22: 190 .LCFI4: 191 .cfi_def_cfa_offset 24 ARM GAS /tmp/ccfpzjW9.s page 14 192 .cfi_offset 4, -16 193 .cfi_offset 5, -12 194 .cfi_offset 6, -8 195 .cfi_offset 14, -4 358:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 196 .loc 1 358 0 197 00c2 80F83920 strb r2, [r0, #57] 198 00c6 B7E7 b .L5 199 .LVL6: 200 .L16: 440:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 201 .loc 1 440 0 202 00c8 0020 movs r0, #0 442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 203 .loc 1 442 0 204 00ca 02B0 add sp, sp, #8 205 .LCFI5: 206 .cfi_remember_state 207 .cfi_def_cfa_offset 16 208 @ sp needed 209 00cc 70BD pop {r4, r5, r6, pc} 210 .LVL7: 211 .L23: 212 .LCFI6: 213 .cfi_restore_state 214 00ce 6668 ldr r6, [r4, #4] 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 215 .loc 1 390 0 216 00d0 1168 ldr r1, [r2] 217 00d2 2069 ldr r0, [r4, #16] 218 00d4 E56A ldr r5, [r4, #44] 219 00d6 3343 orrs r3, r3, r6 220 00d8 0343 orrs r3, r3, r0 221 00da 21F01001 bic r1, r1, #16 393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 222 .loc 1 393 0 223 00de 606A ldr r0, [r4, #36] 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 224 .loc 1 390 0 225 00e0 2943 orrs r1, r1, r5 393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 226 .loc 1 393 0 227 00e2 A56A ldr r5, [r4, #40] 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_USERTRIM, 228 .loc 1 390 0 229 00e4 1160 str r1, [r2] 393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK, 230 .loc 1 393 0 231 00e6 0343 orrs r3, r3, r0 232 00e8 206B ldr r0, [r4, #48] 233 00ea 1668 ldr r6, [r2] 234 00ec 0549 ldr r1, .L24+4 235 00ee 2B43 orrs r3, r3, r5 236 00f0 656B ldr r5, [r4, #52] 237 00f2 43EAC043 orr r3, r3, r0, lsl #19 238 00f6 3140 ands r1, r1, r6 239 00f8 207D ldrb r0, [r4, #20] @ zero_extendqisi2 ARM GAS /tmp/ccfpzjW9.s page 15 240 00fa 43EA0563 orr r3, r3, r5, lsl #24 241 00fe BEE7 b .L21 242 .L25: 243 .align 2 244 .L24: 245 0100 00100240 .word 1073876992 246 0104 113E00E0 .word -536855023 247 .cfi_endproc 248 .LFE329: 250 .section .text.HAL_OPAMP_MspDeInit,"ax",%progbits 251 .align 1 252 .p2align 2,,3 253 .weak HAL_OPAMP_MspDeInit 254 .syntax unified 255 .thumb 256 .thumb_func 257 .fpu fpv4-sp-d16 259 HAL_OPAMP_MspDeInit: 260 .LFB341: 261 .cfi_startproc 262 @ args = 0, pretend = 0, frame = 0 263 @ frame_needed = 0, uses_anonymous_args = 0 264 @ link register save eliminated. 265 0000 7047 bx lr 266 .cfi_endproc 267 .LFE341: 269 0002 00BF .section .text.HAL_OPAMP_DeInit,"ax",%progbits 270 .align 1 271 .p2align 2,,3 272 .global HAL_OPAMP_DeInit 273 .syntax unified 274 .thumb 275 .thumb_func 276 .fpu fpv4-sp-d16 278 HAL_OPAMP_DeInit: 279 .LFB330: 453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 280 .loc 1 453 0 281 .cfi_startproc 282 @ args = 0, pretend = 0, frame = 0 283 @ frame_needed = 0, uses_anonymous_args = 0 284 .LVL8: 458:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 285 .loc 1 458 0 286 0000 C0B1 cbz r0, .L30 462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 287 .loc 1 462 0 288 0002 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 289 0006 022A cmp r2, #2 453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 290 .loc 1 453 0 291 0008 10B5 push {r4, lr} 292 .LCFI7: 293 .cfi_def_cfa_offset 8 294 .cfi_offset 4, -8 295 .cfi_offset 14, -4 296 000a 0446 mov r4, r0 ARM GAS /tmp/ccfpzjW9.s page 16 462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 297 .loc 1 462 0 298 000c 10D0 beq .L31 472:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 299 .loc 1 472 0 300 000e 0368 ldr r3, [r0] 301 0010 0022 movs r2, #0 302 0012 1A60 str r2, [r3] 487:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 303 .loc 1 487 0 304 0014 FFF7FEFF bl HAL_OPAMP_MspDeInit 305 .LVL9: 490:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 306 .loc 1 490 0 307 0018 2368 ldr r3, [r4] 308 001a 1868 ldr r0, [r3] 309 001c 20F0FF50 bic r0, r0, #534773760 310 0020 20F4C010 bic r0, r0, #1572864 311 0024 40B1 cbz r0, .L37 499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 312 .loc 1 499 0 313 0026 0120 movs r0, #1 314 .L29: 315 .LVL10: 505:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 316 .loc 1 505 0 317 0028 0023 movs r3, #0 318 002a 84F83930 strb r3, [r4, #57] 509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 319 .loc 1 509 0 320 002e 10BD pop {r4, pc} 321 .LVL11: 322 .L31: 460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 323 .loc 1 460 0 324 0030 0120 movs r0, #1 325 .LVL12: 509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 326 .loc 1 509 0 327 0032 10BD pop {r4, pc} 328 .LVL13: 329 .L30: 330 .LCFI8: 331 .cfi_def_cfa_offset 0 332 .cfi_restore 4 333 .cfi_restore 14 460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 334 .loc 1 460 0 335 0034 0120 movs r0, #1 336 .LVL14: 509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 337 .loc 1 509 0 338 0036 7047 bx lr 339 .LVL15: 340 .L37: 341 .LCFI9: 342 .cfi_def_cfa_offset 8 ARM GAS /tmp/ccfpzjW9.s page 17 343 .cfi_offset 4, -8 344 .cfi_offset 14, -4 493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 345 .loc 1 493 0 346 0038 84F83A00 strb r0, [r4, #58] 347 003c F4E7 b .L29 348 .cfi_endproc 349 .LFE330: 351 003e 00BF .section .text.HAL_OPAMP_Start,"ax",%progbits 352 .align 1 353 .p2align 2,,3 354 .global HAL_OPAMP_Start 355 .syntax unified 356 .thumb 357 .thumb_func 358 .fpu fpv4-sp-d16 360 HAL_OPAMP_Start: 361 .LFB333: 527:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 528:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 529:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief DeInitialize OPAMP MSP. 530:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 531:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval None 532:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 533:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** __weak void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp) 534:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 535:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Prevent unused argument(s) compilation warning */ 536:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** UNUSED(hopamp); 537:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 538:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* NOTE : This function should not be modified, when the callback is needed, 539:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** the HAL_OPAMP_MspDeInit could be implemented in the user file 540:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 541:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 542:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 543:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 544:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 545:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @} 546:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 547:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 548:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 549:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Exported_Functions_Group2 Input and Output operation functions 550:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Data transfers functions 551:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 552:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @verbatim 553:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 554:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### IO operation functions ##### 555:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 556:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] 557:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** This subsection provides a set of functions allowing to manage the OPAMP data 558:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** transfers. 559:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 560:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @endverbatim 561:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 562:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 563:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 564:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 565:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Start the opamp ARM GAS /tmp/ccfpzjW9.s page 18 566:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 567:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 568:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 569:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 570:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp) 571:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 362 .loc 1 571 0 363 .cfi_startproc 364 @ args = 0, pretend = 0, frame = 0 365 @ frame_needed = 0, uses_anonymous_args = 0 366 @ link register save eliminated. 367 .LVL16: 572:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 573:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 574:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 575:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP locked */ 576:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 368 .loc 1 576 0 369 0000 40B1 cbz r0, .L42 577:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 578:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 579:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 580:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_BUSYLOCKED) 370 .loc 1 580 0 371 0002 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 372 0006 052A cmp r2, #5 373 0008 0346 mov r3, r0 374 000a 03D0 beq .L42 581:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 582:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 583:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 584:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 585:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 586:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 587:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 588:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 589:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_READY) 375 .loc 1 589 0 376 000c 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 377 0010 012A cmp r2, #1 378 0012 01D0 beq .L47 379 .L42: 578:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 380 .loc 1 578 0 381 0014 0120 movs r0, #1 382 .LVL17: 590:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 591:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Enable the selected opamp */ 592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN); 593:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 594:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update the OPAMP state*/ 595:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* From HAL_OPAMP_STATE_READY to HAL_OPAMP_STATE_BUSY */ 596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->State = HAL_OPAMP_STATE_BUSY; 597:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 598:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 599:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 600:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; ARM GAS /tmp/ccfpzjW9.s page 19 601:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 602:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 603:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 604:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 605:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 606:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 383 .loc 1 606 0 384 0016 7047 bx lr 385 .LVL18: 386 .L47: 592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 387 .loc 1 592 0 388 0018 0168 ldr r1, [r0] 389 001a 0A68 ldr r2, [r1] 571:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 390 .loc 1 571 0 391 001c 10B4 push {r4} 392 .LCFI10: 393 .cfi_def_cfa_offset 4 394 .cfi_offset 4, -4 592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 395 .loc 1 592 0 396 001e 42F00102 orr r2, r2, #1 596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 397 .loc 1 596 0 398 0022 0424 movs r4, #4 592:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 399 .loc 1 592 0 400 0024 0A60 str r2, [r1] 572:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 401 .loc 1 572 0 402 0026 0020 movs r0, #0 403 .LVL19: 596:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 404 .loc 1 596 0 405 0028 83F83A40 strb r4, [r3, #58] 406 .LVL20: 407 .loc 1 606 0 408 002c 5DF8044B ldr r4, [sp], #4 409 .LCFI11: 410 .cfi_restore 4 411 .cfi_def_cfa_offset 0 412 0030 7047 bx lr 413 .cfi_endproc 414 .LFE333: 416 0032 00BF .section .text.HAL_OPAMP_Stop,"ax",%progbits 417 .align 1 418 .p2align 2,,3 419 .global HAL_OPAMP_Stop 420 .syntax unified 421 .thumb 422 .thumb_func 423 .fpu fpv4-sp-d16 425 HAL_OPAMP_Stop: 426 .LFB334: 607:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 608:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** ARM GAS /tmp/ccfpzjW9.s page 20 609:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Stop the opamp 610:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 611:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 612:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 613:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp) 614:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 427 .loc 1 614 0 428 .cfi_startproc 429 @ args = 0, pretend = 0, frame = 0 430 @ frame_needed = 0, uses_anonymous_args = 0 431 @ link register save eliminated. 432 .LVL21: 615:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 616:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 617:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 618:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP locked */ 619:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP calibration ongoing */ 620:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 433 .loc 1 620 0 434 0000 60B1 cbz r0, .L53 621:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 622:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 623:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 624:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_BUSYLOCKED) 435 .loc 1 624 0 436 0002 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 437 0006 052A cmp r2, #5 438 0008 0346 mov r3, r0 439 000a 07D0 beq .L53 625:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 626:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 627:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 628:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_CALIBBUSY) 440 .loc 1 628 0 441 000c 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 442 0010 022A cmp r2, #2 443 0012 03D0 beq .L53 629:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 630:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 631:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 632:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 633:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 634:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 635:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 636:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 637:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_BUSY) 444 .loc 1 637 0 445 0014 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 446 0018 042A cmp r2, #4 447 001a 01D0 beq .L58 448 .L53: 622:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 449 .loc 1 622 0 450 001c 0120 movs r0, #1 451 .LVL22: 638:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 639:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Disable the selected opamp */ ARM GAS /tmp/ccfpzjW9.s page 21 640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN); 641:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 642:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Update the OPAMP state*/ 643:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* From HAL_OPAMP_STATE_BUSY to HAL_OPAMP_STATE_READY*/ 644:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->State = HAL_OPAMP_STATE_READY; 645:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 646:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 647:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 648:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 649:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 650:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 651:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 652:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 452 .loc 1 652 0 453 001e 7047 bx lr 454 .LVL23: 455 .L58: 640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 456 .loc 1 640 0 457 0020 0168 ldr r1, [r0] 458 0022 0A68 ldr r2, [r1] 614:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 459 .loc 1 614 0 460 0024 10B4 push {r4} 461 .LCFI12: 462 .cfi_def_cfa_offset 4 463 .cfi_offset 4, -4 640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 464 .loc 1 640 0 465 0026 22F00102 bic r2, r2, #1 644:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 466 .loc 1 644 0 467 002a 0124 movs r4, #1 640:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 468 .loc 1 640 0 469 002c 0A60 str r2, [r1] 615:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 470 .loc 1 615 0 471 002e 0020 movs r0, #0 472 .LVL24: 644:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 473 .loc 1 644 0 474 0030 83F83A40 strb r4, [r3, #58] 475 .LVL25: 476 .loc 1 652 0 477 0034 5DF8044B ldr r4, [sp], #4 478 .LCFI13: 479 .cfi_restore 4 480 .cfi_def_cfa_offset 0 481 0038 7047 bx lr 482 .cfi_endproc 483 .LFE334: 485 003a 00BF .section .text.HAL_OPAMP_SelfCalibrate,"ax",%progbits 486 .align 1 487 .p2align 2,,3 488 .global HAL_OPAMP_SelfCalibrate 489 .syntax unified ARM GAS /tmp/ccfpzjW9.s page 22 490 .thumb 491 .thumb_func 492 .fpu fpv4-sp-d16 494 HAL_OPAMP_SelfCalibrate: 495 .LFB335: 653:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 654:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 655:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Run the self calibration of one OPAMP 656:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @note Calibration is performed in the mode specified in OPAMP init 657:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * structure (mode normal or high-speed). 658:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp handle 659:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval Updated offset trimming values (PMOS & NMOS), user trimming is enabled 660:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 661:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @note Calibration runs about 25 ms. 662:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 663:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 664:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp) 665:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 496 .loc 1 665 0 497 .cfi_startproc 498 @ args = 0, pretend = 0, frame = 0 499 @ frame_needed = 0, uses_anonymous_args = 0 500 .LVL26: 666:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 667:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 668:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 669:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** uint32_t trimmingvaluen; 670:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** uint32_t trimmingvaluep; 671:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** uint32_t delta; 672:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 673:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 674:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP locked */ 675:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 501 .loc 1 675 0 502 0000 60B1 cbz r0, .L69 665:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 503 .loc 1 665 0 504 0002 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr} 505 .LCFI14: 506 .cfi_def_cfa_offset 32 507 .cfi_offset 3, -32 508 .cfi_offset 4, -28 509 .cfi_offset 5, -24 510 .cfi_offset 6, -20 511 .cfi_offset 7, -16 512 .cfi_offset 8, -12 513 .cfi_offset 9, -8 514 .cfi_offset 14, -4 676:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 677:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 678:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 679:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_BUSYLOCKED) 515 .loc 1 679 0 516 0006 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 517 000a 052B cmp r3, #5 518 000c 03D0 beq .L71 680:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { ARM GAS /tmp/ccfpzjW9.s page 23 681:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 682:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 683:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 684:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 685:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 686:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP in calibration mode and calibration not yet enable */ 687:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp->State == HAL_OPAMP_STATE_READY) 519 .loc 1 687 0 520 000e 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 521 0012 012B cmp r3, #1 522 0014 04D0 beq .L84 523 .L71: 677:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 524 .loc 1 677 0 525 0016 0120 movs r0, #1 526 .LVL27: 688:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 689:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 690:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 691:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 692:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set Calibration mode */ 693:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Non-inverting input connected to calibration reference voltage. */ 694:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_FORCEVP); 695:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 696:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* user trimming values are used for offset calibration */ 697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_USERTRIM); 698:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 699:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Enable calibration */ 700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALON); 701:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 702:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* 1st calibration - N */ 703:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Select 90% VREF */ 704:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_CALSEL, OPAMP_VREF_90VDDA); 705:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 706:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Enable the selected opamp */ 707:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN); 708:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 709:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Init trimming counter */ 710:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Medium value */ 711:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluen = 16UL; 712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta = 8UL; 713:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 714:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** while (delta != 0UL) 715:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 716:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set candidate trimming */ 717:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVE 718:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 719:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OFFTRIMmax delay 2 ms as per datasheet (electrical characteristics */ 720:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Offset trim time: during calibration, minimum time needed between */ 721:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* two steps to have 1 mV accuracy */ 722:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_Delay(2); 723:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 724:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Instance->CSR & OPAMP_CSR_OUTCAL) != 0UL) 725:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 726:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP_CSR_OUTCAL is HIGH try higher trimming */ 727:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluen += delta; 728:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } ARM GAS /tmp/ccfpzjW9.s page 24 729:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 730:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 731:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP_CSR_OUTCAL is LOW try lower trimming */ 732:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluen -= delta; 733:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 734:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 735:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta >>= 1; 736:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 737:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 738:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Still need to check if righ calibration is current value or un step below */ 739:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Indeed the first value that causes the OUTCAL bit to change from 1 to 0 */ 740:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVERT 741:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 742:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OFFTRIMmax delay 2 ms as per datasheet (electrical characteristics */ 743:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Offset trim time: during calibration, minimum time needed between */ 744:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* two steps to have 1 mV accuracy */ 745:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_Delay(2); 746:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 747:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Instance->CSR & OPAMP_CSR_OUTCAL) != 0UL) 748:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 749:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP_CSR_OUTCAL is actually one value more */ 750:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluen++; 751:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set right trimming */ 752:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVE 753:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 754:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 755:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* 2nd calibration - P */ 756:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Select 10% VREF */ 757:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_CALSEL, OPAMP_VREF_10VDDA); 758:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 759:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Init trimming counter */ 760:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Medium value */ 761:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluep = 16UL; 762:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta = 8UL; 763:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 764:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** while (delta != 0UL) 765:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 766:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set candidate trimming */ 767:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, trimmingvaluep << OPAMP_INPUT_NONI 768:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 769:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OFFTRIMmax delay 2 ms as per datasheet (electrical characteristics */ 770:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Offset trim time: during calibration, minimum time needed between */ 771:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* two steps to have 1 mV accuracy */ 772:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_Delay(2); 773:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 774:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Instance->CSR & OPAMP_CSR_OUTCAL) != 0UL) 775:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 776:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP_CSR_OUTCAL is HIGH try higher trimming */ 777:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluep += delta; 778:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 779:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 780:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 781:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluep -= delta; 782:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 783:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 784:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta >>= 1; 785:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } ARM GAS /tmp/ccfpzjW9.s page 25 786:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 787:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Still need to check if righ calibration is current value or un step below */ 788:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Indeed the first value that causes the OUTCAL bit to change from 1 to 0U */ 789:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set candidate trimming */ 790:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, trimmingvaluep << OPAMP_INPUT_NONINV 791:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 792:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OFFTRIMmax delay 2 ms as per datasheet (electrical characteristics */ 793:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Offset trim time: during calibration, minimum time needed between */ 794:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* two steps to have 1 mV accuracy */ 795:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_Delay(2); 796:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 797:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((hopamp->Instance->CSR & OPAMP_CSR_OUTCAL) != 0UL) 798:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 799:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP_CSR_OUTCAL is actually one value more */ 800:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvaluep++; 801:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set right trimming */ 802:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, trimmingvaluep << OPAMP_INPUT_NONI 803:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 804:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 805:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Disable calibration */ 806:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_CALON); 807:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 808:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Disable the OPAMP */ 809:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_OPAMPxEN); 810:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 811:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set operating mode */ 812:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Non-inverting input connected to calibration reference voltage. */ 813:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_FORCEVP); 814:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 815:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Self calibration is successful */ 816:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Store calibration(user timing) results in init structure. */ 817:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 818:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Write calibration result N */ 819:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.TrimmingValueN = trimmingvaluen; 820:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 821:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Write calibration result P */ 822:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.TrimmingValueP = trimmingvaluep; 823:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 824:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Select user timing mode */ 825:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* And updated with calibrated settings */ 826:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->Init.UserTrimming = OPAMP_TRIMMING_USER; 827:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, trimmingvaluep << OPAMP_INPUT_NONINV 828:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVERT 829:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 830:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 831:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 832:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 833:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP can not be calibrated from this mode */ 834:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 835:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 836:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 837:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 838:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 527 .loc 1 838 0 528 0018 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc} 529 .LVL28: 530 .L69: ARM GAS /tmp/ccfpzjW9.s page 26 531 .LCFI15: 532 .cfi_def_cfa_offset 0 533 .cfi_restore 3 534 .cfi_restore 4 535 .cfi_restore 5 536 .cfi_restore 6 537 .cfi_restore 7 538 .cfi_restore 8 539 .cfi_restore 9 540 .cfi_restore 14 677:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 541 .loc 1 677 0 542 001c 0120 movs r0, #1 543 .LVL29: 544 .loc 1 838 0 545 001e 7047 bx lr 546 .LVL30: 547 .L84: 548 .LCFI16: 549 .cfi_def_cfa_offset 32 550 .cfi_offset 3, -32 551 .cfi_offset 4, -28 552 .cfi_offset 5, -24 553 .cfi_offset 6, -20 554 .cfi_offset 7, -16 555 .cfi_offset 8, -12 556 .cfi_offset 9, -8 557 .cfi_offset 14, -4 694:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 558 .loc 1 694 0 559 0020 0368 ldr r3, [r0] 560 0022 1A68 ldr r2, [r3] 561 0024 42F00202 orr r2, r2, #2 562 0028 1A60 str r2, [r3] 697:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 563 .loc 1 697 0 564 002a 1A68 ldr r2, [r3] 565 002c 42F01002 orr r2, r2, #16 566 0030 1A60 str r2, [r3] 700:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 567 .loc 1 700 0 568 0032 1A68 ldr r2, [r3] 569 0034 42F40062 orr r2, r2, #2048 570 0038 1A60 str r2, [r3] 704:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 571 .loc 1 704 0 572 003a 1A68 ldr r2, [r3] 573 003c 42F44052 orr r2, r2, #12288 574 0040 1A60 str r2, [r3] 707:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 575 .loc 1 707 0 576 0042 1A68 ldr r2, [r3] 577 0044 42F00102 orr r2, r2, #1 578 0048 0446 mov r4, r0 579 004a 1A60 str r2, [r3] 580 .LVL31: 581 004c 0426 movs r6, #4 ARM GAS /tmp/ccfpzjW9.s page 27 712:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 582 .loc 1 712 0 583 004e 0827 movs r7, #8 711:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta = 8UL; 584 .loc 1 711 0 585 0050 1025 movs r5, #16 586 .LVL32: 587 .L63: 717:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 588 .loc 1 717 0 589 0052 1A68 ldr r2, [r3] 590 0054 22F0F852 bic r2, r2, #520093696 591 0058 42EA0562 orr r2, r2, r5, lsl #24 592 005c 1A60 str r2, [r3] 722:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 593 .loc 1 722 0 594 005e 0220 movs r0, #2 595 0060 FFF7FEFF bl HAL_Delay 596 .LVL33: 724:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 597 .loc 1 724 0 598 0064 2368 ldr r3, [r4] 599 0066 1A68 ldr r2, [r3] 600 0068 5200 lsls r2, r2, #1 727:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 601 .loc 1 727 0 602 006a 4CBF ite mi 603 006c ED19 addmi r5, r5, r7 604 .LVL34: 732:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 605 .loc 1 732 0 606 006e ED1B subpl r5, r5, r7 607 .LVL35: 714:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 608 .loc 1 714 0 609 0070 013E subs r6, r6, #1 735:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 610 .loc 1 735 0 611 0072 4FEA5707 lsr r7, r7, #1 612 .LVL36: 714:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 613 .loc 1 714 0 614 0076 ECD1 bne .L63 740:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 615 .loc 1 740 0 616 0078 1A68 ldr r2, [r3] 617 007a 2E06 lsls r6, r5, #24 618 007c 22F0F852 bic r2, r2, #520093696 619 0080 3243 orrs r2, r2, r6 620 0082 1A60 str r2, [r3] 745:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 621 .loc 1 745 0 622 0084 0220 movs r0, #2 623 0086 FFF7FEFF bl HAL_Delay 624 .LVL37: 747:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 625 .loc 1 747 0 ARM GAS /tmp/ccfpzjW9.s page 28 626 008a 2268 ldr r2, [r4] 627 008c 1368 ldr r3, [r2] 628 008e 5800 lsls r0, r3, #1 629 0090 06D5 bpl .L64 752:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 630 .loc 1 752 0 631 0092 1368 ldr r3, [r2] 750:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set right trimming */ 632 .loc 1 750 0 633 0094 0135 adds r5, r5, #1 634 .LVL38: 752:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 635 .loc 1 752 0 636 0096 2E06 lsls r6, r5, #24 637 0098 23F0F853 bic r3, r3, #520093696 638 009c 3343 orrs r3, r3, r6 639 009e 1360 str r3, [r2] 640 .L64: 757:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 641 .loc 1 757 0 642 00a0 1368 ldr r3, [r2] 643 00a2 23F44053 bic r3, r3, #12288 644 00a6 43F48053 orr r3, r3, #4096 645 00aa 1360 str r3, [r2] 646 .LVL39: 647 00ac 4FF00408 mov r8, #4 762:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 648 .loc 1 762 0 649 00b0 4FF00809 mov r9, #8 761:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** delta = 8UL; 650 .loc 1 761 0 651 00b4 1027 movs r7, #16 652 .LVL40: 653 .L67: 767:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 654 .loc 1 767 0 655 00b6 1368 ldr r3, [r2] 656 00b8 23F47803 bic r3, r3, #16252928 657 00bc 43EAC743 orr r3, r3, r7, lsl #19 658 00c0 1360 str r3, [r2] 772:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 659 .loc 1 772 0 660 00c2 0220 movs r0, #2 661 00c4 FFF7FEFF bl HAL_Delay 662 .LVL41: 774:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 663 .loc 1 774 0 664 00c8 2268 ldr r2, [r4] 665 00ca 1368 ldr r3, [r2] 666 00cc 5900 lsls r1, r3, #1 777:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 667 .loc 1 777 0 668 00ce 4CBF ite mi 669 00d0 4F44 addmi r7, r7, r9 670 .LVL42: 781:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 671 .loc 1 781 0 ARM GAS /tmp/ccfpzjW9.s page 29 672 00d2 A7EB0907 subpl r7, r7, r9 673 .LVL43: 764:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 674 .loc 1 764 0 675 00d6 B8F10108 subs r8, r8, #1 784:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 676 .loc 1 784 0 677 00da 4FEA5909 lsr r9, r9, #1 678 .LVL44: 764:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 679 .loc 1 764 0 680 00de EAD1 bne .L67 790:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 681 .loc 1 790 0 682 00e0 1368 ldr r3, [r2] 683 00e2 4FEAC748 lsl r8, r7, #19 684 00e6 23F47803 bic r3, r3, #16252928 685 00ea 43EA0803 orr r3, r3, r8 686 00ee 1360 str r3, [r2] 795:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 687 .loc 1 795 0 688 00f0 0220 movs r0, #2 689 00f2 FFF7FEFF bl HAL_Delay 690 .LVL45: 797:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 691 .loc 1 797 0 692 00f6 2368 ldr r3, [r4] 693 00f8 1A68 ldr r2, [r3] 694 00fa 5200 lsls r2, r2, #1 695 00fc 08D5 bpl .L68 802:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 696 .loc 1 802 0 697 00fe 1A68 ldr r2, [r3] 800:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set right trimming */ 698 .loc 1 800 0 699 0100 0137 adds r7, r7, #1 700 .LVL46: 802:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 701 .loc 1 802 0 702 0102 4FEAC748 lsl r8, r7, #19 703 0106 22F47802 bic r2, r2, #16252928 704 010a 42EA0802 orr r2, r2, r8 705 010e 1A60 str r2, [r3] 706 .L68: 806:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 707 .loc 1 806 0 708 0110 1A68 ldr r2, [r3] 709 0112 22F40062 bic r2, r2, #2048 710 0116 1A60 str r2, [r3] 809:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 711 .loc 1 809 0 712 0118 1A68 ldr r2, [r3] 713 011a 22F00102 bic r2, r2, #1 714 011e 1A60 str r2, [r3] 813:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 715 .loc 1 813 0 716 0120 1A68 ldr r2, [r3] ARM GAS /tmp/ccfpzjW9.s page 30 717 0122 22F00202 bic r2, r2, #2 718 0126 1A60 str r2, [r3] 827:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVERT 719 .loc 1 827 0 720 0128 1A68 ldr r2, [r3] 819:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 721 .loc 1 819 0 722 012a 6563 str r5, [r4, #52] 827:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVERT 723 .loc 1 827 0 724 012c 22F47802 bic r2, r2, #16252928 725 0130 42EA0802 orr r2, r2, r8 826:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, trimmingvaluep << OPAMP_INPUT_NONINV 726 .loc 1 826 0 727 0134 1021 movs r1, #16 728 0136 C4E90B17 strd r1, r7, [r4, #44] 827:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, trimmingvaluen << OPAMP_INPUT_INVERT 729 .loc 1 827 0 730 013a 1A60 str r2, [r3] 828:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 731 .loc 1 828 0 732 013c 1A68 ldr r2, [r3] 733 013e 22F0F852 bic r2, r2, #520093696 734 0142 1643 orrs r6, r6, r2 735 0144 1E60 str r6, [r3] 667:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 736 .loc 1 667 0 737 0146 0020 movs r0, #0 738 .LVL47: 739 .loc 1 838 0 740 0148 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc} 741 .cfi_endproc 742 .LFE335: 744 .section .text.HAL_OPAMP_Lock,"ax",%progbits 745 .align 1 746 .p2align 2,,3 747 .global HAL_OPAMP_Lock 748 .syntax unified 749 .thumb 750 .thumb_func 751 .fpu fpv4-sp-d16 753 HAL_OPAMP_Lock: 754 .LFB336: 839:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 840:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 841:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @} 842:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 843:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 844:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Exported_Functions_Group3 Peripheral Control functions 845:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Peripheral Control functions 846:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 847:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @verbatim 848:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 849:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### Peripheral Control functions ##### 850:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 851:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] 852:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** This subsection provides a set of functions allowing to control the OPAMP data ARM GAS /tmp/ccfpzjW9.s page 31 853:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** transfers. 854:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 855:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 856:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 857:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @endverbatim 858:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 859:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 860:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 861:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 862:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Lock the selected opamp configuration. 863:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 864:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 865:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 866:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp) 867:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 755 .loc 1 867 0 756 .cfi_startproc 757 @ args = 0, pretend = 0, frame = 0 758 @ frame_needed = 0, uses_anonymous_args = 0 759 @ link register save eliminated. 760 .LVL48: 868:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 869:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 870:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 871:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP locked */ 872:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP can be locked when enabled and running in normal mode */ 873:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* It is meaningless otherwise */ 874:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 761 .loc 1 874 0 762 0000 20B1 cbz r0, .L88 875:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 876:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 877:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 878:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State != HAL_OPAMP_STATE_BUSY) 763 .loc 1 878 0 764 0002 90F83A20 ldrb r2, [r0, #58] @ zero_extendqisi2 765 0006 042A cmp r2, #4 766 0008 0346 mov r3, r0 767 000a 01D0 beq .L93 768 .L88: 876:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 769 .loc 1 876 0 770 000c 0120 movs r0, #1 771 .LVL49: 879:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 880:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 881:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 882:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 883:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 884:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 885:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 886:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 887:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Lock OPAMP */ 888:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_LOCK); 889:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 890:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP state changed to locked */ 891:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** hopamp->State = HAL_OPAMP_STATE_BUSYLOCKED; ARM GAS /tmp/ccfpzjW9.s page 32 892:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 893:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 894:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 772 .loc 1 894 0 773 000e 7047 bx lr 774 .LVL50: 775 .L93: 888:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 776 .loc 1 888 0 777 0010 0168 ldr r1, [r0] 778 0012 0A68 ldr r2, [r1] 867:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 779 .loc 1 867 0 780 0014 10B4 push {r4} 781 .LCFI17: 782 .cfi_def_cfa_offset 4 783 .cfi_offset 4, -4 888:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 784 .loc 1 888 0 785 0016 42F00042 orr r2, r2, #-2147483648 891:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 786 .loc 1 891 0 787 001a 0524 movs r4, #5 888:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 788 .loc 1 888 0 789 001c 0A60 str r2, [r1] 868:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 790 .loc 1 868 0 791 001e 0020 movs r0, #0 792 .LVL51: 891:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 793 .loc 1 891 0 794 0020 83F83A40 strb r4, [r3, #58] 795 .LVL52: 796 .loc 1 894 0 797 0024 5DF8044B ldr r4, [sp], #4 798 .LCFI18: 799 .cfi_restore 4 800 .cfi_def_cfa_offset 0 801 0028 7047 bx lr 802 .cfi_endproc 803 .LFE336: 805 002a 00BF .section .text.HAL_OPAMP_LockTimerMux,"ax",%progbits 806 .align 1 807 .p2align 2,,3 808 .global HAL_OPAMP_LockTimerMux 809 .syntax unified 810 .thumb 811 .thumb_func 812 .fpu fpv4-sp-d16 814 HAL_OPAMP_LockTimerMux: 815 .LFB337: 895:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 896:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 897:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @} 898:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 899:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ARM GAS /tmp/ccfpzjW9.s page 33 900:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 901:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Lock the selected opamp timer controlled mux configuration. 902:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 903:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL status 904:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 905:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef HAL_OPAMP_LockTimerMux(OPAMP_HandleTypeDef *hopamp) 906:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 816 .loc 1 906 0 817 .cfi_startproc 818 @ args = 0, pretend = 0, frame = 0 819 @ frame_needed = 0, uses_anonymous_args = 0 820 @ link register save eliminated. 821 .LVL53: 907:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_StatusTypeDef status = HAL_OK; 908:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 909:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 910:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if OPAMP timer controlled mux is locked */ 911:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* OPAMP timer controlled mux can be locked when enabled */ 912:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* It is meaningless otherwise */ 913:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 822 .loc 1 913 0 823 0000 60B1 cbz r0, .L98 914:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 915:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 916:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 917:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State == HAL_OPAMP_STATE_RESET) 824 .loc 1 917 0 825 0002 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 826 0006 4BB1 cbz r3, .L98 918:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 919:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 920:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 921:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (READ_BIT(hopamp->Instance->TCMR, OPAMP_TCMR_LOCK) == OPAMP_TCMR_LOCK) 827 .loc 1 921 0 828 0008 0368 ldr r3, [r0] 829 000a 9A69 ldr r2, [r3, #24] 830 000c 002A cmp r2, #0 831 000e 05DB blt .L98 922:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 923:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** status = HAL_ERROR; 924:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 925:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 926:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 927:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 928:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 929:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 930:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Lock OPAMP */ 931:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->TCMR, OPAMP_TCMR_LOCK); 832 .loc 1 931 0 833 0010 9A69 ldr r2, [r3, #24] 834 0012 42F00042 orr r2, r2, #-2147483648 835 0016 9A61 str r2, [r3, #24] 907:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 836 .loc 1 907 0 837 0018 0020 movs r0, #0 838 .LVL54: 839 001a 7047 bx lr ARM GAS /tmp/ccfpzjW9.s page 34 840 .LVL55: 841 .L98: 915:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 842 .loc 1 915 0 843 001c 0120 movs r0, #1 844 .LVL56: 932:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 933:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return status; 934:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 845 .loc 1 934 0 846 001e 7047 bx lr 847 .cfi_endproc 848 .LFE337: 850 .section .text.HAL_OPAMP_GetState,"ax",%progbits 851 .align 1 852 .p2align 2,,3 853 .global HAL_OPAMP_GetState 854 .syntax unified 855 .thumb 856 .thumb_func 857 .fpu fpv4-sp-d16 859 HAL_OPAMP_GetState: 860 .LFB338: 935:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 936:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 937:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @} 938:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 939:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 940:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** @defgroup OPAMP_Exported_Functions_Group4 Peripheral State functions 941:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Peripheral State functions 942:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * 943:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @verbatim 944:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 945:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** ##### Peripheral State functions ##### 946:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** =============================================================================== 947:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** [..] 948:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** This subsection permit to get in run-time the status of the peripheral 949:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** and the data flow. 950:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 951:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** @endverbatim 952:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @{ 953:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 954:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 955:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 956:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Return the OPAMP state 957:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 958:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval HAL state 959:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 960:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp) 961:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 861 .loc 1 961 0 862 .cfi_startproc 863 @ args = 0, pretend = 0, frame = 0 864 @ frame_needed = 0, uses_anonymous_args = 0 865 @ link register save eliminated. 866 .LVL57: 962:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ ARM GAS /tmp/ccfpzjW9.s page 35 963:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 867 .loc 1 963 0 868 0000 10B1 cbz r0, .L100 964:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 965:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return HAL_OPAMP_STATE_RESET; 966:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 967:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 968:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 969:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 970:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 971:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return hopamp->State; 869 .loc 1 971 0 870 0002 90F83A00 ldrb r0, [r0, #58] @ zero_extendqisi2 871 .LVL58: 872 0006 C0B2 uxtb r0, r0 873 .L100: 972:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 874 .loc 1 972 0 875 0008 7047 bx lr 876 .cfi_endproc 877 .LFE338: 879 000a 00BF .section .text.HAL_OPAMP_GetTrimOffset,"ax",%progbits 880 .align 1 881 .p2align 2,,3 882 .global HAL_OPAMP_GetTrimOffset 883 .syntax unified 884 .thumb 885 .thumb_func 886 .fpu fpv4-sp-d16 888 HAL_OPAMP_GetTrimOffset: 889 .LFB339: 973:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 974:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /** 975:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @brief Return the OPAMP factory trimming value 976:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param hopamp OPAMP handle 977:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @param trimmingoffset Trimming offset (P or N) 978:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * @retval Trimming value (P or N): range: 0->31 979:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** * or OPAMP_FACTORYTRIMMING_DUMMY if trimming value is not available 980:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** */ 981:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 982:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset(OPAMP_HandleTypeDef *hopamp, uint32_t trimmingof 983:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 890 .loc 1 983 0 891 .cfi_startproc 892 @ args = 0, pretend = 0, frame = 0 893 @ frame_needed = 0, uses_anonymous_args = 0 894 @ link register save eliminated. 895 .LVL59: 984:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** uint32_t oldusertrimming = 0UL; 985:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** OPAMP_TrimmingValueTypeDef oldtrimmingvaluep = 0UL, oldtrimmingvaluen = 0UL, trimmingvalue; 986:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 987:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the OPAMP handle allocation */ 988:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Value can be retrieved in HAL_OPAMP_STATE_READY state */ 989:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (hopamp == NULL) 896 .loc 1 989 0 897 0000 70B3 cbz r0, .L108 990:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { ARM GAS /tmp/ccfpzjW9.s page 36 991:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return OPAMP_FACTORYTRIMMING_DUMMY; 992:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 993:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else if (hopamp->State != HAL_OPAMP_STATE_READY) 898 .loc 1 993 0 899 0002 90F83A30 ldrb r3, [r0, #58] @ zero_extendqisi2 900 0006 012B cmp r3, #1 901 0008 2AD1 bne .L108 994:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 995:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return OPAMP_FACTORYTRIMMING_DUMMY; 996:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 997:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 998:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 999:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the parameter */ 1000:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance)); 1001:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** assert_param(IS_OPAMP_FACTORYTRIMMING(trimmingoffset)); 1002:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 1003:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check the trimming mode */ 1004:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if ((READ_BIT(hopamp->Instance->CSR, OPAMP_CSR_USERTRIM)) != 0UL) 902 .loc 1 1004 0 903 000a 0368 ldr r3, [r0] 904 000c 1A68 ldr r2, [r3] 905 000e 12F01002 ands r2, r2, #16 983:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** uint32_t oldusertrimming = 0UL; 906 .loc 1 983 0 907 0012 30B4 push {r4, r5} 908 .LCFI19: 909 .cfi_def_cfa_offset 8 910 .cfi_offset 4, -8 911 .cfi_offset 5, -4 912 .loc 1 1004 0 913 0014 27D0 beq .L109 914 .LVL60: 1005:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 1006:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* User trimming is used */ 1007:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** oldusertrimming = OPAMP_TRIMMING_USER; 1008:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Store the TrimmingValueP & TrimmingValueN */ 1009:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** oldtrimmingvaluep = (hopamp->Instance->CSR & OPAMP_CSR_TRIMOFFSETP) >> OPAMP_INPUT_NONINVERTI 915 .loc 1 1009 0 916 0016 1D68 ldr r5, [r3] 1010:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** oldtrimmingvaluen = (hopamp->Instance->CSR & OPAMP_CSR_TRIMOFFSETN) >> OPAMP_INPUT_INVERTING; 917 .loc 1 1010 0 918 0018 1C68 ldr r4, [r3] 1009:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** oldtrimmingvaluen = (hopamp->Instance->CSR & OPAMP_CSR_TRIMOFFSETN) >> OPAMP_INPUT_INVERTING; 919 .loc 1 1009 0 920 001a C5F3C445 ubfx r5, r5, #19, #5 921 .LVL61: 922 .loc 1 1010 0 923 001e C4F30464 ubfx r4, r4, #24, #5 924 .LVL62: 1007:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Store the TrimmingValueP & TrimmingValueN */ 925 .loc 1 1007 0 926 0022 1022 movs r2, #16 927 .LVL63: 928 .L104: 1011:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 1012:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 1013:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Set factory timing mode */ ARM GAS /tmp/ccfpzjW9.s page 37 1014:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** CLEAR_BIT(hopamp->Instance->CSR, OPAMP_CSR_USERTRIM); 929 .loc 1 1014 0 930 0024 1868 ldr r0, [r3] 931 .LVL64: 932 0026 20F01000 bic r0, r0, #16 933 002a 1860 str r0, [r3] 1015:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 1016:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Get factory trimming */ 1017:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (trimmingoffset == OPAMP_FACTORYTRIMMING_P) 1018:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 1019:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Return TrimOffsetP */ 1020:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvalue = ((hopamp->Instance->CSR & OPAMP_CSR_TRIMOFFSETP) >> OPAMP_INPUT_NONINVERTING) 934 .loc 1 1020 0 935 002c 1868 ldr r0, [r3] 1017:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 936 .loc 1 1017 0 937 002e 0129 cmp r1, #1 938 .loc 1 1020 0 939 0030 0CBF ite eq 940 0032 C0F3C440 ubfxeq r0, r0, #19, #5 941 .LVL65: 1021:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 1022:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** else 1023:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 1024:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Return TrimOffsetN */ 1025:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** trimmingvalue = ((hopamp->Instance->CSR & OPAMP_CSR_TRIMOFFSETN) >> OPAMP_INPUT_INVERTING); 942 .loc 1 1025 0 943 0036 C0F30460 ubfxne r0, r0, #24, #5 944 .LVL66: 1026:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 1027:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 1028:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Restore user trimming configuration if it was formerly set */ 1029:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Check if user trimming was used */ 1030:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** if (oldusertrimming == OPAMP_TRIMMING_USER) 945 .loc 1 1030 0 946 003a 7AB1 cbz r2, .L102 1031:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** { 1032:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** /* Restore user trimming */ 1033:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** SET_BIT(hopamp->Instance->CSR, OPAMP_CSR_USERTRIM); 947 .loc 1 1033 0 948 003c 1A68 ldr r2, [r3] 949 .LVL67: 950 003e 42F01002 orr r2, r2, #16 951 0042 1A60 str r2, [r3] 1034:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETP, oldtrimmingvaluep << OPAMP_INPUT_NON 952 .loc 1 1034 0 953 0044 1A68 ldr r2, [r3] 954 0046 22F47802 bic r2, r2, #16252928 955 004a 42EAC545 orr r5, r2, r5, lsl #19 956 .LVL68: 957 004e 1D60 str r5, [r3] 1035:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** MODIFY_REG(hopamp->Instance->CSR, OPAMP_CSR_TRIMOFFSETN, oldtrimmingvaluen << OPAMP_INPUT_INV 958 .loc 1 1035 0 959 0050 1A68 ldr r2, [r3] 960 0052 22F0F852 bic r2, r2, #520093696 961 0056 42EA0464 orr r4, r2, r4, lsl #24 962 .LVL69: ARM GAS /tmp/ccfpzjW9.s page 38 963 005a 1C60 str r4, [r3] 964 .L102: 1036:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 1037:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 1038:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** return trimmingvalue; 1039:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 965 .loc 1 1039 0 966 005c 30BC pop {r4, r5} 967 .LCFI20: 968 .cfi_restore 5 969 .cfi_restore 4 970 .cfi_def_cfa_offset 0 971 005e 7047 bx lr 972 .LVL70: 973 .L108: 991:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** } 974 .loc 1 991 0 975 0060 4FF0FF30 mov r0, #-1 976 .LVL71: 977 .loc 1 1039 0 978 0064 7047 bx lr 979 .LVL72: 980 .L109: 981 .LCFI21: 982 .cfi_def_cfa_offset 8 983 .cfi_offset 4, -8 984 .cfi_offset 5, -4 985:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_opamp.c **** 985 .loc 1 985 0 986 0066 1446 mov r4, r2 987 0068 1546 mov r5, r2 988 006a DBE7 b .L104 989 .cfi_endproc 990 .LFE339: 992 .text 993 .Letext0: 994 .file 2 "/usr/include/newlib/machine/_default_types.h" 995 .file 3 "/usr/include/newlib/sys/_stdint.h" 996 .file 4 "Drivers/CMSIS/Include/core_cm4.h" 997 .file 5 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/system_stm32g4xx.h" 998 .file 6 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h" 999 .file 7 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g4xx.h" 1000 .file 8 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h" 1001 .file 9 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h" 1002 .file 10 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_opamp.h" 1003 .file 11 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h" 1004 .file 12 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h" ARM GAS /tmp/ccfpzjW9.s page 39 DEFINED SYMBOLS *ABS*:0000000000000000 stm32g4xx_hal_opamp.c /tmp/ccfpzjW9.s:16 .text.HAL_OPAMP_MspInit:0000000000000000 $t /tmp/ccfpzjW9.s:24 .text.HAL_OPAMP_MspInit:0000000000000000 HAL_OPAMP_MspInit /tmp/ccfpzjW9.s:39 .text.HAL_OPAMP_Init:0000000000000000 $t /tmp/ccfpzjW9.s:47 .text.HAL_OPAMP_Init:0000000000000000 HAL_OPAMP_Init /tmp/ccfpzjW9.s:245 .text.HAL_OPAMP_Init:0000000000000100 $d /tmp/ccfpzjW9.s:251 .text.HAL_OPAMP_MspDeInit:0000000000000000 $t /tmp/ccfpzjW9.s:259 .text.HAL_OPAMP_MspDeInit:0000000000000000 HAL_OPAMP_MspDeInit /tmp/ccfpzjW9.s:270 .text.HAL_OPAMP_DeInit:0000000000000000 $t /tmp/ccfpzjW9.s:278 .text.HAL_OPAMP_DeInit:0000000000000000 HAL_OPAMP_DeInit /tmp/ccfpzjW9.s:352 .text.HAL_OPAMP_Start:0000000000000000 $t /tmp/ccfpzjW9.s:360 .text.HAL_OPAMP_Start:0000000000000000 HAL_OPAMP_Start /tmp/ccfpzjW9.s:417 .text.HAL_OPAMP_Stop:0000000000000000 $t /tmp/ccfpzjW9.s:425 .text.HAL_OPAMP_Stop:0000000000000000 HAL_OPAMP_Stop /tmp/ccfpzjW9.s:486 .text.HAL_OPAMP_SelfCalibrate:0000000000000000 $t /tmp/ccfpzjW9.s:494 .text.HAL_OPAMP_SelfCalibrate:0000000000000000 HAL_OPAMP_SelfCalibrate /tmp/ccfpzjW9.s:745 .text.HAL_OPAMP_Lock:0000000000000000 $t /tmp/ccfpzjW9.s:753 .text.HAL_OPAMP_Lock:0000000000000000 HAL_OPAMP_Lock /tmp/ccfpzjW9.s:806 .text.HAL_OPAMP_LockTimerMux:0000000000000000 $t /tmp/ccfpzjW9.s:814 .text.HAL_OPAMP_LockTimerMux:0000000000000000 HAL_OPAMP_LockTimerMux /tmp/ccfpzjW9.s:851 .text.HAL_OPAMP_GetState:0000000000000000 $t /tmp/ccfpzjW9.s:859 .text.HAL_OPAMP_GetState:0000000000000000 HAL_OPAMP_GetState /tmp/ccfpzjW9.s:880 .text.HAL_OPAMP_GetTrimOffset:0000000000000000 $t /tmp/ccfpzjW9.s:888 .text.HAL_OPAMP_GetTrimOffset:0000000000000000 HAL_OPAMP_GetTrimOffset UNDEFINED SYMBOLS HAL_Delay