ARM GAS /tmp/ccgqPWsi.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_gpio.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.HAL_GPIO_Init,"ax",%progbits 16 .align 1 17 .p2align 2,,3 18 .global HAL_GPIO_Init 19 .syntax unified 20 .thumb 21 .thumb_func 22 .fpu fpv4-sp-d16 24 HAL_GPIO_Init: 25 .LFB329: 26 .file 1 "Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c" 1:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 2:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ****************************************************************************** 3:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @file stm32g4xx_hal_gpio.c 4:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @author MCD Application Team 5:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief GPIO HAL module driver. 6:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * functionalities of the General Purpose Input/Output (GPIO) peripheral: 8:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * + Initialization and de-initialization functions 9:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * + IO operation functions 10:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 11:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @verbatim 12:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ============================================================================== 13:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ##### GPIO Peripheral features ##### 14:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ============================================================================== 15:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** [..] 16:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) Each port bit of the general-purpose I/O (GPIO) ports can be individually 17:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** configured by software in several modes: 18:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Input mode 19:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Analog mode 20:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Output mode 21:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Alternate function mode 22:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) External interrupt/event lines 23:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 24:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) During and just after reset, the alternate functions and external interrupt 25:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** lines are not active and the I/O ports are configured in input floating mode. 26:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 27:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) All GPIO pins have weak internal pull-up and pull-down resistors, which can be 28:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** activated or not. 29:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 30:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) In Output or Alternate mode, each IO can be configured on open-drain or push-pull 31:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** type and the IO speed can be selected depending on the VDD value. 32:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ARM GAS /tmp/ccgqPWsi.s page 2 33:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) The microcontroller IO pins are connected to onboard peripherals/modules through a 34:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** multiplexer that allows only one peripheral alternate function (AF) connected 35:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** to an IO pin at a time. In this way, there can be no conflict between peripherals 36:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** sharing the same IO pin. 37:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 38:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) All ports have external interrupt/event capability. To use external interrupt 39:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** lines, the port must be configured in input mode. All available GPIO pins are 40:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** connected to the 16 external interrupt/event lines from EXTI0 to EXTI15. 41:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 42:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (+) The external interrupt/event controller consists of up to 44 edge detectors 43:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (16 lines are connected to GPIO) for generating event/interrupt requests (each 44:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** input line can be independently configured to select the type (interrupt or event) 45:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** and the corresponding trigger event (rising or falling or both). Each line can 46:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** also be masked independently. 47:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 48:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ##### How to use this driver ##### 49:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ============================================================================== 50:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** [..] 51:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). 52:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 53:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) Configure the GPIO pin(s) using HAL_GPIO_Init(). 54:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure 55:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef 56:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** structure. 57:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) In case of Output or alternate function mode selection: the speed is 58:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** configured through "Speed" member from GPIO_InitTypeDef structure. 59:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) In alternate mode is selection, the alternate function connected to the IO 60:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** is configured through "Alternate" member from GPIO_InitTypeDef structure. 61:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) Analog mode is required when a pin is to be used as ADC channel 62:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** or DAC output. 63:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (++) In case of external interrupt/event selection the "Mode" member from 64:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIO_InitTypeDef structure select the type (interrupt or event) and 65:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** the corresponding trigger event (rising or falling or both). 66:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 67:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority 68:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using 69:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** HAL_NVIC_EnableIRQ(). 70:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 71:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin(). 72:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 73:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) To set/reset the level of a pin configured in output mode use 74:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** HAL_GPIO_WritePin()/HAL_GPIO_TogglePin(). 75:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 76:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) To lock pin configuration until next reset use HAL_GPIO_LockPin(). 77:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 78:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) During and just after reset, the alternate functions are not 79:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** active and the GPIO pins are configured in input floating mode (except JTAG 80:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** pins). 81:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 82:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose 83:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has 84:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** priority over the GPIO function. 85:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 86:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as 87:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** general purpose PF0 and PF1, respectively, when the HSE oscillator is off. 88:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** The HSE has priority over the GPIO function. 89:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ARM GAS /tmp/ccgqPWsi.s page 3 90:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @endverbatim 91:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ****************************************************************************** 92:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @attention 93:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 94:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** *

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

96:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 97:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This software component is licensed by ST under BSD 3-Clause license, 98:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * the "License"; You may not use this file except in compliance with the 99:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * License. You may obtain a copy of the License at: 100:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * opensource.org/licenses/BSD-3-Clause 101:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 102:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ****************************************************************************** 103:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 104:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 105:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Includes ------------------------------------------------------------------*/ 106:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #include "stm32g4xx_hal.h" 107:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 108:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @addtogroup STM32G4xx_HAL_Driver 109:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 110:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 111:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 112:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @addtogroup GPIO 113:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 114:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 115:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** MISRA C:2012 deviation rule has been granted for following rules: 116:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * Rule-12.2 - Medium: RHS argument is in interval [0,INF] which is out of 117:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * range of the shift operator in following API : 118:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * HAL_GPIO_Init 119:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * HAL_GPIO_DeInit 120:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 121:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 122:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #ifdef HAL_GPIO_MODULE_ENABLED 123:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 124:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Private typedef -----------------------------------------------------------*/ 125:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Private defines ------------------------------------------------------------*/ 126:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @defgroup GPIO_Private_Constants GPIO Private Constants 127:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 128:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 129:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define GPIO_MODE (0x00000003U) 130:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define EXTI_MODE (0x10000000U) 131:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define GPIO_MODE_IT (0x00010000U) 132:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define GPIO_MODE_EVT (0x00020000U) 133:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define RISING_EDGE (0x00100000U) 134:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define FALLING_EDGE (0x00200000U) 135:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define GPIO_OUTPUT_TYPE (0x00000010U) 136:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 137:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** #define GPIO_NUMBER (16U) 138:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 139:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @} 140:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 141:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 142:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Private macros ------------------------------------------------------------*/ 143:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Private variables ---------------------------------------------------------*/ 144:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Private function prototypes -----------------------------------------------*/ 145:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Exported functions --------------------------------------------------------*/ 146:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ARM GAS /tmp/ccgqPWsi.s page 4 147:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @addtogroup GPIO_Exported_Functions 148:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 149:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 150:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 151:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @defgroup GPIO_Exported_Functions_Group1 Initialization/de-initialization functions 152:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Initialization and Configuration functions 153:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 154:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @verbatim 155:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** =============================================================================== 156:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ##### Initialization and de-initialization functions ##### 157:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** =============================================================================== 158:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 159:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @endverbatim 160:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 161:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 162:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 163:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 164:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Initialize the GPIOx peripheral according to the specified parameters in the GPIO_Init. 165:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 166:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains 167:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * the configuration information for the specified GPIO peripheral. 168:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 169:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 170:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) 171:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 27 .loc 1 171 0 28 .cfi_startproc 29 @ args = 0, pretend = 0, frame = 8 30 @ frame_needed = 0, uses_anonymous_args = 0 31 .LVL0: 32 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 33 .LCFI0: 34 .cfi_def_cfa_offset 36 35 .cfi_offset 4, -36 36 .cfi_offset 5, -32 37 .cfi_offset 6, -28 38 .cfi_offset 7, -24 39 .cfi_offset 8, -20 40 .cfi_offset 9, -16 41 .cfi_offset 10, -12 42 .cfi_offset 11, -8 43 .cfi_offset 14, -4 172:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t position = 0x00U; 173:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t iocurrent; 174:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t temp; 175:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 176:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 177:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); 178:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); 179:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); 180:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); 181:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 182:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the port pins */ 183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** while (((GPIO_Init->Pin) >> position) != 0U) 44 .loc 1 183 0 45 0004 D1F800E0 ldr lr, [r1] 171:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t position = 0x00U; ARM GAS /tmp/ccgqPWsi.s page 5 46 .loc 1 171 0 47 0008 83B0 sub sp, sp, #12 48 .LCFI1: 49 .cfi_def_cfa_offset 48 50 .loc 1 183 0 51 000a BEF1000F cmp lr, #0 52 000e 00F08180 beq .L1 184:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 185:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Get current io position */ 186:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** iocurrent = (GPIO_Init->Pin) & (1UL << position); 187:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 188:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (iocurrent != 0x00u) 189:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 190:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /*--------------------- GPIO Mode Configuration ------------------------*/ 191:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* In case of Output or Alternate function mode selection */ 192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) || 193:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 194:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 195:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the Speed parameter */ 196:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); 197:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the IO Speed */ 198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = GPIOx->OSPEEDR; 199:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); 200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_Init->Speed << (position * 2U)); 201:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; 202:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 203:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the IO Output Type */ 204:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = GPIOx->OTYPER; 205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_OTYPER_OT0 << position) ; 206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 207:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OTYPER = temp; 208:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 209:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 210:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Activate the Pull-up or Pull down resistor for the current IO */ 211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = GPIOx->PUPDR; 212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 213:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2U)); 214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->PUPDR = temp; 215:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 216:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* In case of Alternate function mode selection */ 217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 218:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 219:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the Alternate function parameters */ 220:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); 221:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); 222:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 223:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure Alternate function mapped with the current IO */ 224:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = GPIOx->AFR[position >> 3U]; 225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(0xFU << ((position & 0x07U) * 4U)); 226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); 227:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] = temp; 228:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 229:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 230:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ 231:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = GPIOx->MODER; 232:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); 233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); ARM GAS /tmp/ccgqPWsi.s page 6 234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->MODER = temp; 235:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 236:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /*--------------------- EXTI Mode Configuration ------------------------*/ 237:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the External Interrupt or event for the current IO */ 238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) 239:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 240:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Enable SYSCFG Clock */ 241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); 242:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = SYSCFG->EXTICR[position >> 2U]; 244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(0x0FUL << (4U * (position & 0x03U))); 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); 246:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 247:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 248:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Clear EXTI line configuration */ 249:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = EXTI->IMR1; 53 .loc 1 249 0 54 0012 DFF8A091 ldr r9, .L39+24 55 0016 8846 mov r8, r1 172:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t iocurrent; 56 .loc 1 172 0 57 0018 0026 movs r6, #0 58 .LVL1: 59 .L22: 186:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 60 .loc 1 186 0 61 001a 0123 movs r3, #1 62 001c 03FA06F2 lsl r2, r3, r6 63 .LVL2: 188:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 64 .loc 1 188 0 65 0020 12EA0E07 ands r7, r2, lr 66 .LVL3: 67 0024 72D0 beq .L4 68 0026 D8E90114 ldrd r1, r4, [r8, #4] 192:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 69 .loc 1 192 0 70 002a 21F0100B bic fp, r1, #16 71 002e 06FA03FC lsl ip, r6, r3 72 0032 0BF1FF35 add r5, fp, #-1 73 0036 0323 movs r3, #3 74 0038 03FA0CFA lsl r10, r3, ip 75 003c 012D cmp r5, #1 76 003e 6FEA0A0A mvn r10, r10 77 0042 04FA0CF4 lsl r4, r4, ip 78 0046 68D9 bls .L5 211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 79 .loc 1 211 0 discriminator 1 80 0048 C368 ldr r3, [r0, #12] 81 .LVL4: 212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2U)); 82 .loc 1 212 0 discriminator 1 83 004a 0AEA0303 and r3, r10, r3 84 .LVL5: 213:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->PUPDR = temp; 85 .loc 1 213 0 discriminator 1 86 004e 1C43 orrs r4, r4, r3 ARM GAS /tmp/ccgqPWsi.s page 7 87 .LVL6: 214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 88 .loc 1 214 0 discriminator 1 89 0050 C460 str r4, [r0, #12] 90 .LVL7: 91 .L6: 231:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); 92 .loc 1 231 0 93 0052 0268 ldr r2, [r0] 94 .LVL8: 233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->MODER = temp; 95 .loc 1 233 0 96 0054 01F00303 and r3, r1, #3 232:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); 97 .loc 1 232 0 98 0058 02EA0A0A and r10, r2, r10 99 .LVL9: 233:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->MODER = temp; 100 .loc 1 233 0 101 005c 03FA0CF3 lsl r3, r3, ip 102 0060 43EA0A03 orr r3, r3, r10 103 .LVL10: 238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 104 .loc 1 238 0 105 0064 CD00 lsls r5, r1, #3 234:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 106 .loc 1 234 0 107 0066 0360 str r3, [r0] 238:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 108 .loc 1 238 0 109 0068 50D5 bpl .L4 110 .LBB2: 241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 111 .loc 1 241 0 112 006a 4C4A ldr r2, .L39 113 006c 136E ldr r3, [r2, #96] 114 .LVL11: 115 006e 43F00103 orr r3, r3, #1 116 0072 1366 str r3, [r2, #96] 117 .LVL12: 118 0074 136E ldr r3, [r2, #96] 119 0076 26F00304 bic r4, r6, #3 120 007a 04F18044 add r4, r4, #1073741824 121 007e 03F00103 and r3, r3, #1 122 0082 04F58034 add r4, r4, #65536 123 0086 0193 str r3, [sp, #4] 124 .LBE2: 244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); 125 .loc 1 244 0 126 0088 06F00303 and r3, r6, #3 127 .LBB3: 241:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 128 .loc 1 241 0 129 008c 019A ldr r2, [sp, #4] 130 .LBE3: 243:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(0x0FUL << (4U * (position & 0x03U))); 131 .loc 1 243 0 ARM GAS /tmp/ccgqPWsi.s page 8 132 008e A568 ldr r5, [r4, #8] 133 .LVL13: 244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); 134 .loc 1 244 0 135 0090 9B00 lsls r3, r3, #2 136 0092 0F22 movs r2, #15 137 0094 9A40 lsls r2, r2, r3 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 138 .loc 1 245 0 139 0096 B0F1904F cmp r0, #1207959552 244:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); 140 .loc 1 244 0 141 009a 25EA0202 bic r2, r5, r2 142 .LVL14: 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 143 .loc 1 245 0 144 009e 13D0 beq .L8 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 145 .loc 1 245 0 is_stmt 0 discriminator 1 146 00a0 3F4D ldr r5, .L39+4 147 00a2 A842 cmp r0, r5 148 00a4 6BD0 beq .L35 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 149 .loc 1 245 0 discriminator 3 150 00a6 3F4D ldr r5, .L39+8 151 00a8 A842 cmp r0, r5 152 00aa 63D0 beq .L36 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 153 .loc 1 245 0 discriminator 5 154 00ac 3E4D ldr r5, .L39+12 155 00ae A842 cmp r0, r5 156 00b0 6AD0 beq .L37 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 157 .loc 1 245 0 discriminator 7 158 00b2 3E4D ldr r5, .L39+16 159 00b4 A842 cmp r0, r5 160 00b6 6CD0 beq .L38 245:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 161 .loc 1 245 0 discriminator 9 162 00b8 3D4D ldr r5, .L39+20 163 00ba A842 cmp r0, r5 164 00bc 0CBF ite eq 165 00be 0525 moveq r5, #5 166 00c0 0625 movne r5, #6 167 00c2 05FA03F3 lsl r3, r5, r3 168 00c6 1A43 orrs r2, r2, r3 169 .LVL15: 170 .L8: 246:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 171 .loc 1 246 0 is_stmt 1 discriminator 24 172 00c8 A260 str r2, [r4, #8] 173 .loc 1 249 0 discriminator 24 174 00ca D9F80030 ldr r3, [r9] 175 .LVL16: 250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 176 .loc 1 250 0 discriminator 24 177 00ce FA43 mvns r2, r7 ARM GAS /tmp/ccgqPWsi.s page 9 178 .LVL17: 251:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) 179 .loc 1 251 0 discriminator 24 180 00d0 CC03 lsls r4, r1, #15 250:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 181 .loc 1 250 0 discriminator 24 182 00d2 54BF ite pl 183 00d4 1340 andpl r3, r3, r2 184 .LVL18: 252:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 253:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= iocurrent; 185 .loc 1 253 0 discriminator 24 186 00d6 3B43 orrmi r3, r3, r7 187 .LVL19: 254:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 255:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->IMR1 = temp; 188 .loc 1 255 0 discriminator 24 189 00d8 C9F80030 str r3, [r9] 256:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 257:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = EXTI->EMR1; 190 .loc 1 257 0 discriminator 24 191 00dc D9F80430 ldr r3, [r9, #4] 192 .LVL20: 258:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 259:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) 193 .loc 1 259 0 discriminator 24 194 00e0 8D03 lsls r5, r1, #14 258:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 195 .loc 1 258 0 discriminator 24 196 00e2 54BF ite pl 197 00e4 1340 andpl r3, r3, r2 198 .LVL21: 260:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 261:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= iocurrent; 199 .loc 1 261 0 discriminator 24 200 00e6 3B43 orrmi r3, r3, r7 201 .LVL22: 262:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 263:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->EMR1 = temp; 202 .loc 1 263 0 discriminator 24 203 00e8 C9F80430 str r3, [r9, #4] 264:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 265:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ 266:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = EXTI->RTSR1; 204 .loc 1 266 0 discriminator 24 205 00ec D9F80830 ldr r3, [r9, #8] 206 .LVL23: 267:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 268:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) 207 .loc 1 268 0 discriminator 24 208 00f0 CC02 lsls r4, r1, #11 267:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 209 .loc 1 267 0 discriminator 24 210 00f2 54BF ite pl 211 00f4 1340 andpl r3, r3, r2 212 .LVL24: 269:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { ARM GAS /tmp/ccgqPWsi.s page 10 270:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= iocurrent; 213 .loc 1 270 0 discriminator 24 214 00f6 3B43 orrmi r3, r3, r7 215 .LVL25: 271:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 272:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->RTSR1 = temp; 216 .loc 1 272 0 discriminator 24 217 00f8 C9F80830 str r3, [r9, #8] 273:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 274:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp = EXTI->FTSR1; 218 .loc 1 274 0 discriminator 24 219 00fc D9F80C30 ldr r3, [r9, #12] 220 .LVL26: 275:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 276:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) 221 .loc 1 276 0 discriminator 24 222 0100 8902 lsls r1, r1, #10 275:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(iocurrent); 223 .loc 1 275 0 discriminator 24 224 0102 54BF ite pl 225 0104 1340 andpl r3, r3, r2 226 .LVL27: 277:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 278:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= iocurrent; 227 .loc 1 278 0 discriminator 24 228 0106 3B43 orrmi r3, r3, r7 229 .LVL28: 279:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 280:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->FTSR1 = temp; 230 .loc 1 280 0 discriminator 24 231 0108 C9F80C30 str r3, [r9, #12] 232 .LVL29: 233 .L4: 281:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 282:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 283:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 284:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** position++; 234 .loc 1 284 0 235 010c 0136 adds r6, r6, #1 236 .LVL30: 183:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 237 .loc 1 183 0 238 010e 3EFA06F3 lsrs r3, lr, r6 239 0112 82D1 bne .L22 240 .LVL31: 241 .L1: 285:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 286:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 242 .loc 1 286 0 243 0114 03B0 add sp, sp, #12 244 .LCFI2: 245 .cfi_remember_state 246 .cfi_def_cfa_offset 36 247 @ sp needed 248 0116 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 249 .LVL32: 250 .L5: ARM GAS /tmp/ccgqPWsi.s page 11 251 .LCFI3: 252 .cfi_restore_state 198:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); 253 .loc 1 198 0 254 011a 8368 ldr r3, [r0, #8] 255 .LVL33: 200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; 256 .loc 1 200 0 257 011c D8F80C50 ldr r5, [r8, #12] 199:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (GPIO_Init->Speed << (position * 2U)); 258 .loc 1 199 0 259 0120 03EA0A03 and r3, r3, r10 260 .LVL34: 200:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; 261 .loc 1 200 0 262 0124 05FA0CF5 lsl r5, r5, ip 263 0128 1D43 orrs r5, r5, r3 264 .LVL35: 201:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 265 .loc 1 201 0 266 012a 8560 str r5, [r0, #8] 204:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_OTYPER_OT0 << position) ; 267 .loc 1 204 0 268 012c 4368 ldr r3, [r0, #4] 269 .LVL36: 206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OTYPER = temp; 270 .loc 1 206 0 271 012e C1F30015 ubfx r5, r1, #4, #1 205:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 272 .loc 1 205 0 273 0132 23EA0203 bic r3, r3, r2 274 .LVL37: 206:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OTYPER = temp; 275 .loc 1 206 0 276 0136 2A46 mov r2, r5 277 0138 B240 lsls r2, r2, r6 278 013a 1A43 orrs r2, r2, r3 279 .LVL38: 207:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 280 .loc 1 207 0 281 013c 4260 str r2, [r0, #4] 211:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 282 .loc 1 211 0 283 013e C368 ldr r3, [r0, #12] 284 .LVL39: 212:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2U)); 285 .loc 1 212 0 286 0140 03EA0A03 and r3, r3, r10 287 .LVL40: 213:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->PUPDR = temp; 288 .loc 1 213 0 289 0144 1C43 orrs r4, r4, r3 290 .LVL41: 217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 291 .loc 1 217 0 292 0146 BBF1020F cmp fp, #2 214:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ARM GAS /tmp/ccgqPWsi.s page 12 293 .loc 1 214 0 294 014a C460 str r4, [r0, #12] 217:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 295 .loc 1 217 0 296 014c 81D1 bne .L6 224:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(0xFU << ((position & 0x07U) * 4U)); 297 .loc 1 224 0 298 014e F408 lsrs r4, r6, #3 299 .LVL42: 300 0150 00EB8404 add r4, r0, r4, lsl #2 225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); 301 .loc 1 225 0 302 0154 06F00703 and r3, r6, #7 224:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp &= ~(0xFU << ((position & 0x07U) * 4U)); 303 .loc 1 224 0 304 0158 256A ldr r5, [r4, #32] 305 .LVL43: 226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] = temp; 306 .loc 1 226 0 307 015a D8F81020 ldr r2, [r8, #16] 225:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); 308 .loc 1 225 0 309 015e 9B00 lsls r3, r3, #2 310 0160 4FF00F0B mov fp, #15 311 0164 0BFA03FB lsl fp, fp, r3 312 0168 25EA0B05 bic r5, r5, fp 313 .LVL44: 226:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] = temp; 314 .loc 1 226 0 315 016c 9A40 lsls r2, r2, r3 316 016e 2A43 orrs r2, r2, r5 317 .LVL45: 227:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 318 .loc 1 227 0 319 0170 2262 str r2, [r4, #32] 320 0172 6EE7 b .L6 321 .L36: 322 0174 0225 movs r5, #2 323 0176 05FA03F3 lsl r3, r5, r3 324 017a 1A43 orrs r2, r2, r3 325 .LVL46: 326 017c A4E7 b .L8 327 .LVL47: 328 .L35: 329 017e 0125 movs r5, #1 330 0180 05FA03F3 lsl r3, r5, r3 331 0184 1A43 orrs r2, r2, r3 332 .LVL48: 333 0186 9FE7 b .L8 334 .LVL49: 335 .L37: 336 0188 0325 movs r5, #3 337 018a 05FA03F3 lsl r3, r5, r3 338 018e 1A43 orrs r2, r2, r3 339 .LVL50: 340 0190 9AE7 b .L8 341 .LVL51: ARM GAS /tmp/ccgqPWsi.s page 13 342 .L38: 343 0192 0425 movs r5, #4 344 0194 05FA03F3 lsl r3, r5, r3 345 0198 1A43 orrs r2, r2, r3 346 .LVL52: 347 019a 95E7 b .L8 348 .L40: 349 .align 2 350 .L39: 351 019c 00100240 .word 1073876992 352 01a0 00040048 .word 1207960576 353 01a4 00080048 .word 1207961600 354 01a8 000C0048 .word 1207962624 355 01ac 00100048 .word 1207963648 356 01b0 00140048 .word 1207964672 357 01b4 00040140 .word 1073808384 358 .cfi_endproc 359 .LFE329: 361 .section .text.HAL_GPIO_DeInit,"ax",%progbits 362 .align 1 363 .p2align 2,,3 364 .global HAL_GPIO_DeInit 365 .syntax unified 366 .thumb 367 .thumb_func 368 .fpu fpv4-sp-d16 370 HAL_GPIO_DeInit: 371 .LFB330: 287:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 288:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 289:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief De-initialize the GPIOx peripheral registers to their default reset values. 290:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 291:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to be written. 292:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). 293:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 294:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 295:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) 296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 372 .loc 1 296 0 373 .cfi_startproc 374 @ args = 0, pretend = 0, frame = 8 375 @ frame_needed = 0, uses_anonymous_args = 0 376 .LVL53: 297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t position = 0x00U; 298:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t iocurrent; 299:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t tmp; 300:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 301:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 302:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); 303:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); 304:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 305:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the port pins */ 306:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** while ((GPIO_Pin >> position) != 0U) 377 .loc 1 306 0 378 0000 0029 cmp r1, #0 379 0002 00F08E80 beq .L61 296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t position = 0x00U; ARM GAS /tmp/ccgqPWsi.s page 14 380 .loc 1 296 0 381 0006 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} 382 .LCFI4: 383 .cfi_def_cfa_offset 36 384 .cfi_offset 4, -36 385 .cfi_offset 5, -32 386 .cfi_offset 6, -28 387 .cfi_offset 7, -24 388 .cfi_offset 8, -20 389 .cfi_offset 9, -16 390 .cfi_offset 10, -12 391 .cfi_offset 11, -8 392 .cfi_offset 14, -4 307:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 308:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Get current io position */ 309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** iocurrent = (GPIO_Pin) & (1UL << position); 310:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 311:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (iocurrent != 0x00u) 312:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 313:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /*------------------------- EXTI Mode Configuration --------------------*/ 314:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Clear the External Interrupt or Event for the current IO */ 315:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 316:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp = SYSCFG->EXTICR[position >> 2U]; 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp &= (0x0FUL << (4U * (position & 0x03U))); 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 319:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 320:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Clear EXTI line configuration */ 321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->IMR1 &= ~(iocurrent); 393 .loc 1 321 0 394 000a DFF82C81 ldr r8, .L68+20 296:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t position = 0x00U; 395 .loc 1 296 0 396 000e 83B0 sub sp, sp, #12 397 .LCFI5: 398 .cfi_def_cfa_offset 48 297:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t iocurrent; 399 .loc 1 297 0 400 0010 0023 movs r3, #0 309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 401 .loc 1 309 0 402 0012 4FF00109 mov r9, #1 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 403 .loc 1 317 0 404 0016 4FF00F0A mov r10, #15 322:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->EMR1 &= ~(iocurrent); 323:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 324:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ 325:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->RTSR1 &= ~(iocurrent); 326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->FTSR1 &= ~(iocurrent); 327:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 328:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp = 0x0FUL << (4U * (position & 0x03U)); 329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] &= ~tmp; 330:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 331:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 332:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /*------------------------- GPIO Mode Configuration --------------------*/ 333:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure IO in Analog Mode */ 334:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2u)); ARM GAS /tmp/ccgqPWsi.s page 15 405 .loc 1 334 0 406 001a 4FF0030B mov fp, #3 407 .LVL54: 408 .L51: 309:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 409 .loc 1 309 0 410 001e 09FA03F5 lsl r5, r9, r3 411 .LVL55: 311:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 412 .loc 1 311 0 413 0022 15EA0106 ands r6, r5, r1 414 .LVL56: 415 0026 61D0 beq .L43 416 0028 23F00304 bic r4, r3, #3 417 002c 04F18044 add r4, r4, #1073741824 418 0030 04F58034 add r4, r4, #65536 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 419 .loc 1 317 0 420 0034 03F00302 and r2, r3, #3 316:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp &= (0x0FUL << (4U * (position & 0x03U))); 421 .loc 1 316 0 422 0038 A768 ldr r7, [r4, #8] 423 .LVL57: 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 424 .loc 1 317 0 425 003a 9200 lsls r2, r2, #2 426 003c 0AFA02FC lsl ip, r10, r2 427 0040 0CEA0707 and r7, ip, r7 428 .LVL58: 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 429 .loc 1 318 0 430 0044 B0F1904F cmp r0, #1207959552 317:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 431 .loc 1 317 0 432 0048 0197 str r7, [sp, #4] 433 .LVL59: 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 434 .loc 1 318 0 435 004a 16D0 beq .L52 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 436 .loc 1 318 0 is_stmt 0 discriminator 1 437 004c 354F ldr r7, .L68 438 .LVL60: 439 004e B842 cmp r0, r7 440 0050 53D0 beq .L64 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 441 .loc 1 318 0 discriminator 3 442 0052 354F ldr r7, .L68+4 443 0054 B842 cmp r0, r7 444 0056 5AD0 beq .L65 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 445 .loc 1 318 0 discriminator 5 446 0058 344F ldr r7, .L68+8 447 005a B842 cmp r0, r7 448 005c 5DD0 beq .L66 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 449 .loc 1 318 0 discriminator 7 ARM GAS /tmp/ccgqPWsi.s page 16 450 005e 344F ldr r7, .L68+12 451 0060 B842 cmp r0, r7 452 0062 4ED0 beq .L67 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 453 .loc 1 318 0 discriminator 9 454 0064 334F ldr r7, .L68+16 455 0066 B842 cmp r0, r7 456 0068 14BF ite ne 457 006a 4FF0060E movne lr, #6 458 006e 4FF0050E moveq lr, #5 459 0072 0EFA02F2 lsl r2, lr, r2 460 0076 019F ldr r7, [sp, #4] 461 0078 00E0 b .L44 462 .L52: 463 007a 0022 movs r2, #0 464 .L44: 318:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 465 .loc 1 318 0 discriminator 24 466 007c 9742 cmp r7, r2 467 007e 18D1 bne .L50 321:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->EMR1 &= ~(iocurrent); 468 .loc 1 321 0 is_stmt 1 469 0080 D8F80020 ldr r2, [r8] 470 0084 F643 mvns r6, r6 471 .LVL61: 472 0086 3240 ands r2, r2, r6 473 0088 C8F80020 str r2, [r8] 322:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 474 .loc 1 322 0 475 008c D8F80420 ldr r2, [r8, #4] 476 0090 3240 ands r2, r2, r6 477 0092 C8F80420 str r2, [r8, #4] 325:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** EXTI->FTSR1 &= ~(iocurrent); 478 .loc 1 325 0 479 0096 D8F80820 ldr r2, [r8, #8] 480 009a 3240 ands r2, r2, r6 481 009c C8F80820 str r2, [r8, #8] 326:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 482 .loc 1 326 0 483 00a0 D8F80C20 ldr r2, [r8, #12] 484 00a4 1640 ands r6, r6, r2 485 .LVL62: 486 00a6 C8F80C60 str r6, [r8, #12] 487 .LVL63: 329:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 488 .loc 1 329 0 489 00aa A268 ldr r2, [r4, #8] 490 00ac 22EA0C02 bic r2, r2, ip 491 00b0 A260 str r2, [r4, #8] 492 .LVL64: 493 .L50: 494 .loc 1 334 0 495 00b2 0468 ldr r4, [r0] 496 00b4 5A00 lsls r2, r3, #1 497 00b6 0BFA02F2 lsl r2, fp, r2 335:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 336:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the default Alternate Function in current IO */ ARM GAS /tmp/ccgqPWsi.s page 17 337:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->AFR[position >> 3u] &= ~(0xFu << ((position & 0x07u) * 4u)); 498 .loc 1 337 0 499 00ba DE08 lsrs r6, r3, #3 334:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 500 .loc 1 334 0 501 00bc 1443 orrs r4, r4, r2 502 00be 00EB8606 add r6, r0, r6, lsl #2 503 00c2 0460 str r4, [r0] 504 .loc 1 337 0 505 00c4 03F00704 and r4, r3, #7 506 00c8 376A ldr r7, [r6, #32] 507 00ca A400 lsls r4, r4, #2 508 00cc 0AFA04F4 lsl r4, r10, r4 509 00d0 27EA0404 bic r4, r7, r4 510 00d4 3462 str r4, [r6, #32] 338:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 339:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Deactivate the Pull-up and Pull-down resistor for the current IO */ 340:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); 511 .loc 1 340 0 512 00d6 C468 ldr r4, [r0, #12] 513 00d8 D243 mvns r2, r2 514 00da 1440 ands r4, r4, r2 515 00dc C460 str r4, [r0, #12] 341:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 342:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the default value IO Output Type */ 343:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OTYPER &= ~(GPIO_OTYPER_OT0 << position); 516 .loc 1 343 0 517 00de 4468 ldr r4, [r0, #4] 518 00e0 24EA0505 bic r5, r4, r5 519 .LVL65: 520 00e4 4560 str r5, [r0, #4] 344:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 345:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Configure the default value for IO Speed */ 346:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); 521 .loc 1 346 0 522 00e6 8468 ldr r4, [r0, #8] 523 00e8 2240 ands r2, r2, r4 524 00ea 8260 str r2, [r0, #8] 525 .L43: 347:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 348:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 349:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** position++; 526 .loc 1 349 0 527 00ec 0133 adds r3, r3, #1 528 .LVL66: 306:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 529 .loc 1 306 0 530 00ee 31FA03F2 lsrs r2, r1, r3 531 00f2 94D1 bne .L51 350:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 351:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 532 .loc 1 351 0 533 00f4 03B0 add sp, sp, #12 534 .LCFI6: 535 .cfi_remember_state 536 .cfi_def_cfa_offset 36 537 @ sp needed ARM GAS /tmp/ccgqPWsi.s page 18 538 00f6 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} 539 .LVL67: 540 .L64: 541 .LCFI7: 542 .cfi_restore_state 543 00fa 09FA02F2 lsl r2, r9, r2 544 00fe 019F ldr r7, [sp, #4] 545 0100 BCE7 b .L44 546 .L67: 547 0102 4FF0040E mov lr, #4 548 0106 0EFA02F2 lsl r2, lr, r2 549 010a 019F ldr r7, [sp, #4] 550 010c B6E7 b .L44 551 .L65: 552 010e 4FF0020E mov lr, #2 553 0112 0EFA02F2 lsl r2, lr, r2 554 0116 019F ldr r7, [sp, #4] 555 0118 B0E7 b .L44 556 .L66: 557 011a 0BFA02F2 lsl r2, fp, r2 558 011e 019F ldr r7, [sp, #4] 559 0120 ACE7 b .L44 560 .LVL68: 561 .L61: 562 .LCFI8: 563 .cfi_def_cfa_offset 0 564 .cfi_restore 4 565 .cfi_restore 5 566 .cfi_restore 6 567 .cfi_restore 7 568 .cfi_restore 8 569 .cfi_restore 9 570 .cfi_restore 10 571 .cfi_restore 11 572 .cfi_restore 14 573 0122 7047 bx lr 574 .L69: 575 .align 2 576 .L68: 577 0124 00040048 .word 1207960576 578 0128 00080048 .word 1207961600 579 012c 000C0048 .word 1207962624 580 0130 00100048 .word 1207963648 581 0134 00140048 .word 1207964672 582 0138 00040140 .word 1073808384 583 .cfi_endproc 584 .LFE330: 586 .section .text.HAL_GPIO_ReadPin,"ax",%progbits 587 .align 1 588 .p2align 2,,3 589 .global HAL_GPIO_ReadPin 590 .syntax unified 591 .thumb 592 .thumb_func 593 .fpu fpv4-sp-d16 595 HAL_GPIO_ReadPin: 596 .LFB331: ARM GAS /tmp/ccgqPWsi.s page 19 352:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 353:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 354:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @} 355:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 356:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 357:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** @addtogroup GPIO_Exported_Functions_Group2 358:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief GPIO Read, Write, Toggle, Lock and EXTI management functions. 359:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 360:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @verbatim 361:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** =============================================================================== 362:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** ##### IO operation functions ##### 363:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** =============================================================================== 364:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 365:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** @endverbatim 366:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @{ 367:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 368:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 369:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 370:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Read the specified input port pin. 371:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 372:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to read. 373:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). 374:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval The input port pin value. 375:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 376:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) 377:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 597 .loc 1 377 0 598 .cfi_startproc 599 @ args = 0, pretend = 0, frame = 0 600 @ frame_needed = 0, uses_anonymous_args = 0 601 @ link register save eliminated. 602 .LVL69: 378:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIO_PinState bitstatus; 379:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 380:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 381:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); 382:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 383:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIOx->IDR & GPIO_Pin) != 0x00U) 603 .loc 1 383 0 604 0000 0369 ldr r3, [r0, #16] 605 .LVL70: 606 0002 1942 tst r1, r3 384:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 385:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** bitstatus = GPIO_PIN_SET; 386:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 387:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** else 388:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 389:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** bitstatus = GPIO_PIN_RESET; 390:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 391:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** return bitstatus; 392:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 607 .loc 1 392 0 608 0004 14BF ite ne 609 0006 0120 movne r0, #1 610 .LVL71: 611 0008 0020 moveq r0, #0 612 000a 7047 bx lr ARM GAS /tmp/ccgqPWsi.s page 20 613 .cfi_endproc 614 .LFE331: 616 .section .text.HAL_GPIO_WritePin,"ax",%progbits 617 .align 1 618 .p2align 2,,3 619 .global HAL_GPIO_WritePin 620 .syntax unified 621 .thumb 622 .thumb_func 623 .fpu fpv4-sp-d16 625 HAL_GPIO_WritePin: 626 .LFB332: 393:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 394:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 395:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Set or clear the selected data port bit. 396:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 397:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @note This function uses GPIOx_BSRR and GPIOx_BRR registers to allow atomic read/modify 398:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * accesses. In this way, there is no risk of an IRQ occurring between 399:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * the read and the modify access. 400:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * 401:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 402:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to be written. 403:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). 404:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param PinState specifies the value to be written to the selected bit. 405:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be one of the GPIO_PinState enum values: 406:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @arg GPIO_PIN_RESET: to clear the port pin 407:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @arg GPIO_PIN_SET: to set the port pin 408:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 409:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 410:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 411:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 627 .loc 1 411 0 628 .cfi_startproc 629 @ args = 0, pretend = 0, frame = 0 630 @ frame_needed = 0, uses_anonymous_args = 0 631 @ link register save eliminated. 632 .LVL72: 412:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 413:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); 414:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_ACTION(PinState)); 415:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 416:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (PinState != GPIO_PIN_RESET) 633 .loc 1 416 0 634 0000 0AB9 cbnz r2, .L74 417:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 418:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->BSRR = (uint32_t)GPIO_Pin; 419:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 420:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** else 421:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 422:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->BRR = (uint32_t)GPIO_Pin; 635 .loc 1 422 0 636 0002 8162 str r1, [r0, #40] 423:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 424:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 637 .loc 1 424 0 638 0004 7047 bx lr 639 .L74: ARM GAS /tmp/ccgqPWsi.s page 21 418:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 640 .loc 1 418 0 641 0006 8161 str r1, [r0, #24] 642 0008 7047 bx lr 643 .cfi_endproc 644 .LFE332: 646 000a 00BF .section .text.HAL_GPIO_TogglePin,"ax",%progbits 647 .align 1 648 .p2align 2,,3 649 .global HAL_GPIO_TogglePin 650 .syntax unified 651 .thumb 652 .thumb_func 653 .fpu fpv4-sp-d16 655 HAL_GPIO_TogglePin: 656 .LFB333: 425:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 426:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 427:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Toggle the specified GPIO pin. 428:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 429:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin specifies the pin to be toggled. 430:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). 431:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 432:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 433:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) 434:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 657 .loc 1 434 0 658 .cfi_startproc 659 @ args = 0, pretend = 0, frame = 0 660 @ frame_needed = 0, uses_anonymous_args = 0 661 @ link register save eliminated. 662 .LVL73: 435:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** uint32_t odr; 436:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 437:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 438:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); 439:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 440:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* get current Output Data Register value */ 441:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** odr = GPIOx->ODR; 663 .loc 1 441 0 664 0000 4369 ldr r3, [r0, #20] 665 .LVL74: 442:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 443:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Set selected pins that were at low level, and reset ones that were high */ 444:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); 666 .loc 1 444 0 667 0002 01EA0302 and r2, r1, r3 668 0006 21EA0301 bic r1, r1, r3 669 .LVL75: 670 000a 41EA0241 orr r1, r1, r2, lsl #16 671 000e 8161 str r1, [r0, #24] 445:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 672 .loc 1 445 0 673 0010 7047 bx lr 674 .cfi_endproc 675 .LFE333: 677 0012 00BF .section .text.HAL_GPIO_LockPin,"ax",%progbits ARM GAS /tmp/ccgqPWsi.s page 22 678 .align 1 679 .p2align 2,,3 680 .global HAL_GPIO_LockPin 681 .syntax unified 682 .thumb 683 .thumb_func 684 .fpu fpv4-sp-d16 686 HAL_GPIO_LockPin: 687 .LFB334: 446:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 447:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 448:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Lock GPIO Pins configuration registers. 449:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, 450:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. 451:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @note The configuration of the locked GPIO pins can no longer be modified 452:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * until the next reset. 453:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIOx where x can be (A..G) to select the GPIO peripheral for STM32G4xx family 454:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bits to be locked. 455:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). 456:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 457:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 458:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) 459:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 688 .loc 1 459 0 689 .cfi_startproc 690 @ args = 0, pretend = 0, frame = 8 691 @ frame_needed = 0, uses_anonymous_args = 0 692 @ link register save eliminated. 693 .LVL76: 694 0000 82B0 sub sp, sp, #8 695 .LCFI9: 696 .cfi_def_cfa_offset 8 460:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** __IO uint32_t tmp = GPIO_LCKR_LCKK; 697 .loc 1 460 0 698 0002 4FF48033 mov r3, #65536 699 0006 0193 str r3, [sp, #4] 461:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 462:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Check the parameters */ 463:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_LOCK_INSTANCE(GPIOx)); 464:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); 465:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 466:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Apply lock key write sequence */ 467:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp |= GPIO_Pin; 700 .loc 1 467 0 701 0008 019B ldr r3, [sp, #4] 702 000a 0B43 orrs r3, r3, r1 703 000c 0193 str r3, [sp, #4] 468:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ 469:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->LCKR = tmp; 704 .loc 1 469 0 705 000e 019B ldr r3, [sp, #4] 706 0010 C361 str r3, [r0, #28] 470:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ 471:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->LCKR = GPIO_Pin; 707 .loc 1 471 0 708 0012 C161 str r1, [r0, #28] 472:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ ARM GAS /tmp/ccgqPWsi.s page 23 473:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** GPIOx->LCKR = tmp; 709 .loc 1 473 0 710 0014 019B ldr r3, [sp, #4] 711 0016 C361 str r3, [r0, #28] 474:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Read LCKK register. This read is mandatory to complete key lock sequence */ 475:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** tmp = GPIOx->LCKR; 712 .loc 1 475 0 713 0018 C369 ldr r3, [r0, #28] 714 001a 0193 str r3, [sp, #4] 476:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 477:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* read again in order to confirm lock is active */ 478:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != 0x00u) 715 .loc 1 478 0 716 001c C069 ldr r0, [r0, #28] 717 .LVL77: 718 001e 80F48030 eor r0, r0, #65536 479:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 480:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** return HAL_OK; 481:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 482:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** else 483:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 484:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** return HAL_ERROR; 485:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 486:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 719 .loc 1 486 0 720 0022 C0F30040 ubfx r0, r0, #16, #1 721 0026 02B0 add sp, sp, #8 722 .LCFI10: 723 .cfi_def_cfa_offset 0 724 @ sp needed 725 0028 7047 bx lr 726 .cfi_endproc 727 .LFE334: 729 002a 00BF .section .text.HAL_GPIO_EXTI_Callback,"ax",%progbits 730 .align 1 731 .p2align 2,,3 732 .weak HAL_GPIO_EXTI_Callback 733 .syntax unified 734 .thumb 735 .thumb_func 736 .fpu fpv4-sp-d16 738 HAL_GPIO_EXTI_Callback: 739 .LFB336: 487:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 488:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 489:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief Handle EXTI interrupt request. 490:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. 491:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 492:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 493:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) 494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 495:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* EXTI line interrupt detected */ 496:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u) 497:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 498:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); 499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); 500:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } ARM GAS /tmp/ccgqPWsi.s page 24 501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 502:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 503:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /** 504:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @brief EXTI line detection callback. 505:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @param GPIO_Pin: Specifies the port pin connected to corresponding EXTI line. 506:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** * @retval None 507:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 508:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 509:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 740 .loc 1 509 0 741 .cfi_startproc 742 @ args = 0, pretend = 0, frame = 0 743 @ frame_needed = 0, uses_anonymous_args = 0 744 @ link register save eliminated. 745 .LVL78: 510:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* Prevent unused argument(s) compilation warning */ 511:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** UNUSED(GPIO_Pin); 512:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 513:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* NOTE: This function should not be modified, when the callback is needed, 514:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** the HAL_GPIO_EXTI_Callback could be implemented in the user file 515:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** */ 516:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 746 .loc 1 516 0 747 0000 7047 bx lr 748 .cfi_endproc 749 .LFE336: 751 0002 00BF .section .text.HAL_GPIO_EXTI_IRQHandler,"ax",%progbits 752 .align 1 753 .p2align 2,,3 754 .global HAL_GPIO_EXTI_IRQHandler 755 .syntax unified 756 .thumb 757 .thumb_func 758 .fpu fpv4-sp-d16 760 HAL_GPIO_EXTI_IRQHandler: 761 .LFB335: 494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* EXTI line interrupt detected */ 762 .loc 1 494 0 763 .cfi_startproc 764 @ args = 0, pretend = 0, frame = 0 765 @ frame_needed = 0, uses_anonymous_args = 0 766 .LVL79: 496:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** { 767 .loc 1 496 0 768 0000 044A ldr r2, .L89 769 0002 5169 ldr r1, [r2, #20] 770 0004 0142 tst r1, r0 771 0006 00D1 bne .L88 772 0008 7047 bx lr 773 .L88: 494:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** /* EXTI line interrupt detected */ 774 .loc 1 494 0 775 000a 08B5 push {r3, lr} 776 .LCFI11: 777 .cfi_def_cfa_offset 8 778 .cfi_offset 3, -8 779 .cfi_offset 14, -4 ARM GAS /tmp/ccgqPWsi.s page 25 498:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); 780 .loc 1 498 0 781 000c 5061 str r0, [r2, #20] 499:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** } 782 .loc 1 499 0 783 000e FFF7FEFF bl HAL_GPIO_EXTI_Callback 784 .LVL80: 501:Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c **** 785 .loc 1 501 0 786 0012 08BD pop {r3, pc} 787 .L90: 788 .align 2 789 .L89: 790 0014 00040140 .word 1073808384 791 .cfi_endproc 792 .LFE335: 794 .text 795 .Letext0: 796 .file 2 "/usr/include/newlib/machine/_default_types.h" 797 .file 3 "/usr/include/newlib/sys/_stdint.h" 798 .file 4 "Drivers/CMSIS/Include/core_cm4.h" 799 .file 5 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/system_stm32g4xx.h" 800 .file 6 "Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h" 801 .file 7 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h" 802 .file 8 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_gpio.h" 803 .file 9 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h" 804 .file 10 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h" 805 .file 11 "Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h" ARM GAS /tmp/ccgqPWsi.s page 26 DEFINED SYMBOLS *ABS*:0000000000000000 stm32g4xx_hal_gpio.c /tmp/ccgqPWsi.s:16 .text.HAL_GPIO_Init:0000000000000000 $t /tmp/ccgqPWsi.s:24 .text.HAL_GPIO_Init:0000000000000000 HAL_GPIO_Init /tmp/ccgqPWsi.s:351 .text.HAL_GPIO_Init:000000000000019c $d /tmp/ccgqPWsi.s:362 .text.HAL_GPIO_DeInit:0000000000000000 $t /tmp/ccgqPWsi.s:370 .text.HAL_GPIO_DeInit:0000000000000000 HAL_GPIO_DeInit /tmp/ccgqPWsi.s:577 .text.HAL_GPIO_DeInit:0000000000000124 $d /tmp/ccgqPWsi.s:587 .text.HAL_GPIO_ReadPin:0000000000000000 $t /tmp/ccgqPWsi.s:595 .text.HAL_GPIO_ReadPin:0000000000000000 HAL_GPIO_ReadPin /tmp/ccgqPWsi.s:617 .text.HAL_GPIO_WritePin:0000000000000000 $t /tmp/ccgqPWsi.s:625 .text.HAL_GPIO_WritePin:0000000000000000 HAL_GPIO_WritePin /tmp/ccgqPWsi.s:647 .text.HAL_GPIO_TogglePin:0000000000000000 $t /tmp/ccgqPWsi.s:655 .text.HAL_GPIO_TogglePin:0000000000000000 HAL_GPIO_TogglePin /tmp/ccgqPWsi.s:678 .text.HAL_GPIO_LockPin:0000000000000000 $t /tmp/ccgqPWsi.s:686 .text.HAL_GPIO_LockPin:0000000000000000 HAL_GPIO_LockPin /tmp/ccgqPWsi.s:730 .text.HAL_GPIO_EXTI_Callback:0000000000000000 $t /tmp/ccgqPWsi.s:738 .text.HAL_GPIO_EXTI_Callback:0000000000000000 HAL_GPIO_EXTI_Callback /tmp/ccgqPWsi.s:752 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 $t /tmp/ccgqPWsi.s:760 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 HAL_GPIO_EXTI_IRQHandler /tmp/ccgqPWsi.s:790 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000014 $d NO UNDEFINED SYMBOLS