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

© COPYRIGHT(c) 2016 STMicroelectronics

100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Redistribution and use in source and binary forms, with or without modification, 102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * are permitted provided that the following conditions are met: 103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 1. Redistributions of source code must retain the above copyright notice, 104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * this list of conditions and the following disclaimer. 105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, 106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * this list of conditions and the following disclaimer in the documentation 107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * and/or other materials provided with the distribution. 108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * may be used to endorse or promote products derived from this software 110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * without specific prior written permission. 111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** ****************************************************************************** 124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Includes ------------------------------------------------------------------*/ 127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #include "stm32l0xx_hal.h" 128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup STM32L0xx_HAL_Driver 130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #ifdef HAL_GPIO_MODULE_ENABLED 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup GPIO 136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief GPIO HAL module driver 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup GPIO_Private 141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Private define ------------------------------------------------------------*/ 144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define GPIO_MODE ((uint32_t)0x00000003U) 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define EXTI_MODE ((uint32_t)0x10000000U) ARM GAS /tmp/ccJYgg6T.s page 4 148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define GPIO_MODE_IT ((uint32_t)0x00010000U) 149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define GPIO_MODE_EVT ((uint32_t)0x00020000U) 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define RISING_EDGE ((uint32_t)0x00100000U) 151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define FALLING_EDGE ((uint32_t)0x00200000U) 152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define GPIO_OUTPUT_TYPE ((uint32_t)0x00000010U) 153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** #define GPIO_NUMBER ((uint32_t)16U) 155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @} 158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup GPIO_Exported_Functions 160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup GPIO_Exported_Functions_Group1 164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Initialization and de-initialization functions 165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** @verbatim 167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** =============================================================================== 168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** ##### Initialization and de-initialization functions ##### 169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** =============================================================================== 170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** @endverbatim 172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init 177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: where x can be (A..E and H) to select the GPIO peripheral for STM32L0XX family d 178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains 180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * the configuration information for the specified GPIO peripheral. 181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) 184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 26 .loc 1 184 0 27 .cfi_startproc 28 @ args = 0, pretend = 0, frame = 0 29 @ frame_needed = 0, uses_anonymous_args = 0 30 .LVL0: 31 0000 F0B5 push {r4, r5, r6, r7, lr} 32 .LCFI0: 33 .cfi_def_cfa_offset 20 34 .cfi_offset 4, -20 35 .cfi_offset 5, -16 36 .cfi_offset 6, -12 37 .cfi_offset 7, -8 38 .cfi_offset 14, -4 39 0002 C646 mov lr, r8 40 0004 00B5 push {lr} 41 .LCFI1: 42 .cfi_def_cfa_offset 24 43 .cfi_offset 8, -24 44 .LVL1: 185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t position = 0x00U; ARM GAS /tmp/ccJYgg6T.s page 5 45 .loc 1 185 0 46 0006 0023 movs r3, #0 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t iocurrent = 0x00U; 187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t temp = 0x00U; 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,(GPIO_Init->Pin))); 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the port pins */ 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** while (((GPIO_Init->Pin) >> position) != 0) 47 .loc 1 195 0 48 0008 38E0 b .L2 49 .LVL2: 50 .L21: 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Get the IO position */ 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** iocurrent = (GPIO_Init->Pin) & (1U << position); 199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(iocurrent) 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /*--------------------- GPIO Mode Configuration ------------------------*/ 203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* In case of Alternate function mode selection */ 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check if the Alternate function is compliant with the GPIO in use */ 207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_AF_AVAILABLE(GPIOx,(GPIO_Init->Alternate))); 208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure Alternate function mapped with the current IO */ 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = GPIOx->AFR[position >> 3U]; 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)0xFU << ((uint32_t)(position & (uint32_t)0x07U) * 4U)) ; 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U)) 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] = temp; 213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* In case of Output or Alternate function mode selection */ 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) || 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the Speed parameter */ 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the IO Speed */ 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = GPIOx->OSPEEDR; 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= (GPIO_Init->Speed << (position * 2U)); 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the IO Output Type */ 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp= GPIOx->OTYPER; 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_OTYPER_OT_0 << position) ; 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OTYPER = temp; 232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = GPIOx->MODER; 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); ARM GAS /tmp/ccJYgg6T.s page 6 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->MODER = temp; 239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Activate the Pull-up or Pull down resistor for the current IO */ 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = GPIOx->PUPDR; 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2U)); 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->PUPDR = temp; 245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /*--------------------- EXTI Mode Configuration ------------------------*/ 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the External Interrupt or event for the current IO */ 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) 249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Enable SYSCFG Clock */ 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = SYSCFG->EXTICR[position >> 2U]; 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** CLEAR_BIT(temp, ((uint32_t)0x0FU) << (4U * (position & 0x03U))); 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U))); 51 .loc 1 255 0 52 000a 0526 movs r6, #5 53 000c 00E0 b .L8 54 .L14: 55 000e 0026 movs r6, #0 56 .L8: 57 .loc 1 255 0 is_stmt 0 discriminator 24 58 0010 AE40 lsls r6, r6, r5 59 0012 3500 movs r5, r6 60 0014 3D43 orrs r5, r7 61 .LVL3: 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 62 .loc 1 256 0 is_stmt 1 discriminator 24 63 0016 0234 adds r4, r4, #2 64 0018 A400 lsls r4, r4, #2 65 001a 584E ldr r6, .L22 66 001c A551 str r5, [r4, r6] 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Clear EXTI line configuration */ 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = EXTI->IMR; 67 .loc 1 259 0 discriminator 24 68 001e 584C ldr r4, .L22+4 69 0020 2568 ldr r5, [r4] 70 .LVL4: 260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); 71 .loc 1 260 0 discriminator 24 72 0022 4246 mov r2, r8 73 0024 D443 mvns r4, r2 74 0026 2E00 movs r6, r5 75 0028 2640 ands r6, r4 76 .LVL5: 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) 77 .loc 1 261 0 discriminator 24 78 002a 4A68 ldr r2, [r1, #4] 79 002c D203 lsls r2, r2, #15 80 002e 02D5 bpl .L9 262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= iocurrent; ARM GAS /tmp/ccJYgg6T.s page 7 81 .loc 1 263 0 82 0030 4246 mov r2, r8 83 0032 1543 orrs r5, r2 84 0034 2E00 movs r6, r5 85 .LVL6: 86 .L9: 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->IMR = temp; 87 .loc 1 265 0 88 0036 524D ldr r5, .L22+4 89 0038 2E60 str r6, [r5] 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = EXTI->EMR; 90 .loc 1 267 0 91 003a 6D68 ldr r5, [r5, #4] 92 .LVL7: 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); 93 .loc 1 268 0 94 003c 2E00 movs r6, r5 95 003e 2640 ands r6, r4 96 .LVL8: 269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) 97 .loc 1 269 0 98 0040 4A68 ldr r2, [r1, #4] 99 0042 9203 lsls r2, r2, #14 100 0044 02D5 bpl .L10 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= iocurrent; 101 .loc 1 271 0 102 0046 4246 mov r2, r8 103 0048 1543 orrs r5, r2 104 004a 2E00 movs r6, r5 105 .LVL9: 106 .L10: 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->EMR = temp; 107 .loc 1 273 0 108 004c 4C4D ldr r5, .L22+4 109 004e 6E60 str r6, [r5, #4] 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = EXTI->RTSR; 110 .loc 1 276 0 111 0050 AD68 ldr r5, [r5, #8] 112 .LVL10: 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); 113 .loc 1 277 0 114 0052 2E00 movs r6, r5 115 0054 2640 ands r6, r4 116 .LVL11: 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) 117 .loc 1 278 0 118 0056 4A68 ldr r2, [r1, #4] 119 0058 D202 lsls r2, r2, #11 120 005a 02D5 bpl .L11 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= iocurrent; ARM GAS /tmp/ccJYgg6T.s page 8 121 .loc 1 280 0 122 005c 4246 mov r2, r8 123 005e 1543 orrs r5, r2 124 0060 2E00 movs r6, r5 125 .LVL12: 126 .L11: 281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->RTSR = temp; 127 .loc 1 282 0 128 0062 474D ldr r5, .L22+4 129 0064 AE60 str r6, [r5, #8] 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp = EXTI->FTSR; 130 .loc 1 284 0 131 0066 ED68 ldr r5, [r5, #12] 132 .LVL13: 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); 133 .loc 1 285 0 134 0068 2C40 ands r4, r5 135 .LVL14: 286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) 136 .loc 1 286 0 137 006a 4A68 ldr r2, [r1, #4] 138 006c 9202 lsls r2, r2, #10 139 006e 02D5 bpl .L12 287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= iocurrent; 140 .loc 1 288 0 141 0070 4246 mov r2, r8 142 0072 2A43 orrs r2, r5 143 0074 1400 movs r4, r2 144 .LVL15: 145 .L12: 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->FTSR = temp; 146 .loc 1 290 0 147 0076 424A ldr r2, .L22+4 148 0078 D460 str r4, [r2, #12] 149 .LVL16: 150 .L3: 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** position++; 151 .loc 1 293 0 152 007a 0133 adds r3, r3, #1 153 .LVL17: 154 .L2: 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 155 .loc 1 195 0 156 007c 0A68 ldr r2, [r1] 157 007e 1400 movs r4, r2 158 0080 DC40 lsrs r4, r4, r3 159 0082 77D0 beq .L20 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 160 .loc 1 198 0 161 0084 0124 movs r4, #1 162 0086 9C40 lsls r4, r4, r3 ARM GAS /tmp/ccJYgg6T.s page 9 163 0088 2240 ands r2, r4 164 008a 9046 mov r8, r2 165 .LVL18: 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 166 .loc 1 200 0 167 008c F5D0 beq .L3 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 168 .loc 1 204 0 169 008e 4D68 ldr r5, [r1, #4] 170 0090 022D cmp r5, #2 171 0092 01D0 beq .L4 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 172 .loc 1 204 0 is_stmt 0 discriminator 1 173 0094 122D cmp r5, #18 174 0096 0ED1 bne .L5 175 .L4: 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~((uint32_t)0xFU << ((uint32_t)(position & (uint32_t)0x07U) * 4U)) ; 176 .loc 1 209 0 is_stmt 1 177 0098 DD08 lsrs r5, r3, #3 178 009a 0835 adds r5, r5, #8 179 009c AD00 lsls r5, r5, #2 180 009e 2F58 ldr r7, [r5, r0] 181 .LVL19: 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U)) 182 .loc 1 210 0 183 00a0 0726 movs r6, #7 184 00a2 1E40 ands r6, r3 185 00a4 B600 lsls r6, r6, #2 186 00a6 0F22 movs r2, #15 187 .LVL20: 188 00a8 B240 lsls r2, r2, r6 189 00aa 9743 bics r7, r2 190 .LVL21: 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] = temp; 191 .loc 1 211 0 192 00ac 0A69 ldr r2, [r1, #16] 193 00ae B240 lsls r2, r2, r6 194 00b0 1600 movs r6, r2 195 00b2 3E43 orrs r6, r7 196 .LVL22: 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 197 .loc 1 212 0 198 00b4 2E50 str r6, [r5, r0] 199 .LVL23: 200 .L5: 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 201 .loc 1 216 0 202 00b6 4D68 ldr r5, [r1, #4] 203 00b8 6E1E subs r6, r5, #1 204 00ba 012E cmp r6, #1 205 00bc 03D9 bls .L6 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD)) 206 .loc 1 216 0 is_stmt 0 discriminator 1 207 00be 112D cmp r5, #17 208 00c0 01D0 beq .L6 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 209 .loc 1 217 0 is_stmt 1 ARM GAS /tmp/ccJYgg6T.s page 10 210 00c2 122D cmp r5, #18 211 00c4 12D1 bne .L7 212 .L6: 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); 213 .loc 1 222 0 214 00c6 8568 ldr r5, [r0, #8] 215 .LVL24: 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= (GPIO_Init->Speed << (position * 2U)); 216 .loc 1 223 0 217 00c8 5F00 lsls r7, r3, #1 218 00ca 0326 movs r6, #3 219 00cc BE40 lsls r6, r6, r7 220 00ce B543 bics r5, r6 221 .LVL25: 222 00d0 2E00 movs r6, r5 223 .LVL26: 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; 224 .loc 1 224 0 225 00d2 CD68 ldr r5, [r1, #12] 226 .LVL27: 227 00d4 BD40 lsls r5, r5, r7 228 00d6 3543 orrs r5, r6 229 .LVL28: 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 230 .loc 1 225 0 231 00d8 8560 str r5, [r0, #8] 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_OTYPER_OT_0 << position) ; 232 .loc 1 228 0 233 00da 4568 ldr r5, [r0, #4] 234 .LVL29: 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position); 235 .loc 1 229 0 236 00dc A543 bics r5, r4 237 .LVL30: 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OTYPER = temp; 238 .loc 1 230 0 239 00de 4A68 ldr r2, [r1, #4] 240 00e0 1609 lsrs r6, r2, #4 241 00e2 0124 movs r4, #1 242 00e4 3440 ands r4, r6 243 00e6 9C40 lsls r4, r4, r3 244 00e8 2C43 orrs r4, r5 245 .LVL31: 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 246 .loc 1 231 0 247 00ea 4460 str r4, [r0, #4] 248 .LVL32: 249 .L7: 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); 250 .loc 1 235 0 251 00ec 0768 ldr r7, [r0] 252 .LVL33: 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); 253 .loc 1 236 0 254 00ee 5E00 lsls r6, r3, #1 255 00f0 0324 movs r4, #3 256 00f2 2500 movs r5, r4 ARM GAS /tmp/ccJYgg6T.s page 11 257 00f4 B540 lsls r5, r5, r6 258 00f6 ED43 mvns r5, r5 259 00f8 2F40 ands r7, r5 260 .LVL34: 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->MODER = temp; 261 .loc 1 237 0 262 00fa 4A68 ldr r2, [r1, #4] 263 00fc 1440 ands r4, r2 264 00fe B440 lsls r4, r4, r6 265 0100 3C43 orrs r4, r7 266 .LVL35: 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 267 .loc 1 238 0 268 0102 0460 str r4, [r0] 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 269 .loc 1 241 0 270 0104 C468 ldr r4, [r0, #12] 271 .LVL36: 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2U)); 272 .loc 1 242 0 273 0106 2540 ands r5, r4 274 .LVL37: 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->PUPDR = temp; 275 .loc 1 243 0 276 0108 8C68 ldr r4, [r1, #8] 277 010a B440 lsls r4, r4, r6 278 010c 2C43 orrs r4, r5 279 .LVL38: 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 280 .loc 1 244 0 281 010e C460 str r4, [r0, #12] 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 282 .loc 1 248 0 283 0110 4A68 ldr r2, [r1, #4] 284 0112 D200 lsls r2, r2, #3 285 0114 B1D5 bpl .L3 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 286 .loc 1 251 0 287 0116 1B4D ldr r5, .L22+8 288 0118 6C6B ldr r4, [r5, #52] 289 .LVL39: 290 011a 0126 movs r6, #1 291 011c 3443 orrs r4, r6 292 011e 6C63 str r4, [r5, #52] 293 .LVL40: 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** CLEAR_BIT(temp, ((uint32_t)0x0FU) << (4U * (position & 0x03U))); 294 .loc 1 253 0 295 0120 9C08 lsrs r4, r3, #2 296 0122 A51C adds r5, r4, #2 297 0124 AD00 lsls r5, r5, #2 298 0126 154E ldr r6, .L22 299 0128 AF59 ldr r7, [r5, r6] 300 .LVL41: 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U))); 301 .loc 1 254 0 302 012a 0326 movs r6, #3 303 012c 1E40 ands r6, r3 ARM GAS /tmp/ccJYgg6T.s page 12 304 012e B500 lsls r5, r6, #2 305 0130 0F26 movs r6, #15 306 0132 AE40 lsls r6, r6, r5 307 0134 B743 bics r7, r6 308 .LVL42: 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 309 .loc 1 255 0 310 0136 A026 movs r6, #160 311 0138 F605 lsls r6, r6, #23 312 013a B042 cmp r0, r6 313 013c 00D1 bne .LCB317 314 013e 66E7 b .L14 @long jump 315 .LCB317: 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 316 .loc 1 255 0 is_stmt 0 discriminator 1 317 0140 114E ldr r6, .L22+12 318 0142 B042 cmp r0, r6 319 0144 0ED0 beq .L15 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 320 .loc 1 255 0 discriminator 3 321 0146 114E ldr r6, .L22+16 322 0148 B042 cmp r0, r6 323 014a 0DD0 beq .L16 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 324 .loc 1 255 0 discriminator 5 325 014c 104E ldr r6, .L22+20 326 014e B042 cmp r0, r6 327 0150 0CD0 beq .L17 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 328 .loc 1 255 0 discriminator 7 329 0152 104E ldr r6, .L22+24 330 0154 B042 cmp r0, r6 331 0156 0BD0 beq .L18 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 332 .loc 1 255 0 discriminator 9 333 0158 0F4E ldr r6, .L22+28 334 015a B042 cmp r0, r6 335 015c 00D1 bne .LCB332 336 015e 54E7 b .L21 @long jump 337 .LCB332: 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] = temp; 338 .loc 1 255 0 339 0160 0626 movs r6, #6 340 0162 55E7 b .L8 341 .L15: 342 0164 0126 movs r6, #1 343 0166 53E7 b .L8 344 .L16: 345 0168 0226 movs r6, #2 346 016a 51E7 b .L8 347 .L17: 348 016c 0326 movs r6, #3 349 016e 4FE7 b .L8 350 .L18: 351 0170 0426 movs r6, #4 352 0172 4DE7 b .L8 353 .LVL43: ARM GAS /tmp/ccJYgg6T.s page 13 354 .L20: 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 355 .loc 1 295 0 is_stmt 1 356 @ sp needed 357 0174 04BC pop {r2} 358 0176 9046 mov r8, r2 359 0178 F0BD pop {r4, r5, r6, r7, pc} 360 .L23: 361 017a C046 .align 2 362 .L22: 363 017c 00000140 .word 1073807360 364 0180 00040140 .word 1073808384 365 0184 00100240 .word 1073876992 366 0188 00040050 .word 1342178304 367 018c 00080050 .word 1342179328 368 0190 000C0050 .word 1342180352 369 0194 00100050 .word 1342181376 370 0198 001C0050 .word 1342184448 371 .cfi_endproc 372 .LFE39: 374 .section .text.HAL_GPIO_DeInit,"ax",%progbits 375 .align 1 376 .global HAL_GPIO_DeInit 377 .syntax unified 378 .code 16 379 .thumb_func 380 .fpu softvfp 382 HAL_GPIO_DeInit: 383 .LFB40: 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief De-initializes the GPIOx peripheral registers to their default reset values. 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: where x can be (A..E and H) to select the GPIO peripheral for STM32L0XX family d 300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: specifies the port bit to be written. 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * This parameter can be one of GPIO_PIN_x where x can be (0..15). 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * All port bits are not necessarily available on all GPIOs. 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) 307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 384 .loc 1 307 0 385 .cfi_startproc 386 @ args = 0, pretend = 0, frame = 0 387 @ frame_needed = 0, uses_anonymous_args = 0 388 .LVL44: 389 0000 F0B5 push {r4, r5, r6, r7, lr} 390 .LCFI2: 391 .cfi_def_cfa_offset 20 392 .cfi_offset 4, -20 393 .cfi_offset 5, -16 394 .cfi_offset 6, -12 395 .cfi_offset 7, -8 396 .cfi_offset 14, -4 397 0002 D646 mov lr, r10 398 0004 4F46 mov r7, r9 ARM GAS /tmp/ccJYgg6T.s page 14 399 0006 4646 mov r6, r8 400 0008 C0B5 push {r6, r7, lr} 401 .LCFI3: 402 .cfi_def_cfa_offset 32 403 .cfi_offset 8, -32 404 .cfi_offset 9, -28 405 .cfi_offset 10, -24 406 .LVL45: 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t position = 0x00U; 407 .loc 1 308 0 408 000a 0023 movs r3, #0 309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t iocurrent = 0x00U; 310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** uint32_t tmp = 0x00U; 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,GPIO_Pin)); 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the port pins */ 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** while ((GPIO_Pin >> position) != 0) 409 .loc 1 316 0 410 000c 06E0 b .L25 411 .LVL46: 412 .L37: 317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Get the IO position */ 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** iocurrent = (GPIO_Pin) & (1U << position); 320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(iocurrent) 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /*------------------------- GPIO Mode Configuration --------------------*/ 324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure IO Direction in Input Floting Mode */ 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U)); 326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the default Alternate Function in current IO */ 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->AFR[position >> 3U] &= ~((uint32_t)0xFU << ((uint32_t)(position & (uint32_t)0x07U) * 4 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the default value for IO Speed */ 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Configure the default value IO Output Type */ 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ; 335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Deactivate the Pull-up oand Pull-down resistor for the current IO */ 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /*------------------------- EXTI Mode Configuration --------------------*/ 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Clear the External Interrupt or Event for the current IO */ 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp = SYSCFG->EXTICR[position >> 2U]; 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp &= (((uint32_t)0x0FU) << (4U * (position & 0x03U))); 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 413 .loc 1 344 0 414 000e 0525 movs r5, #5 415 0010 00E0 b .L27 416 .L29: 417 0012 0025 movs r5, #0 418 .L27: ARM GAS /tmp/ccJYgg6T.s page 15 419 .loc 1 344 0 is_stmt 0 discriminator 24 420 0014 9540 lsls r5, r5, r2 421 0016 A542 cmp r5, r4 422 0018 54D0 beq .L35 423 .LVL47: 424 .L26: 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp = ((uint32_t)0x0FU) << (4U * (position & 0x03U)); 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2U] &= ~tmp; 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Clear EXTI line configuration */ 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->IMR &= ~((uint32_t)iocurrent); 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->RTSR &= ~((uint32_t)iocurrent); 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->FTSR &= ~((uint32_t)iocurrent); 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** position++; 425 .loc 1 358 0 is_stmt 1 426 001a 0133 adds r3, r3, #1 427 .LVL48: 428 .L25: 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 429 .loc 1 316 0 430 001c 0A00 movs r2, r1 431 001e DA40 lsrs r2, r2, r3 432 0020 66D0 beq .L36 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 433 .loc 1 319 0 434 0022 0122 movs r2, #1 435 0024 9A40 lsls r2, r2, r3 436 0026 0C00 movs r4, r1 437 0028 1440 ands r4, r2 438 002a A446 mov ip, r4 439 .LVL49: 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 440 .loc 1 321 0 441 002c F5D0 beq .L26 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 442 .loc 1 325 0 443 002e 0668 ldr r6, [r0] 444 0030 5D00 lsls r5, r3, #1 445 0032 0324 movs r4, #3 446 .LVL50: 447 0034 A246 mov r10, r4 448 0036 2700 movs r7, r4 449 0038 AF40 lsls r7, r7, r5 450 003a 3D00 movs r5, r7 451 003c 3E43 orrs r6, r7 452 003e 0660 str r6, [r0] 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 453 .loc 1 328 0 454 0040 DF08 lsrs r7, r3, #3 455 0042 0837 adds r7, r7, #8 456 0044 BF00 lsls r7, r7, #2 ARM GAS /tmp/ccJYgg6T.s page 16 457 0046 3C58 ldr r4, [r7, r0] 458 0048 A146 mov r9, r4 459 004a 0726 movs r6, #7 460 004c 1E40 ands r6, r3 461 004e B600 lsls r6, r6, #2 462 0050 0F24 movs r4, #15 463 0052 A046 mov r8, r4 464 0054 B440 lsls r4, r4, r6 465 0056 2600 movs r6, r4 466 0058 4C46 mov r4, r9 467 005a B443 bics r4, r6 468 005c 3C50 str r4, [r7, r0] 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 469 .loc 1 331 0 470 005e 8668 ldr r6, [r0, #8] 471 0060 ED43 mvns r5, r5 472 0062 2E40 ands r6, r5 473 0064 8660 str r6, [r0, #8] 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 474 .loc 1 334 0 475 0066 4668 ldr r6, [r0, #4] 476 0068 9643 bics r6, r2 477 006a 4660 str r6, [r0, #4] 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 478 .loc 1 337 0 479 006c C268 ldr r2, [r0, #12] 480 006e 1540 ands r5, r2 481 0070 C560 str r5, [r0, #12] 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp &= (((uint32_t)0x0FU) << (4U * (position & 0x03U))); 482 .loc 1 342 0 483 0072 9E08 lsrs r6, r3, #2 484 0074 B51C adds r5, r6, #2 485 0076 AD00 lsls r5, r5, #2 486 0078 204A ldr r2, .L38 487 007a AD58 ldr r5, [r5, r2] 488 .LVL51: 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) 489 .loc 1 343 0 490 007c 5246 mov r2, r10 491 007e 1A40 ands r2, r3 492 0080 9200 lsls r2, r2, #2 493 0082 4746 mov r7, r8 494 0084 9740 lsls r7, r7, r2 495 0086 2C00 movs r4, r5 496 0088 3C40 ands r4, r7 497 .LVL52: 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 498 .loc 1 344 0 499 008a A025 movs r5, #160 500 008c ED05 lsls r5, r5, #23 501 008e A842 cmp r0, r5 502 0090 BFD0 beq .L29 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 503 .loc 1 344 0 is_stmt 0 discriminator 1 504 0092 1B4D ldr r5, .L38+4 505 0094 A842 cmp r0, r5 506 0096 0DD0 beq .L30 ARM GAS /tmp/ccJYgg6T.s page 17 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 507 .loc 1 344 0 discriminator 3 508 0098 1A4D ldr r5, .L38+8 509 009a A842 cmp r0, r5 510 009c 0CD0 beq .L31 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 511 .loc 1 344 0 discriminator 5 512 009e 1A4D ldr r5, .L38+12 513 00a0 A842 cmp r0, r5 514 00a2 0BD0 beq .L32 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 515 .loc 1 344 0 discriminator 7 516 00a4 194D ldr r5, .L38+16 517 00a6 A842 cmp r0, r5 518 00a8 0AD0 beq .L33 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 519 .loc 1 344 0 discriminator 9 520 00aa 194D ldr r5, .L38+20 521 00ac A842 cmp r0, r5 522 00ae AED0 beq .L37 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 523 .loc 1 344 0 524 00b0 0625 movs r5, #6 525 00b2 AFE7 b .L27 526 .L30: 527 00b4 0125 movs r5, #1 528 00b6 ADE7 b .L27 529 .L31: 530 00b8 0225 movs r5, #2 531 00ba ABE7 b .L27 532 .L32: 533 00bc 0325 movs r5, #3 534 00be A9E7 b .L27 535 .L33: 536 00c0 0425 movs r5, #4 537 00c2 A7E7 b .L27 538 .L35: 539 .LVL53: 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 540 .loc 1 347 0 is_stmt 1 541 00c4 0D4D ldr r5, .L38 542 00c6 B21C adds r2, r6, #2 543 00c8 9200 lsls r2, r2, #2 544 00ca 5459 ldr r4, [r2, r5] 545 00cc BC43 bics r4, r7 546 00ce 5451 str r4, [r2, r5] 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); 547 .loc 1 350 0 548 00d0 104C ldr r4, .L38+24 549 00d2 2568 ldr r5, [r4] 550 00d4 6246 mov r2, ip 551 00d6 D243 mvns r2, r2 552 00d8 1540 ands r5, r2 553 00da 2560 str r5, [r4] 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 554 .loc 1 351 0 555 00dc 6568 ldr r5, [r4, #4] ARM GAS /tmp/ccJYgg6T.s page 18 556 00de 1540 ands r5, r2 557 00e0 6560 str r5, [r4, #4] 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** EXTI->FTSR &= ~((uint32_t)iocurrent); 558 .loc 1 354 0 559 00e2 A568 ldr r5, [r4, #8] 560 00e4 1540 ands r5, r2 561 00e6 A560 str r5, [r4, #8] 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 562 .loc 1 355 0 563 00e8 E568 ldr r5, [r4, #12] 564 00ea 2A40 ands r2, r5 565 00ec E260 str r2, [r4, #12] 566 00ee 94E7 b .L26 567 .LVL54: 568 .L36: 359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 569 .loc 1 360 0 570 @ sp needed 571 00f0 1CBC pop {r2, r3, r4} 572 00f2 9046 mov r8, r2 573 00f4 9946 mov r9, r3 574 00f6 A246 mov r10, r4 575 00f8 F0BD pop {r4, r5, r6, r7, pc} 576 .L39: 577 00fa C046 .align 2 578 .L38: 579 00fc 00000140 .word 1073807360 580 0100 00040050 .word 1342178304 581 0104 00080050 .word 1342179328 582 0108 000C0050 .word 1342180352 583 010c 00100050 .word 1342181376 584 0110 001C0050 .word 1342184448 585 0114 00040140 .word 1073808384 586 .cfi_endproc 587 .LFE40: 589 .section .text.HAL_GPIO_ReadPin,"ax",%progbits 590 .align 1 591 .global HAL_GPIO_ReadPin 592 .syntax unified 593 .code 16 594 .thumb_func 595 .fpu softvfp 597 HAL_GPIO_ReadPin: 598 .LFB41: 361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @} 364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** @addtogroup GPIO_Exported_Functions_Group2 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief GPIO Read and Write 368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** @verbatim 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** =============================================================================== 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** ##### IO operation functions ##### 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** =============================================================================== ARM GAS /tmp/ccJYgg6T.s page 19 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** @endverbatim 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @{ 376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Reads the specified input port pin. 380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family d 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: specifies the port bit to read. 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * This parameter can be GPIO_PIN_x where x can be (0..15). 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * All port bits are not necessarily available on all GPIOs. 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval The input port pin value. 386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 599 .loc 1 388 0 600 .cfi_startproc 601 @ args = 0, pretend = 0, frame = 0 602 @ frame_needed = 0, uses_anonymous_args = 0 603 @ link register save eliminated. 604 .LVL55: 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIO_PinState bitstatus; 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,GPIO_Pin)); 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) 605 .loc 1 394 0 606 0000 0369 ldr r3, [r0, #16] 607 0002 0B42 tst r3, r1 608 0004 01D1 bne .L43 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** bitstatus = GPIO_PIN_SET; 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** else 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** bitstatus = GPIO_PIN_RESET; 609 .loc 1 400 0 610 0006 0020 movs r0, #0 611 .LVL56: 612 .L41: 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** return bitstatus; 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 613 .loc 1 403 0 614 @ sp needed 615 0008 7047 bx lr 616 .LVL57: 617 .L43: 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 618 .loc 1 396 0 619 000a 0120 movs r0, #1 620 .LVL58: 621 000c FCE7 b .L41 622 .cfi_endproc 623 .LFE41: ARM GAS /tmp/ccJYgg6T.s page 20 625 .section .text.HAL_GPIO_WritePin,"ax",%progbits 626 .align 1 627 .global HAL_GPIO_WritePin 628 .syntax unified 629 .code 16 630 .thumb_func 631 .fpu softvfp 633 HAL_GPIO_WritePin: 634 .LFB42: 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Sets or clears the selected data port bit. 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @note This function uses GPIOx_BSRR register to allow atomic read/modify 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * accesses. In this way, there is no risk of an IRQ occurring between 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * the read and the modify access. 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * 412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family d 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: specifies the port bit to be written. 415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * This parameter can be one of GPIO_PIN_x where x can be (0..15). 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * All port bits are not necessarily available on all GPIOs. 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param PinState: specifies the value to be written to the selected bit. 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * This parameter can be one of the GPIO_PinState enum values: 419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * GPIO_PIN_RESET: to clear the port pin 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * GPIO_PIN_SET: to set the port pin 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 635 .loc 1 424 0 636 .cfi_startproc 637 @ args = 0, pretend = 0, frame = 0 638 @ frame_needed = 0, uses_anonymous_args = 0 639 @ link register save eliminated. 640 .LVL59: 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,GPIO_Pin)); 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_ACTION(PinState)); 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(PinState != GPIO_PIN_RESET) 641 .loc 1 429 0 642 0000 002A cmp r2, #0 643 0002 01D1 bne .L47 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->BSRR = GPIO_Pin; 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** else 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->BRR = GPIO_Pin ; 644 .loc 1 435 0 645 0004 8162 str r1, [r0, #40] 646 .L44: 436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 647 .loc 1 437 0 648 @ sp needed ARM GAS /tmp/ccJYgg6T.s page 21 649 0006 7047 bx lr 650 .L47: 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 651 .loc 1 431 0 652 0008 8161 str r1, [r0, #24] 653 000a FCE7 b .L44 654 .cfi_endproc 655 .LFE42: 657 .section .text.HAL_GPIO_TogglePin,"ax",%progbits 658 .align 1 659 .global HAL_GPIO_TogglePin 660 .syntax unified 661 .code 16 662 .thumb_func 663 .fpu softvfp 665 HAL_GPIO_TogglePin: 666 .LFB43: 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Toggles the specified GPIO pins. 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: Where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family d 442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * All port bits are not necessarily available on all GPIOs. 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: Specifies the pins to be toggled. 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 667 .loc 1 448 0 668 .cfi_startproc 669 @ args = 0, pretend = 0, frame = 0 670 @ frame_needed = 0, uses_anonymous_args = 0 671 @ link register save eliminated. 672 .LVL60: 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,GPIO_Pin)); 451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->ODR ^= GPIO_Pin; 673 .loc 1 452 0 674 0000 4369 ldr r3, [r0, #20] 675 0002 5940 eors r1, r3 676 .LVL61: 677 0004 4161 str r1, [r0, #20] 453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 678 .loc 1 453 0 679 @ sp needed 680 0006 7047 bx lr 681 .cfi_endproc 682 .LFE43: 684 .section .text.HAL_GPIO_LockPin,"ax",%progbits 685 .align 1 686 .global HAL_GPIO_LockPin 687 .syntax unified 688 .code 16 689 .thumb_func 690 .fpu softvfp 692 HAL_GPIO_LockPin: ARM GAS /tmp/ccJYgg6T.s page 22 693 .LFB44: 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief Locks GPIO Pins configuration registers. 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @note The configuration of the locked GPIO pins can no longer be modified 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * until the next reset. 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIOx: where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family. 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * Note that GPIOE is not available on all devices. 463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: specifies the port bit to be locked. 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). 465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * All port bits are not necessarily available on all GPIOs. 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 694 .loc 1 469 0 695 .cfi_startproc 696 @ args = 0, pretend = 0, frame = 8 697 @ frame_needed = 0, uses_anonymous_args = 0 698 @ link register save eliminated. 699 .LVL62: 700 0000 82B0 sub sp, sp, #8 701 .LCFI4: 702 .cfi_def_cfa_offset 8 470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** __IO uint32_t tmp = GPIO_LCKR_LCKK; 703 .loc 1 470 0 704 0002 8022 movs r2, #128 705 0004 5202 lsls r2, r2, #9 706 0006 0192 str r2, [sp, #4] 471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Check the parameters */ 473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx,GPIO_Pin)); 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Apply lock key write sequence */ 476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp |= GPIO_Pin; 707 .loc 1 476 0 708 0008 019B ldr r3, [sp, #4] 709 000a 0B43 orrs r3, r1 710 000c 0193 str r3, [sp, #4] 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->LCKR = tmp; 711 .loc 1 478 0 712 000e 019B ldr r3, [sp, #4] 713 0010 C361 str r3, [r0, #28] 479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->LCKR = GPIO_Pin; 714 .loc 1 480 0 715 0012 C161 str r1, [r0, #28] 481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ 482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** GPIOx->LCKR = tmp; 716 .loc 1 482 0 717 0014 019B ldr r3, [sp, #4] 718 0016 C361 str r3, [r0, #28] 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Read LCKK bit*/ 484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** tmp = GPIOx->LCKR; ARM GAS /tmp/ccJYgg6T.s page 23 719 .loc 1 484 0 720 0018 C369 ldr r3, [r0, #28] 721 001a 0193 str r3, [sp, #4] 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET) 722 .loc 1 486 0 723 001c C369 ldr r3, [r0, #28] 724 001e 1342 tst r3, r2 725 0020 02D1 bne .L52 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** return HAL_OK; 489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** else 491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** return HAL_ERROR; 726 .loc 1 492 0 727 0022 0120 movs r0, #1 728 .LVL63: 729 .L50: 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 730 .loc 1 494 0 731 0024 02B0 add sp, sp, #8 732 @ sp needed 733 0026 7047 bx lr 734 .LVL64: 735 .L52: 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 736 .loc 1 488 0 737 0028 0020 movs r0, #0 738 .LVL65: 739 002a FBE7 b .L50 740 .cfi_endproc 741 .LFE44: 743 .section .text.HAL_GPIO_EXTI_Callback,"ax",%progbits 744 .align 1 745 .weak HAL_GPIO_EXTI_Callback 746 .syntax unified 747 .code 16 748 .thumb_func 749 .fpu softvfp 751 HAL_GPIO_EXTI_Callback: 752 .LFB46: 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief This function handles EXTI interrupt request. 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: Specifies the pins connected to the EXTI line. 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* EXTI line interrupt detected */ 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } ARM GAS /tmp/ccJYgg6T.s page 24 509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /** 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @brief EXTI line detection callbacks. 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @param GPIO_Pin: Specifies the pins connected to the EXTI line. 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** * @retval None 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 753 .loc 1 516 0 754 .cfi_startproc 755 @ args = 0, pretend = 0, frame = 0 756 @ frame_needed = 0, uses_anonymous_args = 0 757 @ link register save eliminated. 758 .LVL66: 517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* Prevent unused argument(s) compilation warning */ 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** UNUSED(GPIO_Pin); 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* NOTE: This function Should not be modified, when the callback is needed, 521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** the HAL_GPIO_EXTI_Callback could be implemented in the user file 522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** */ 523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 759 .loc 1 523 0 760 @ sp needed 761 0000 7047 bx lr 762 .cfi_endproc 763 .LFE46: 765 .section .text.HAL_GPIO_EXTI_IRQHandler,"ax",%progbits 766 .align 1 767 .global HAL_GPIO_EXTI_IRQHandler 768 .syntax unified 769 .code 16 770 .thumb_func 771 .fpu softvfp 773 HAL_GPIO_EXTI_IRQHandler: 774 .LFB45: 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** /* EXTI line interrupt detected */ 775 .loc 1 501 0 776 .cfi_startproc 777 @ args = 0, pretend = 0, frame = 0 778 @ frame_needed = 0, uses_anonymous_args = 0 779 .LVL67: 780 0000 10B5 push {r4, lr} 781 .LCFI5: 782 .cfi_def_cfa_offset 8 783 .cfi_offset 4, -8 784 .cfi_offset 14, -4 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** { 785 .loc 1 503 0 786 0002 054B ldr r3, .L57 787 0004 5B69 ldr r3, [r3, #20] 788 0006 1842 tst r0, r3 789 0008 00D1 bne .L56 790 .LVL68: 791 .L54: 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 792 .loc 1 508 0 793 @ sp needed ARM GAS /tmp/ccJYgg6T.s page 25 794 000a 10BD pop {r4, pc} 795 .LVL69: 796 .L56: 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); 797 .loc 1 505 0 798 000c 024B ldr r3, .L57 799 000e 5861 str r0, [r3, #20] 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** } 800 .loc 1 506 0 801 0010 FFF7FEFF bl HAL_GPIO_EXTI_Callback 802 .LVL70: 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c **** 803 .loc 1 508 0 804 0014 F9E7 b .L54 805 .L58: 806 0016 C046 .align 2 807 .L57: 808 0018 00040140 .word 1073808384 809 .cfi_endproc 810 .LFE45: 812 .text 813 .Letext0: 814 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 815 .file 3 "/usr/arm-none-eabi/include/sys/_stdint.h" 816 .file 4 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h" 817 .file 5 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h" 818 .file 6 "/usr/arm-none-eabi/include/sys/lock.h" 819 .file 7 "/usr/arm-none-eabi/include/sys/_types.h" 820 .file 8 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 821 .file 9 "/usr/arm-none-eabi/include/sys/reent.h" 822 .file 10 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h" 823 .file 11 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h" 824 .file 12 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h" ARM GAS /tmp/ccJYgg6T.s page 26 DEFINED SYMBOLS *ABS*:0000000000000000 stm32l0xx_hal_gpio.c /tmp/ccJYgg6T.s:16 .text.HAL_GPIO_Init:0000000000000000 $t /tmp/ccJYgg6T.s:23 .text.HAL_GPIO_Init:0000000000000000 HAL_GPIO_Init /tmp/ccJYgg6T.s:363 .text.HAL_GPIO_Init:000000000000017c $d /tmp/ccJYgg6T.s:375 .text.HAL_GPIO_DeInit:0000000000000000 $t /tmp/ccJYgg6T.s:382 .text.HAL_GPIO_DeInit:0000000000000000 HAL_GPIO_DeInit /tmp/ccJYgg6T.s:579 .text.HAL_GPIO_DeInit:00000000000000fc $d /tmp/ccJYgg6T.s:590 .text.HAL_GPIO_ReadPin:0000000000000000 $t /tmp/ccJYgg6T.s:597 .text.HAL_GPIO_ReadPin:0000000000000000 HAL_GPIO_ReadPin /tmp/ccJYgg6T.s:626 .text.HAL_GPIO_WritePin:0000000000000000 $t /tmp/ccJYgg6T.s:633 .text.HAL_GPIO_WritePin:0000000000000000 HAL_GPIO_WritePin /tmp/ccJYgg6T.s:658 .text.HAL_GPIO_TogglePin:0000000000000000 $t /tmp/ccJYgg6T.s:665 .text.HAL_GPIO_TogglePin:0000000000000000 HAL_GPIO_TogglePin /tmp/ccJYgg6T.s:685 .text.HAL_GPIO_LockPin:0000000000000000 $t /tmp/ccJYgg6T.s:692 .text.HAL_GPIO_LockPin:0000000000000000 HAL_GPIO_LockPin /tmp/ccJYgg6T.s:744 .text.HAL_GPIO_EXTI_Callback:0000000000000000 $t /tmp/ccJYgg6T.s:751 .text.HAL_GPIO_EXTI_Callback:0000000000000000 HAL_GPIO_EXTI_Callback /tmp/ccJYgg6T.s:766 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 $t /tmp/ccJYgg6T.s:773 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 HAL_GPIO_EXTI_IRQHandler /tmp/ccJYgg6T.s:808 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000018 $d .debug_frame:0000000000000010 $d NO UNDEFINED SYMBOLS