ARM GAS /tmp/cc7An1gz.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_uart.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.HAL_UART_MspInit,"ax",%progbits 16 .align 1 17 .weak HAL_UART_MspInit 18 .syntax unified 19 .code 16 20 .thumb_func 21 .fpu softvfp 23 HAL_UART_MspInit: 24 .LFB44: 25 .file 1 "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c" 1:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ****************************************************************************** 3:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @file stm32l0xx_hal_uart.c 4:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @author MCD Application Team 5:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART HAL module driver. 6:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This file provides firmware functions to manage the following 7:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART). 8:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * + Initialization and de-initialization functions 9:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * + IO operation functions 10:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * + Peripheral Control functions 11:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 12:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 13:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @verbatim 14:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 15:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ##### How to use this driver ##### 16:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 17:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 18:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The UART HAL driver can be used as follows: 19:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 20:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Declare a UART_HandleTypeDef handle structure (eg. UART_HandleTypeDef huart). 21:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Initialize the UART low level resources by implementing the HAL_UART_MspInit() API: 22:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Enable the USARTx interface clock. 23:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) UART pins configuration: 24:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Enable the clock for the UART GPIOs. 25:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Configure these UART pins as alternate function pull-up. 26:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) NVIC configuration if you need to use interrupt process (HAL_UART_Transmit_IT() 27:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and HAL_UART_Receive_IT() APIs): 28:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Configure the USARTx interrupt priority. 29:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Enable the NVIC USART IRQ handle. 30:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) UART interrupts handling: 31:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** -@@- The specific UART interrupts (Transmission complete interrupt, 32:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** RXNE interrupt and Error Interrupts) are managed using the macros 33:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_ENABLE_IT() and __HAL_UART_DISABLE_IT() inside the transmit and receive ARM GAS /tmp/cc7An1gz.s page 2 34:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) DMA Configuration if you need to use DMA process (HAL_UART_Transmit_DMA() 35:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and HAL_UART_Receive_DMA() APIs): 36:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Declare a DMA handle structure for the Tx/Rx channel. 37:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Enable the DMAx interface clock. 38:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Configure the declared DMA handle structure with the required Tx/Rx parameters. 39:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Configure the DMA Tx/Rx channel. 40:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Associate the initialized DMA handle to the UART DMA Tx/Rx handle. 41:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on 42:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 43:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Program the Baud Rate, Word Length, Stop Bit, Parity, Hardware 44:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** flow control and Mode (Receiver/Transmitter) in the huart handle Init structure. 45:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 46:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) If required, program UART advanced features (TX/RX pins swap, auto Baud rate detection,...) 47:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the huart handle AdvancedInit structure. 48:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 49:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For the UART asynchronous mode, initialize the UART registers by calling 50:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_Init() API. 51:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 52:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For the UART Half duplex mode, initialize the UART registers by calling 53:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_HalfDuplex_Init() API. 54:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 55:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For the UART LIN (Local Interconnection Network) mode, initialize the UART registers 56:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** by calling the HAL_LIN_Init() API. 57:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 58:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For the UART Multiprocessor mode, initialize the UART registers 59:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** by calling the HAL_MultiProcessor_Init() API. 60:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 61:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For the UART RS485 Driver Enabled mode, initialize the UART registers 62:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** by calling the HAL_RS485Ex_Init() API. 63:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 64:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 65:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (@) These API's (HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init(), HAL_MultiProcessor_Ini 66:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** also configure the low level Hardware GPIO, CLOCK, CORTEX...etc) by 67:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** calling the customized HAL_UART_MspInit() API. 68:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 69:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @endverbatim 70:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ****************************************************************************** 71:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @attention 72:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 73:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** *

© COPYRIGHT(c) 2016 STMicroelectronics

74:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 75:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * Redistribution and use in source and binary forms, with or without modification, 76:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * are permitted provided that the following conditions are met: 77:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 1. Redistributions of source code must retain the above copyright notice, 78:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * this list of conditions and the following disclaimer. 79:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, 80:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * this list of conditions and the following disclaimer in the documentation 81:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * and/or other materials provided with the distribution. 82:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 83:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * may be used to endorse or promote products derived from this software 84:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * without specific prior written permission. 85:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 86:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 87:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 88:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 89:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 90:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ARM GAS /tmp/cc7An1gz.s page 3 91:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 92:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 93:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 94:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 95:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 96:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 97:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ****************************************************************************** 98:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 99:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Includes ------------------------------------------------------------------*/ 101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** #include "stm32l0xx_hal.h" 102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @addtogroup STM32L0xx_HAL_Driver 104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART UART 108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief HAL UART module driver 109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** #ifdef HAL_UART_MODULE_ENABLED 113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Private typedef -----------------------------------------------------------*/ 115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Private define ------------------------------------------------------------*/ 116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Private_Constants UART Private Constants 117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** #define UART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | \ 120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8)) /*!< UART or U 121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** #define UART_LPUART_BRR_MIN ((uint32_t)0x00000300) /* LPUART BRR minimum authorized valu 123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** #define UART_LPUART_BRR_MAX ((uint32_t)0x000FFFFF) /* LPUART BRR maximum authorized valu 124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Private macros ------------------------------------------------------------*/ 129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Private variables ---------------------------------------------------------*/ 130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Private function prototypes -----------------------------------------------*/ 131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @addtogroup UART_Private_Functions 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_EndTxTransfer(UART_HandleTypeDef *huart); 135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_EndRxTransfer(UART_HandleTypeDef *huart); 136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma); 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma); 138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma); 139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma); 140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAError(DMA_HandleTypeDef *hdma); 141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma); 142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma); 143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma); 144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma); 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma); 146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart); 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_EndTransmit_IT(UART_HandleTypeDef *huart); ARM GAS /tmp/cc7An1gz.s page 4 148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart); 149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Exported functions --------------------------------------------------------*/ 154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Exported_Functions UART Exported Functions 156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Exported_Functions_Group1 Initialization and de-initialization functions 160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialization and Configuration functions 161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @verbatim 163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ##### Initialization and Configuration functions ##### 165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** This subsection provides a set of functions allowing to initialize the USARTx or the UARTy 168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in asynchronous mode. 169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) For the asynchronous mode the parameters below can be configured: 170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Baud Rate 171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Word Length 172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Stop Bit 173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Parity: If the parity is enabled, then the MSB bit of the data written 174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the data register is transmitted but is changed by the parity bit. 175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Hardware flow control 176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Receiver/transmitter modes 177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) Over Sampling Method 178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) One-Bit Sampling Method 179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) For the asynchronous mode, the following advanced features can be configured as well: 180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) TX and/or RX pin level inversion 181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) data logical level inversion 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) RX and TX pins swap 183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) RX overrun detection disabling 184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) DMA disabling on RX error 185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) MSB first on communication line 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (++) auto Baud rate detection 187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init()and HAL_MultiProcessor_Init()API 189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** follow respectively the UART asynchronous, UART Half duplex, UART LIN mode 190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and UART multiprocessor mode configuration procedures (details for the procedures 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** are available in reference manual). 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @endverbatim 194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Depending on the frame length defined by the M1 and M0 bits (7-bit, 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 8-bit or 9-bit), the possible UART formats are listed in the 197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** following table. 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Table 1. UART frame format. 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** +-----------------------------------------------------------------------+ 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | M1 bit | M0 bit | PCE bit | UART frame | 202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| 203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 0 | 0 | 0 | | SB | 8 bit data | STB | | 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| ARM GAS /tmp/cc7An1gz.s page 5 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | | 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| 207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 0 | 1 | 0 | | SB | 9 bit data | STB | | 208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | | 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 1 | 0 | 0 | | SB | 7 bit data | STB | | 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** |---------|---------|-----------|---------------------------------------| 213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | | 214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** +-----------------------------------------------------------------------+ 215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialize the UART mode according to the specified 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * parameters in the UART_InitTypeDef and initialize the associated handle. 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart == NULL) 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->Init.HwFlowCtl != UART_HWCONTROL_NONE) 234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_HWFLOW_INSTANCE(huart->Instance)); 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_INSTANCE(huart->Instance)); 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_RESET) 245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Allocate lock resource and initialize it */ 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Lock = HAL_UNLOCKED; 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init the low level hardware : GPIO, CLOCK */ 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_MspInit(huart); 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the Peripheral */ 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_DISABLE(huart); 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART Communication parameters */ 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) 260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_AdvFeatureConfig(huart); ARM GAS /tmp/cc7An1gz.s page 6 262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (UART_SetConfig(huart) == HAL_ERROR) 265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In asynchronous mode, the following bits must be kept cleared: 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - LINEN and CLKEN bits in the USART_CR2 register, 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the Peripheral */ 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_ENABLE(huart); 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialize the half-duplex mode according to the specified 284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * parameters in the UART_InitTypeDef and creates the associated handle. 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart) 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart == NULL) 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check UART instance */ 297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_HALFDUPLEX_INSTANCE(huart->Instance)); 298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_RESET) 300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Allocate lock resource and initialize it */ 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Lock = HAL_UNLOCKED; 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init the low level hardware : GPIO, CLOCK */ 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_MspInit(huart); 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the Peripheral */ 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_DISABLE(huart); 312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART Communication parameters */ 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) 315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_AdvFeatureConfig(huart); 317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 7 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (UART_SetConfig(huart) == HAL_ERROR) 320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In half-duplex mode, the following bits must be kept cleared: 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - LINEN and CLKEN bits in the USART_CR2 register, 326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - SCEN and IREN bits in the USART_CR3 register.*/ 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN)); 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */ 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL); 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the Peripheral */ 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_ENABLE(huart); 335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialize the LIN mode according to the specified 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * parameters in the UART_InitTypeDef and creates the associated handle . 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param BreakDetectLength: specifies the LIN break detection length. 346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This parameter can be one of the following values: 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @arg @ref UART_LINBREAKDETECTLENGTH_10B 10-bit break detection 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @arg @ref UART_LINBREAKDETECTLENGTH_11B 11-bit break detection 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength) 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart == NULL) 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the LIN UART instance */ 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_LIN_INSTANCE(huart->Instance)); 361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the Break detection length parameter */ 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength)); 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* LIN mode limited to 16-bit oversampling only */ 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->Init.OverSampling == UART_OVERSAMPLING_8) 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* LIN mode limited to 8-bit data length */ 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->Init.WordLength != UART_WORDLENGTH_8B) 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_RESET) ARM GAS /tmp/cc7An1gz.s page 8 376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Allocate lock resource and initialize it */ 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Lock = HAL_UNLOCKED; 379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init the low level hardware : GPIO, CLOCK */ 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_MspInit(huart); 382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the Peripheral */ 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_DISABLE(huart); 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART Communication parameters */ 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_AdvFeatureConfig(huart); 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (UART_SetConfig(huart) == HAL_ERROR) 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In LIN mode, the following bits must be kept cleared: 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - LINEN and CLKEN bits in the USART_CR2 register, 402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - SCEN and IREN bits in the USART_CR3 register.*/ 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR2, USART_CR2_CLKEN); 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN)); 405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the LIN mode by setting the LINEN bit in the CR2 register */ 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR2, USART_CR2_LINEN); 408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the USART LIN Break detection length. */ 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength); 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the Peripheral */ 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_ENABLE(huart); 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialize the multiprocessor mode according to the specified 422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * parameters in the UART_InitTypeDef and initialize the associated handle. 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Address: UART node address (4-, 6-, 7- or 8-bit long). 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param WakeUpMethod: specifies the UART wakeup method. 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This parameter can be one of the following values: 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @arg @ref UART_WAKEUPMETHOD_IDLELINE WakeUp by an idle line detection 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @arg @ref UART_WAKEUPMETHOD_ADDRESSMARK WakeUp by an address mark 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note If the user resorts to idle line detection wake up, the Address parameter 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * is useless and ignored by the initialization function. 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note If the user resorts to address mark wake up, the address length detection 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * is configured by default to 4 bits only. For the UART to be able to ARM GAS /tmp/cc7An1gz.s page 9 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * manage 6-, 7- or 8-bit long addresses detection, the API 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * HAL_MultiProcessorEx_AddressLength_Set() must be called after 435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * HAL_MultiProcessor_Init(). 436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t Wake 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart == NULL) 442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the wake up method parameter */ 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_WAKEUPMETHOD(WakeUpMethod)); 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_RESET) 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Allocate lock resource and initialize it */ 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Lock = HAL_UNLOCKED; 453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init the low level hardware : GPIO, CLOCK */ 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_MspInit(huart); 456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the Peripheral */ 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_DISABLE(huart); 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART Communication parameters */ 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) 465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_AdvFeatureConfig(huart); 467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (UART_SetConfig(huart) == HAL_ERROR) 470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In multiprocessor mode, the following bits must be kept cleared: 475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - LINEN and CLKEN bits in the USART_CR2 register, 476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** - SCEN, HDSEL and IREN bits in the USART_CR3 register. */ 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); 479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (WakeUpMethod == UART_WAKEUPMETHOD_ADDRESSMARK) 481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* If address mark wake up method is chosen, set the USART address node */ 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)Address << UART_CR2_ADDRESS_LSB_POS) 484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the wake up method by setting the WAKE bit in the CR1 register */ 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod); 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the Peripheral */ ARM GAS /tmp/cc7An1gz.s page 10 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_ENABLE(huart); 491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DeInitialize the UART peripheral. 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart) 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart == NULL) 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_INSTANCE(huart->Instance)); 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the Peripheral */ 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_DISABLE(huart); 517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->CR1 = 0x0U; 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->CR2 = 0x0U; 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->CR3 = 0x0U; 521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DeInit the low level hardware */ 523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_MspDeInit(huart); 524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_RESET; 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_RESET; 528:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlock */ 530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 531:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 536:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Initialize the UART MSP. 537:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 539:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 540:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_MspInit(UART_HandleTypeDef *huart) 541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 26 .loc 1 541 0 27 .cfi_startproc 28 @ args = 0, pretend = 0, frame = 0 29 @ frame_needed = 0, uses_anonymous_args = 0 30 @ link register save eliminated. ARM GAS /tmp/cc7An1gz.s page 11 31 .LVL0: 542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 544:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_MspInit can be implemented in the user file 547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 548:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 32 .loc 1 548 0 33 @ sp needed 34 0000 7047 bx lr 35 .cfi_endproc 36 .LFE44: 38 .section .text.HAL_UART_MspDeInit,"ax",%progbits 39 .align 1 40 .weak HAL_UART_MspDeInit 41 .syntax unified 42 .code 16 43 .thumb_func 44 .fpu softvfp 46 HAL_UART_MspDeInit: 47 .LFB45: 549:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DeInitialize the UART MSP. 552:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) 556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 48 .loc 1 556 0 49 .cfi_startproc 50 @ args = 0, pretend = 0, frame = 0 51 @ frame_needed = 0, uses_anonymous_args = 0 52 @ link register save eliminated. 53 .LVL1: 557:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 558:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_MspDeInit can be implemented in the user file 562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 54 .loc 1 563 0 55 @ sp needed 56 0000 7047 bx lr 57 .cfi_endproc 58 .LFE45: 60 .section .text.HAL_UART_DeInit,"ax",%progbits 61 .align 1 62 .global HAL_UART_DeInit 63 .syntax unified 64 .code 16 65 .thumb_func 66 .fpu softvfp 68 HAL_UART_DeInit: 69 .LFB43: ARM GAS /tmp/cc7An1gz.s page 12 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 70 .loc 1 503 0 71 .cfi_startproc 72 @ args = 0, pretend = 0, frame = 0 73 @ frame_needed = 0, uses_anonymous_args = 0 74 .LVL2: 75 0000 70B5 push {r4, r5, r6, lr} 76 .LCFI0: 77 .cfi_def_cfa_offset 16 78 .cfi_offset 4, -16 79 .cfi_offset 5, -12 80 .cfi_offset 6, -8 81 .cfi_offset 14, -4 82 0002 041E subs r4, r0, #0 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 83 .loc 1 505 0 84 0004 18D0 beq .L5 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 85 .loc 1 513 0 86 0006 6926 movs r6, #105 87 0008 2423 movs r3, #36 88 000a 8355 strb r3, [r0, r6] 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 89 .loc 1 516 0 90 000c 0268 ldr r2, [r0] 91 000e 1368 ldr r3, [r2] 92 0010 0121 movs r1, #1 93 0012 8B43 bics r3, r1 94 0014 1360 str r3, [r2] 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->CR2 = 0x0U; 95 .loc 1 518 0 96 0016 0368 ldr r3, [r0] 97 0018 0025 movs r5, #0 98 001a 1D60 str r5, [r3] 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->CR3 = 0x0U; 99 .loc 1 519 0 100 001c 0368 ldr r3, [r0] 101 001e 5D60 str r5, [r3, #4] 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 102 .loc 1 520 0 103 0020 0368 ldr r3, [r0] 104 0022 9D60 str r5, [r3, #8] 523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 105 .loc 1 523 0 106 0024 FFF7FEFF bl HAL_UART_MspDeInit 107 .LVL3: 525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_RESET; 108 .loc 1 525 0 109 0028 E566 str r5, [r4, #108] 526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_RESET; 110 .loc 1 526 0 111 002a A555 strb r5, [r4, r6] 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 112 .loc 1 527 0 113 002c 6A23 movs r3, #106 114 002e E554 strb r5, [r4, r3] 530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 13 115 .loc 1 530 0 116 0030 023B subs r3, r3, #2 117 0032 E554 strb r5, [r4, r3] 532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 118 .loc 1 532 0 119 0034 0020 movs r0, #0 120 .L4: 533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 121 .loc 1 533 0 122 @ sp needed 123 .LVL4: 124 0036 70BD pop {r4, r5, r6, pc} 125 .LVL5: 126 .L5: 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 127 .loc 1 507 0 128 0038 0120 movs r0, #1 129 .LVL6: 130 003a FCE7 b .L4 131 .cfi_endproc 132 .LFE43: 134 .section .text.HAL_UART_Transmit_IT,"ax",%progbits 135 .align 1 136 .global HAL_UART_Transmit_IT 137 .syntax unified 138 .code 16 139 .thumb_func 140 .fpu softvfp 142 HAL_UART_Transmit_IT: 143 .LFB48: 564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 566:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 569:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Exported_Functions_Group2 IO operation functions 570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART Transmit/Receive functions 571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @verbatim 573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 574:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ##### IO operation functions ##### 575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** This subsection provides a set of functions allowing to manage the UART asynchronous 577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and Half duplex data transfers. 578:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) There are two mode of transfer: 580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Blocking mode: The communication is performed in polling mode. 581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The HAL status of all data processing is returned by the same function 582:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** after finishing transfer. 583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Non-Blocking mode: The communication is performed using Interrupts 584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** or DMA, These API's return the HAL status. 585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The end of the data processing will be indicated through the 586:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** dedicated UART IRQ when using Interrupt mode or the DMA IRQ when 587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** using DMA mode. 588:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks 589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will be executed respectively at the end of the transmit or Receive process 590:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** The HAL_UART_ErrorCallback()user callback will be executed when a communication error is ARM GAS /tmp/cc7An1gz.s page 14 591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Blocking mode API's are : 593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Transmit() 594:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Receive() 595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 596:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Non-Blocking mode API's with Interrupt are : 597:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Transmit_IT() 598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Receive_IT() 599:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_IRQHandler() 600:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Non-Blocking mode API's with DMA are : 602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Transmit_DMA() 603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Receive_DMA() 604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_DMAPause() 605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_DMAResume() 606:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_DMAStop() 607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) A set of Transfer Complete Callbacks are provided in Non_Blocking mode: 609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_TxHalfCpltCallback() 610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_TxCpltCallback() 611:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_RxHalfCpltCallback() 612:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_RxCpltCallback() 613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_ErrorCallback() 614:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 615:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) Non-Blocking mode transfers could be aborted using Abort API's : 616:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Abort() 617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortTransmit() 618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortReceive() 619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_Abort_IT() 620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortTransmit_IT() 621:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortReceive_IT() 622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 623:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) For Abort services based on interrupts (HAL_UART_Abortxxx_IT), a set of Abort Complete Call 624:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortCpltCallback() 625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortTransmitCpltCallback() 626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_UART_AbortReceiveCpltCallback() 627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 628:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (#) In Non-Blocking mode transfers, possible errors are split into 2 categories. 629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Errors are handled as follows : 630:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Error is considered as Recoverable and non blocking : Transfer could go till end, but er 631:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** to be evaluated by user : this concerns Frame Error, Parity Error or Noise Error in Inte 632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Received character is then retrieved and stored in Rx buffer, Error code is set to allow 633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and HAL_UART_ErrorCallback() user callback is executed. Transfer is kept ongoing on UART 634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** If user wants to abort it, Abort services should be called by user. 635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Error is considered as Blocking : Transfer could not be completed properly and is aborte 636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** This concerns Overrun Error In Interrupt mode reception and all errors in DMA mode. 637:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Error code is set to allow user to identify error type, and HAL_UART_ErrorCallback() use 638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** -@- In the Half duplex communication, it is forbidden to run the transmit 640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** and receive process in parallel, the UART state HAL_UART_STATE_BUSY_TX_RX can't be useful. 641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @endverbatim 643:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Send an amount of data in blocking mode. ARM GAS /tmp/cc7An1gz.s page 15 648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: Pointer to data buffer. 650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: Amount of data to be sent. 651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Timeout: Timeout duration. 652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 653:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer containing data to be sent, should be aligned on a half wor 654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint3 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tickstart = 0; 662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Tx process is not already ongoing */ 664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_READY) 665:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 671:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data to be filled into TDR will be 673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled through a u16 cast. */ 674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) 677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 681:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 682:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 684:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY_TX; 687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init tickstart for timeout managment*/ 689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tickstart = HAL_GetTick(); 690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferSize = Size; 692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = Size; 693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** while(huart->TxXferCount > 0U) 694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount--; 696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) 697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 699:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE 701:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmp = (uint16_t*) pData; 703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->TDR = (*tmp & (uint16_t)0x01FFU); 704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** pData += 2U; ARM GAS /tmp/cc7An1gz.s page 16 705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->TDR = (*pData++ & (uint8_t)0xFFU); 709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) 712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 715:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 716:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* At end of Tx process, restore huart->gState to Ready */ 717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 718:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 719:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 721:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 731:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Receive an amount of data in blocking mode. 732:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: pointer to data buffer. 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: amount of data to be received. 735:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Timeout: Timeout duration. 736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer for storing data to be received, should be aligned on a hal 738:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as received data will be handled using u16 pointer cast). Depending on compilation cha 739:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 740:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 741:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 742:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32 743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 744:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t uhMask; 746:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tickstart = 0; 747:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 748:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Rx process is not already ongoing */ 749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->RxState == HAL_UART_STATE_READY) 750:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 752:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 754:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 755:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 757:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data to be received from RDR will be 758:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled through a u16 cast. */ 759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 760:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) ARM GAS /tmp/cc7An1gz.s page 17 762:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 764:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 766:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 767:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 770:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_BUSY_RX; 772:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 773:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init tickstart for timeout managment*/ 774:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tickstart = HAL_GetTick(); 775:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferSize = Size; 777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = Size; 778:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 779:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Computation of UART mask to apply to RDR register */ 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_MASK_COMPUTATION(huart); 781:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 782:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 783:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* as long as data have to be received */ 784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** while(huart->RxXferCount > 0U) 785:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount--; 787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) 788:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 789:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 790:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE 792:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 793:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmp = (uint16_t*) pData ; 794:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** *tmp = (uint16_t)(huart->Instance->RDR & uhMask); 795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** pData +=2U; 796:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 797:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 798:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** *pData++ = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask); 800:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 801:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 802:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 803:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* At end of Rx process, restore huart->RxState to Ready */ 804:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 805:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 806:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 808:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 809:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 810:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 811:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 812:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 813:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 814:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 815:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 816:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 817:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 818:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Send an amount of data in interrupt mode. ARM GAS /tmp/cc7An1gz.s page 18 819:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 820:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: pointer to data buffer. 821:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: amount of data to be sent. 822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 823:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer containing data to be sent, should be aligned on a half wor 824:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, 825:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 826:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 827:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 828:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 829:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 144 .loc 1 829 0 145 .cfi_startproc 146 @ args = 0, pretend = 0, frame = 0 147 @ frame_needed = 0, uses_anonymous_args = 0 148 .LVL7: 149 0000 10B5 push {r4, lr} 150 .LCFI1: 151 .cfi_def_cfa_offset 8 152 .cfi_offset 4, -8 153 .cfi_offset 14, -4 830:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Tx process is not already ongoing */ 831:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_READY) 154 .loc 1 831 0 155 0002 6923 movs r3, #105 156 0004 C35C ldrb r3, [r0, r3] 157 0006 202B cmp r3, #32 158 0008 26D1 bne .L9 832:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 833:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 159 .loc 1 833 0 160 000a 0029 cmp r1, #0 161 000c 26D0 beq .L10 162 .loc 1 833 0 is_stmt 0 discriminator 1 163 000e 002A cmp r2, #0 164 0010 26D0 beq .L11 834:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 835:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 836:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 837:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 838:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 839:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data to be filled into TDR will be 840:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled through a u16 cast. */ 841:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 165 .loc 1 841 0 is_stmt 1 166 0012 8023 movs r3, #128 167 0014 5B01 lsls r3, r3, #5 168 0016 8468 ldr r4, [r0, #8] 169 0018 9C42 cmp r4, r3 170 001a 16D0 beq .L14 171 .L8: 842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 843:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) 844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 845:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 847:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } ARM GAS /tmp/cc7An1gz.s page 19 848:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 849:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 172 .loc 1 850 0 173 001c 6823 movs r3, #104 174 001e C35C ldrb r3, [r0, r3] 175 0020 012B cmp r3, #1 176 0022 1FD0 beq .L13 851:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pTxBuffPtr = pData; 177 .loc 1 852 0 discriminator 2 178 0024 C164 str r1, [r0, #76] 853:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferSize = Size; 179 .loc 1 853 0 discriminator 2 180 0026 5023 movs r3, #80 181 0028 C252 strh r2, [r0, r3] 854:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = Size; 182 .loc 1 854 0 discriminator 2 183 002a 0233 adds r3, r3, #2 184 002c C252 strh r2, [r0, r3] 855:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 856:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 185 .loc 1 856 0 discriminator 2 186 002e 0023 movs r3, #0 187 0030 C366 str r3, [r0, #108] 857:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY_TX; 188 .loc 1 857 0 discriminator 2 189 0032 6922 movs r2, #105 190 .LVL8: 191 0034 2121 movs r1, #33 192 .LVL9: 193 0036 8154 strb r1, [r0, r2] 858:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 859:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 860:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 194 .loc 1 860 0 discriminator 2 195 0038 013A subs r2, r2, #1 196 003a 8354 strb r3, [r0, r2] 861:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 862:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Transmit Data Register Empty Interrupt */ 863:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE); 197 .loc 1 863 0 discriminator 2 198 003c 0268 ldr r2, [r0] 199 003e 1368 ldr r3, [r2] 200 0040 5F31 adds r1, r1, #95 201 0042 0B43 orrs r3, r1 202 0044 1360 str r3, [r2] 864:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 865:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 203 .loc 1 865 0 discriminator 2 204 0046 0020 movs r0, #0 205 .LVL10: 206 0048 07E0 b .L7 207 .LVL11: 208 .L14: 841:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 209 .loc 1 841 0 discriminator 1 ARM GAS /tmp/cc7An1gz.s page 20 210 004a 0369 ldr r3, [r0, #16] 211 004c 002B cmp r3, #0 212 004e E5D1 bne .L8 843:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 213 .loc 1 843 0 214 0050 CB07 lsls r3, r1, #31 215 0052 E3D5 bpl .L8 845:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 216 .loc 1 845 0 217 0054 0120 movs r0, #1 218 .LVL12: 219 0056 00E0 b .L7 220 .LVL13: 221 .L9: 866:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 867:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 868:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 869:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 222 .loc 1 869 0 223 0058 0220 movs r0, #2 224 .LVL14: 225 .L7: 870:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 871:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 226 .loc 1 871 0 227 @ sp needed 228 005a 10BD pop {r4, pc} 229 .LVL15: 230 .L10: 835:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 231 .loc 1 835 0 232 005c 0120 movs r0, #1 233 .LVL16: 234 005e FCE7 b .L7 235 .LVL17: 236 .L11: 237 0060 0120 movs r0, #1 238 .LVL18: 239 0062 FAE7 b .L7 240 .LVL19: 241 .L13: 850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 242 .loc 1 850 0 243 0064 0220 movs r0, #2 244 .LVL20: 245 0066 F8E7 b .L7 246 .cfi_endproc 247 .LFE48: 249 .section .text.HAL_UART_Receive_IT,"ax",%progbits 250 .align 1 251 .global HAL_UART_Receive_IT 252 .syntax unified 253 .code 16 254 .thumb_func 255 .fpu softvfp 257 HAL_UART_Receive_IT: 258 .LFB49: ARM GAS /tmp/cc7An1gz.s page 21 872:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 873:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 874:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Receive an amount of data in interrupt mode. 875:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 876:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: pointer to data buffer. 877:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: amount of data to be received. 878:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 879:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer containing data to be sent, should be aligned on a half wor 880:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, 881:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 882:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 883:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 884:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 885:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 259 .loc 1 885 0 260 .cfi_startproc 261 @ args = 0, pretend = 0, frame = 0 262 @ frame_needed = 0, uses_anonymous_args = 0 263 .LVL21: 264 0000 30B5 push {r4, r5, lr} 265 .LCFI2: 266 .cfi_def_cfa_offset 12 267 .cfi_offset 4, -12 268 .cfi_offset 5, -8 269 .cfi_offset 14, -4 886:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Rx process is not already ongoing */ 887:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->RxState == HAL_UART_STATE_READY) 270 .loc 1 887 0 271 0002 6A23 movs r3, #106 272 0004 C35C ldrb r3, [r0, r3] 273 0006 202B cmp r3, #32 274 0008 5AD1 bne .L24 888:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 889:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 275 .loc 1 889 0 276 000a 0029 cmp r1, #0 277 000c 5AD0 beq .L25 278 .loc 1 889 0 is_stmt 0 discriminator 1 279 000e 002A cmp r2, #0 280 0010 5AD0 beq .L26 890:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 891:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 892:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 893:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 894:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 895:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data to be received from RDR will be 896:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled through a u16 cast. */ 897:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 281 .loc 1 897 0 is_stmt 1 282 0012 8368 ldr r3, [r0, #8] 283 0014 8024 movs r4, #128 284 0016 6401 lsls r4, r4, #5 285 0018 A342 cmp r3, r4 286 001a 18D0 beq .L29 287 .L17: 898:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 899:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) ARM GAS /tmp/cc7An1gz.s page 22 900:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 901:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 902:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 903:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 904:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 905:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 906:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 288 .loc 1 906 0 289 001c 6824 movs r4, #104 290 001e 045D ldrb r4, [r0, r4] 291 0020 012C cmp r4, #1 292 0022 53D0 beq .L28 293 .loc 1 906 0 is_stmt 0 discriminator 2 294 0024 6824 movs r4, #104 295 0026 0125 movs r5, #1 296 0028 0555 strb r5, [r0, r4] 907:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 908:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pRxBuffPtr = pData; 297 .loc 1 908 0 is_stmt 1 discriminator 2 298 002a 4165 str r1, [r0, #84] 909:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferSize = Size; 299 .loc 1 909 0 discriminator 2 300 002c 5821 movs r1, #88 301 .LVL22: 302 002e 4252 strh r2, [r0, r1] 303 .LVL23: 910:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = Size; 304 .loc 1 910 0 discriminator 2 305 0030 0231 adds r1, r1, #2 306 0032 4252 strh r2, [r0, r1] 911:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 912:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Computation of UART mask to apply to RDR register */ 913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_MASK_COMPUTATION(huart); 307 .loc 1 913 0 discriminator 2 308 0034 8022 movs r2, #128 309 .LVL24: 310 0036 5201 lsls r2, r2, #5 311 0038 9342 cmp r3, r2 312 003a 0FD0 beq .L30 313 003c 002B cmp r3, #0 314 003e 1CD1 bne .L21 315 .loc 1 913 0 is_stmt 0 discriminator 5 316 0040 0369 ldr r3, [r0, #16] 317 0042 002B cmp r3, #0 318 0044 15D1 bne .L22 319 .loc 1 913 0 discriminator 7 320 0046 5C33 adds r3, r3, #92 321 0048 FF22 movs r2, #255 322 004a C252 strh r2, [r0, r3] 323 .LVL25: 324 004c 19E0 b .L20 325 .LVL26: 326 .L29: 897:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 327 .loc 1 897 0 is_stmt 1 discriminator 1 328 004e 0469 ldr r4, [r0, #16] 329 0050 002C cmp r4, #0 ARM GAS /tmp/cc7An1gz.s page 23 330 0052 E3D1 bne .L17 899:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 331 .loc 1 899 0 332 0054 CC07 lsls r4, r1, #31 333 0056 E1D5 bpl .L17 901:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 334 .loc 1 901 0 335 0058 0120 movs r0, #1 336 .LVL27: 337 005a 32E0 b .L16 338 .LVL28: 339 .L30: 340 .loc 1 913 0 discriminator 1 341 005c 0369 ldr r3, [r0, #16] 342 005e 002B cmp r3, #0 343 0060 03D1 bne .L19 344 .loc 1 913 0 is_stmt 0 discriminator 3 345 0062 5C33 adds r3, r3, #92 346 0064 1A4A ldr r2, .L32 347 0066 C252 strh r2, [r0, r3] 348 .LVL29: 349 0068 0BE0 b .L20 350 .LVL30: 351 .L19: 352 .loc 1 913 0 discriminator 4 353 006a 5C23 movs r3, #92 354 006c FF22 movs r2, #255 355 006e C252 strh r2, [r0, r3] 356 .LVL31: 357 0070 07E0 b .L20 358 .LVL32: 359 .L22: 360 .loc 1 913 0 discriminator 8 361 0072 5C23 movs r3, #92 362 0074 7F22 movs r2, #127 363 0076 C252 strh r2, [r0, r3] 364 .LVL33: 365 0078 03E0 b .L20 366 .LVL34: 367 .L21: 368 .loc 1 913 0 discriminator 6 369 007a 8022 movs r2, #128 370 007c 5205 lsls r2, r2, #21 371 007e 9342 cmp r3, r2 372 0080 13D0 beq .L31 373 .LVL35: 374 .L20: 914:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 915:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 375 .loc 1 915 0 is_stmt 1 376 0082 0023 movs r3, #0 377 0084 C366 str r3, [r0, #108] 916:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_BUSY_RX; 378 .loc 1 916 0 379 0086 6A22 movs r2, #106 380 0088 2221 movs r1, #34 381 008a 8154 strb r1, [r0, r2] ARM GAS /tmp/cc7An1gz.s page 24 917:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 918:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 919:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 382 .loc 1 919 0 383 008c 023A subs r2, r2, #2 384 008e 8354 strb r3, [r0, r2] 920:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 921:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ 922:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_EIE); 385 .loc 1 922 0 386 0090 0268 ldr r2, [r0] 387 0092 9368 ldr r3, [r2, #8] 388 0094 2139 subs r1, r1, #33 389 0096 0B43 orrs r3, r1 390 0098 9360 str r3, [r2, #8] 923:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 924:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Parity Error and Data Register not empty Interrupts */ 925:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); 391 .loc 1 925 0 392 009a 0268 ldr r2, [r0] 393 009c 1168 ldr r1, [r2] 394 009e 9023 movs r3, #144 395 00a0 5B00 lsls r3, r3, #1 396 00a2 0B43 orrs r3, r1 397 00a4 1360 str r3, [r2] 926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 927:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 398 .loc 1 927 0 399 00a6 0020 movs r0, #0 400 .LVL36: 401 00a8 0BE0 b .L16 402 .LVL37: 403 .L31: 913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 404 .loc 1 913 0 discriminator 9 405 00aa 0369 ldr r3, [r0, #16] 406 00ac 002B cmp r3, #0 407 00ae 03D1 bne .L23 913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 408 .loc 1 913 0 is_stmt 0 discriminator 10 409 00b0 5C33 adds r3, r3, #92 410 00b2 7F22 movs r2, #127 411 00b4 C252 strh r2, [r0, r3] 412 .LVL38: 413 00b6 E4E7 b .L20 414 .LVL39: 415 .L23: 913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 416 .loc 1 913 0 discriminator 11 417 00b8 5C23 movs r3, #92 418 00ba 3F22 movs r2, #63 419 00bc C252 strh r2, [r0, r3] 420 .LVL40: 421 00be E0E7 b .L20 422 .LVL41: 423 .L24: 928:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } ARM GAS /tmp/cc7An1gz.s page 25 929:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 930:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 931:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 424 .loc 1 931 0 is_stmt 1 425 00c0 0220 movs r0, #2 426 .LVL42: 427 .L16: 932:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 933:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 428 .loc 1 933 0 429 @ sp needed 430 00c2 30BD pop {r4, r5, pc} 431 .LVL43: 432 .L25: 891:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 433 .loc 1 891 0 434 00c4 0120 movs r0, #1 435 .LVL44: 436 00c6 FCE7 b .L16 437 .LVL45: 438 .L26: 439 00c8 0120 movs r0, #1 440 .LVL46: 441 00ca FAE7 b .L16 442 .LVL47: 443 .L28: 906:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 444 .loc 1 906 0 445 00cc 0220 movs r0, #2 446 .LVL48: 447 00ce F8E7 b .L16 448 .L33: 449 .align 2 450 .L32: 451 00d0 FF010000 .word 511 452 .cfi_endproc 453 .LFE49: 455 .section .text.HAL_UART_Transmit_DMA,"ax",%progbits 456 .align 1 457 .global HAL_UART_Transmit_DMA 458 .syntax unified 459 .code 16 460 .thumb_func 461 .fpu softvfp 463 HAL_UART_Transmit_DMA: 464 .LFB50: 934:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 935:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 936:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Send an amount of data in DMA mode. 937:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 938:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: pointer to data buffer. 939:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: amount of data to be sent. 940:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 941:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer containing data to be sent, should be aligned on a half wor 942:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, 943:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 944:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status ARM GAS /tmp/cc7An1gz.s page 26 945:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 946:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 465 .loc 1 947 0 466 .cfi_startproc 467 @ args = 0, pretend = 0, frame = 0 468 @ frame_needed = 0, uses_anonymous_args = 0 469 .LVL49: 470 0000 70B5 push {r4, r5, r6, lr} 471 .LCFI3: 472 .cfi_def_cfa_offset 16 473 .cfi_offset 4, -16 474 .cfi_offset 5, -12 475 .cfi_offset 6, -8 476 .cfi_offset 14, -4 477 0002 0400 movs r4, r0 948:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Tx process is not already ongoing */ 949:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_READY) 478 .loc 1 949 0 479 0004 6920 movs r0, #105 480 .LVL50: 481 0006 205C ldrb r0, [r4, r0] 482 0008 2028 cmp r0, #32 483 000a 3ED1 bne .L37 950:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 951:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 484 .loc 1 951 0 485 000c 0029 cmp r1, #0 486 000e 3ED0 beq .L38 487 .loc 1 951 0 is_stmt 0 discriminator 1 488 0010 002A cmp r2, #0 489 0012 3ED0 beq .L39 952:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 953:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 954:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 955:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 956:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 957:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data copy into TDR will be 958:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled by DMA from a u16 frontier. */ 959:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 490 .loc 1 959 0 is_stmt 1 491 0014 8023 movs r3, #128 492 0016 5B01 lsls r3, r3, #5 493 0018 A068 ldr r0, [r4, #8] 494 001a 9842 cmp r0, r3 495 001c 2ED0 beq .L42 496 .L36: 960:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 961:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) 962:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 963:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 964:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 965:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 966:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 967:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 968:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 497 .loc 1 968 0 ARM GAS /tmp/cc7An1gz.s page 27 498 001e 6823 movs r3, #104 499 0020 E35C ldrb r3, [r4, r3] 500 0022 012B cmp r3, #1 501 0024 37D0 beq .L41 502 .loc 1 968 0 is_stmt 0 discriminator 2 503 0026 6826 movs r6, #104 504 0028 0123 movs r3, #1 505 002a A355 strb r3, [r4, r6] 969:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 970:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pTxBuffPtr = pData; 506 .loc 1 970 0 is_stmt 1 discriminator 2 507 002c E164 str r1, [r4, #76] 971:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferSize = Size; 508 .loc 1 971 0 discriminator 2 509 002e 4F33 adds r3, r3, #79 510 0030 E252 strh r2, [r4, r3] 972:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = Size; 511 .loc 1 972 0 discriminator 2 512 0032 0233 adds r3, r3, #2 513 0034 E252 strh r2, [r4, r3] 973:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 974:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 514 .loc 1 974 0 discriminator 2 515 0036 0025 movs r5, #0 516 0038 E566 str r5, [r4, #108] 975:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY_TX; 517 .loc 1 975 0 discriminator 2 518 003a 1733 adds r3, r3, #23 519 003c 2121 movs r1, #33 520 .LVL51: 521 003e E154 strb r1, [r4, r3] 976:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 977:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA transfer complete callback */ 978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt; 522 .loc 1 978 0 discriminator 2 523 0040 236E ldr r3, [r4, #96] 524 0042 1649 ldr r1, .L43 525 0044 D962 str r1, [r3, #44] 979:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 980:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Half transfer complete callback */ 981:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt; 526 .loc 1 981 0 discriminator 2 527 0046 236E ldr r3, [r4, #96] 528 0048 1549 ldr r1, .L43+4 529 004a 1963 str r1, [r3, #48] 982:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 983:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the DMA error callback */ 984:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferErrorCallback = UART_DMAError; 530 .loc 1 984 0 discriminator 2 531 004c 236E ldr r3, [r4, #96] 532 004e 1549 ldr r1, .L43+8 533 0050 5963 str r1, [r3, #52] 985:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 986:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the DMA abort callback */ 987:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; 534 .loc 1 987 0 discriminator 2 535 0052 236E ldr r3, [r4, #96] ARM GAS /tmp/cc7An1gz.s page 28 536 0054 9D63 str r5, [r3, #56] 988:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 989:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART transmit DMA channel */ 990:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, S 537 .loc 1 990 0 discriminator 2 538 0056 2168 ldr r1, [r4] 539 0058 2831 adds r1, r1, #40 540 005a 1300 movs r3, r2 541 005c 0A00 movs r2, r1 542 .LVL52: 543 005e E16C ldr r1, [r4, #76] 544 0060 206E ldr r0, [r4, #96] 545 0062 FFF7FEFF bl HAL_DMA_Start_IT 546 .LVL53: 991:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 992:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the TC flag in the ICR register */ 993:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF); 547 .loc 1 993 0 discriminator 2 548 0066 2368 ldr r3, [r4] 549 0068 4022 movs r2, #64 550 006a 1A62 str r2, [r3, #32] 994:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 995:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 996:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 551 .loc 1 996 0 discriminator 2 552 006c A555 strb r5, [r4, r6] 997:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 998:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the DMA transfer for transmit request by setting the DMAT bit 999:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the UART CR3 register */ 1000:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); 553 .loc 1 1000 0 discriminator 2 554 006e 2268 ldr r2, [r4] 555 0070 9368 ldr r3, [r2, #8] 556 0072 8021 movs r1, #128 557 0074 0B43 orrs r3, r1 558 0076 9360 str r3, [r2, #8] 1001:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 559 .loc 1 1002 0 discriminator 2 560 0078 0020 movs r0, #0 561 007a 07E0 b .L35 562 .LVL54: 563 .L42: 959:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 564 .loc 1 959 0 discriminator 1 565 007c 2369 ldr r3, [r4, #16] 566 007e 002B cmp r3, #0 567 0080 CDD1 bne .L36 961:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 568 .loc 1 961 0 569 0082 CB07 lsls r3, r1, #31 570 0084 CBD5 bpl .L36 963:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 571 .loc 1 963 0 572 0086 0120 movs r0, #1 573 0088 00E0 b .L35 574 .L37: ARM GAS /tmp/cc7An1gz.s page 29 1003:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1004:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1005:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1006:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 575 .loc 1 1006 0 576 008a 0220 movs r0, #2 577 .LVL55: 578 .L35: 1007:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1008:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 579 .loc 1 1008 0 580 @ sp needed 581 .LVL56: 582 008c 70BD pop {r4, r5, r6, pc} 583 .LVL57: 584 .L38: 953:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 585 .loc 1 953 0 586 008e 0120 movs r0, #1 587 0090 FCE7 b .L35 588 .L39: 589 0092 0120 movs r0, #1 590 0094 FAE7 b .L35 591 .L41: 968:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 592 .loc 1 968 0 593 0096 0220 movs r0, #2 594 0098 F8E7 b .L35 595 .L44: 596 009a C046 .align 2 597 .L43: 598 009c 00000000 .word UART_DMATransmitCplt 599 00a0 00000000 .word UART_DMATxHalfCplt 600 00a4 00000000 .word UART_DMAError 601 .cfi_endproc 602 .LFE50: 604 .section .text.HAL_UART_Receive_DMA,"ax",%progbits 605 .align 1 606 .global HAL_UART_Receive_DMA 607 .syntax unified 608 .code 16 609 .thumb_func 610 .fpu softvfp 612 HAL_UART_Receive_DMA: 613 .LFB51: 1009:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1010:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1011:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Receive an amount of data in DMA mode. 1012:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1013:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param pData: pointer to data buffer. 1014:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Size: amount of data to be received. 1015:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When the UART parity is enabled (PCE = 1) the data received contain the parity bit. 1016:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1- 1017:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * address of user data buffer containing data to be sent, should be aligned on a half wor 1018:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, 1019:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * use of specific alignment compilation directives or pragmas might be required to ensure 1020:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status ARM GAS /tmp/cc7An1gz.s page 30 1021:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1022:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 1023:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 614 .loc 1 1023 0 615 .cfi_startproc 616 @ args = 0, pretend = 0, frame = 0 617 @ frame_needed = 0, uses_anonymous_args = 0 618 .LVL58: 619 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 620 .LCFI4: 621 .cfi_def_cfa_offset 24 622 .cfi_offset 3, -24 623 .cfi_offset 4, -20 624 .cfi_offset 5, -16 625 .cfi_offset 6, -12 626 .cfi_offset 7, -8 627 .cfi_offset 14, -4 628 0002 0400 movs r4, r0 1024:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Rx process is not already ongoing */ 1025:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->RxState == HAL_UART_STATE_READY) 629 .loc 1 1025 0 630 0004 6A20 movs r0, #106 631 .LVL59: 632 0006 205C ldrb r0, [r4, r0] 633 0008 2028 cmp r0, #32 634 000a 42D1 bne .L48 1026:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1027:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((pData == NULL ) || (Size == 0U)) 635 .loc 1 1027 0 636 000c 0029 cmp r1, #0 637 000e 42D0 beq .L49 638 .loc 1 1027 0 is_stmt 0 discriminator 1 639 0010 002A cmp r2, #0 640 0012 42D0 beq .L50 1028:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 1030:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1031:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1032:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* In case of 9bits/No Parity transfer, pData buffer provided as input paramter 1033:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** should be aligned on a u16 frontier, as data copy from RDR will be 1034:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** handled by DMA from a u16 frontier. */ 1035:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 641 .loc 1 1035 0 is_stmt 1 642 0014 8023 movs r3, #128 643 0016 5B01 lsls r3, r3, #5 644 0018 A068 ldr r0, [r4, #8] 645 001a 9842 cmp r0, r3 646 001c 32D0 beq .L53 647 .L47: 1036:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1037:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((((uint32_t)pData)&1) != 0) 1038:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1039:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_ERROR; 1040:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1041:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1042:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1043:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ ARM GAS /tmp/cc7An1gz.s page 31 1044:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 648 .loc 1 1044 0 649 001e 6823 movs r3, #104 650 0020 E35C ldrb r3, [r4, r3] 651 0022 012B cmp r3, #1 652 0024 3BD0 beq .L52 653 .loc 1 1044 0 is_stmt 0 discriminator 2 654 0026 6827 movs r7, #104 655 0028 0126 movs r6, #1 656 002a E655 strb r6, [r4, r7] 1045:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1046:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pRxBuffPtr = pData; 657 .loc 1 1046 0 is_stmt 1 discriminator 2 658 002c 6165 str r1, [r4, #84] 1047:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferSize = Size; 659 .loc 1 1047 0 discriminator 2 660 002e 5823 movs r3, #88 661 0030 E252 strh r2, [r4, r3] 1048:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1049:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 662 .loc 1 1049 0 discriminator 2 663 0032 0025 movs r5, #0 664 0034 E566 str r5, [r4, #108] 1050:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_BUSY_RX; 665 .loc 1 1050 0 discriminator 2 666 0036 1233 adds r3, r3, #18 667 0038 2221 movs r1, #34 668 .LVL60: 669 003a E154 strb r1, [r4, r3] 1051:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1052:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA transfer complete callback */ 1053:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt; 670 .loc 1 1053 0 discriminator 2 671 003c 636E ldr r3, [r4, #100] 672 003e 1949 ldr r1, .L54 673 0040 D962 str r1, [r3, #44] 1054:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1055:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Half transfer complete callback */ 1056:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt; 674 .loc 1 1056 0 discriminator 2 675 0042 636E ldr r3, [r4, #100] 676 0044 1849 ldr r1, .L54+4 677 0046 1963 str r1, [r3, #48] 1057:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1058:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the DMA error callback */ 1059:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferErrorCallback = UART_DMAError; 678 .loc 1 1059 0 discriminator 2 679 0048 636E ldr r3, [r4, #100] 680 004a 1849 ldr r1, .L54+8 681 004c 5963 str r1, [r3, #52] 1060:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1061:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the DMA abort callback */ 1062:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 682 .loc 1 1062 0 discriminator 2 683 004e 636E ldr r3, [r4, #100] 684 0050 9D63 str r5, [r3, #56] 1063:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 32 1064:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the DMA channel */ 1065:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->RDR, (uint32_t)huart->pRxBuffPtr, S 685 .loc 1 1065 0 discriminator 2 686 0052 2168 ldr r1, [r4] 687 0054 2431 adds r1, r1, #36 688 0056 1300 movs r3, r2 689 0058 626D ldr r2, [r4, #84] 690 .LVL61: 691 005a 606E ldr r0, [r4, #100] 692 005c FFF7FEFF bl HAL_DMA_Start_IT 693 .LVL62: 1066:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1067:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 1068:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 694 .loc 1 1068 0 discriminator 2 695 0060 E555 strb r5, [r4, r7] 1069:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1070:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Parity Error Interrupt */ 1071:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); 696 .loc 1 1071 0 discriminator 2 697 0062 2268 ldr r2, [r4] 698 0064 1168 ldr r1, [r2] 699 0066 8023 movs r3, #128 700 0068 5B00 lsls r3, r3, #1 701 006a 0B43 orrs r3, r1 702 006c 1360 str r3, [r2] 1072:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1073:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ 1074:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_EIE); 703 .loc 1 1074 0 discriminator 2 704 006e 2268 ldr r2, [r4] 705 0070 9368 ldr r3, [r2, #8] 706 0072 3343 orrs r3, r6 707 0074 9360 str r3, [r2, #8] 1075:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1076:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the DMA transfer for the receiver request by setting the DMAR bit 1077:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the UART CR3 register */ 1078:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_DMAR); 708 .loc 1 1078 0 discriminator 2 709 0076 2268 ldr r2, [r4] 710 0078 9368 ldr r3, [r2, #8] 711 007a 4021 movs r1, #64 712 007c 0B43 orrs r3, r1 713 007e 9360 str r3, [r2, #8] 1079:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1080:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 714 .loc 1 1080 0 discriminator 2 715 0080 0020 movs r0, #0 716 0082 07E0 b .L46 717 .LVL63: 718 .L53: 1035:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 719 .loc 1 1035 0 discriminator 1 720 0084 2369 ldr r3, [r4, #16] 721 0086 002B cmp r3, #0 722 0088 C9D1 bne .L47 1037:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 33 723 .loc 1 1037 0 724 008a CB07 lsls r3, r1, #31 725 008c C7D5 bpl .L47 1039:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 726 .loc 1 1039 0 727 008e 0120 movs r0, #1 728 0090 00E0 b .L46 729 .L48: 1081:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1082:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1083:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1084:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 730 .loc 1 1084 0 731 0092 0220 movs r0, #2 732 .LVL64: 733 .L46: 1085:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1086:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 734 .loc 1 1086 0 735 @ sp needed 736 .LVL65: 737 0094 F8BD pop {r3, r4, r5, r6, r7, pc} 738 .LVL66: 739 .L49: 1029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 740 .loc 1 1029 0 741 0096 0120 movs r0, #1 742 0098 FCE7 b .L46 743 .L50: 744 009a 0120 movs r0, #1 745 009c FAE7 b .L46 746 .L52: 1044:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 747 .loc 1 1044 0 748 009e 0220 movs r0, #2 749 00a0 F8E7 b .L46 750 .L55: 751 00a2 C046 .align 2 752 .L54: 753 00a4 00000000 .word UART_DMAReceiveCplt 754 00a8 00000000 .word UART_DMARxHalfCplt 755 00ac 00000000 .word UART_DMAError 756 .cfi_endproc 757 .LFE51: 759 .section .text.HAL_UART_DMAPause,"ax",%progbits 760 .align 1 761 .global HAL_UART_DMAPause 762 .syntax unified 763 .code 16 764 .thumb_func 765 .fpu softvfp 767 HAL_UART_DMAPause: 768 .LFB52: 1087:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1088:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1089:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Pause the DMA Transfer. 1090:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. ARM GAS /tmp/cc7An1gz.s page 34 1091:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1092:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1093:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart) 1094:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 769 .loc 1 1094 0 770 .cfi_startproc 771 @ args = 0, pretend = 0, frame = 0 772 @ frame_needed = 0, uses_anonymous_args = 0 773 @ link register save eliminated. 774 .LVL67: 1095:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 1096:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 775 .loc 1 1096 0 776 0000 6823 movs r3, #104 777 0002 C35C ldrb r3, [r0, r3] 778 0004 012B cmp r3, #1 779 0006 2CD0 beq .L60 780 .loc 1 1096 0 is_stmt 0 discriminator 2 781 0008 6823 movs r3, #104 782 000a 0122 movs r2, #1 783 000c C254 strb r2, [r0, r3] 1097:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1098:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->gState == HAL_UART_STATE_BUSY_TX) && 784 .loc 1 1098 0 is_stmt 1 discriminator 2 785 000e 0133 adds r3, r3, #1 786 0010 C35C ldrb r3, [r0, r3] 787 0012 212B cmp r3, #33 788 0014 08D0 beq .L61 789 .L58: 1099:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))) 1100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Tx request */ 1102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->RxState == HAL_UART_STATE_BUSY_RX) && 790 .loc 1 1104 0 791 0016 6A23 movs r3, #106 792 0018 C35C ldrb r3, [r0, r3] 793 001a 222B cmp r3, #34 794 001c 0DD0 beq .L62 795 .L59: 1105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 1106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ 1108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); 1109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request */ 1112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 1116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 796 .loc 1 1116 0 797 001e 6823 movs r3, #104 798 0020 0022 movs r2, #0 799 0022 C254 strb r2, [r0, r3] ARM GAS /tmp/cc7An1gz.s page 35 1117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 800 .loc 1 1118 0 801 0024 0020 movs r0, #0 802 .LVL68: 803 .L57: 1119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 804 .loc 1 1119 0 805 @ sp needed 806 0026 7047 bx lr 807 .LVL69: 808 .L61: 1099:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 809 .loc 1 1099 0 discriminator 1 810 0028 0368 ldr r3, [r0] 811 002a 9A68 ldr r2, [r3, #8] 1098:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))) 812 .loc 1 1098 0 discriminator 1 813 002c 1206 lsls r2, r2, #24 814 002e F2D5 bpl .L58 1102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 815 .loc 1 1102 0 816 0030 9A68 ldr r2, [r3, #8] 817 0032 8021 movs r1, #128 818 0034 8A43 bics r2, r1 819 0036 9A60 str r2, [r3, #8] 820 0038 EDE7 b .L58 821 .L62: 1105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 822 .loc 1 1105 0 discriminator 1 823 003a 0368 ldr r3, [r0] 824 003c 9A68 ldr r2, [r3, #8] 1104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 825 .loc 1 1104 0 discriminator 1 826 003e 5206 lsls r2, r2, #25 827 0040 EDD5 bpl .L59 1108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 828 .loc 1 1108 0 829 0042 1A68 ldr r2, [r3] 830 0044 0849 ldr r1, .L63 831 0046 0A40 ands r2, r1 832 0048 1A60 str r2, [r3] 1109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 833 .loc 1 1109 0 834 004a 0268 ldr r2, [r0] 835 004c 9368 ldr r3, [r2, #8] 836 004e 0331 adds r1, r1, #3 837 0050 FF31 adds r1, r1, #255 838 0052 8B43 bics r3, r1 839 0054 9360 str r3, [r2, #8] 1112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 840 .loc 1 1112 0 841 0056 0268 ldr r2, [r0] 842 0058 9368 ldr r3, [r2, #8] 843 005a 3F31 adds r1, r1, #63 844 005c 8B43 bics r3, r1 845 005e 9360 str r3, [r2, #8] ARM GAS /tmp/cc7An1gz.s page 36 846 0060 DDE7 b .L59 847 .L60: 1096:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 848 .loc 1 1096 0 849 0062 0220 movs r0, #2 850 .LVL70: 851 0064 DFE7 b .L57 852 .L64: 853 0066 C046 .align 2 854 .L63: 855 0068 FFFEFFFF .word -257 856 .cfi_endproc 857 .LFE52: 859 .section .text.HAL_UART_DMAResume,"ax",%progbits 860 .align 1 861 .global HAL_UART_DMAResume 862 .syntax unified 863 .code 16 864 .thumb_func 865 .fpu softvfp 867 HAL_UART_DMAResume: 868 .LFB53: 1120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Resume the DMA Transfer. 1123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart) 1127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 869 .loc 1 1127 0 870 .cfi_startproc 871 @ args = 0, pretend = 0, frame = 0 872 @ frame_needed = 0, uses_anonymous_args = 0 873 @ link register save eliminated. 874 .LVL71: 1128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 1129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 875 .loc 1 1129 0 876 0000 6823 movs r3, #104 877 0002 C35C ldrb r3, [r0, r3] 878 0004 012B cmp r3, #1 879 0006 29D0 beq .L69 880 .loc 1 1129 0 is_stmt 0 discriminator 2 881 0008 6823 movs r3, #104 882 000a 0122 movs r2, #1 883 000c C254 strb r2, [r0, r3] 1130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->gState == HAL_UART_STATE_BUSY_TX) 884 .loc 1 1131 0 is_stmt 1 discriminator 2 885 000e 0133 adds r3, r3, #1 886 0010 C35C ldrb r3, [r0, r3] 887 0012 212B cmp r3, #33 888 0014 08D0 beq .L70 889 .L67: 1132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART DMA Tx request */ ARM GAS /tmp/cc7An1gz.s page 37 1134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->RxState == HAL_UART_STATE_BUSY_RX) 890 .loc 1 1136 0 891 0016 6A23 movs r3, #106 892 0018 C35C ldrb r3, [r0, r3] 893 001a 222B cmp r3, #34 894 001c 0AD0 beq .L71 895 .L68: 1137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Overrun flag before resuming the Rx transfer */ 1139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); 1140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reenable PE and ERR (Frame error, noise error, overrun error) interrupts */ 1142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); 1143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_EIE); 1144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART DMA Rx request */ 1146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 1150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 896 .loc 1 1150 0 897 001e 6823 movs r3, #104 898 0020 0022 movs r2, #0 899 0022 C254 strb r2, [r0, r3] 1151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 900 .loc 1 1152 0 901 0024 0020 movs r0, #0 902 .LVL72: 903 .L66: 1153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 904 .loc 1 1153 0 905 @ sp needed 906 0026 7047 bx lr 907 .LVL73: 908 .L70: 1134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 909 .loc 1 1134 0 910 0028 0268 ldr r2, [r0] 911 002a 9368 ldr r3, [r2, #8] 912 002c 8021 movs r1, #128 913 002e 0B43 orrs r3, r1 914 0030 9360 str r3, [r2, #8] 915 0032 F0E7 b .L67 916 .L71: 1139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 917 .loc 1 1139 0 918 0034 0368 ldr r3, [r0] 919 0036 0822 movs r2, #8 920 0038 1A62 str r2, [r3, #32] 1142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR3, USART_CR3_EIE); 921 .loc 1 1142 0 922 003a 0268 ldr r2, [r0] 923 003c 1168 ldr r1, [r2] ARM GAS /tmp/cc7An1gz.s page 38 924 003e 8023 movs r3, #128 925 0040 5B00 lsls r3, r3, #1 926 0042 0B43 orrs r3, r1 927 0044 1360 str r3, [r2] 1143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 928 .loc 1 1143 0 929 0046 0268 ldr r2, [r0] 930 0048 9368 ldr r3, [r2, #8] 931 004a 0121 movs r1, #1 932 004c 0B43 orrs r3, r1 933 004e 9360 str r3, [r2, #8] 1146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 934 .loc 1 1146 0 935 0050 0268 ldr r2, [r0] 936 0052 9368 ldr r3, [r2, #8] 937 0054 3F31 adds r1, r1, #63 938 0056 0B43 orrs r3, r1 939 0058 9360 str r3, [r2, #8] 940 005a E0E7 b .L68 941 .L69: 1129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 942 .loc 1 1129 0 943 005c 0220 movs r0, #2 944 .LVL74: 945 005e E2E7 b .L66 946 .cfi_endproc 947 .LFE53: 949 .section .text.HAL_UART_DMAStop,"ax",%progbits 950 .align 1 951 .global HAL_UART_DMAStop 952 .syntax unified 953 .code 16 954 .thumb_func 955 .fpu softvfp 957 HAL_UART_DMAStop: 958 .LFB54: 1154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Stop the DMA Transfer. 1157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart) 1161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 959 .loc 1 1161 0 960 .cfi_startproc 961 @ args = 0, pretend = 0, frame = 0 962 @ frame_needed = 0, uses_anonymous_args = 0 963 .LVL75: 964 0000 10B5 push {r4, lr} 965 .LCFI5: 966 .cfi_def_cfa_offset 8 967 .cfi_offset 4, -8 968 .cfi_offset 14, -4 969 0002 0400 movs r4, r0 1162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* The Lock is not implemented on this API to allow the user application 1163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** to call the HAL UART API under callbacks HAL_UART_TxCpltCallback() / HAL_UART_RxCpltCallback() ARM GAS /tmp/cc7An1gz.s page 39 1164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_TxHalfCpltCallback / HAL_UART_RxHalfCpltCallback: 1165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** indeed, when HAL_DMA_Abort() API is called, the DMA TX/RX Transfer or Half Transfer complete 1166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** interrupt is generated if the DMA transfer interruption occurs at the middle or at the end of 1167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the stream and the corresponding call back is executed. */ 1168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Stop UART DMA Tx request if ongoing */ 1170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->gState == HAL_UART_STATE_BUSY_TX) && 970 .loc 1 1170 0 971 0004 6923 movs r3, #105 972 0006 C35C ldrb r3, [r0, r3] 973 0008 212B cmp r3, #33 974 000a 05D0 beq .L77 975 .LVL76: 976 .L73: 1171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))) 1172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Tx channel */ 1176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmatx); 1179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndTxTransfer(huart); 1182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Stop UART DMA Rx request if ongoing */ 1185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->RxState == HAL_UART_STATE_BUSY_RX) && 977 .loc 1 1185 0 978 000c 6A23 movs r3, #106 979 000e E35C ldrb r3, [r4, r3] 980 0010 222B cmp r3, #34 981 0012 17D0 beq .L78 982 .L75: 1186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 1187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel */ 1191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmarx); 1194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndRxTransfer(huart); 1197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 983 .loc 1 1200 0 984 0014 0020 movs r0, #0 985 @ sp needed 986 .LVL77: 987 0016 10BD pop {r4, pc} 988 .LVL78: 989 .L77: ARM GAS /tmp/cc7An1gz.s page 40 1171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))) 990 .loc 1 1171 0 discriminator 1 991 0018 0368 ldr r3, [r0] 992 001a 9A68 ldr r2, [r3, #8] 1170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))) 993 .loc 1 1170 0 discriminator 1 994 001c 1206 lsls r2, r2, #24 995 001e F5D5 bpl .L73 1173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 996 .loc 1 1173 0 997 0020 9A68 ldr r2, [r3, #8] 998 0022 8021 movs r1, #128 999 0024 8A43 bics r2, r1 1000 0026 9A60 str r2, [r3, #8] 1176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1001 .loc 1 1176 0 1002 0028 006E ldr r0, [r0, #96] 1003 .LVL79: 1004 002a 0028 cmp r0, #0 1005 002c 01D0 beq .L74 1178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1006 .loc 1 1178 0 1007 002e FFF7FEFF bl HAL_DMA_Abort 1008 .LVL80: 1009 .L74: 1010 .LBB14: 1011 .LBB15: 1201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing transfers (blocking mode). 1204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or 1206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Tx and Rx) 1208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode) 1210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in blocking mode : when exiting function, Abort is considere 1212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart) 1215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_ 1218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Tx request if enabled */ 1221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) 1222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */ 1226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback to Null. 1229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** No call back execution at end of DMA abort procedure */ 1230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; ARM GAS /tmp/cc7An1gz.s page 41 1231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmatx); 1233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request if enabled */ 1237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */ 1242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback to Null. 1245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** No call back execution at end of DMA abort procedure */ 1246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 1247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmarx); 1249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Tx and Rx transfer counters */ 1253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 1254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 1257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); 1258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState and huart->RxState to Ready */ 1260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Handle ErrorCode to No Error */ 1264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 1265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing Transmit transfer (blocking mode). 1271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt 1273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Tx) 1275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode) 1277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in blocking mode : when exiting function, Abort is considere 1279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart) 1282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE and TCIE interrupts */ 1284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); 1285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Tx request if enabled */ 1287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) ARM GAS /tmp/cc7An1gz.s page 42 1288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */ 1292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback to Null. 1295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** No call back execution at end of DMA abort procedure */ 1296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; 1297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmatx); 1299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Tx transfer counter */ 1303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 1304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState to Ready */ 1306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing Receive transfer (blocking mode). 1313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt 1315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Rx) 1317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode) 1319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in blocking mode : when exiting function, Abort is considere 1321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart) 1324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 1327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request if enabled */ 1330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */ 1335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback to Null. 1338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** No call back execution at end of DMA abort procedure */ 1339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 1340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_DMA_Abort(huart->hdmarx); 1342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 43 1345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Rx transfer counter */ 1346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 1349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); 1350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->RxState to Ready */ 1352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing transfers (Interrupt mode). 1359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or 1361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Tx and Rx) 1363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode) 1365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - At abort completion, call user abort complete callback 1367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be 1368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * considered as completed only when user abort complete callback is executed (not when ex 1369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart) 1372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t abortcplt = 1; 1374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_ 1377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks sh 1380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** before any call to DMA Abort functions */ 1381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DMA Tx Handle is valid */ 1382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set DMA Abort Complete callback if UART DMA Tx request if enabled. 1385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Otherwise, set it to NULL */ 1386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) 1387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = UART_DMATxAbortCallback; 1389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; 1393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DMA Rx Handle is valid */ 1396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set DMA Abort Complete callback if UART DMA Rx request if enabled. 1399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Otherwise, set it to NULL */ 1400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 44 1402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = UART_DMARxAbortCallback; 1403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 1407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Tx request if enabled */ 1411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) 1412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable DMA Tx at UART level */ 1414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */ 1417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART Tx DMA Abort callback has already been initialised : 1420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ 1421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort DMA TX */ 1423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK) 1424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; 1426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** abortcplt = 0; 1430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request if enabled */ 1435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */ 1440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART Rx DMA Abort callback has already been initialised : 1443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ 1444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort DMA RX */ 1446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) 1447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 1449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** abortcplt = 1; 1450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** abortcplt = 0; 1454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if no DMA abort complete callback execution is required => call user Abort Complete callback * ARM GAS /tmp/cc7An1gz.s page 45 1459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (abortcplt == 1) 1460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Tx and Rx transfer counters */ 1462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 1463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset errorCode */ 1466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 1467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 1469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF 1470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState and huart->RxState to Ready */ 1472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* As no DMA to be aborted, call directly user Abort complete callback */ 1476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortCpltCallback(huart); 1477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing Transmit transfer (Interrupt mode). 1484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt 1486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Tx) 1488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode) 1490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - At abort completion, call user abort complete callback 1492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be 1493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * considered as completed only when user abort complete callback is executed (not when ex 1494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart) 1497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE and TCIE interrupts */ 1499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); 1500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Tx request if enabled */ 1502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) 1503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */ 1507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 1508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback : 1510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ 1511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = UART_DMATxOnlyAbortCallback; 1512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort DMA TX */ 1514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK) 1515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 46 1516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call Directly huart->hdmatx->XferAbortCallback function in case of error */ 1517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback(huart->hdmatx); 1518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Tx transfer counter */ 1523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 1524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState to Ready */ 1526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1528:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* As no DMA to be aborted, call directly user Abort complete callback */ 1529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortTransmitCpltCallback(huart); 1530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1531:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Tx transfer counter */ 1535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 1536:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1537:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState to Ready */ 1538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1539:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1540:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* As no DMA to be aborted, call directly user Abort complete callback */ 1541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortTransmitCpltCallback(huart); 1542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1544:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1548:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Abort ongoing Receive transfer (Interrupt mode). 1549:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt 1551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * This procedure performs following operations : 1552:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable UART Interrupts (Rx) 1553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Disable the DMA transfer in the peripheral register (if enabled) 1554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode) 1555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - Set handle State to READY 1556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - At abort completion, call user abort complete callback 1557:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be 1558:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * considered as completed only when user abort complete callback is executed (not when ex 1559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart) 1562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 1565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1566:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request if enabled */ 1568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1569:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */ ARM GAS /tmp/cc7An1gz.s page 47 1573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1574:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback : 1576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ 1577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = UART_DMARxOnlyAbortCallback; 1578:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort DMA RX */ 1580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) 1581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1582:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ 1583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback(huart->hdmarx); 1584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1586:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1588:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Rx transfer counter */ 1589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1590:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 1592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_F 1593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1594:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->RxState to Ready */ 1595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1596:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1597:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* As no DMA to be aborted, call directly user Abort complete callback */ 1598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortReceiveCpltCallback(huart); 1599:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1600:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset Rx transfer counter */ 1604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1606:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 1607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF 1608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->RxState to Ready */ 1610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1611:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1612:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* As no DMA to be aborted, call directly user Abort complete callback */ 1613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortReceiveCpltCallback(huart); 1614:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1615:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1616:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Handle UART interrupt request. 1621:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1623:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1624:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) 1625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t isrflags = READ_REG(huart->Instance->ISR); 1627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t cr1its = READ_REG(huart->Instance->CR1); 1628:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t cr3its; 1629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t errorflags; ARM GAS /tmp/cc7An1gz.s page 48 1630:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1631:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* If no error occurs */ 1632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE)); 1633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (errorflags == RESET) 1634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART in mode Receiver ---------------------------------------------------*/ 1636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) 1637:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_Receive_IT(huart); 1639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 1640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1643:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* If some errors occur */ 1644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** cr3its = READ_REG(huart->Instance->CR3); 1645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if( (errorflags != RESET) 1646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** && ( ((cr3its & USART_CR3_EIE) != RESET) 1647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)) ) 1648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART parity error interrupt occurred -------------------------------------*/ 1650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET)) 1651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_IT(huart, UART_CLEAR_PEF); 1653:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode |= HAL_UART_ERROR_PE; 1655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART frame error interrupt occurred --------------------------------------*/ 1658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) 1659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_IT(huart, UART_CLEAR_FEF); 1661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode |= HAL_UART_ERROR_FE; 1663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1665:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART noise error interrupt occurred --------------------------------------*/ 1666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET)) 1667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_IT(huart, UART_CLEAR_NEF); 1669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode |= HAL_UART_ERROR_NE; 1671:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART Over-Run interrupt occurred -----------------------------------------*/ 1674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_ORE) != RESET) && 1675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (((cr1its & USART_CR1_RXNEIE) != RESET) || ((cr3its & USART_CR3_EIE) != RESET))) 1676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_IT(huart, UART_CLEAR_OREF); 1678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode |= HAL_UART_ERROR_ORE; 1680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1681:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1682:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call UART Error Call back function if need be --------------------------*/ 1683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->ErrorCode != HAL_UART_ERROR_NONE) 1684:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART in mode Receiver ---------------------------------------------------*/ 1686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) ARM GAS /tmp/cc7An1gz.s page 49 1687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_Receive_IT(huart); 1689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* If Overrun error occurs, or if any error occurs in DMA mode reception, 1692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** consider error as blocking */ 1693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (((huart->ErrorCode & HAL_UART_ERROR_ORE) != RESET) || 1694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 1695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Blocking error : transfer is aborted 1697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Set the UART state ready to be able to start again the process, 1698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Disable Rx Interrupts, and disable Rx DMA request, if ongoing */ 1699:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndRxTransfer(huart); 1700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1701:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART DMA Rx request if enabled */ 1702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) 1703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort the UART DMA Rx channel */ 1707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 1708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART DMA Abort callback : 1710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ 1711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; 1712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Abort DMA RX */ 1714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) 1715:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1716:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ 1717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback(huart->hdmarx); 1718:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1719:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1721:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user error callback */ 1723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 1724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user error callback */ 1729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 1730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1731:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1732:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 1733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Non Blocking error : transfer could go on. 1735:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** Error is notified to user through user error callback */ 1736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 1737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 1738:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1739:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1740:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 1741:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1742:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } /* End if some error occurs */ 1743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 50 1744:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART wakeup from Stop mode interrupt occurred ---------------------------*/ 1745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_WUF) != RESET) && ((cr3its & USART_CR3_WUFIE) != RESET)) 1746:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1747:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_IT(huart, UART_CLEAR_WUF); 1748:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART state ready to be able to start again the process */ 1749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1750:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UARTEx_WakeupCallback(huart); 1752:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 1753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1754:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1755:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART in mode Transmitter ------------------------------------------------*/ 1756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET)) 1757:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1758:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_Transmit_IT(huart); 1759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 1760:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1762:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* UART in mode Transmitter (transmission end) -----------------------------*/ 1763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(((isrflags & USART_ISR_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET)) 1764:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndTransmit_IT(huart); 1766:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 1767:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1770:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1772:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Tx Transfer completed callback. 1773:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1774:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1775:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 1777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1778:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1779:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1781:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1782:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_TxCpltCallback can be implemented in the user file. 1783:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1785:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Tx Half Transfer completed callback. 1788:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1789:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1790:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart) 1792:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1793:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1794:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1796:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE: This function should not be modified, when the callback is needed, 1797:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_TxHalfCpltCallback can be implemented in the user file. 1798:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1800:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 51 1801:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1802:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Rx Transfer completed callback. 1803:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1804:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1805:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1806:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 1807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1808:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1809:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1810:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1811:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1812:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_RxCpltCallback can be implemented in the user file. 1813:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1814:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1815:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1816:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1817:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Rx Half Transfer completed callback. 1818:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1819:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1820:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1821:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart) 1822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1823:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1824:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1825:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1826:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE: This function should not be modified, when the callback is needed, 1827:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_RxHalfCpltCallback can be implemented in the user file. 1828:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1829:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1830:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1831:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1832:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART error callback. 1833:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1834:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1835:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1836:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) 1837:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1838:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1839:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1840:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1841:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_ErrorCallback can be implemented in the user file. 1843:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1845:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1847:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART Abort Complete callback. 1848:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1849:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1851:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_AbortCpltCallback (UART_HandleTypeDef *huart) 1852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1853:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1854:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1855:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1856:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1857:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_AbortCpltCallback can be implemented in the user file. ARM GAS /tmp/cc7An1gz.s page 52 1858:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1859:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1860:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1861:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1862:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART Abort Complete callback. 1863:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1864:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1865:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1866:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_AbortTransmitCpltCallback (UART_HandleTypeDef *huart) 1867:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1868:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1869:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1870:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1871:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1872:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_AbortTransmitCpltCallback can be implemented in the user file. 1873:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1874:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1875:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1876:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1877:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART Abort Receive Complete callback. 1878:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 1879:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1880:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1881:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __weak void HAL_UART_AbortReceiveCpltCallback (UART_HandleTypeDef *huart) 1882:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1883:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1884:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UNUSED(huart); 1885:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1886:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* NOTE : This function should not be modified, when the callback is needed, 1887:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** the HAL_UART_AbortReceiveCpltCallback can be implemented in the user file. 1888:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1889:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1890:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1891:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1892:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 1893:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1894:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1895:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Exported_Functions_Group3 Peripheral Control functions 1896:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART control functions 1897:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 1898:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @verbatim 1899:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 1900:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ##### Peripheral Control functions ##### 1901:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** =============================================================================== 1902:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 1903:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** This subsection provides a set of functions allowing to control the UART. 1904:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode 1905:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode 1906:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode 1907:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) UART_SetConfig() API configures the UART peripheral 1908:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) UART_AdvFeatureConfig() API optionally configures the UART advanced features 1909:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) UART_CheckIdleState() API ensures that TEACK and/or REACK are set after initialization 1910:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_HalfDuplex_EnableTransmitter() API disables receiver and enables transmitter 1911:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_HalfDuplex_EnableReceiver() API disables transmitter and enables receiver 1912:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) HAL_LIN_SendBreak() API transmits the break characters 1913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @endverbatim 1914:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ ARM GAS /tmp/cc7An1gz.s page 53 1915:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1916:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1917:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1918:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Enable UART in mute mode (does not mean UART enters mute mode; 1919:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called). 1920:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1921:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1922:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1923:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart) 1924:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1925:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 1926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 1927:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1928:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 1929:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1930:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable USART mute mode by setting the MME bit in the CR1 register */ 1931:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_MME); 1932:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1933:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1934:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1935:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 1936:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1937:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1938:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1939:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Disable UART mute mode (does not mean the UART actually exits mute mode 1940:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * as it may not have been in mute mode at this very moment). 1941:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1942:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1943:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1944:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart) 1945:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1946:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 1947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 1948:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1949:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 1950:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1951:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable USART mute mode by clearing the MME bit in the CR1 register */ 1952:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME); 1953:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1954:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1955:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1956:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (UART_CheckIdleState(huart)); 1957:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1958:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1959:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1960:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Enter UART mute mode (means UART actually enters mute mode). 1961:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note To exit from mute mode, HAL_MultiProcessor_DisableMuteMode() API must be called. 1962:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1963:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 1964:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1965:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart) 1966:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1967:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_SEND_REQ(huart, UART_MUTE_MODE_REQUEST); 1968:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1969:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1970:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1971:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Enable the UART transmitter and disable the UART receiver. ARM GAS /tmp/cc7An1gz.s page 54 1972:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1973:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 1974:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1975:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart) 1976:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1977:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 1978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 1979:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 1980:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1981:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear TE and RE bits */ 1982:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE)); 1983:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */ 1984:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_TE); 1985:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1986:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1987:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1988:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 1989:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 1990:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1991:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1992:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1993:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1994:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 1995:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Enable the UART receiver and disable the UART transmitter. 1996:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 1997:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status. 1998:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 1999:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart) 2000:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2001:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 2002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 2003:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 2004:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2005:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear TE and RE bits */ 2006:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE)); 2007:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */ 2008:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_RE); 2009:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2010:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2011:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 2012:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 2013:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2014:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2015:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2016:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2017:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2018:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2019:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Transmit break characters. 2020:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 2021:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2022:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2023:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart) 2024:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2025:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 2026:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_LIN_INSTANCE(huart->Instance)); 2027:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2028:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ ARM GAS /tmp/cc7An1gz.s page 55 2029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_LOCK(huart); 2030:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2031:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 2032:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2033:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Send break characters */ 2034:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->RQR |= UART_SENDBREAK_REQUEST; 2035:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2036:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2037:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2038:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 2039:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 2040:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2041:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2042:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2043:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2044:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2045:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2046:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 2047:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2048:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2049:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions 2050:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief UART Peripheral State functions 2051:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * 2052:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @verbatim 2053:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ============================================================================== 2054:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ##### Peripheral State and Error functions ##### 2055:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ============================================================================== 2056:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** [..] 2057:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** This subsection provides functions allowing to : 2058:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Return the UART handle state. 2059:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (+) Return the UART handle error code 2060:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2061:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** @endverbatim 2062:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 2063:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2064:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2065:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2066:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Return the UART handle state. 2067:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart Pointer to a UART_HandleTypeDef structure that contains 2068:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * the configuration information for the specified UART. 2069:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL state 2070:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2071:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart) 2072:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2073:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t temp1= 0x00U, temp2 = 0x00U; 2074:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** temp1 = huart->gState; 2075:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** temp2 = huart->RxState; 2076:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2077:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return (HAL_UART_StateTypeDef)(temp1 | temp2); 2078:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2079:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2080:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2081:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Return the UART handle error code. 2082:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart Pointer to a UART_HandleTypeDef structure that contains 2083:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * the configuration information for the specified UART. 2084:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval UART Error Code 2085:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ ARM GAS /tmp/cc7An1gz.s page 56 2086:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart) 2087:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2088:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return huart->ErrorCode; 2089:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2090:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2091:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 2092:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2093:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2094:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2095:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @} 2096:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2097:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2098:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** @defgroup UART_Private_Functions UART Private Functions 2099:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @{ 2100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Configure the UART peripheral. 2104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 2105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) 2108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tmpreg = 0x00000000U; 2110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_ClockSourceTypeDef clocksource = UART_CLOCKSOURCE_UNDEFINED; 2111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t brrtemp = 0x0000U; 2112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t usartdiv = 0x0000U; 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef ret = HAL_OK; 2114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 2116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate)); 2117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); 2118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_INSTANCE_LOWPOWER(huart)) 2119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_LPUART_STOPBITS(huart->Init.StopBits)); 2121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_STOPBITS(huart->Init.StopBits)); 2125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ONE_BIT_SAMPLE(huart->Init.OneBitSampling)); 2126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_PARITY(huart->Init.Parity)); 2129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_MODE(huart->Init.Mode)); 2130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl)); 2131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); 2132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /*-------------------------- USART CR1 Configuration -----------------------*/ 2135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear M, PCE, PS, TE, RE and OVER8 bits and configure 2136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * the UART Word Length, Parity, Mode and oversampling: 2137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * set the M bits according to huart->Init.WordLength value 2138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * set PCE and PS bits according to huart->Init.Parity value 2139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * set TE and RE bits according to huart->Init.Mode value 2140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * set OVER8 bit according to huart->Init.OverSampling value */ 2141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.O 2142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR1, UART_CR1_FIELDS, tmpreg); ARM GAS /tmp/cc7An1gz.s page 57 2143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /*-------------------------- USART CR2 Configuration -----------------------*/ 2145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Configure the UART Stop Bits: Set STOP[13:12] bits according 2146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * to huart->Init.StopBits value */ 2147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); 2148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /*-------------------------- USART CR3 Configuration -----------------------*/ 2150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Configure 2151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - UART HardWare Flow Control: set CTSE and RTSE bits according 2152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * to huart->Init.HwFlowCtl value 2153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * - one-bit sampling method versus three samples' majority rule according 2154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * to huart->Init.OneBitSampling (not applicable to LPUART) */ 2155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t)huart->Init.HwFlowCtl; 2156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (!(UART_INSTANCE_LOWPOWER(huart))) 2157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg |= huart->Init.OneBitSampling; 2159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE | USART_CR3_ONEBIT), tmpreg); 2161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /*-------------------------- USART BRR Configuration -----------------------*/ 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_GETCLOCKSOURCE(huart, clocksource); 2164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 2165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check LPUART instance */ 2167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_INSTANCE_LOWPOWER(huart)) 2168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Retrieve frequency clock */ 2170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = 0; 2171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** switch (clocksource) 2173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK1: 2175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = HAL_RCC_GetPCLK1Freq(); 2176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_HSI: 2178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 2179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t) (HSI_VALUE >> 2U); 2181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t) HSI_VALUE; 2185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_SYSCLK: 2188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = HAL_RCC_GetSysClockFreq(); 2189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 2191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t) LSE_VALUE; 2192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_UNDEFINED: 2194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** default: 2195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ret = HAL_ERROR; 2196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if proper clock source reported */ ARM GAS /tmp/cc7An1gz.s page 58 2200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (tmpreg != 0) 2201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ 2203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ( (tmpreg < (3 * huart->Init.BaudRate) ) || 2204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (tmpreg > (4096 * huart->Init.BaudRate) )) 2205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ret = HAL_ERROR; 2207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmpreg = (uint32_t)(UART_DIV_LPUART(tmpreg, huart->Init.BaudRate)); 2211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((tmpreg >= UART_LPUART_BRR_MIN) && (tmpreg <= UART_LPUART_BRR_MAX)) 2213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = tmpreg; 2215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ret = HAL_ERROR; 2219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } /* if ( (tmpreg < (3 * huart->Init.BaudRate) ) || (tmpreg > (4096 * huart->Init.BaudRate 2221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } /* if (tmpreg != 0) */ 2222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check UART Over Sampling to set Baud Rate Register */ 2224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) 2225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** switch (clocksource) 2227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK1: 2229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8(frequency, huart->Init.BaudRate)); 2230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK2: 2232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate)); 2233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_HSI: 2235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 2236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8((HSI_VALUE >> 2U), huart->Init.BaudRate)); 2238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate)); 2242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_SYSCLK: 2245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate)); 2246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 2248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate)); 2249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_UNDEFINED: 2251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** default: 2252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ret = HAL_ERROR; 2253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** brrtemp = usartdiv & 0xFFF0U; ARM GAS /tmp/cc7An1gz.s page 59 2257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** brrtemp |= (uint16_t)((uint16_t)(usartdiv & (uint16_t)0x000FU) >> (uint16_t)1U); 2258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = brrtemp; 2259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** switch (clocksource) 2263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK1: 2265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.Bau 2266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK2: 2268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.Bau 2269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_HSI: 2271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) 2272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16((HSI_VALUE >> 2U), huart->Init.BaudRa 2274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate)); 2278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_SYSCLK: 2281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init. 2282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 2284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate)); 2285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_UNDEFINED: 2287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** default: 2288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ret = HAL_ERROR; 2289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 2290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return ret; 2294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Configure the UART peripheral advanced features. 2299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart: UART handle. 2300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) 2303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check whether the set of advanced features to configure is properly set */ 2305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); 2306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure TX pin active level inversion */ 2308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) 2309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); 2311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); 2312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 60 2314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure RX pin active level inversion */ 2315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) 2316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); 2318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); 2319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure data inversion */ 2322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) 2323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); 2325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); 2326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure RX/TX pins swap */ 2329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) 2330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); 2332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); 2333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure RX overrun detection disabling */ 2336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) 2337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); 2339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); 2340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure DMA disabling on reception error */ 2343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) 2344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); 2346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); 2347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure auto Baud rate detection scheme */ 2350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) 2351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); 2353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); 2354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); 2355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* set auto Baudrate detection parameters if detection is enabled */ 2356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) 2357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); 2359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); 2360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* if required, configure MSB first on communication line */ 2364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) 2365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); 2367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); 2368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 61 2371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Check the UART Idle State. 2373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) 2377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tickstart = 0; 2379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Initialize the UART ErrorCode */ 2381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 2382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Init tickstart for timeout managment*/ 2384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tickstart = HAL_GetTick(); 2385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check if the Transmitter is enabled */ 2387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) 2388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Wait until TEACK flag is set */ 2390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE 2391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Timeout occurred */ 2393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 2394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check if the Receiver is enabled */ 2397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) 2398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Wait until REACK flag is set */ 2400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE 2401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Timeout occurred */ 2403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 2404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Initialize the UART State */ 2408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 2412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 2413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Handle UART Communication Timeout. 2419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Flag Specifies the UART flag to check 2421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Status Flag status (SET or RESET) 2422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Tickstart Tick start value 2423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param Timeout Timeout duration 2424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus 2427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 62 2428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Wait until flag is set */ 2429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** while((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) 2430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check for the Timeout */ 2432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(Timeout != HAL_MAX_DELAY) 2433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if((Timeout == 0) || ((HAL_GetTick()-Tickstart) > Timeout)) 2435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for t 2437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); 2438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 2439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 2444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UNLOCK(huart); 2445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 2446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit compl 2455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_EndTxTransfer(UART_HandleTypeDef *huart) 2459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE and TCIE interrupts */ 2461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); 1012 .loc 1 2461 0 1013 0032 2268 ldr r2, [r4] 1014 0034 1368 ldr r3, [r2] 1015 0036 C021 movs r1, #192 1016 0038 8B43 bics r3, r1 1017 003a 1360 str r3, [r2] 2462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* At end of Tx process, restore huart->gState to Ready */ 2464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 1018 .loc 1 2464 0 1019 003c 6923 movs r3, #105 1020 003e 2022 movs r2, #32 1021 0040 E254 strb r2, [r4, r3] 1022 0042 E3E7 b .L73 1023 .LVL81: 1024 .L78: 1025 .LBE15: 1026 .LBE14: 1186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1027 .loc 1 1186 0 discriminator 1 1028 0044 2368 ldr r3, [r4] 1029 0046 9A68 ldr r2, [r3, #8] 1185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) ARM GAS /tmp/cc7An1gz.s page 63 1030 .loc 1 1185 0 discriminator 1 1031 0048 5206 lsls r2, r2, #25 1032 004a E3D5 bpl .L75 1188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1033 .loc 1 1188 0 1034 004c 9A68 ldr r2, [r3, #8] 1035 004e 4021 movs r1, #64 1036 0050 8A43 bics r2, r1 1037 0052 9A60 str r2, [r3, #8] 1191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1038 .loc 1 1191 0 1039 0054 606E ldr r0, [r4, #100] 1040 0056 0028 cmp r0, #0 1041 0058 01D0 beq .L76 1193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1042 .loc 1 1193 0 1043 005a FFF7FEFF bl HAL_DMA_Abort 1044 .LVL82: 1045 .L76: 1046 .LBB16: 1047 .LBB17: 2465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception comp 2470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_EndRxTransfer(UART_HandleTypeDef *huart) 2474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 2476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 1048 .loc 1 2476 0 1049 005e 2268 ldr r2, [r4] 1050 0060 1368 ldr r3, [r2] 1051 0062 0649 ldr r1, .L79 1052 0064 0B40 ands r3, r1 1053 0066 1360 str r3, [r2] 2477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1054 .loc 1 2477 0 1055 0068 2268 ldr r2, [r4] 1056 006a 9368 ldr r3, [r2, #8] 1057 006c 2331 adds r1, r1, #35 1058 006e FF31 adds r1, r1, #255 1059 0070 8B43 bics r3, r1 1060 0072 9360 str r3, [r2, #8] 2478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* At end of Rx process, restore huart->RxState to Ready */ 2480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1061 .loc 1 2480 0 1062 0074 6A23 movs r3, #106 1063 0076 2022 movs r2, #32 1064 0078 E254 strb r2, [r4, r3] 1065 007a CBE7 b .L75 1066 .L80: 1067 .align 2 ARM GAS /tmp/cc7An1gz.s page 64 1068 .L79: 1069 007c DFFEFFFF .word -289 1070 .LBE17: 1071 .LBE16: 1072 .cfi_endproc 1073 .LFE54: 1075 .section .text.HAL_UART_Abort,"ax",%progbits 1076 .align 1 1077 .global HAL_UART_Abort 1078 .syntax unified 1079 .code 16 1080 .thumb_func 1081 .fpu softvfp 1083 HAL_UART_Abort: 1084 .LFB55: 1215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1085 .loc 1 1215 0 1086 .cfi_startproc 1087 @ args = 0, pretend = 0, frame = 0 1088 @ frame_needed = 0, uses_anonymous_args = 0 1089 .LVL83: 1090 0000 10B5 push {r4, lr} 1091 .LCFI6: 1092 .cfi_def_cfa_offset 8 1093 .cfi_offset 4, -8 1094 .cfi_offset 14, -4 1095 0002 0400 movs r4, r0 1217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1096 .loc 1 1217 0 1097 0004 0268 ldr r2, [r0] 1098 0006 1368 ldr r3, [r2] 1099 0008 1C49 ldr r1, .L84 1100 000a 0B40 ands r3, r1 1101 000c 1360 str r3, [r2] 1218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1102 .loc 1 1218 0 1103 000e 0268 ldr r2, [r0] 1104 0010 9368 ldr r3, [r2, #8] 1105 0012 E331 adds r1, r1, #227 1106 0014 FF31 adds r1, r1, #255 1107 0016 8B43 bics r3, r1 1108 0018 9360 str r3, [r2, #8] 1221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1109 .loc 1 1221 0 1110 001a 0368 ldr r3, [r0] 1111 001c 9A68 ldr r2, [r3, #8] 1112 001e 1206 lsls r2, r2, #24 1113 0020 0BD5 bpl .L82 1223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1114 .loc 1 1223 0 1115 0022 9A68 ldr r2, [r3, #8] 1116 0024 7F31 adds r1, r1, #127 1117 0026 8A43 bics r2, r1 1118 0028 9A60 str r2, [r3, #8] 1226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1119 .loc 1 1226 0 1120 002a 036E ldr r3, [r0, #96] ARM GAS /tmp/cc7An1gz.s page 65 1121 002c 002B cmp r3, #0 1122 002e 04D0 beq .L82 1230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1123 .loc 1 1230 0 1124 0030 0022 movs r2, #0 1125 0032 9A63 str r2, [r3, #56] 1232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1126 .loc 1 1232 0 1127 0034 006E ldr r0, [r0, #96] 1128 .LVL84: 1129 0036 FFF7FEFF bl HAL_DMA_Abort 1130 .LVL85: 1131 .L82: 1237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1132 .loc 1 1237 0 1133 003a 2368 ldr r3, [r4] 1134 003c 9A68 ldr r2, [r3, #8] 1135 003e 5206 lsls r2, r2, #25 1136 0040 0BD5 bpl .L83 1239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1137 .loc 1 1239 0 1138 0042 9A68 ldr r2, [r3, #8] 1139 0044 4021 movs r1, #64 1140 0046 8A43 bics r2, r1 1141 0048 9A60 str r2, [r3, #8] 1242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1142 .loc 1 1242 0 1143 004a 636E ldr r3, [r4, #100] 1144 004c 002B cmp r3, #0 1145 004e 04D0 beq .L83 1246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1146 .loc 1 1246 0 1147 0050 0022 movs r2, #0 1148 0052 9A63 str r2, [r3, #56] 1248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1149 .loc 1 1248 0 1150 0054 606E ldr r0, [r4, #100] 1151 0056 FFF7FEFF bl HAL_DMA_Abort 1152 .LVL86: 1153 .L83: 1253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 1154 .loc 1 1253 0 1155 005a 0023 movs r3, #0 1156 005c 5222 movs r2, #82 1157 005e A352 strh r3, [r4, r2] 1254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1158 .loc 1 1254 0 1159 0060 0832 adds r2, r2, #8 1160 0062 A352 strh r3, [r4, r2] 1257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1161 .loc 1 1257 0 1162 0064 2268 ldr r2, [r4] 1163 0066 0F21 movs r1, #15 1164 0068 1162 str r1, [r2, #32] 1260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1165 .loc 1 1260 0 1166 006a 2022 movs r2, #32 ARM GAS /tmp/cc7An1gz.s page 66 1167 006c 5A31 adds r1, r1, #90 1168 006e 6254 strb r2, [r4, r1] 1261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1169 .loc 1 1261 0 1170 0070 0131 adds r1, r1, #1 1171 0072 6254 strb r2, [r4, r1] 1264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1172 .loc 1 1264 0 1173 0074 E366 str r3, [r4, #108] 1267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1174 .loc 1 1267 0 1175 0076 0020 movs r0, #0 1176 @ sp needed 1177 .LVL87: 1178 0078 10BD pop {r4, pc} 1179 .L85: 1180 007a C046 .align 2 1181 .L84: 1182 007c 1FFEFFFF .word -481 1183 .cfi_endproc 1184 .LFE55: 1186 .section .text.HAL_UART_AbortTransmit,"ax",%progbits 1187 .align 1 1188 .global HAL_UART_AbortTransmit 1189 .syntax unified 1190 .code 16 1191 .thumb_func 1192 .fpu softvfp 1194 HAL_UART_AbortTransmit: 1195 .LFB56: 1282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE and TCIE interrupts */ 1196 .loc 1 1282 0 1197 .cfi_startproc 1198 @ args = 0, pretend = 0, frame = 0 1199 @ frame_needed = 0, uses_anonymous_args = 0 1200 .LVL88: 1201 0000 10B5 push {r4, lr} 1202 .LCFI7: 1203 .cfi_def_cfa_offset 8 1204 .cfi_offset 4, -8 1205 .cfi_offset 14, -4 1206 0002 0400 movs r4, r0 1284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1207 .loc 1 1284 0 1208 0004 0268 ldr r2, [r0] 1209 0006 1368 ldr r3, [r2] 1210 0008 C021 movs r1, #192 1211 000a 8B43 bics r3, r1 1212 000c 1360 str r3, [r2] 1287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1213 .loc 1 1287 0 1214 000e 0368 ldr r3, [r0] 1215 0010 9A68 ldr r2, [r3, #8] 1216 0012 1206 lsls r2, r2, #24 1217 0014 0BD5 bpl .L87 1289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1218 .loc 1 1289 0 ARM GAS /tmp/cc7An1gz.s page 67 1219 0016 9A68 ldr r2, [r3, #8] 1220 0018 4039 subs r1, r1, #64 1221 001a 8A43 bics r2, r1 1222 001c 9A60 str r2, [r3, #8] 1292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1223 .loc 1 1292 0 1224 001e 036E ldr r3, [r0, #96] 1225 0020 002B cmp r3, #0 1226 0022 04D0 beq .L87 1296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1227 .loc 1 1296 0 1228 0024 0022 movs r2, #0 1229 0026 9A63 str r2, [r3, #56] 1298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1230 .loc 1 1298 0 1231 0028 006E ldr r0, [r0, #96] 1232 .LVL89: 1233 002a FFF7FEFF bl HAL_DMA_Abort 1234 .LVL90: 1235 .L87: 1303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1236 .loc 1 1303 0 1237 002e 5223 movs r3, #82 1238 0030 0022 movs r2, #0 1239 0032 E252 strh r2, [r4, r3] 1306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1240 .loc 1 1306 0 1241 0034 1733 adds r3, r3, #23 1242 0036 2032 adds r2, r2, #32 1243 0038 E254 strb r2, [r4, r3] 1309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1244 .loc 1 1309 0 1245 003a 0020 movs r0, #0 1246 @ sp needed 1247 .LVL91: 1248 003c 10BD pop {r4, pc} 1249 .cfi_endproc 1250 .LFE56: 1252 .section .text.HAL_UART_AbortReceive,"ax",%progbits 1253 .align 1 1254 .global HAL_UART_AbortReceive 1255 .syntax unified 1256 .code 16 1257 .thumb_func 1258 .fpu softvfp 1260 HAL_UART_AbortReceive: 1261 .LFB57: 1324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 1262 .loc 1 1324 0 1263 .cfi_startproc 1264 @ args = 0, pretend = 0, frame = 0 1265 @ frame_needed = 0, uses_anonymous_args = 0 1266 .LVL92: 1267 0000 10B5 push {r4, lr} 1268 .LCFI8: 1269 .cfi_def_cfa_offset 8 1270 .cfi_offset 4, -8 ARM GAS /tmp/cc7An1gz.s page 68 1271 .cfi_offset 14, -4 1272 0002 0400 movs r4, r0 1326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1273 .loc 1 1326 0 1274 0004 0268 ldr r2, [r0] 1275 0006 1368 ldr r3, [r2] 1276 0008 1149 ldr r1, .L90 1277 000a 0B40 ands r3, r1 1278 000c 1360 str r3, [r2] 1327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1279 .loc 1 1327 0 1280 000e 0268 ldr r2, [r0] 1281 0010 9368 ldr r3, [r2, #8] 1282 0012 2331 adds r1, r1, #35 1283 0014 FF31 adds r1, r1, #255 1284 0016 8B43 bics r3, r1 1285 0018 9360 str r3, [r2, #8] 1330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1286 .loc 1 1330 0 1287 001a 0368 ldr r3, [r0] 1288 001c 9A68 ldr r2, [r3, #8] 1289 001e 5206 lsls r2, r2, #25 1290 0020 0BD5 bpl .L89 1332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1291 .loc 1 1332 0 1292 0022 9A68 ldr r2, [r3, #8] 1293 0024 3F31 adds r1, r1, #63 1294 0026 8A43 bics r2, r1 1295 0028 9A60 str r2, [r3, #8] 1335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1296 .loc 1 1335 0 1297 002a 436E ldr r3, [r0, #100] 1298 002c 002B cmp r3, #0 1299 002e 04D0 beq .L89 1339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1300 .loc 1 1339 0 1301 0030 0022 movs r2, #0 1302 0032 9A63 str r2, [r3, #56] 1341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1303 .loc 1 1341 0 1304 0034 406E ldr r0, [r0, #100] 1305 .LVL93: 1306 0036 FFF7FEFF bl HAL_DMA_Abort 1307 .LVL94: 1308 .L89: 1346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1309 .loc 1 1346 0 1310 003a 5A23 movs r3, #90 1311 003c 0022 movs r2, #0 1312 003e E252 strh r2, [r4, r3] 1349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1313 .loc 1 1349 0 1314 0040 2368 ldr r3, [r4] 1315 0042 0F32 adds r2, r2, #15 1316 0044 1A62 str r2, [r3, #32] 1352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1317 .loc 1 1352 0 ARM GAS /tmp/cc7An1gz.s page 69 1318 0046 6A23 movs r3, #106 1319 0048 1132 adds r2, r2, #17 1320 004a E254 strb r2, [r4, r3] 1355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1321 .loc 1 1355 0 1322 004c 0020 movs r0, #0 1323 @ sp needed 1324 .LVL95: 1325 004e 10BD pop {r4, pc} 1326 .L91: 1327 .align 2 1328 .L90: 1329 0050 DFFEFFFF .word -289 1330 .cfi_endproc 1331 .LFE57: 1333 .section .text.HAL_UART_TxCpltCallback,"ax",%progbits 1334 .align 1 1335 .weak HAL_UART_TxCpltCallback 1336 .syntax unified 1337 .code 16 1338 .thumb_func 1339 .fpu softvfp 1341 HAL_UART_TxCpltCallback: 1342 .LFB62: 1777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1343 .loc 1 1777 0 1344 .cfi_startproc 1345 @ args = 0, pretend = 0, frame = 0 1346 @ frame_needed = 0, uses_anonymous_args = 0 1347 @ link register save eliminated. 1348 .LVL96: 1784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1349 .loc 1 1784 0 1350 @ sp needed 1351 0000 7047 bx lr 1352 .cfi_endproc 1353 .LFE62: 1355 .section .text.UART_DMATransmitCplt,"ax",%progbits 1356 .align 1 1357 .syntax unified 1358 .code 16 1359 .thumb_func 1360 .fpu softvfp 1362 UART_DMATransmitCplt: 1363 .LFB84: 2481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART transmit process complete callback. 2486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma) 2490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1364 .loc 1 2490 0 1365 .cfi_startproc ARM GAS /tmp/cc7An1gz.s page 70 1366 @ args = 0, pretend = 0, frame = 0 1367 @ frame_needed = 0, uses_anonymous_args = 0 1368 .LVL97: 1369 0000 10B5 push {r4, lr} 1370 .LCFI9: 1371 .cfi_def_cfa_offset 8 1372 .cfi_offset 4, -8 1373 .cfi_offset 14, -4 2491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 1374 .loc 1 2491 0 1375 0002 836A ldr r3, [r0, #40] 1376 .LVL98: 2492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DMA Normal mode */ 2494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ( HAL_IS_BIT_CLR(hdma->Instance->CCR, DMA_CCR_CIRC) ) 1377 .loc 1 2494 0 1378 0004 0268 ldr r2, [r0] 1379 0006 1268 ldr r2, [r2] 1380 0008 9206 lsls r2, r2, #26 1381 000a 0DD4 bmi .L94 2495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0U; 1382 .loc 1 2496 0 1383 000c 5222 movs r2, #82 1384 000e 0021 movs r1, #0 1385 0010 9952 strh r1, [r3, r2] 2497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the DMA transfer for transmit request by resetting the DMAT bit 2499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the UART CR3 register */ 2500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); 1386 .loc 1 2500 0 1387 0012 1968 ldr r1, [r3] 1388 0014 8A68 ldr r2, [r1, #8] 1389 0016 8020 movs r0, #128 1390 .LVL99: 1391 0018 8243 bics r2, r0 1392 001a 8A60 str r2, [r1, #8] 2501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Transmit Complete Interrupt */ 2503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); 1393 .loc 1 2503 0 1394 001c 1A68 ldr r2, [r3] 1395 001e 1368 ldr r3, [r2] 1396 .LVL100: 1397 0020 4021 movs r1, #64 1398 0022 0B43 orrs r3, r1 1399 0024 1360 str r3, [r2] 1400 .L93: 2504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DMA Circular mode */ 2506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_TxCpltCallback(huart); 2509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1401 .loc 1 2511 0 ARM GAS /tmp/cc7An1gz.s page 71 1402 @ sp needed 1403 0026 10BD pop {r4, pc} 1404 .LVL101: 1405 .L94: 2508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1406 .loc 1 2508 0 1407 0028 1800 movs r0, r3 1408 .LVL102: 1409 002a FFF7FEFF bl HAL_UART_TxCpltCallback 1410 .LVL103: 1411 .loc 1 2511 0 1412 002e FAE7 b .L93 1413 .cfi_endproc 1414 .LFE84: 1416 .section .text.HAL_UART_TxHalfCpltCallback,"ax",%progbits 1417 .align 1 1418 .weak HAL_UART_TxHalfCpltCallback 1419 .syntax unified 1420 .code 16 1421 .thumb_func 1422 .fpu softvfp 1424 HAL_UART_TxHalfCpltCallback: 1425 .LFB63: 1792:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1426 .loc 1 1792 0 1427 .cfi_startproc 1428 @ args = 0, pretend = 0, frame = 0 1429 @ frame_needed = 0, uses_anonymous_args = 0 1430 @ link register save eliminated. 1431 .LVL104: 1799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1432 .loc 1 1799 0 1433 @ sp needed 1434 0000 7047 bx lr 1435 .cfi_endproc 1436 .LFE63: 1438 .section .text.UART_DMATxHalfCplt,"ax",%progbits 1439 .align 1 1440 .syntax unified 1441 .code 16 1442 .thumb_func 1443 .fpu softvfp 1445 UART_DMATxHalfCplt: 1446 .LFB85: 2512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART transmit process half complete callback. 2515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma) 2519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1447 .loc 1 2519 0 1448 .cfi_startproc 1449 @ args = 0, pretend = 0, frame = 0 1450 @ frame_needed = 0, uses_anonymous_args = 0 1451 .LVL105: ARM GAS /tmp/cc7An1gz.s page 72 1452 0000 10B5 push {r4, lr} 1453 .LCFI10: 1454 .cfi_def_cfa_offset 8 1455 .cfi_offset 4, -8 1456 .cfi_offset 14, -4 2520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 1457 .loc 1 2520 0 1458 0002 806A ldr r0, [r0, #40] 1459 .LVL106: 2521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_TxHalfCpltCallback(huart); 1460 .loc 1 2522 0 1461 0004 FFF7FEFF bl HAL_UART_TxHalfCpltCallback 1462 .LVL107: 2523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1463 .loc 1 2523 0 1464 @ sp needed 1465 0008 10BD pop {r4, pc} 1466 .cfi_endproc 1467 .LFE85: 1469 .section .text.HAL_UART_RxCpltCallback,"ax",%progbits 1470 .align 1 1471 .weak HAL_UART_RxCpltCallback 1472 .syntax unified 1473 .code 16 1474 .thumb_func 1475 .fpu softvfp 1477 HAL_UART_RxCpltCallback: 1478 .LFB64: 1807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1479 .loc 1 1807 0 1480 .cfi_startproc 1481 @ args = 0, pretend = 0, frame = 0 1482 @ frame_needed = 0, uses_anonymous_args = 0 1483 @ link register save eliminated. 1484 .LVL108: 1814:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1485 .loc 1 1814 0 1486 @ sp needed 1487 0000 7047 bx lr 1488 .cfi_endproc 1489 .LFE64: 1491 .section .text.UART_DMAReceiveCplt,"ax",%progbits 1492 .align 1 1493 .syntax unified 1494 .code 16 1495 .thumb_func 1496 .fpu softvfp 1498 UART_DMAReceiveCplt: 1499 .LFB86: 2524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART receive process complete callback. 2527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2528:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma) ARM GAS /tmp/cc7An1gz.s page 73 2531:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1500 .loc 1 2531 0 1501 .cfi_startproc 1502 @ args = 0, pretend = 0, frame = 0 1503 @ frame_needed = 0, uses_anonymous_args = 0 1504 .LVL109: 1505 0000 10B5 push {r4, lr} 1506 .LCFI11: 1507 .cfi_def_cfa_offset 8 1508 .cfi_offset 4, -8 1509 .cfi_offset 14, -4 2532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 1510 .loc 1 2532 0 1511 0002 836A ldr r3, [r0, #40] 1512 .LVL110: 2533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* DMA Normal mode */ 2535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ( HAL_IS_BIT_CLR(hdma->Instance->CCR, DMA_CCR_CIRC) ) 1513 .loc 1 2535 0 1514 0004 0268 ldr r2, [r0] 1515 0006 1268 ldr r2, [r2] 1516 0008 9206 lsls r2, r2, #26 1517 000a 15D4 bmi .L100 2536:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2537:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0U; 1518 .loc 1 2537 0 1519 000c 5A22 movs r2, #90 1520 000e 0021 movs r1, #0 1521 0010 9952 strh r1, [r3, r2] 2538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2539:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ 2540:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); 1522 .loc 1 2540 0 1523 0012 1968 ldr r1, [r3] 1524 0014 0A68 ldr r2, [r1] 1525 0016 0A48 ldr r0, .L101 1526 .LVL111: 1527 0018 0240 ands r2, r0 1528 001a 0A60 str r2, [r1] 2541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1529 .loc 1 2541 0 1530 001c 1968 ldr r1, [r3] 1531 001e 8A68 ldr r2, [r1, #8] 1532 0020 0330 adds r0, r0, #3 1533 0022 FF30 adds r0, r0, #255 1534 0024 8243 bics r2, r0 1535 0026 8A60 str r2, [r1, #8] 2542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the DMA transfer for the receiver request by resetting the DMAR bit 2544:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** in the UART CR3 register */ 2545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); 1536 .loc 1 2545 0 1537 0028 1968 ldr r1, [r3] 1538 002a 8A68 ldr r2, [r1, #8] 1539 002c 3F30 adds r0, r0, #63 1540 002e 8243 bics r2, r0 1541 0030 8A60 str r2, [r1, #8] ARM GAS /tmp/cc7An1gz.s page 74 2546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* At end of Rx process, restore huart->RxState to Ready */ 2548:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 1542 .loc 1 2548 0 1543 0032 6A22 movs r2, #106 1544 0034 2021 movs r1, #32 1545 0036 9954 strb r1, [r3, r2] 1546 .L100: 2549:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_RxCpltCallback(huart); 1547 .loc 1 2551 0 1548 0038 1800 movs r0, r3 1549 003a FFF7FEFF bl HAL_UART_RxCpltCallback 1550 .LVL112: 2552:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1551 .loc 1 2552 0 1552 @ sp needed 1553 003e 10BD pop {r4, pc} 1554 .L102: 1555 .align 2 1556 .L101: 1557 0040 FFFEFFFF .word -257 1558 .cfi_endproc 1559 .LFE86: 1561 .section .text.UART_Receive_IT,"ax",%progbits 1562 .align 1 1563 .syntax unified 1564 .code 16 1565 .thumb_func 1566 .fpu softvfp 1568 UART_Receive_IT: 1569 .LFB96: 2553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART receive process half complete callback. 2556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2557:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2558:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma) 2560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_RxHalfCpltCallback(huart); 2564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2566:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART communication error callback. 2568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2569:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAError(DMA_HandleTypeDef *hdma) 2572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2574:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Stop UART DMA Tx request if ongoing */ 2576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ( (huart->gState == HAL_UART_STATE_BUSY_TX) ARM GAS /tmp/cc7An1gz.s page 75 2577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** &&(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) ) 2578:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndTxTransfer(huart); 2581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2582:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Stop UART DMA Rx request if ongoing */ 2584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ( (huart->RxState == HAL_UART_STATE_BUSY_RX) 2585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** &&(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ) 2586:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2588:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndRxTransfer(huart); 2589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2590:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode |= HAL_UART_ERROR_DMA; 2592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 2593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2594:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2596:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART communication abort callback, when initiated by HAL services on Error 2597:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (To be called at end of DMA Abort procedure following error occurrence). 2598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2599:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2600:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma) 2602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2606:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 2608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2611:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART Tx communication abort callback, when initiated by user 2612:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (To be called at end of DMA Tx Abort procedure following user abort request). 2613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When this callback is executed, User Abort complete call back is called only if no 2614:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * Abort still ongoing for Rx DMA Handle. 2615:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2616:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma) 2619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef* )(hdma->Parent); 2621:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmatx->XferAbortCallback = NULL; 2623:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2624:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check if an Abort process is still ongoing */ 2625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx != NULL) 2626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmarx->XferAbortCallback != NULL) 2628:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 2630:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2631:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callba ARM GAS /tmp/cc7An1gz.s page 76 2634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2637:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset errorCode */ 2638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 2639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 2641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); 2642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2643:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState and huart->RxState to Ready */ 2644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user Abort complete callback */ 2648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortCpltCallback(huart); 2649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2653:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART Rx communication abort callback, when initiated by user 2654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (To be called at end of DMA Rx Abort procedure following user abort request). 2655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note When this callback is executed, User Abort complete call back is called only if no 2656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * Abort still ongoing for Tx DMA Handle. 2657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma) 2661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef* )(hdma->Parent); 2663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->hdmarx->XferAbortCallback = NULL; 2665:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check if an Abort process is still ongoing */ 2667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx != NULL) 2668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->hdmatx->XferAbortCallback != NULL) 2670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2671:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 2672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callba 2676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Reset errorCode */ 2680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 2681:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2682:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 2683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); 2684:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState and huart->RxState to Ready */ 2686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user Abort complete callback */ 2690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortCpltCallback(huart); ARM GAS /tmp/cc7An1gz.s page 77 2691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART Tx communication abort callback, when initiated by user by a call to 2696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * HAL_UART_AbortTransmit_IT API (Abort only Tx transfer) 2697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (This callback is executed at end of DMA Tx Abort procedure following user abort reques 2698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * and leads to user Tx Abort Complete callback execution). 2699:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2701:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma) 2703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->gState to Ready */ 2709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user Abort complete callback */ 2712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortTransmitCpltCallback(huart); 2713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2715:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2716:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief DMA UART Rx communication abort callback, when initiated by user by a call to 2717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * HAL_UART_AbortReceive_IT API (Abort only Rx transfer) 2718:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * (This callback is executed at end of DMA Rx Abort procedure following user abort reques 2719:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * and leads to user Rx Abort Complete callback execution). 2720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param hdma DMA handle. 2721:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval None 2722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma) 2724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = ( UART_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; 2726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear the Error flags in the ICR register */ 2730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); 2731:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2732:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Restore huart->RxState to Ready */ 2733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2735:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Call user Abort complete callback */ 2736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_AbortReceiveCpltCallback(huart); 2737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2738:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2739:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2740:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Send an amount of data in interrupt mode. 2741:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note Function is called under interruption only, once 2742:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * interruptions have been enabled by HAL_UART_Transmit_IT(). 2743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2744:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2746:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart) 2747:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 78 2748:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 2749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2750:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Tx process is ongoing */ 2751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (huart->gState == HAL_UART_STATE_BUSY_TX) 2752:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->TxXferCount == 0U) 2754:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2755:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART Transmit Data Register Empty Interrupt */ 2756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE); 2757:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2758:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the UART Transmit Complete Interrupt */ 2759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); 2760:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2762:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2764:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE 2766:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2767:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmp = (uint16_t*) huart->pTxBuffPtr; 2768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->TDR = (*tmp & (uint16_t)0x01FFU); 2769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pTxBuffPtr += 2U; 2770:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2772:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2773:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr++ & (uint8_t)0xFFU); 2774:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2775:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount--; 2776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2778:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2779:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2781:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2782:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 2783:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2785:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Wrap up transmission in non-blocking mode. 2788:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart pointer to a UART_HandleTypeDef structure that contains 2789:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * the configuration information for the specified UART module. 2790:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2792:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_EndTransmit_IT(UART_HandleTypeDef *huart) 2793:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2794:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART Transmit Complete Interrupt */ 2795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE); 2796:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2797:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Tx process is ended, restore huart->gState to Ready */ 2798:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_READY; 2799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2800:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_TxCpltCallback(huart); 2801:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2802:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2803:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2804:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 79 2805:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 2806:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @brief Receive an amount of data in interrupt mode. 2807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @note Function is called under interruption only, once 2808:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * interruptions have been enabled by HAL_UART_Receive_IT() 2809:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @param huart UART handle. 2810:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** * @retval HAL status 2811:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** */ 2812:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart) 2813:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1570 .loc 1 2813 0 1571 .cfi_startproc 1572 @ args = 0, pretend = 0, frame = 0 1573 @ frame_needed = 0, uses_anonymous_args = 0 1574 .LVL113: 1575 0000 70B5 push {r4, r5, r6, lr} 1576 .LCFI12: 1577 .cfi_def_cfa_offset 16 1578 .cfi_offset 4, -16 1579 .cfi_offset 5, -12 1580 .cfi_offset 6, -8 1581 .cfi_offset 14, -4 2814:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 2815:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t uhMask = huart->Mask; 1582 .loc 1 2815 0 1583 0002 5C23 movs r3, #92 1584 0004 C35A ldrh r3, [r0, r3] 1585 .LVL114: 2816:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t uhdata; 2817:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2818:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check that a Rx process is ongoing */ 2819:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(huart->RxState == HAL_UART_STATE_BUSY_RX) 1586 .loc 1 2819 0 1587 0006 6A22 movs r2, #106 1588 0008 825C ldrb r2, [r0, r2] 1589 000a 222A cmp r2, #34 1590 000c 32D1 bne .L104 2820:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2821:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhdata = (uint16_t) READ_REG(huart->Instance->RDR); 1591 .loc 1 2821 0 1592 000e 0268 ldr r2, [r0] 1593 0010 526A ldr r2, [r2, #36] 1594 0012 94B2 uxth r4, r2 1595 .LVL115: 2822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) 1596 .loc 1 2822 0 1597 0014 8021 movs r1, #128 1598 0016 4901 lsls r1, r1, #5 1599 0018 8568 ldr r5, [r0, #8] 1600 001a 8D42 cmp r5, r1 1601 001c 0ED0 beq .L109 1602 .L105: 2823:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2824:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** tmp = (uint16_t*) huart->pRxBuffPtr ; 2825:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** *tmp = (uint16_t)(uhdata & uhMask); 2826:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pRxBuffPtr +=2; 2827:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2828:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else ARM GAS /tmp/cc7An1gz.s page 80 2829:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2830:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** *huart->pRxBuffPtr++ = (uint8_t)(uhdata & (uint8_t)uhMask); 1603 .loc 1 2830 0 1604 001e DBB2 uxtb r3, r3 1605 .LVL116: 1606 0020 416D ldr r1, [r0, #84] 1607 0022 4C1C adds r4, r1, #1 1608 .LVL117: 1609 0024 4465 str r4, [r0, #84] 1610 .LVL118: 1611 0026 1340 ands r3, r2 1612 0028 0B70 strb r3, [r1] 1613 .LVL119: 1614 .L106: 2831:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2832:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2833:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(--huart->RxXferCount == 0U) 1615 .loc 1 2833 0 1616 002a 5A22 movs r2, #90 1617 002c 835A ldrh r3, [r0, r2] 1618 002e 013B subs r3, r3, #1 1619 0030 9BB2 uxth r3, r3 1620 0032 8352 strh r3, [r0, r2] 1621 0034 002B cmp r3, #0 1622 0036 0BD0 beq .L110 2834:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2835:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART Parity Error Interrupt and RXNE interrupt*/ 2836:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); 2837:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2838:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ 2839:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 2840:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2841:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Rx process is completed, restore huart->RxState to Ready */ 2842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2843:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_RxCpltCallback(huart); 2845:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 2847:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2848:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2849:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_OK; 1623 .loc 1 2849 0 1624 0038 0020 movs r0, #0 1625 .LVL120: 1626 003a 21E0 b .L107 1627 .LVL121: 1628 .L109: 2822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1629 .loc 1 2822 0 discriminator 1 1630 003c 0169 ldr r1, [r0, #16] 1631 003e 0029 cmp r1, #0 1632 0040 EDD1 bne .L105 1633 .LVL122: 2825:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pRxBuffPtr +=2; 1634 .loc 1 2825 0 1635 0042 2340 ands r3, r4 1636 .LVL123: ARM GAS /tmp/cc7An1gz.s page 81 1637 0044 426D ldr r2, [r0, #84] 1638 0046 1380 strh r3, [r2] 1639 .LVL124: 2826:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1640 .loc 1 2826 0 1641 0048 436D ldr r3, [r0, #84] 1642 004a 0233 adds r3, r3, #2 1643 004c 4365 str r3, [r0, #84] 1644 004e ECE7 b .L106 1645 .LVL125: 1646 .L110: 2836:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1647 .loc 1 2836 0 1648 0050 0268 ldr r2, [r0] 1649 0052 1368 ldr r3, [r2] 1650 0054 0B49 ldr r1, .L111 1651 0056 0B40 ands r3, r1 1652 0058 1360 str r3, [r2] 2839:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1653 .loc 1 2839 0 1654 005a 0268 ldr r2, [r0] 1655 005c 9368 ldr r3, [r2, #8] 1656 005e 2331 adds r1, r1, #35 1657 0060 FF31 adds r1, r1, #255 1658 0062 8B43 bics r3, r1 1659 0064 9360 str r3, [r2, #8] 2842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1660 .loc 1 2842 0 1661 0066 6A23 movs r3, #106 1662 0068 2022 movs r2, #32 1663 006a C254 strb r2, [r0, r3] 2844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1664 .loc 1 2844 0 1665 006c FFF7FEFF bl HAL_UART_RxCpltCallback 1666 .LVL126: 2846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1667 .loc 1 2846 0 1668 0070 0020 movs r0, #0 1669 0072 05E0 b .L107 1670 .LVL127: 1671 .L104: 2850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2851:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** else 2852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2853:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Clear RXNE interrupt flag */ 2854:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); 1672 .loc 1 2854 0 1673 0074 0268 ldr r2, [r0] 1674 0076 9369 ldr r3, [r2, #24] 1675 .LVL128: 1676 0078 0821 movs r1, #8 1677 007a 0B43 orrs r3, r1 1678 007c 9361 str r3, [r2, #24] 1679 .LVL129: 2855:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2856:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_BUSY; 1680 .loc 1 2856 0 ARM GAS /tmp/cc7An1gz.s page 82 1681 007e 0220 movs r0, #2 1682 .LVL130: 1683 .L107: 2857:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2858:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1684 .loc 1 2858 0 1685 @ sp needed 1686 0080 70BD pop {r4, r5, r6, pc} 1687 .L112: 1688 0082 C046 .align 2 1689 .L111: 1690 0084 DFFEFFFF .word -289 1691 .cfi_endproc 1692 .LFE96: 1694 .section .text.HAL_UART_RxHalfCpltCallback,"ax",%progbits 1695 .align 1 1696 .weak HAL_UART_RxHalfCpltCallback 1697 .syntax unified 1698 .code 16 1699 .thumb_func 1700 .fpu softvfp 1702 HAL_UART_RxHalfCpltCallback: 1703 .LFB65: 1822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1704 .loc 1 1822 0 1705 .cfi_startproc 1706 @ args = 0, pretend = 0, frame = 0 1707 @ frame_needed = 0, uses_anonymous_args = 0 1708 @ link register save eliminated. 1709 .LVL131: 1829:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1710 .loc 1 1829 0 1711 @ sp needed 1712 0000 7047 bx lr 1713 .cfi_endproc 1714 .LFE65: 1716 .section .text.UART_DMARxHalfCplt,"ax",%progbits 1717 .align 1 1718 .syntax unified 1719 .code 16 1720 .thumb_func 1721 .fpu softvfp 1723 UART_DMARxHalfCplt: 1724 .LFB87: 2560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 1725 .loc 1 2560 0 1726 .cfi_startproc 1727 @ args = 0, pretend = 0, frame = 0 1728 @ frame_needed = 0, uses_anonymous_args = 0 1729 .LVL132: 1730 0000 10B5 push {r4, lr} 1731 .LCFI13: 1732 .cfi_def_cfa_offset 8 1733 .cfi_offset 4, -8 1734 .cfi_offset 14, -4 2561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1735 .loc 1 2561 0 ARM GAS /tmp/cc7An1gz.s page 83 1736 0002 806A ldr r0, [r0, #40] 1737 .LVL133: 2563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1738 .loc 1 2563 0 1739 0004 FFF7FEFF bl HAL_UART_RxHalfCpltCallback 1740 .LVL134: 2564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1741 .loc 1 2564 0 1742 @ sp needed 1743 0008 10BD pop {r4, pc} 1744 .cfi_endproc 1745 .LFE87: 1747 .section .text.HAL_UART_ErrorCallback,"ax",%progbits 1748 .align 1 1749 .weak HAL_UART_ErrorCallback 1750 .syntax unified 1751 .code 16 1752 .thumb_func 1753 .fpu softvfp 1755 HAL_UART_ErrorCallback: 1756 .LFB66: 1837:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 1757 .loc 1 1837 0 1758 .cfi_startproc 1759 @ args = 0, pretend = 0, frame = 0 1760 @ frame_needed = 0, uses_anonymous_args = 0 1761 @ link register save eliminated. 1762 .LVL135: 1844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1763 .loc 1 1844 0 1764 @ sp needed 1765 0000 7047 bx lr 1766 .cfi_endproc 1767 .LFE66: 1769 .section .text.UART_DMAError,"ax",%progbits 1770 .align 1 1771 .syntax unified 1772 .code 16 1773 .thumb_func 1774 .fpu softvfp 1776 UART_DMAError: 1777 .LFB88: 2572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 1778 .loc 1 2572 0 1779 .cfi_startproc 1780 @ args = 0, pretend = 0, frame = 0 1781 @ frame_needed = 0, uses_anonymous_args = 0 1782 .LVL136: 1783 0000 10B5 push {r4, lr} 1784 .LCFI14: 1785 .cfi_def_cfa_offset 8 1786 .cfi_offset 4, -8 1787 .cfi_offset 14, -4 2573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1788 .loc 1 2573 0 1789 0002 806A ldr r0, [r0, #40] 1790 .LVL137: ARM GAS /tmp/cc7An1gz.s page 84 2576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** &&(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) ) 1791 .loc 1 2576 0 1792 0004 6923 movs r3, #105 1793 0006 C35C ldrb r3, [r0, r3] 1794 0008 212B cmp r3, #33 1795 000a 0AD0 beq .L119 1796 .L117: 2584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** &&(HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ) 1797 .loc 1 2584 0 1798 000c 6A23 movs r3, #106 1799 000e C35C ldrb r3, [r0, r3] 1800 0010 222B cmp r3, #34 1801 0012 15D0 beq .L120 1802 .L118: 2591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UART_ErrorCallback(huart); 1803 .loc 1 2591 0 1804 0014 C36E ldr r3, [r0, #108] 1805 0016 1022 movs r2, #16 1806 0018 1343 orrs r3, r2 1807 001a C366 str r3, [r0, #108] 2592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1808 .loc 1 2592 0 1809 001c FFF7FEFF bl HAL_UART_ErrorCallback 1810 .LVL138: 2593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1811 .loc 1 2593 0 1812 @ sp needed 1813 0020 10BD pop {r4, pc} 1814 .LVL139: 1815 .L119: 2577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1816 .loc 1 2577 0 1817 0022 0368 ldr r3, [r0] 1818 0024 9A68 ldr r2, [r3, #8] 1819 0026 1206 lsls r2, r2, #24 1820 0028 F0D5 bpl .L117 2579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndTxTransfer(huart); 1821 .loc 1 2579 0 1822 002a 5222 movs r2, #82 1823 002c 0021 movs r1, #0 1824 002e 8152 strh r1, [r0, r2] 1825 .LVL140: 1826 .LBB18: 1827 .LBB19: 2461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1828 .loc 1 2461 0 1829 0030 1A68 ldr r2, [r3] 1830 0032 C031 adds r1, r1, #192 1831 0034 8A43 bics r2, r1 1832 0036 1A60 str r2, [r3] 2464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1833 .loc 1 2464 0 1834 0038 6923 movs r3, #105 1835 003a 2022 movs r2, #32 1836 003c C254 strb r2, [r0, r3] 1837 003e E5E7 b .L117 1838 .LVL141: ARM GAS /tmp/cc7An1gz.s page 85 1839 .L120: 1840 .LBE19: 1841 .LBE18: 2585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1842 .loc 1 2585 0 1843 0040 0368 ldr r3, [r0] 1844 0042 9A68 ldr r2, [r3, #8] 1845 0044 5206 lsls r2, r2, #25 1846 0046 E5D5 bpl .L118 2587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_EndRxTransfer(huart); 1847 .loc 1 2587 0 1848 0048 5A22 movs r2, #90 1849 004a 0021 movs r1, #0 1850 004c 8152 strh r1, [r0, r2] 1851 .LVL142: 1852 .LBB20: 1853 .LBB21: 2476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 1854 .loc 1 2476 0 1855 004e 1A68 ldr r2, [r3] 1856 0050 0649 ldr r1, .L121 1857 0052 0A40 ands r2, r1 1858 0054 1A60 str r2, [r3] 2477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1859 .loc 1 2477 0 1860 0056 0268 ldr r2, [r0] 1861 0058 9368 ldr r3, [r2, #8] 1862 005a 2331 adds r1, r1, #35 1863 005c FF31 adds r1, r1, #255 1864 005e 8B43 bics r3, r1 1865 0060 9360 str r3, [r2, #8] 2480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1866 .loc 1 2480 0 1867 0062 6A23 movs r3, #106 1868 0064 2022 movs r2, #32 1869 0066 C254 strb r2, [r0, r3] 1870 0068 D4E7 b .L118 1871 .L122: 1872 006a C046 .align 2 1873 .L121: 1874 006c DFFEFFFF .word -289 1875 .LBE21: 1876 .LBE20: 1877 .cfi_endproc 1878 .LFE88: 1880 .section .text.HAL_UART_IRQHandler,"ax",%progbits 1881 .align 1 1882 .global HAL_UART_IRQHandler 1883 .syntax unified 1884 .code 16 1885 .thumb_func 1886 .fpu softvfp 1888 HAL_UART_IRQHandler: 1889 .LFB61: 1625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t isrflags = READ_REG(huart->Instance->ISR); 1890 .loc 1 1625 0 1891 .cfi_startproc ARM GAS /tmp/cc7An1gz.s page 86 1892 @ args = 0, pretend = 0, frame = 0 1893 @ frame_needed = 0, uses_anonymous_args = 0 1894 .LVL143: 1895 0000 70B5 push {r4, r5, r6, lr} 1896 .LCFI15: 1897 .cfi_def_cfa_offset 16 1898 .cfi_offset 4, -16 1899 .cfi_offset 5, -12 1900 .cfi_offset 6, -8 1901 .cfi_offset 14, -4 1902 0002 0400 movs r4, r0 1626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t cr1its = READ_REG(huart->Instance->CR1); 1903 .loc 1 1626 0 1904 0004 0168 ldr r1, [r0] 1905 0006 CB69 ldr r3, [r1, #28] 1906 .LVL144: 1627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t cr3its; 1907 .loc 1 1627 0 1908 0008 0868 ldr r0, [r1] 1909 .LVL145: 1632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (errorflags == RESET) 1910 .loc 1 1632 0 1911 000a 0F22 movs r2, #15 1912 000c 1A40 ands r2, r3 1913 .LVL146: 1633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1914 .loc 1 1633 0 1915 000e 03D1 bne .L124 1636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1916 .loc 1 1636 0 1917 0010 9D06 lsls r5, r3, #26 1918 0012 01D5 bpl .L124 1636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1919 .loc 1 1636 0 is_stmt 0 discriminator 1 1920 0014 8506 lsls r5, r0, #26 1921 0016 66D4 bmi .L144 1922 .L124: 1644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if( (errorflags != RESET) 1923 .loc 1 1644 0 is_stmt 1 1924 0018 8D68 ldr r5, [r1, #8] 1925 .LVL147: 1645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** && ( ((cr3its & USART_CR3_EIE) != RESET) 1926 .loc 1 1645 0 1927 001a 002A cmp r2, #0 1928 001c 79D0 beq .L126 1646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)) ) 1929 .loc 1 1646 0 1930 001e 0122 movs r2, #1 1931 .LVL148: 1932 0020 2A40 ands r2, r5 1933 0022 03D1 bne .L127 1647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1934 .loc 1 1647 0 1935 0024 9026 movs r6, #144 1936 0026 7600 lsls r6, r6, #1 1937 0028 3042 tst r0, r6 1938 002a 72D0 beq .L126 ARM GAS /tmp/cc7An1gz.s page 87 1939 .L127: 1650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1940 .loc 1 1650 0 1941 002c DD07 lsls r5, r3, #31 1942 002e 06D5 bpl .L128 1943 .LVL149: 1650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1944 .loc 1 1650 0 is_stmt 0 discriminator 1 1945 0030 C505 lsls r5, r0, #23 1946 0032 04D5 bpl .L128 1652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1947 .loc 1 1652 0 is_stmt 1 1948 0034 0125 movs r5, #1 1949 0036 0D62 str r5, [r1, #32] 1654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1950 .loc 1 1654 0 1951 0038 E16E ldr r1, [r4, #108] 1952 003a 2943 orrs r1, r5 1953 003c E166 str r1, [r4, #108] 1954 .L128: 1658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1955 .loc 1 1658 0 1956 003e 9907 lsls r1, r3, #30 1957 0040 08D5 bpl .L129 1658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1958 .loc 1 1658 0 is_stmt 0 discriminator 1 1959 0042 002A cmp r2, #0 1960 0044 06D0 beq .L129 1660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1961 .loc 1 1660 0 is_stmt 1 1962 0046 2168 ldr r1, [r4] 1963 0048 0225 movs r5, #2 1964 004a 0D62 str r5, [r1, #32] 1662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1965 .loc 1 1662 0 1966 004c E16E ldr r1, [r4, #108] 1967 004e 0235 adds r5, r5, #2 1968 0050 2943 orrs r1, r5 1969 0052 E166 str r1, [r4, #108] 1970 .L129: 1666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1971 .loc 1 1666 0 1972 0054 5907 lsls r1, r3, #29 1973 0056 08D5 bpl .L130 1666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1974 .loc 1 1666 0 is_stmt 0 discriminator 1 1975 0058 002A cmp r2, #0 1976 005a 06D0 beq .L130 1668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1977 .loc 1 1668 0 is_stmt 1 1978 005c 2168 ldr r1, [r4] 1979 005e 0425 movs r5, #4 1980 0060 0D62 str r5, [r1, #32] 1670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 1981 .loc 1 1670 0 1982 0062 E16E ldr r1, [r4, #108] 1983 0064 023D subs r5, r5, #2 ARM GAS /tmp/cc7An1gz.s page 88 1984 0066 2943 orrs r1, r5 1985 0068 E166 str r1, [r4, #108] 1986 .L130: 1674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (((cr1its & USART_CR1_RXNEIE) != RESET) || ((cr3its & USART_CR3_EIE) != RESET))) 1987 .loc 1 1674 0 1988 006a 1907 lsls r1, r3, #28 1989 006c 09D5 bpl .L131 1674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (((cr1its & USART_CR1_RXNEIE) != RESET) || ((cr3its & USART_CR3_EIE) != RESET))) 1990 .loc 1 1674 0 is_stmt 0 discriminator 1 1991 006e 8106 lsls r1, r0, #26 1992 0070 01D4 bmi .L132 1675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 1993 .loc 1 1675 0 is_stmt 1 1994 0072 002A cmp r2, #0 1995 0074 05D0 beq .L131 1996 .L132: 1677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 1997 .loc 1 1677 0 1998 0076 2268 ldr r2, [r4] 1999 0078 0821 movs r1, #8 2000 007a 1162 str r1, [r2, #32] 1679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2001 .loc 1 1679 0 2002 007c E26E ldr r2, [r4, #108] 2003 007e 0A43 orrs r2, r1 2004 0080 E266 str r2, [r4, #108] 2005 .L131: 1683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2006 .loc 1 1683 0 2007 0082 E26E ldr r2, [r4, #108] 2008 0084 002A cmp r2, #0 2009 0086 50D0 beq .L123 1686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2010 .loc 1 1686 0 2011 0088 9B06 lsls r3, r3, #26 2012 008a 01D5 bpl .L133 2013 .LVL150: 1686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2014 .loc 1 1686 0 is_stmt 0 discriminator 1 2015 008c 8306 lsls r3, r0, #26 2016 008e 2ED4 bmi .L145 2017 .LVL151: 2018 .L133: 1693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 2019 .loc 1 1693 0 is_stmt 1 2020 0090 E36E ldr r3, [r4, #108] 2021 0092 1B07 lsls r3, r3, #28 2022 0094 03D4 bmi .L134 1694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2023 .loc 1 1694 0 discriminator 1 2024 0096 2368 ldr r3, [r4] 2025 0098 9B68 ldr r3, [r3, #8] 1693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))) 2026 .loc 1 1693 0 discriminator 1 2027 009a 5B06 lsls r3, r3, #25 2028 009c 33D5 bpl .L135 2029 .L134: ARM GAS /tmp/cc7An1gz.s page 89 2030 .LVL152: 2031 .LBB28: 2032 .LBB29: 2476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 2033 .loc 1 2476 0 2034 009e 2268 ldr r2, [r4] 2035 00a0 1368 ldr r3, [r2] 2036 00a2 4749 ldr r1, .L151 2037 00a4 0B40 ands r3, r1 2038 00a6 1360 str r3, [r2] 2477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2039 .loc 1 2477 0 2040 00a8 2268 ldr r2, [r4] 2041 00aa 9368 ldr r3, [r2, #8] 2042 00ac 2331 adds r1, r1, #35 2043 00ae FF31 adds r1, r1, #255 2044 00b0 8B43 bics r3, r1 2045 00b2 9360 str r3, [r2, #8] 2480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2046 .loc 1 2480 0 2047 00b4 6A23 movs r3, #106 2048 00b6 2022 movs r2, #32 2049 00b8 E254 strb r2, [r4, r3] 2050 .LVL153: 2051 .LBE29: 2052 .LBE28: 1702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2053 .loc 1 1702 0 2054 00ba 2368 ldr r3, [r4] 2055 00bc 9A68 ldr r2, [r3, #8] 2056 00be 5206 lsls r2, r2, #25 2057 00c0 1DD5 bpl .L136 1704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2058 .loc 1 1704 0 2059 00c2 9A68 ldr r2, [r3, #8] 2060 00c4 3F31 adds r1, r1, #63 2061 00c6 8A43 bics r2, r1 2062 00c8 9A60 str r2, [r3, #8] 1707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2063 .loc 1 1707 0 2064 00ca 636E ldr r3, [r4, #100] 2065 00cc 002B cmp r3, #0 2066 00ce 12D0 beq .L137 1711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2067 .loc 1 1711 0 2068 00d0 3C4A ldr r2, .L151+4 2069 00d2 9A63 str r2, [r3, #56] 1714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2070 .loc 1 1714 0 2071 00d4 606E ldr r0, [r4, #100] 2072 00d6 FFF7FEFF bl HAL_DMA_Abort_IT 2073 .LVL154: 2074 00da 0028 cmp r0, #0 2075 00dc 25D0 beq .L123 1717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2076 .loc 1 1717 0 2077 00de 606E ldr r0, [r4, #100] ARM GAS /tmp/cc7An1gz.s page 90 2078 00e0 836B ldr r3, [r0, #56] 2079 00e2 9847 blx r3 2080 .LVL155: 2081 00e4 21E0 b .L123 2082 .LVL156: 2083 .L144: 1638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 2084 .loc 1 1638 0 2085 00e6 2000 movs r0, r4 2086 .LVL157: 2087 00e8 FFF7FEFF bl UART_Receive_IT 2088 .LVL158: 1639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2089 .loc 1 1639 0 2090 00ec 1DE0 b .L123 2091 .LVL159: 2092 .L145: 1688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2093 .loc 1 1688 0 2094 00ee 2000 movs r0, r4 2095 .LVL160: 2096 00f0 FFF7FEFF bl UART_Receive_IT 2097 .LVL161: 2098 00f4 CCE7 b .L133 2099 .L137: 1723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2100 .loc 1 1723 0 2101 00f6 2000 movs r0, r4 2102 00f8 FFF7FEFF bl HAL_UART_ErrorCallback 2103 .LVL162: 2104 00fc 15E0 b .L123 2105 .L136: 1729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2106 .loc 1 1729 0 2107 00fe 2000 movs r0, r4 2108 0100 FFF7FEFF bl HAL_UART_ErrorCallback 2109 .LVL163: 2110 0104 11E0 b .L123 2111 .L135: 1736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->ErrorCode = HAL_UART_ERROR_NONE; 2112 .loc 1 1736 0 2113 0106 2000 movs r0, r4 2114 0108 FFF7FEFF bl HAL_UART_ErrorCallback 2115 .LVL164: 1737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2116 .loc 1 1737 0 2117 010c 0023 movs r3, #0 2118 010e E366 str r3, [r4, #108] 2119 0110 0BE0 b .L123 2120 .LVL165: 2121 .L126: 1745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2122 .loc 1 1745 0 2123 0112 DA02 lsls r2, r3, #11 2124 0114 01D5 bpl .L138 1745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2125 .loc 1 1745 0 is_stmt 0 discriminator 1 ARM GAS /tmp/cc7An1gz.s page 91 2126 0116 6A02 lsls r2, r5, #9 2127 0118 08D4 bmi .L146 2128 .L138: 1756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2129 .loc 1 1756 0 is_stmt 1 2130 011a 1A06 lsls r2, r3, #24 2131 011c 01D5 bpl .L139 1756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2132 .loc 1 1756 0 is_stmt 0 discriminator 1 2133 011e 0206 lsls r2, r0, #24 2134 0120 10D4 bmi .L147 2135 .L139: 1763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2136 .loc 1 1763 0 is_stmt 1 2137 0122 5B06 lsls r3, r3, #25 2138 0124 01D5 bpl .L123 2139 .LVL166: 1763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2140 .loc 1 1763 0 is_stmt 0 discriminator 1 2141 0126 4306 lsls r3, r0, #25 2142 0128 3ED4 bmi .L148 2143 .LVL167: 2144 .L123: 1769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2145 .loc 1 1769 0 is_stmt 1 2146 @ sp needed 2147 .LVL168: 2148 012a 70BD pop {r4, r5, r6, pc} 2149 .LVL169: 2150 .L146: 1747:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Set the UART state ready to be able to start again the process */ 2151 .loc 1 1747 0 2152 012c 8023 movs r3, #128 2153 .LVL170: 2154 012e 5B03 lsls r3, r3, #13 2155 0130 0B62 str r3, [r1, #32] 1749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2156 .loc 1 1749 0 2157 0132 2023 movs r3, #32 2158 0134 6922 movs r2, #105 2159 0136 A354 strb r3, [r4, r2] 1750:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_UARTEx_WakeupCallback(huart); 2160 .loc 1 1750 0 2161 0138 0132 adds r2, r2, #1 2162 013a A354 strb r3, [r4, r2] 1751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return; 2163 .loc 1 1751 0 2164 013c 2000 movs r0, r4 2165 .LVL171: 2166 013e FFF7FEFF bl HAL_UARTEx_WakeupCallback 2167 .LVL172: 1752:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2168 .loc 1 1752 0 2169 0142 F2E7 b .L123 2170 .LVL173: 2171 .L147: 2172 .LBB30: ARM GAS /tmp/cc7An1gz.s page 92 2173 .LBB31: 2751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2174 .loc 1 2751 0 2175 0144 6923 movs r3, #105 2176 .LVL174: 2177 0146 E35C ldrb r3, [r4, r3] 2178 0148 212B cmp r3, #33 2179 014a EED1 bne .L123 2753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2180 .loc 1 2753 0 2181 014c 3133 adds r3, r3, #49 2182 014e E35A ldrh r3, [r4, r3] 2183 0150 9BB2 uxth r3, r3 2184 0152 002B cmp r3, #0 2185 0154 10D0 beq .L149 2765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2186 .loc 1 2765 0 2187 0156 8023 movs r3, #128 2188 0158 5B01 lsls r3, r3, #5 2189 015a A268 ldr r2, [r4, #8] 2190 015c 9A42 cmp r2, r3 2191 015e 16D0 beq .L150 2192 .L142: 2773:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2193 .loc 1 2773 0 2194 0160 E36C ldr r3, [r4, #76] 2195 0162 5A1C adds r2, r3, #1 2196 0164 E264 str r2, [r4, #76] 2197 0166 1A78 ldrb r2, [r3] 2198 0168 2368 ldr r3, [r4] 2199 016a 9A62 str r2, [r3, #40] 2200 .L143: 2775:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2201 .loc 1 2775 0 2202 016c 5222 movs r2, #82 2203 016e A35A ldrh r3, [r4, r2] 2204 0170 013B subs r3, r3, #1 2205 0172 9BB2 uxth r3, r3 2206 0174 A352 strh r3, [r4, r2] 2207 0176 D8E7 b .L123 2208 .L149: 2756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2209 .loc 1 2756 0 2210 0178 2268 ldr r2, [r4] 2211 017a 1368 ldr r3, [r2] 2212 017c 8021 movs r1, #128 2213 017e 8B43 bics r3, r1 2214 0180 1360 str r3, [r2] 2759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2215 .loc 1 2759 0 2216 0182 2268 ldr r2, [r4] 2217 0184 1368 ldr r3, [r2] 2218 0186 4039 subs r1, r1, #64 2219 0188 0B43 orrs r3, r1 2220 018a 1360 str r3, [r2] 2221 018c CDE7 b .L123 2222 .L150: ARM GAS /tmp/cc7An1gz.s page 93 2765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2223 .loc 1 2765 0 2224 018e 2369 ldr r3, [r4, #16] 2225 0190 002B cmp r3, #0 2226 0192 E5D1 bne .L142 2227 .LVL175: 2768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->pTxBuffPtr += 2U; 2228 .loc 1 2768 0 2229 0194 E36C ldr r3, [r4, #76] 2230 0196 1B88 ldrh r3, [r3] 2231 0198 2268 ldr r2, [r4] 2232 019a DB05 lsls r3, r3, #23 2233 019c DB0D lsrs r3, r3, #23 2234 019e 9362 str r3, [r2, #40] 2235 .LVL176: 2769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2236 .loc 1 2769 0 2237 01a0 E36C ldr r3, [r4, #76] 2238 01a2 0233 adds r3, r3, #2 2239 01a4 E364 str r3, [r4, #76] 2240 01a6 E1E7 b .L143 2241 .LVL177: 2242 .L148: 2243 .LBE31: 2244 .LBE30: 2245 .LBB32: 2246 .LBB33: 2795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2247 .loc 1 2795 0 2248 01a8 0B68 ldr r3, [r1] 2249 01aa 4022 movs r2, #64 2250 01ac 9343 bics r3, r2 2251 01ae 0B60 str r3, [r1] 2798:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2252 .loc 1 2798 0 2253 01b0 6923 movs r3, #105 2254 01b2 203A subs r2, r2, #32 2255 01b4 E254 strb r2, [r4, r3] 2800:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2256 .loc 1 2800 0 2257 01b6 2000 movs r0, r4 2258 .LVL178: 2259 01b8 FFF7FEFF bl HAL_UART_TxCpltCallback 2260 .LVL179: 2261 01bc B5E7 b .L123 2262 .L152: 2263 01be C046 .align 2 2264 .L151: 2265 01c0 DFFEFFFF .word -289 2266 01c4 00000000 .word UART_DMAAbortOnError 2267 .LBE33: 2268 .LBE32: 2269 .cfi_endproc 2270 .LFE61: 2272 .section .text.UART_DMAAbortOnError,"ax",%progbits 2273 .align 1 2274 .syntax unified ARM GAS /tmp/cc7An1gz.s page 94 2275 .code 16 2276 .thumb_func 2277 .fpu softvfp 2279 UART_DMAAbortOnError: 2280 .LFB89: 2602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2281 .loc 1 2602 0 2282 .cfi_startproc 2283 @ args = 0, pretend = 0, frame = 0 2284 @ frame_needed = 0, uses_anonymous_args = 0 2285 .LVL180: 2286 0000 10B5 push {r4, lr} 2287 .LCFI16: 2288 .cfi_def_cfa_offset 8 2289 .cfi_offset 4, -8 2290 .cfi_offset 14, -4 2603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2291 .loc 1 2603 0 2292 0002 806A ldr r0, [r0, #40] 2293 .LVL181: 2604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = 0; 2294 .loc 1 2604 0 2295 0004 0023 movs r3, #0 2296 0006 5A22 movs r2, #90 2297 0008 8352 strh r3, [r0, r2] 2605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2298 .loc 1 2605 0 2299 000a 083A subs r2, r2, #8 2300 000c 8352 strh r3, [r0, r2] 2607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2301 .loc 1 2607 0 2302 000e FFF7FEFF bl HAL_UART_ErrorCallback 2303 .LVL182: 2608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2304 .loc 1 2608 0 2305 @ sp needed 2306 0012 10BD pop {r4, pc} 2307 .cfi_endproc 2308 .LFE89: 2310 .section .text.HAL_UART_AbortCpltCallback,"ax",%progbits 2311 .align 1 2312 .weak HAL_UART_AbortCpltCallback 2313 .syntax unified 2314 .code 16 2315 .thumb_func 2316 .fpu softvfp 2318 HAL_UART_AbortCpltCallback: 2319 .LFB67: 1852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 2320 .loc 1 1852 0 2321 .cfi_startproc 2322 @ args = 0, pretend = 0, frame = 0 2323 @ frame_needed = 0, uses_anonymous_args = 0 2324 @ link register save eliminated. 2325 .LVL183: 1859:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2326 .loc 1 1859 0 ARM GAS /tmp/cc7An1gz.s page 95 2327 @ sp needed 2328 0000 7047 bx lr 2329 .cfi_endproc 2330 .LFE67: 2332 .section .text.HAL_UART_Abort_IT,"ax",%progbits 2333 .align 1 2334 .global HAL_UART_Abort_IT 2335 .syntax unified 2336 .code 16 2337 .thumb_func 2338 .fpu softvfp 2340 HAL_UART_Abort_IT: 2341 .LFB58: 1372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t abortcplt = 1; 2342 .loc 1 1372 0 2343 .cfi_startproc 2344 @ args = 0, pretend = 0, frame = 0 2345 @ frame_needed = 0, uses_anonymous_args = 0 2346 .LVL184: 2347 0000 10B5 push {r4, lr} 2348 .LCFI17: 2349 .cfi_def_cfa_offset 8 2350 .cfi_offset 4, -8 2351 .cfi_offset 14, -4 2352 0002 0400 movs r4, r0 2353 .LVL185: 1376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 2354 .loc 1 1376 0 2355 0004 0268 ldr r2, [r0] 2356 0006 1368 ldr r3, [r2] 2357 0008 3049 ldr r1, .L167 2358 000a 0B40 ands r3, r1 2359 000c 1360 str r3, [r2] 1377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2360 .loc 1 1377 0 2361 000e 0268 ldr r2, [r0] 2362 0010 9368 ldr r3, [r2, #8] 2363 0012 E331 adds r1, r1, #227 2364 0014 FF31 adds r1, r1, #255 2365 0016 8B43 bics r3, r1 2366 0018 9360 str r3, [r2, #8] 1382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2367 .loc 1 1382 0 2368 001a 036E ldr r3, [r0, #96] 2369 001c 002B cmp r3, #0 2370 001e 05D0 beq .L156 1386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2371 .loc 1 1386 0 2372 0020 0268 ldr r2, [r0] 2373 0022 9268 ldr r2, [r2, #8] 2374 0024 1206 lsls r2, r2, #24 2375 0026 1ED5 bpl .L157 1388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2376 .loc 1 1388 0 2377 0028 294A ldr r2, .L167+4 2378 002a 9A63 str r2, [r3, #56] 2379 .L156: ARM GAS /tmp/cc7An1gz.s page 96 1396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2380 .loc 1 1396 0 2381 002c 636E ldr r3, [r4, #100] 2382 002e 002B cmp r3, #0 2383 0030 05D0 beq .L158 1400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2384 .loc 1 1400 0 2385 0032 2268 ldr r2, [r4] 2386 0034 9268 ldr r2, [r2, #8] 2387 0036 5206 lsls r2, r2, #25 2388 0038 18D5 bpl .L159 1402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2389 .loc 1 1402 0 2390 003a 264A ldr r2, .L167+8 2391 003c 9A63 str r2, [r3, #56] 2392 .L158: 1411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2393 .loc 1 1411 0 2394 003e 2368 ldr r3, [r4] 2395 0040 9A68 ldr r2, [r3, #8] 2396 0042 1206 lsls r2, r2, #24 2397 0044 15D5 bpl .L164 1414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2398 .loc 1 1414 0 2399 0046 9A68 ldr r2, [r3, #8] 2400 0048 8021 movs r1, #128 2401 004a 8A43 bics r2, r1 2402 004c 9A60 str r2, [r3, #8] 1417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2403 .loc 1 1417 0 2404 004e 206E ldr r0, [r4, #96] 2405 .LVL186: 2406 0050 0028 cmp r0, #0 2407 0052 33D0 beq .L165 1423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2408 .loc 1 1423 0 2409 0054 FFF7FEFF bl HAL_DMA_Abort_IT 2410 .LVL187: 2411 0058 0028 cmp r0, #0 2412 005a 31D0 beq .L166 1425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2413 .loc 1 1425 0 2414 005c 236E ldr r3, [r4, #96] 2415 005e 0022 movs r2, #0 2416 0060 9A63 str r2, [r3, #56] 1373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2417 .loc 1 1373 0 2418 0062 0121 movs r1, #1 2419 0064 06E0 b .L160 2420 .LVL188: 2421 .L157: 1392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2422 .loc 1 1392 0 2423 0066 0022 movs r2, #0 2424 0068 9A63 str r2, [r3, #56] 2425 006a DFE7 b .L156 2426 .L159: ARM GAS /tmp/cc7An1gz.s page 97 1406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2427 .loc 1 1406 0 2428 006c 0022 movs r2, #0 2429 006e 9A63 str r2, [r3, #56] 2430 0070 E5E7 b .L158 2431 .L164: 1373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2432 .loc 1 1373 0 2433 0072 0121 movs r1, #1 2434 .LVL189: 2435 .L160: 1435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2436 .loc 1 1435 0 2437 0074 2368 ldr r3, [r4] 2438 0076 9A68 ldr r2, [r3, #8] 2439 0078 5206 lsls r2, r2, #25 2440 007a 23D5 bpl .L161 1437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2441 .loc 1 1437 0 2442 007c 9A68 ldr r2, [r3, #8] 2443 007e 4020 movs r0, #64 2444 0080 8243 bics r2, r0 2445 0082 9A60 str r2, [r3, #8] 1440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2446 .loc 1 1440 0 2447 0084 606E ldr r0, [r4, #100] 2448 0086 0028 cmp r0, #0 2449 0088 1CD0 beq .L161 1446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2450 .loc 1 1446 0 2451 008a FFF7FEFF bl HAL_DMA_Abort_IT 2452 .LVL190: 2453 008e 0028 cmp r0, #0 2454 0090 1AD0 beq .L162 1448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** abortcplt = 1; 2455 .loc 1 1448 0 2456 0092 636E ldr r3, [r4, #100] 2457 0094 0022 movs r2, #0 2458 0096 9A63 str r2, [r3, #56] 2459 .LVL191: 2460 .L163: 1462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2461 .loc 1 1462 0 2462 0098 0023 movs r3, #0 2463 009a 5222 movs r2, #82 2464 009c A352 strh r3, [r4, r2] 1463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2465 .loc 1 1463 0 2466 009e 0832 adds r2, r2, #8 2467 00a0 A352 strh r3, [r4, r2] 1466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2468 .loc 1 1466 0 2469 00a2 E366 str r3, [r4, #108] 1469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2470 .loc 1 1469 0 2471 00a4 2368 ldr r3, [r4] 2472 00a6 4B3A subs r2, r2, #75 ARM GAS /tmp/cc7An1gz.s page 98 2473 00a8 1A62 str r2, [r3, #32] 1472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2474 .loc 1 1472 0 2475 00aa 2023 movs r3, #32 2476 00ac 5A32 adds r2, r2, #90 2477 00ae A354 strb r3, [r4, r2] 1473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2478 .loc 1 1473 0 2479 00b0 0132 adds r2, r2, #1 2480 00b2 A354 strb r3, [r4, r2] 1476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2481 .loc 1 1476 0 2482 00b4 2000 movs r0, r4 2483 00b6 FFF7FEFF bl HAL_UART_AbortCpltCallback 2484 .LVL192: 2485 00ba 05E0 b .L162 2486 .LVL193: 2487 .L165: 1373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2488 .loc 1 1373 0 2489 00bc 0121 movs r1, #1 2490 00be D9E7 b .L160 2491 .L166: 1429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2492 .loc 1 1429 0 2493 00c0 0021 movs r1, #0 2494 00c2 D7E7 b .L160 2495 .LVL194: 2496 .L161: 1459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2497 .loc 1 1459 0 2498 00c4 0129 cmp r1, #1 2499 00c6 E7D0 beq .L163 2500 .LVL195: 2501 .L162: 1480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2502 .loc 1 1480 0 2503 00c8 0020 movs r0, #0 2504 @ sp needed 2505 .LVL196: 2506 00ca 10BD pop {r4, pc} 2507 .L168: 2508 .align 2 2509 .L167: 2510 00cc 1FFEFFFF .word -481 2511 00d0 00000000 .word UART_DMATxAbortCallback 2512 00d4 00000000 .word UART_DMARxAbortCallback 2513 .cfi_endproc 2514 .LFE58: 2516 .section .text.UART_DMARxAbortCallback,"ax",%progbits 2517 .align 1 2518 .syntax unified 2519 .code 16 2520 .thumb_func 2521 .fpu softvfp 2523 UART_DMARxAbortCallback: 2524 .LFB91: ARM GAS /tmp/cc7An1gz.s page 99 2661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef* )(hdma->Parent); 2525 .loc 1 2661 0 2526 .cfi_startproc 2527 @ args = 0, pretend = 0, frame = 0 2528 @ frame_needed = 0, uses_anonymous_args = 0 2529 .LVL197: 2530 0000 10B5 push {r4, lr} 2531 .LCFI18: 2532 .cfi_def_cfa_offset 8 2533 .cfi_offset 4, -8 2534 .cfi_offset 14, -4 2662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2535 .loc 1 2662 0 2536 0002 806A ldr r0, [r0, #40] 2537 .LVL198: 2664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2538 .loc 1 2664 0 2539 0004 436E ldr r3, [r0, #100] 2540 0006 0022 movs r2, #0 2541 0008 9A63 str r2, [r3, #56] 2667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2542 .loc 1 2667 0 2543 000a 036E ldr r3, [r0, #96] 2544 000c 002B cmp r3, #0 2545 000e 03D0 beq .L170 2669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2546 .loc 1 2669 0 2547 0010 9B6B ldr r3, [r3, #56] 2548 0012 002B cmp r3, #0 2549 0014 00D0 beq .L170 2550 .LVL199: 2551 .L169: 2691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2552 .loc 1 2691 0 2553 @ sp needed 2554 0016 10BD pop {r4, pc} 2555 .LVL200: 2556 .L170: 2676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2557 .loc 1 2676 0 2558 0018 0023 movs r3, #0 2559 001a 5222 movs r2, #82 2560 001c 8352 strh r3, [r0, r2] 2677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2561 .loc 1 2677 0 2562 001e 0832 adds r2, r2, #8 2563 0020 8352 strh r3, [r0, r2] 2680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2564 .loc 1 2680 0 2565 0022 C366 str r3, [r0, #108] 2683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2566 .loc 1 2683 0 2567 0024 0368 ldr r3, [r0] 2568 0026 4B3A subs r2, r2, #75 2569 0028 1A62 str r2, [r3, #32] 2686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2570 .loc 1 2686 0 ARM GAS /tmp/cc7An1gz.s page 100 2571 002a 2023 movs r3, #32 2572 002c 5A32 adds r2, r2, #90 2573 002e 8354 strb r3, [r0, r2] 2687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2574 .loc 1 2687 0 2575 0030 0132 adds r2, r2, #1 2576 0032 8354 strb r3, [r0, r2] 2690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2577 .loc 1 2690 0 2578 0034 FFF7FEFF bl HAL_UART_AbortCpltCallback 2579 .LVL201: 2580 0038 EDE7 b .L169 2581 .cfi_endproc 2582 .LFE91: 2584 .section .text.UART_DMATxAbortCallback,"ax",%progbits 2585 .align 1 2586 .syntax unified 2587 .code 16 2588 .thumb_func 2589 .fpu softvfp 2591 UART_DMATxAbortCallback: 2592 .LFB90: 2619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef* )(hdma->Parent); 2593 .loc 1 2619 0 2594 .cfi_startproc 2595 @ args = 0, pretend = 0, frame = 0 2596 @ frame_needed = 0, uses_anonymous_args = 0 2597 .LVL202: 2598 0000 10B5 push {r4, lr} 2599 .LCFI19: 2600 .cfi_def_cfa_offset 8 2601 .cfi_offset 4, -8 2602 .cfi_offset 14, -4 2620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2603 .loc 1 2620 0 2604 0002 806A ldr r0, [r0, #40] 2605 .LVL203: 2622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2606 .loc 1 2622 0 2607 0004 036E ldr r3, [r0, #96] 2608 0006 0022 movs r2, #0 2609 0008 9A63 str r2, [r3, #56] 2625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2610 .loc 1 2625 0 2611 000a 436E ldr r3, [r0, #100] 2612 000c 002B cmp r3, #0 2613 000e 03D0 beq .L173 2627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2614 .loc 1 2627 0 2615 0010 9B6B ldr r3, [r3, #56] 2616 0012 002B cmp r3, #0 2617 0014 00D0 beq .L173 2618 .LVL204: 2619 .L172: 2649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2620 .loc 1 2649 0 2621 @ sp needed ARM GAS /tmp/cc7An1gz.s page 101 2622 0016 10BD pop {r4, pc} 2623 .LVL205: 2624 .L173: 2634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = 0; 2625 .loc 1 2634 0 2626 0018 0023 movs r3, #0 2627 001a 5222 movs r2, #82 2628 001c 8352 strh r3, [r0, r2] 2635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2629 .loc 1 2635 0 2630 001e 0832 adds r2, r2, #8 2631 0020 8352 strh r3, [r0, r2] 2638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2632 .loc 1 2638 0 2633 0022 C366 str r3, [r0, #108] 2641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2634 .loc 1 2641 0 2635 0024 0368 ldr r3, [r0] 2636 0026 4B3A subs r2, r2, #75 2637 0028 1A62 str r2, [r3, #32] 2644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 2638 .loc 1 2644 0 2639 002a 2023 movs r3, #32 2640 002c 5A32 adds r2, r2, #90 2641 002e 8354 strb r3, [r0, r2] 2645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2642 .loc 1 2645 0 2643 0030 0132 adds r2, r2, #1 2644 0032 8354 strb r3, [r0, r2] 2648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2645 .loc 1 2648 0 2646 0034 FFF7FEFF bl HAL_UART_AbortCpltCallback 2647 .LVL206: 2648 0038 EDE7 b .L172 2649 .cfi_endproc 2650 .LFE90: 2652 .section .text.HAL_UART_AbortTransmitCpltCallback,"ax",%progbits 2653 .align 1 2654 .weak HAL_UART_AbortTransmitCpltCallback 2655 .syntax unified 2656 .code 16 2657 .thumb_func 2658 .fpu softvfp 2660 HAL_UART_AbortTransmitCpltCallback: 2661 .LFB68: 1867:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 2662 .loc 1 1867 0 2663 .cfi_startproc 2664 @ args = 0, pretend = 0, frame = 0 2665 @ frame_needed = 0, uses_anonymous_args = 0 2666 @ link register save eliminated. 2667 .LVL207: 1874:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2668 .loc 1 1874 0 2669 @ sp needed 2670 0000 7047 bx lr 2671 .cfi_endproc ARM GAS /tmp/cc7An1gz.s page 102 2672 .LFE68: 2674 .section .text.HAL_UART_AbortTransmit_IT,"ax",%progbits 2675 .align 1 2676 .global HAL_UART_AbortTransmit_IT 2677 .syntax unified 2678 .code 16 2679 .thumb_func 2680 .fpu softvfp 2682 HAL_UART_AbortTransmit_IT: 2683 .LFB59: 1497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable TXEIE and TCIE interrupts */ 2684 .loc 1 1497 0 2685 .cfi_startproc 2686 @ args = 0, pretend = 0, frame = 0 2687 @ frame_needed = 0, uses_anonymous_args = 0 2688 .LVL208: 2689 0000 10B5 push {r4, lr} 2690 .LCFI20: 2691 .cfi_def_cfa_offset 8 2692 .cfi_offset 4, -8 2693 .cfi_offset 14, -4 2694 0002 0400 movs r4, r0 1499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2695 .loc 1 1499 0 2696 0004 0268 ldr r2, [r0] 2697 0006 1368 ldr r3, [r2] 2698 0008 C021 movs r1, #192 2699 000a 8B43 bics r3, r1 2700 000c 1360 str r3, [r2] 1502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2701 .loc 1 1502 0 2702 000e 0368 ldr r3, [r0] 2703 0010 9A68 ldr r2, [r3, #8] 2704 0012 1206 lsls r2, r2, #24 2705 0014 1BD5 bpl .L177 1504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2706 .loc 1 1504 0 2707 0016 9A68 ldr r2, [r3, #8] 2708 0018 4039 subs r1, r1, #64 2709 001a 8A43 bics r2, r1 2710 001c 9A60 str r2, [r3, #8] 1507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2711 .loc 1 1507 0 2712 001e 036E ldr r3, [r0, #96] 2713 0020 002B cmp r3, #0 2714 0022 0BD0 beq .L178 1511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2715 .loc 1 1511 0 2716 0024 0E4A ldr r2, .L180 2717 0026 9A63 str r2, [r3, #56] 1514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2718 .loc 1 1514 0 2719 0028 006E ldr r0, [r0, #96] 2720 .LVL209: 2721 002a FFF7FEFF bl HAL_DMA_Abort_IT 2722 .LVL210: 2723 002e 0028 cmp r0, #0 ARM GAS /tmp/cc7An1gz.s page 103 2724 0030 02D0 beq .L179 1517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2725 .loc 1 1517 0 2726 0032 206E ldr r0, [r4, #96] 2727 0034 836B ldr r3, [r0, #56] 2728 0036 9847 blx r3 2729 .LVL211: 2730 .L179: 1545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2731 .loc 1 1545 0 2732 0038 0020 movs r0, #0 2733 @ sp needed 2734 .LVL212: 2735 003a 10BD pop {r4, pc} 2736 .LVL213: 2737 .L178: 1523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2738 .loc 1 1523 0 2739 003c 5223 movs r3, #82 2740 003e 0022 movs r2, #0 2741 0040 C252 strh r2, [r0, r3] 1526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2742 .loc 1 1526 0 2743 0042 1733 adds r3, r3, #23 2744 0044 2032 adds r2, r2, #32 2745 0046 C254 strb r2, [r0, r3] 1529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2746 .loc 1 1529 0 2747 0048 FFF7FEFF bl HAL_UART_AbortTransmitCpltCallback 2748 .LVL214: 2749 004c F4E7 b .L179 2750 .LVL215: 2751 .L177: 1535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2752 .loc 1 1535 0 2753 004e 5223 movs r3, #82 2754 0050 0022 movs r2, #0 2755 0052 C252 strh r2, [r0, r3] 1538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2756 .loc 1 1538 0 2757 0054 1733 adds r3, r3, #23 2758 0056 2032 adds r2, r2, #32 2759 0058 C254 strb r2, [r0, r3] 1541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2760 .loc 1 1541 0 2761 005a FFF7FEFF bl HAL_UART_AbortTransmitCpltCallback 2762 .LVL216: 2763 005e EBE7 b .L179 2764 .L181: 2765 .align 2 2766 .L180: 2767 0060 00000000 .word UART_DMATxOnlyAbortCallback 2768 .cfi_endproc 2769 .LFE59: 2771 .section .text.UART_DMATxOnlyAbortCallback,"ax",%progbits 2772 .align 1 2773 .syntax unified ARM GAS /tmp/cc7An1gz.s page 104 2774 .code 16 2775 .thumb_func 2776 .fpu softvfp 2778 UART_DMATxOnlyAbortCallback: 2779 .LFB92: 2703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = (UART_HandleTypeDef*)(hdma->Parent); 2780 .loc 1 2703 0 2781 .cfi_startproc 2782 @ args = 0, pretend = 0, frame = 0 2783 @ frame_needed = 0, uses_anonymous_args = 0 2784 .LVL217: 2785 0000 10B5 push {r4, lr} 2786 .LCFI21: 2787 .cfi_def_cfa_offset 8 2788 .cfi_offset 4, -8 2789 .cfi_offset 14, -4 2704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2790 .loc 1 2704 0 2791 0002 806A ldr r0, [r0, #40] 2792 .LVL218: 2706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2793 .loc 1 2706 0 2794 0004 5223 movs r3, #82 2795 0006 0022 movs r2, #0 2796 0008 C252 strh r2, [r0, r3] 2709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2797 .loc 1 2709 0 2798 000a 1733 adds r3, r3, #23 2799 000c 2032 adds r2, r2, #32 2800 000e C254 strb r2, [r0, r3] 2712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2801 .loc 1 2712 0 2802 0010 FFF7FEFF bl HAL_UART_AbortTransmitCpltCallback 2803 .LVL219: 2713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2804 .loc 1 2713 0 2805 @ sp needed 2806 0014 10BD pop {r4, pc} 2807 .cfi_endproc 2808 .LFE92: 2810 .section .text.HAL_UART_AbortReceiveCpltCallback,"ax",%progbits 2811 .align 1 2812 .weak HAL_UART_AbortReceiveCpltCallback 2813 .syntax unified 2814 .code 16 2815 .thumb_func 2816 .fpu softvfp 2818 HAL_UART_AbortReceiveCpltCallback: 2819 .LFB69: 1882:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Prevent unused argument(s) compilation warning */ 2820 .loc 1 1882 0 2821 .cfi_startproc 2822 @ args = 0, pretend = 0, frame = 0 2823 @ frame_needed = 0, uses_anonymous_args = 0 2824 @ link register save eliminated. 2825 .LVL220: 1889:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 105 2826 .loc 1 1889 0 2827 @ sp needed 2828 0000 7047 bx lr 2829 .cfi_endproc 2830 .LFE69: 2832 .section .text.HAL_UART_AbortReceive_IT,"ax",%progbits 2833 .align 1 2834 .global HAL_UART_AbortReceive_IT 2835 .syntax unified 2836 .code 16 2837 .thumb_func 2838 .fpu softvfp 2840 HAL_UART_AbortReceive_IT: 2841 .LFB60: 1562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ 2842 .loc 1 1562 0 2843 .cfi_startproc 2844 @ args = 0, pretend = 0, frame = 0 2845 @ frame_needed = 0, uses_anonymous_args = 0 2846 .LVL221: 2847 0000 10B5 push {r4, lr} 2848 .LCFI22: 2849 .cfi_def_cfa_offset 8 2850 .cfi_offset 4, -8 2851 .cfi_offset 14, -4 2852 0002 0400 movs r4, r0 1564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 2853 .loc 1 1564 0 2854 0004 0268 ldr r2, [r0] 2855 0006 1368 ldr r3, [r2] 2856 0008 1B49 ldr r1, .L188 2857 000a 0B40 ands r3, r1 2858 000c 1360 str r3, [r2] 1565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2859 .loc 1 1565 0 2860 000e 0268 ldr r2, [r0] 2861 0010 9368 ldr r3, [r2, #8] 2862 0012 2331 adds r1, r1, #35 2863 0014 FF31 adds r1, r1, #255 2864 0016 8B43 bics r3, r1 2865 0018 9360 str r3, [r2, #8] 1568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2866 .loc 1 1568 0 2867 001a 0368 ldr r3, [r0] 2868 001c 9A68 ldr r2, [r3, #8] 2869 001e 5206 lsls r2, r2, #25 2870 0020 1ED5 bpl .L185 1570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2871 .loc 1 1570 0 2872 0022 9A68 ldr r2, [r3, #8] 2873 0024 3F31 adds r1, r1, #63 2874 0026 8A43 bics r2, r1 2875 0028 9A60 str r2, [r3, #8] 1573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2876 .loc 1 1573 0 2877 002a 436E ldr r3, [r0, #100] 2878 002c 002B cmp r3, #0 ARM GAS /tmp/cc7An1gz.s page 106 2879 002e 0BD0 beq .L186 1577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2880 .loc 1 1577 0 2881 0030 124A ldr r2, .L188+4 2882 0032 9A63 str r2, [r3, #56] 1580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 2883 .loc 1 1580 0 2884 0034 406E ldr r0, [r0, #100] 2885 .LVL222: 2886 0036 FFF7FEFF bl HAL_DMA_Abort_IT 2887 .LVL223: 2888 003a 0028 cmp r0, #0 2889 003c 02D0 beq .L187 1583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2890 .loc 1 1583 0 2891 003e 606E ldr r0, [r4, #100] 2892 0040 836B ldr r3, [r0, #56] 2893 0042 9847 blx r3 2894 .LVL224: 2895 .L187: 1617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2896 .loc 1 1617 0 2897 0044 0020 movs r0, #0 2898 @ sp needed 2899 .LVL225: 2900 0046 10BD pop {r4, pc} 2901 .LVL226: 2902 .L186: 1589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2903 .loc 1 1589 0 2904 0048 5A23 movs r3, #90 2905 004a 0022 movs r2, #0 2906 004c C252 strh r2, [r0, r3] 1592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2907 .loc 1 1592 0 2908 004e 0368 ldr r3, [r0] 2909 0050 0F32 adds r2, r2, #15 2910 0052 1A62 str r2, [r3, #32] 1595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2911 .loc 1 1595 0 2912 0054 6A23 movs r3, #106 2913 0056 1132 adds r2, r2, #17 2914 0058 C254 strb r2, [r0, r3] 1598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2915 .loc 1 1598 0 2916 005a FFF7FEFF bl HAL_UART_AbortReceiveCpltCallback 2917 .LVL227: 2918 005e F1E7 b .L187 2919 .LVL228: 2920 .L185: 1604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2921 .loc 1 1604 0 2922 0060 5A22 movs r2, #90 2923 0062 0021 movs r1, #0 2924 0064 8152 strh r1, [r0, r2] 1607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2925 .loc 1 1607 0 ARM GAS /tmp/cc7An1gz.s page 107 2926 0066 4B3A subs r2, r2, #75 2927 0068 1A62 str r2, [r3, #32] 1610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2928 .loc 1 1610 0 2929 006a 6A23 movs r3, #106 2930 006c 1132 adds r2, r2, #17 2931 006e C254 strb r2, [r0, r3] 1613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2932 .loc 1 1613 0 2933 0070 FFF7FEFF bl HAL_UART_AbortReceiveCpltCallback 2934 .LVL229: 2935 0074 E6E7 b .L187 2936 .L189: 2937 0076 C046 .align 2 2938 .L188: 2939 0078 DFFEFFFF .word -289 2940 007c 00000000 .word UART_DMARxOnlyAbortCallback 2941 .cfi_endproc 2942 .LFE60: 2944 .section .text.UART_DMARxOnlyAbortCallback,"ax",%progbits 2945 .align 1 2946 .syntax unified 2947 .code 16 2948 .thumb_func 2949 .fpu softvfp 2951 UART_DMARxOnlyAbortCallback: 2952 .LFB93: 2724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** UART_HandleTypeDef* huart = ( UART_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; 2953 .loc 1 2724 0 2954 .cfi_startproc 2955 @ args = 0, pretend = 0, frame = 0 2956 @ frame_needed = 0, uses_anonymous_args = 0 2957 .LVL230: 2958 0000 10B5 push {r4, lr} 2959 .LCFI23: 2960 .cfi_def_cfa_offset 8 2961 .cfi_offset 4, -8 2962 .cfi_offset 14, -4 2725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2963 .loc 1 2725 0 2964 0002 806A ldr r0, [r0, #40] 2965 .LVL231: 2727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2966 .loc 1 2727 0 2967 0004 5A23 movs r3, #90 2968 0006 0022 movs r2, #0 2969 0008 C252 strh r2, [r0, r3] 2730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2970 .loc 1 2730 0 2971 000a 0368 ldr r3, [r0] 2972 000c 0F32 adds r2, r2, #15 2973 000e 1A62 str r2, [r3, #32] 2733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2974 .loc 1 2733 0 2975 0010 6A23 movs r3, #106 2976 0012 1132 adds r2, r2, #17 2977 0014 C254 strb r2, [r0, r3] ARM GAS /tmp/cc7An1gz.s page 108 2736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 2978 .loc 1 2736 0 2979 0016 FFF7FEFF bl HAL_UART_AbortReceiveCpltCallback 2980 .LVL232: 2737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 2981 .loc 1 2737 0 2982 @ sp needed 2983 001a 10BD pop {r4, pc} 2984 .cfi_endproc 2985 .LFE93: 2987 .section .text.HAL_MultiProcessor_EnterMuteMode,"ax",%progbits 2988 .align 1 2989 .global HAL_MultiProcessor_EnterMuteMode 2990 .syntax unified 2991 .code 16 2992 .thumb_func 2993 .fpu softvfp 2995 HAL_MultiProcessor_EnterMuteMode: 2996 .LFB72: 1966:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** __HAL_UART_SEND_REQ(huart, UART_MUTE_MODE_REQUEST); 2997 .loc 1 1966 0 2998 .cfi_startproc 2999 @ args = 0, pretend = 0, frame = 0 3000 @ frame_needed = 0, uses_anonymous_args = 0 3001 @ link register save eliminated. 3002 .LVL233: 1967:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3003 .loc 1 1967 0 3004 0000 0268 ldr r2, [r0] 3005 0002 9369 ldr r3, [r2, #24] 3006 0004 0421 movs r1, #4 3007 0006 0B43 orrs r3, r1 3008 0008 9361 str r3, [r2, #24] 1968:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3009 .loc 1 1968 0 3010 @ sp needed 3011 000a 7047 bx lr 3012 .cfi_endproc 3013 .LFE72: 3015 .section .text.HAL_HalfDuplex_EnableTransmitter,"ax",%progbits 3016 .align 1 3017 .global HAL_HalfDuplex_EnableTransmitter 3018 .syntax unified 3019 .code 16 3020 .thumb_func 3021 .fpu softvfp 3023 HAL_HalfDuplex_EnableTransmitter: 3024 .LFB73: 1976:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 3025 .loc 1 1976 0 3026 .cfi_startproc 3027 @ args = 0, pretend = 0, frame = 0 3028 @ frame_needed = 0, uses_anonymous_args = 0 3029 .LVL234: 3030 0000 30B5 push {r4, r5, lr} 3031 .LCFI24: 3032 .cfi_def_cfa_offset 12 ARM GAS /tmp/cc7An1gz.s page 109 3033 .cfi_offset 4, -12 3034 .cfi_offset 5, -8 3035 .cfi_offset 14, -4 1978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3036 .loc 1 1978 0 3037 0002 6823 movs r3, #104 3038 0004 C35C ldrb r3, [r0, r3] 3039 0006 012B cmp r3, #1 3040 0008 15D0 beq .L194 1978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3041 .loc 1 1978 0 is_stmt 0 discriminator 2 3042 000a 6822 movs r2, #104 3043 000c 0123 movs r3, #1 3044 000e 8354 strb r3, [r0, r2] 1979:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3045 .loc 1 1979 0 is_stmt 1 discriminator 2 3046 0010 6921 movs r1, #105 3047 0012 2333 adds r3, r3, #35 3048 0014 4354 strb r3, [r0, r1] 1982:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */ 3049 .loc 1 1982 0 discriminator 2 3050 0016 0468 ldr r4, [r0] 3051 0018 2368 ldr r3, [r4] 3052 001a 0C25 movs r5, #12 3053 001c AB43 bics r3, r5 3054 001e 2360 str r3, [r4] 1984:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3055 .loc 1 1984 0 discriminator 2 3056 0020 0468 ldr r4, [r0] 3057 0022 2368 ldr r3, [r4] 3058 0024 043D subs r5, r5, #4 3059 0026 2B43 orrs r3, r5 3060 0028 2360 str r3, [r4] 1986:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3061 .loc 1 1986 0 discriminator 2 3062 002a 2023 movs r3, #32 3063 002c 4354 strb r3, [r0, r1] 1989:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3064 .loc 1 1989 0 discriminator 2 3065 002e 0023 movs r3, #0 3066 0030 8354 strb r3, [r0, r2] 1991:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3067 .loc 1 1991 0 discriminator 2 3068 0032 0020 movs r0, #0 3069 .LVL235: 3070 .L193: 1992:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3071 .loc 1 1992 0 3072 @ sp needed 3073 0034 30BD pop {r4, r5, pc} 3074 .LVL236: 3075 .L194: 1978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3076 .loc 1 1978 0 3077 0036 0220 movs r0, #2 3078 .LVL237: 3079 0038 FCE7 b .L193 ARM GAS /tmp/cc7An1gz.s page 110 3080 .cfi_endproc 3081 .LFE73: 3083 .section .text.HAL_HalfDuplex_EnableReceiver,"ax",%progbits 3084 .align 1 3085 .global HAL_HalfDuplex_EnableReceiver 3086 .syntax unified 3087 .code 16 3088 .thumb_func 3089 .fpu softvfp 3091 HAL_HalfDuplex_EnableReceiver: 3092 .LFB74: 2000:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 3093 .loc 1 2000 0 3094 .cfi_startproc 3095 @ args = 0, pretend = 0, frame = 0 3096 @ frame_needed = 0, uses_anonymous_args = 0 3097 .LVL238: 3098 0000 30B5 push {r4, r5, lr} 3099 .LCFI25: 3100 .cfi_def_cfa_offset 12 3101 .cfi_offset 4, -12 3102 .cfi_offset 5, -8 3103 .cfi_offset 14, -4 2002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3104 .loc 1 2002 0 3105 0002 6823 movs r3, #104 3106 0004 C35C ldrb r3, [r0, r3] 3107 0006 012B cmp r3, #1 3108 0008 15D0 beq .L197 2002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3109 .loc 1 2002 0 is_stmt 0 discriminator 2 3110 000a 6822 movs r2, #104 3111 000c 0123 movs r3, #1 3112 000e 8354 strb r3, [r0, r2] 2003:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3113 .loc 1 2003 0 is_stmt 1 discriminator 2 3114 0010 6921 movs r1, #105 3115 0012 2333 adds r3, r3, #35 3116 0014 4354 strb r3, [r0, r1] 2006:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */ 3117 .loc 1 2006 0 discriminator 2 3118 0016 0468 ldr r4, [r0] 3119 0018 2368 ldr r3, [r4] 3120 001a 0C25 movs r5, #12 3121 001c AB43 bics r3, r5 3122 001e 2360 str r3, [r4] 2008:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3123 .loc 1 2008 0 discriminator 2 3124 0020 0468 ldr r4, [r0] 3125 0022 2368 ldr r3, [r4] 3126 0024 083D subs r5, r5, #8 3127 0026 2B43 orrs r3, r5 3128 0028 2360 str r3, [r4] 2010:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Unlocked */ 3129 .loc 1 2010 0 discriminator 2 3130 002a 2023 movs r3, #32 3131 002c 4354 strb r3, [r0, r1] ARM GAS /tmp/cc7An1gz.s page 111 2012:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3132 .loc 1 2012 0 discriminator 2 3133 002e 0023 movs r3, #0 3134 0030 8354 strb r3, [r0, r2] 2014:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3135 .loc 1 2014 0 discriminator 2 3136 0032 0020 movs r0, #0 3137 .LVL239: 3138 .L196: 2015:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3139 .loc 1 2015 0 3140 @ sp needed 3141 0034 30BD pop {r4, r5, pc} 3142 .LVL240: 3143 .L197: 2002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY; 3144 .loc 1 2002 0 3145 0036 0220 movs r0, #2 3146 .LVL241: 3147 0038 FCE7 b .L196 3148 .cfi_endproc 3149 .LFE74: 3151 .section .text.HAL_LIN_SendBreak,"ax",%progbits 3152 .align 1 3153 .global HAL_LIN_SendBreak 3154 .syntax unified 3155 .code 16 3156 .thumb_func 3157 .fpu softvfp 3159 HAL_LIN_SendBreak: 3160 .LFB75: 2024:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the parameters */ 3161 .loc 1 2024 0 3162 .cfi_startproc 3163 @ args = 0, pretend = 0, frame = 0 3164 @ frame_needed = 0, uses_anonymous_args = 0 3165 .LVL242: 3166 0000 30B5 push {r4, r5, lr} 3167 .LCFI26: 3168 .cfi_def_cfa_offset 12 3169 .cfi_offset 4, -12 3170 .cfi_offset 5, -8 3171 .cfi_offset 14, -4 2029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3172 .loc 1 2029 0 3173 0002 6823 movs r3, #104 3174 0004 C35C ldrb r3, [r0, r3] 3175 0006 012B cmp r3, #1 3176 0008 10D0 beq .L200 2029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3177 .loc 1 2029 0 is_stmt 0 discriminator 2 3178 000a 6822 movs r2, #104 3179 000c 0123 movs r3, #1 3180 000e 8354 strb r3, [r0, r2] 2031:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3181 .loc 1 2031 0 is_stmt 1 discriminator 2 3182 0010 6921 movs r1, #105 ARM GAS /tmp/cc7An1gz.s page 112 3183 0012 2333 adds r3, r3, #35 3184 0014 4354 strb r3, [r0, r1] 2034:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3185 .loc 1 2034 0 discriminator 2 3186 0016 0468 ldr r4, [r0] 3187 0018 A369 ldr r3, [r4, #24] 3188 001a 0225 movs r5, #2 3189 001c 2B43 orrs r3, r5 3190 001e A361 str r3, [r4, #24] 2036:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3191 .loc 1 2036 0 discriminator 2 3192 0020 2023 movs r3, #32 3193 0022 4354 strb r3, [r0, r1] 2039:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3194 .loc 1 2039 0 discriminator 2 3195 0024 0023 movs r3, #0 3196 0026 8354 strb r3, [r0, r2] 2041:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3197 .loc 1 2041 0 discriminator 2 3198 0028 0020 movs r0, #0 3199 .LVL243: 3200 .L199: 2042:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3201 .loc 1 2042 0 3202 @ sp needed 3203 002a 30BD pop {r4, r5, pc} 3204 .LVL244: 3205 .L200: 2029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3206 .loc 1 2029 0 3207 002c 0220 movs r0, #2 3208 .LVL245: 3209 002e FCE7 b .L199 3210 .cfi_endproc 3211 .LFE75: 3213 .section .text.HAL_UART_GetState,"ax",%progbits 3214 .align 1 3215 .global HAL_UART_GetState 3216 .syntax unified 3217 .code 16 3218 .thumb_func 3219 .fpu softvfp 3221 HAL_UART_GetState: 3222 .LFB76: 2072:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t temp1= 0x00U, temp2 = 0x00U; 3223 .loc 1 2072 0 3224 .cfi_startproc 3225 @ args = 0, pretend = 0, frame = 0 3226 @ frame_needed = 0, uses_anonymous_args = 0 3227 @ link register save eliminated. 3228 .LVL246: 2074:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** temp2 = huart->RxState; 3229 .loc 1 2074 0 3230 0000 6923 movs r3, #105 3231 0002 C35C ldrb r3, [r0, r3] 3232 .LVL247: 2075:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 113 3233 .loc 1 2075 0 3234 0004 6A22 movs r2, #106 3235 0006 805C ldrb r0, [r0, r2] 3236 .LVL248: 2077:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3237 .loc 1 2077 0 3238 0008 1843 orrs r0, r3 3239 .LVL249: 2078:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3240 .loc 1 2078 0 3241 @ sp needed 3242 000a 7047 bx lr 3243 .cfi_endproc 3244 .LFE76: 3246 .section .text.HAL_UART_GetError,"ax",%progbits 3247 .align 1 3248 .global HAL_UART_GetError 3249 .syntax unified 3250 .code 16 3251 .thumb_func 3252 .fpu softvfp 3254 HAL_UART_GetError: 3255 .LFB77: 2087:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return huart->ErrorCode; 3256 .loc 1 2087 0 3257 .cfi_startproc 3258 @ args = 0, pretend = 0, frame = 0 3259 @ frame_needed = 0, uses_anonymous_args = 0 3260 @ link register save eliminated. 3261 .LVL250: 2088:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3262 .loc 1 2088 0 3263 0000 C06E ldr r0, [r0, #108] 3264 .LVL251: 2089:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /** 3265 .loc 1 2089 0 3266 @ sp needed 3267 0002 7047 bx lr 3268 .cfi_endproc 3269 .LFE77: 3271 .global __aeabi_uldivmod 3272 .global __aeabi_uidiv 3273 .section .text.UART_SetConfig,"ax",%progbits 3274 .align 1 3275 .global UART_SetConfig 3276 .syntax unified 3277 .code 16 3278 .thumb_func 3279 .fpu softvfp 3281 UART_SetConfig: 3282 .LFB78: 2108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tmpreg = 0x00000000U; 3283 .loc 1 2108 0 3284 .cfi_startproc 3285 @ args = 0, pretend = 0, frame = 0 3286 @ frame_needed = 0, uses_anonymous_args = 0 3287 .LVL252: ARM GAS /tmp/cc7An1gz.s page 114 3288 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 3289 .LCFI27: 3290 .cfi_def_cfa_offset 24 3291 .cfi_offset 3, -24 3292 .cfi_offset 4, -20 3293 .cfi_offset 5, -16 3294 .cfi_offset 6, -12 3295 .cfi_offset 7, -8 3296 .cfi_offset 14, -4 3297 0002 0400 movs r4, r0 3298 .LVL253: 2118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3299 .loc 1 2118 0 3300 0004 0168 ldr r1, [r0] 2141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** MODIFY_REG(huart->Instance->CR1, UART_CR1_FIELDS, tmpreg); 3301 .loc 1 2141 0 3302 0006 8368 ldr r3, [r0, #8] 3303 0008 0269 ldr r2, [r0, #16] 3304 000a 1343 orrs r3, r2 3305 000c 4269 ldr r2, [r0, #20] 3306 000e 1343 orrs r3, r2 3307 0010 C269 ldr r2, [r0, #28] 3308 0012 1343 orrs r3, r2 3309 .LVL254: 2142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3310 .loc 1 2142 0 3311 0014 0A68 ldr r2, [r1] 3312 0016 BE48 ldr r0, .L271 3313 .LVL255: 3314 0018 0240 ands r2, r0 3315 001a 1343 orrs r3, r2 3316 .LVL256: 3317 001c 0B60 str r3, [r1] 3318 .LVL257: 2147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3319 .loc 1 2147 0 3320 001e 2268 ldr r2, [r4] 3321 0020 5368 ldr r3, [r2, #4] 3322 0022 BC49 ldr r1, .L271+4 3323 0024 0B40 ands r3, r1 3324 0026 E168 ldr r1, [r4, #12] 3325 0028 0B43 orrs r3, r1 3326 002a 5360 str r3, [r2, #4] 2155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if (!(UART_INSTANCE_LOWPOWER(huart))) 3327 .loc 1 2155 0 3328 002c A169 ldr r1, [r4, #24] 3329 .LVL258: 2156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3330 .loc 1 2156 0 3331 002e 2268 ldr r2, [r4] 3332 0030 B94B ldr r3, .L271+8 3333 0032 9A42 cmp r2, r3 3334 0034 01D0 beq .L204 2158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3335 .loc 1 2158 0 3336 0036 236A ldr r3, [r4, #32] 3337 0038 1943 orrs r1, r3 ARM GAS /tmp/cc7An1gz.s page 115 3338 .LVL259: 3339 .L204: 2160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3340 .loc 1 2160 0 3341 003a 9368 ldr r3, [r2, #8] 3342 003c B748 ldr r0, .L271+12 3343 003e 0340 ands r3, r0 3344 0040 0B43 orrs r3, r1 3345 0042 9360 str r3, [r2, #8] 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3346 .loc 1 2163 0 3347 0044 2368 ldr r3, [r4] 3348 0046 B64A ldr r2, .L271+16 3349 0048 9342 cmp r3, r2 3350 004a 20D0 beq .L262 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3351 .loc 1 2163 0 is_stmt 0 discriminator 2 3352 004c B54A ldr r2, .L271+20 3353 004e 9342 cmp r3, r2 3354 0050 31D0 beq .L263 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3355 .loc 1 2163 0 discriminator 14 3356 0052 B54A ldr r2, .L271+24 3357 0054 9342 cmp r3, r2 3358 0056 63D0 beq .L248 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3359 .loc 1 2163 0 discriminator 26 3360 0058 B44A ldr r2, .L271+28 3361 005a 9342 cmp r3, r2 3362 005c 62D0 beq .L249 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3363 .loc 1 2163 0 discriminator 28 3364 005e AE4A ldr r2, .L271+8 3365 0060 9342 cmp r3, r2 3366 0062 3DD0 beq .L264 2110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t brrtemp = 0x0000U; 3367 .loc 1 2110 0 is_stmt 1 3368 0064 1025 movs r5, #16 3369 .LVL260: 3370 .L209: 2164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3371 .loc 1 2164 0 3372 0066 0220 movs r0, #2 3373 0068 FFF7FEFF bl HAL_RCCEx_GetPeriphCLKFreq 3374 .LVL261: 2167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3375 .loc 1 2167 0 3376 006c 2668 ldr r6, [r4] 3377 006e AA4B ldr r3, .L271+8 3378 0070 9E42 cmp r6, r3 3379 0072 5BD0 beq .L265 2224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3380 .loc 1 2224 0 3381 0074 8023 movs r3, #128 3382 0076 1B02 lsls r3, r3, #8 3383 0078 E269 ldr r2, [r4, #28] 3384 007a 9A42 cmp r2, r3 ARM GAS /tmp/cc7An1gz.s page 116 3385 007c 00D1 bne .LCB2994 3386 007e 90E0 b .L266 @long jump 3387 .LCB2994: 2262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3388 .loc 1 2262 0 3389 0080 082D cmp r5, #8 3390 0082 00D9 bls .LCB2996 3391 0084 66E1 b .L260 @long jump 3392 .LCB2996: 3393 0086 AD00 lsls r5, r5, #2 3394 .LVL262: 3395 0088 A94B ldr r3, .L271+32 3396 008a 5B59 ldr r3, [r3, r5] 3397 008c 9F46 mov pc, r3 3398 .section .rodata.UART_SetConfig,"a",%progbits 3399 .align 2 3400 .L240: 3401 0000 56020000 .word .L239 3402 0004 72020000 .word .L241 3403 0008 8E020000 .word .L242 3404 000c 54030000 .word .L260 3405 0010 C6020000 .word .L243 3406 0014 54030000 .word .L260 3407 0018 54030000 .word .L260 3408 001c 54030000 .word .L260 3409 0020 E2020000 .word .L244 3410 .section .text.UART_SetConfig 3411 .LVL263: 3412 .L262: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3413 .loc 1 2163 0 discriminator 1 3414 008e A94B ldr r3, .L271+36 3415 0090 DA6C ldr r2, [r3, #76] 3416 0092 0323 movs r3, #3 3417 0094 1340 ands r3, r2 3418 0096 012B cmp r3, #1 3419 0098 09D0 beq .L207 3420 009a 002B cmp r3, #0 3421 009c 05D0 beq .L208 3422 009e 022B cmp r3, #2 3423 00a0 3AD0 beq .L246 3424 00a2 032B cmp r3, #3 3425 00a4 05D0 beq .L210 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3426 .loc 1 2163 0 is_stmt 0 discriminator 3 3427 00a6 1025 movs r5, #16 3428 00a8 DDE7 b .L209 3429 .L208: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3430 .loc 1 2163 0 3431 00aa 0125 movs r5, #1 3432 00ac DBE7 b .L209 3433 .L207: 3434 .LVL264: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3435 .loc 1 2163 0 discriminator 5 3436 00ae 0425 movs r5, #4 ARM GAS /tmp/cc7An1gz.s page 117 3437 00b0 D9E7 b .L209 3438 .LVL265: 3439 .L210: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3440 .loc 1 2163 0 discriminator 7 3441 00b2 0825 movs r5, #8 3442 00b4 D7E7 b .L209 3443 .LVL266: 3444 .L263: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3445 .loc 1 2163 0 discriminator 13 3446 00b6 9F4B ldr r3, .L271+36 3447 00b8 DA6C ldr r2, [r3, #76] 3448 00ba 0C23 movs r3, #12 3449 00bc 1340 ands r3, r2 3450 00be 042B cmp r3, #4 3451 00c0 0AD0 beq .L213 3452 00c2 05D9 bls .L267 3453 00c4 082B cmp r3, #8 3454 00c6 29D0 beq .L247 3455 00c8 0C2B cmp r3, #12 3456 00ca 07D1 bne .L212 3457 .LVL267: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3458 .loc 1 2163 0 discriminator 19 3459 00cc 0825 movs r5, #8 3460 00ce CAE7 b .L209 3461 .LVL268: 3462 .L267: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3463 .loc 1 2163 0 discriminator 13 3464 00d0 002B cmp r3, #0 3465 00d2 03D1 bne .L212 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3466 .loc 1 2163 0 3467 00d4 0025 movs r5, #0 3468 00d6 C6E7 b .L209 3469 .L213: 3470 .LVL269: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3471 .loc 1 2163 0 discriminator 17 3472 00d8 0425 movs r5, #4 3473 00da C4E7 b .L209 3474 .LVL270: 3475 .L212: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3476 .loc 1 2163 0 discriminator 15 3477 00dc 1025 movs r5, #16 3478 00de C2E7 b .L209 3479 .L264: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3480 .loc 1 2163 0 discriminator 29 3481 00e0 944B ldr r3, .L271+36 3482 00e2 DB6C ldr r3, [r3, #76] 3483 00e4 C022 movs r2, #192 3484 00e6 1201 lsls r2, r2, #4 3485 00e8 1340 ands r3, r2 ARM GAS /tmp/cc7An1gz.s page 118 3486 00ea 8022 movs r2, #128 3487 00ec D200 lsls r2, r2, #3 3488 00ee 9342 cmp r3, r2 3489 00f0 0ED0 beq .L218 3490 00f2 09D9 bls .L268 3491 00f4 8022 movs r2, #128 3492 00f6 1201 lsls r2, r2, #4 3493 00f8 9342 cmp r3, r2 3494 00fa 15D0 beq .L251 3495 00fc C022 movs r2, #192 3496 00fe 1201 lsls r2, r2, #4 3497 0100 9342 cmp r3, r2 3498 0102 07D1 bne .L217 3499 .LVL271: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3500 .loc 1 2163 0 discriminator 34 3501 0104 0825 movs r5, #8 3502 0106 AEE7 b .L209 3503 .LVL272: 3504 .L268: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3505 .loc 1 2163 0 discriminator 29 3506 0108 002B cmp r3, #0 3507 010a 03D1 bne .L217 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3508 .loc 1 2163 0 3509 010c 0025 movs r5, #0 3510 010e AAE7 b .L209 3511 .L218: 3512 .LVL273: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3513 .loc 1 2163 0 discriminator 32 3514 0110 0425 movs r5, #4 3515 0112 A8E7 b .L209 3516 .LVL274: 3517 .L217: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3518 .loc 1 2163 0 discriminator 30 3519 0114 1025 movs r5, #16 3520 0116 A6E7 b .L209 3521 .L246: 2163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t frequency = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_USART2); 3522 .loc 1 2163 0 3523 0118 0225 movs r5, #2 3524 011a A4E7 b .L209 3525 .L247: 3526 011c 0225 movs r5, #2 3527 011e A2E7 b .L209 3528 .L248: 3529 0120 0025 movs r5, #0 3530 0122 A0E7 b .L209 3531 .L249: 3532 0124 0025 movs r5, #0 3533 0126 9EE7 b .L209 3534 .L251: 3535 0128 0225 movs r5, #2 3536 012a 9CE7 b .L209 ARM GAS /tmp/cc7An1gz.s page 119 3537 .LVL275: 3538 .L265: 2172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3539 .loc 1 2172 0 is_stmt 1 3540 012c 022D cmp r5, #2 3541 012e 2DD0 beq .L224 3542 0130 07D9 bls .L269 3543 0132 042D cmp r5, #4 3544 0134 30D0 beq .L227 3545 0136 082D cmp r5, #8 3546 0138 00D0 beq .LCB3172 3547 013a DFE0 b .L252 @long jump 3548 .LCB3172: 2191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3549 .loc 1 2191 0 3550 013c 8020 movs r0, #128 3551 .LVL276: 3552 013e 0002 lsls r0, r0, #8 3553 0140 07E0 b .L228 3554 .LVL277: 3555 .L269: 2172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3556 .loc 1 2172 0 3557 0142 002D cmp r5, #0 3558 0144 00D0 beq .LCB3182 3559 0146 D9E0 b .L252 @long jump 3560 .LCB3182: 2175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3561 .loc 1 2175 0 3562 0148 FFF7FEFF bl HAL_RCC_GetPCLK1Freq 3563 .LVL278: 3564 .L229: 2200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3565 .loc 1 2200 0 3566 014c 0028 cmp r0, #0 3567 014e 00D1 bne .LCB3193 3568 0150 D6E0 b .L270 @long jump 3569 .LCB3193: 3570 .LVL279: 3571 .L228: 2203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (tmpreg > (4096 * huart->Init.BaudRate) )) 3572 .loc 1 2203 0 3573 0152 6268 ldr r2, [r4, #4] 3574 0154 5300 lsls r3, r2, #1 3575 0156 9B18 adds r3, r3, r2 3576 0158 8342 cmp r3, r0 3577 015a 00D9 bls .LCB3200 3578 015c D2E0 b .L256 @long jump 3579 .LCB3200: 2204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3580 .loc 1 2204 0 discriminator 1 3581 015e 1303 lsls r3, r2, #12 2203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** (tmpreg > (4096 * huart->Init.BaudRate) )) 3582 .loc 1 2203 0 discriminator 1 3583 0160 8342 cmp r3, r0 3584 0162 00D2 bcs .LCB3203 3585 0164 D0E0 b .L257 @long jump ARM GAS /tmp/cc7An1gz.s page 120 3586 .LCB3203: 2210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3587 .loc 1 2210 0 3588 0166 070E lsrs r7, r0, #24 3589 0168 0602 lsls r6, r0, #8 3590 016a 5008 lsrs r0, r2, #1 3591 016c 0021 movs r1, #0 3592 016e 8019 adds r0, r0, r6 3593 0170 7941 adcs r1, r1, r7 3594 0172 0023 movs r3, #0 3595 0174 FFF7FEFF bl __aeabi_uldivmod 3596 .LVL280: 2212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3597 .loc 1 2212 0 3598 0178 6F4B ldr r3, .L271+40 3599 017a C218 adds r2, r0, r3 3600 017c 6F4B ldr r3, .L271+44 3601 017e 9A42 cmp r2, r3 3602 0180 00D9 bls .LCB3220 3603 0182 C3E0 b .L258 @long jump 3604 .LCB3220: 2214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3605 .loc 1 2214 0 3606 0184 2368 ldr r3, [r4] 3607 0186 D860 str r0, [r3, #12] 3608 0188 0020 movs r0, #0 3609 .LVL281: 3610 018a 22E0 b .L223 3611 .LVL282: 3612 .L224: 2178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3613 .loc 1 2178 0 3614 018c 694B ldr r3, .L271+36 3615 018e 1B68 ldr r3, [r3] 3616 0190 DB06 lsls r3, r3, #27 3617 0192 04D4 bmi .L254 2184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3618 .loc 1 2184 0 3619 0194 6A48 ldr r0, .L271+48 3620 .LVL283: 3621 0196 DCE7 b .L228 3622 .LVL284: 3623 .L227: 2188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3624 .loc 1 2188 0 3625 0198 FFF7FEFF bl HAL_RCC_GetSysClockFreq 3626 .LVL285: 2189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 3627 .loc 1 2189 0 3628 019c D6E7 b .L229 3629 .LVL286: 3630 .L254: 2180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3631 .loc 1 2180 0 3632 019e 6948 ldr r0, .L271+52 3633 .LVL287: 3634 01a0 D7E7 b .L228 ARM GAS /tmp/cc7An1gz.s page 121 3635 .LVL288: 3636 .L266: 2226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3637 .loc 1 2226 0 3638 01a2 082D cmp r5, #8 3639 01a4 54D8 bhi .L259 3640 01a6 AD00 lsls r5, r5, #2 3641 .LVL289: 3642 01a8 674B ldr r3, .L271+56 3643 01aa 5B59 ldr r3, [r3, r5] 3644 01ac 9F46 mov pc, r3 3645 .section .rodata.UART_SetConfig 3646 .align 2 3647 .L233: 3648 0024 AE010000 .word .L232 3649 0028 D4010000 .word .L234 3650 002c EC010000 .word .L235 3651 0030 50020000 .word .L259 3652 0034 20020000 .word .L236 3653 0038 50020000 .word .L259 3654 003c 50020000 .word .L259 3655 0040 50020000 .word .L259 3656 0044 38020000 .word .L237 3657 .section .text.UART_SetConfig 3658 .L232: 2229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3659 .loc 1 2229 0 3660 01ae 4000 lsls r0, r0, #1 3661 .LVL290: 3662 01b0 6368 ldr r3, [r4, #4] 3663 01b2 5B08 lsrs r3, r3, #1 3664 01b4 C018 adds r0, r0, r3 3665 01b6 6168 ldr r1, [r4, #4] 3666 01b8 FFF7FEFF bl __aeabi_uidiv 3667 .LVL291: 3668 01bc 83B2 uxth r3, r0 3669 .LVL292: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3670 .loc 1 2113 0 3671 01be 0020 movs r0, #0 3672 .LVL293: 3673 .L231: 2256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** brrtemp |= (uint16_t)((uint16_t)(usartdiv & (uint16_t)0x000FU) >> (uint16_t)1U); 3674 .loc 1 2256 0 3675 01c0 0F22 movs r2, #15 3676 01c2 1900 movs r1, r3 3677 01c4 9143 bics r1, r2 3678 .LVL294: 2257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->Instance->BRR = brrtemp; 3679 .loc 1 2257 0 3680 01c6 5B10 asrs r3, r3, #1 3681 .LVL295: 3682 01c8 083A subs r2, r2, #8 3683 01ca 1340 ands r3, r2 3684 01cc 0B43 orrs r3, r1 3685 .LVL296: 2258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } ARM GAS /tmp/cc7An1gz.s page 122 3686 .loc 1 2258 0 3687 01ce 2268 ldr r2, [r4] 3688 01d0 D360 str r3, [r2, #12] 3689 .LVL297: 3690 .L223: 2295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3691 .loc 1 2295 0 3692 @ sp needed 3693 .LVL298: 3694 01d2 F8BD pop {r3, r4, r5, r6, r7, pc} 3695 .LVL299: 3696 .L234: 2232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3697 .loc 1 2232 0 3698 01d4 FFF7FEFF bl HAL_RCC_GetPCLK2Freq 3699 .LVL300: 3700 01d8 4000 lsls r0, r0, #1 3701 01da 6368 ldr r3, [r4, #4] 3702 01dc 5B08 lsrs r3, r3, #1 3703 01de C018 adds r0, r0, r3 3704 01e0 6168 ldr r1, [r4, #4] 3705 01e2 FFF7FEFF bl __aeabi_uidiv 3706 .LVL301: 3707 01e6 83B2 uxth r3, r0 3708 .LVL302: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3709 .loc 1 2113 0 3710 01e8 0020 movs r0, #0 2233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_HSI: 3711 .loc 1 2233 0 3712 01ea E9E7 b .L231 3713 .LVL303: 3714 .L235: 2235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3715 .loc 1 2235 0 3716 01ec 514B ldr r3, .L271+36 3717 01ee 1B68 ldr r3, [r3] 3718 01f0 DB06 lsls r3, r3, #27 3719 01f2 0AD5 bpl .L238 2237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3720 .loc 1 2237 0 3721 01f4 6368 ldr r3, [r4, #4] 3722 01f6 5808 lsrs r0, r3, #1 3723 .LVL304: 3724 01f8 544B ldr r3, .L271+60 3725 01fa 9C46 mov ip, r3 3726 01fc 6044 add r0, r0, ip 3727 01fe 6168 ldr r1, [r4, #4] 3728 0200 FFF7FEFF bl __aeabi_uidiv 3729 .LVL305: 3730 0204 83B2 uxth r3, r0 3731 .LVL306: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3732 .loc 1 2113 0 3733 0206 0020 movs r0, #0 3734 0208 DAE7 b .L231 3735 .LVL307: ARM GAS /tmp/cc7An1gz.s page 123 3736 .L238: 2241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3737 .loc 1 2241 0 3738 020a 6368 ldr r3, [r4, #4] 3739 020c 5808 lsrs r0, r3, #1 3740 .LVL308: 3741 020e 504B ldr r3, .L271+64 3742 0210 9C46 mov ip, r3 3743 0212 6044 add r0, r0, ip 3744 0214 6168 ldr r1, [r4, #4] 3745 0216 FFF7FEFF bl __aeabi_uidiv 3746 .LVL309: 3747 021a 83B2 uxth r3, r0 3748 .LVL310: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3749 .loc 1 2113 0 3750 021c 0020 movs r0, #0 3751 021e CFE7 b .L231 3752 .LVL311: 3753 .L236: 2245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3754 .loc 1 2245 0 3755 0220 FFF7FEFF bl HAL_RCC_GetSysClockFreq 3756 .LVL312: 3757 0224 4000 lsls r0, r0, #1 3758 0226 6368 ldr r3, [r4, #4] 3759 0228 5B08 lsrs r3, r3, #1 3760 022a C018 adds r0, r0, r3 3761 022c 6168 ldr r1, [r4, #4] 3762 022e FFF7FEFF bl __aeabi_uidiv 3763 .LVL313: 3764 0232 83B2 uxth r3, r0 3765 .LVL314: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3766 .loc 1 2113 0 3767 0234 0020 movs r0, #0 2246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 3768 .loc 1 2246 0 3769 0236 C3E7 b .L231 3770 .LVL315: 3771 .L237: 2248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3772 .loc 1 2248 0 3773 0238 6368 ldr r3, [r4, #4] 3774 023a 5808 lsrs r0, r3, #1 3775 .LVL316: 3776 023c 8023 movs r3, #128 3777 023e 5B02 lsls r3, r3, #9 3778 0240 9C46 mov ip, r3 3779 0242 6044 add r0, r0, ip 3780 0244 6168 ldr r1, [r4, #4] 3781 0246 FFF7FEFF bl __aeabi_uidiv 3782 .LVL317: 3783 024a 83B2 uxth r3, r0 3784 .LVL318: 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3785 .loc 1 2113 0 ARM GAS /tmp/cc7An1gz.s page 124 3786 024c 0020 movs r0, #0 2249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_UNDEFINED: 3787 .loc 1 2249 0 3788 024e B7E7 b .L231 3789 .LVL319: 3790 .L259: 2252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3791 .loc 1 2252 0 3792 0250 0120 movs r0, #1 3793 .LVL320: 2112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** HAL_StatusTypeDef ret = HAL_OK; 3794 .loc 1 2112 0 3795 0252 0023 movs r3, #0 3796 0254 B4E7 b .L231 3797 .LVL321: 3798 .L239: 2265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3799 .loc 1 2265 0 3800 0256 FFF7FEFF bl HAL_RCC_GetPCLK1Freq 3801 .LVL322: 3802 025a 6368 ldr r3, [r4, #4] 3803 025c 5B08 lsrs r3, r3, #1 3804 025e C018 adds r0, r0, r3 3805 0260 6168 ldr r1, [r4, #4] 3806 0262 FFF7FEFF bl __aeabi_uidiv 3807 .LVL323: 3808 0266 2368 ldr r3, [r4] 3809 0268 0004 lsls r0, r0, #16 3810 026a 000C lsrs r0, r0, #16 3811 026c D860 str r0, [r3, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3812 .loc 1 2113 0 3813 026e 0020 movs r0, #0 2266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_PCLK2: 3814 .loc 1 2266 0 3815 0270 AFE7 b .L223 3816 .LVL324: 3817 .L241: 2268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3818 .loc 1 2268 0 3819 0272 FFF7FEFF bl HAL_RCC_GetPCLK2Freq 3820 .LVL325: 3821 0276 6368 ldr r3, [r4, #4] 3822 0278 5B08 lsrs r3, r3, #1 3823 027a C018 adds r0, r0, r3 3824 027c 6168 ldr r1, [r4, #4] 3825 027e FFF7FEFF bl __aeabi_uidiv 3826 .LVL326: 3827 0282 2368 ldr r3, [r4] 3828 0284 0004 lsls r0, r0, #16 3829 0286 000C lsrs r0, r0, #16 3830 0288 D860 str r0, [r3, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3831 .loc 1 2113 0 3832 028a 0020 movs r0, #0 2269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_HSI: 3833 .loc 1 2269 0 ARM GAS /tmp/cc7An1gz.s page 125 3834 028c A1E7 b .L223 3835 .LVL327: 3836 .L242: 2271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3837 .loc 1 2271 0 3838 028e 294B ldr r3, .L271+36 3839 0290 1B68 ldr r3, [r3] 3840 0292 DB06 lsls r3, r3, #27 3841 0294 0BD5 bpl .L245 2273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3842 .loc 1 2273 0 3843 0296 6168 ldr r1, [r4, #4] 3844 0298 4808 lsrs r0, r1, #1 3845 .LVL328: 3846 029a 2A4B ldr r3, .L271+52 3847 029c 9C46 mov ip, r3 3848 029e 6044 add r0, r0, ip 3849 02a0 FFF7FEFF bl __aeabi_uidiv 3850 .LVL329: 3851 02a4 0004 lsls r0, r0, #16 3852 02a6 000C lsrs r0, r0, #16 3853 02a8 F060 str r0, [r6, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3854 .loc 1 2113 0 3855 02aa 0020 movs r0, #0 3856 02ac 91E7 b .L223 3857 .LVL330: 3858 .L245: 2277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3859 .loc 1 2277 0 3860 02ae 6168 ldr r1, [r4, #4] 3861 02b0 4808 lsrs r0, r1, #1 3862 .LVL331: 3863 02b2 234B ldr r3, .L271+48 3864 02b4 9C46 mov ip, r3 3865 02b6 6044 add r0, r0, ip 3866 02b8 FFF7FEFF bl __aeabi_uidiv 3867 .LVL332: 3868 02bc 0004 lsls r0, r0, #16 3869 02be 000C lsrs r0, r0, #16 3870 02c0 F060 str r0, [r6, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3871 .loc 1 2113 0 3872 02c2 0020 movs r0, #0 3873 02c4 85E7 b .L223 3874 .LVL333: 3875 .L243: 2281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3876 .loc 1 2281 0 3877 02c6 FFF7FEFF bl HAL_RCC_GetSysClockFreq 3878 .LVL334: 3879 02ca 6368 ldr r3, [r4, #4] 3880 02cc 5B08 lsrs r3, r3, #1 3881 02ce C018 adds r0, r0, r3 3882 02d0 6168 ldr r1, [r4, #4] 3883 02d2 FFF7FEFF bl __aeabi_uidiv 3884 .LVL335: ARM GAS /tmp/cc7An1gz.s page 126 3885 02d6 2368 ldr r3, [r4] 3886 02d8 0004 lsls r0, r0, #16 3887 02da 000C lsrs r0, r0, #16 3888 02dc D860 str r0, [r3, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3889 .loc 1 2113 0 3890 02de 0020 movs r0, #0 2282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_LSE: 3891 .loc 1 2282 0 3892 02e0 77E7 b .L223 3893 .LVL336: 3894 .L244: 2284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3895 .loc 1 2284 0 3896 02e2 6168 ldr r1, [r4, #4] 3897 02e4 4808 lsrs r0, r1, #1 3898 .LVL337: 3899 02e6 8023 movs r3, #128 3900 02e8 1B02 lsls r3, r3, #8 3901 02ea 9C46 mov ip, r3 3902 02ec 6044 add r0, r0, ip 3903 02ee FFF7FEFF bl __aeabi_uidiv 3904 .LVL338: 3905 02f2 0004 lsls r0, r0, #16 3906 02f4 000C lsrs r0, r0, #16 3907 02f6 F060 str r0, [r6, #12] 2113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 3908 .loc 1 2113 0 3909 02f8 0020 movs r0, #0 2285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** case UART_CLOCKSOURCE_UNDEFINED: 3910 .loc 1 2285 0 3911 02fa 6AE7 b .L223 3912 .LVL339: 3913 .L252: 2195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3914 .loc 1 2195 0 3915 02fc 0120 movs r0, #1 3916 .LVL340: 3917 02fe 68E7 b .L223 3918 .LVL341: 3919 .L270: 3920 0300 0020 movs r0, #0 3921 .LVL342: 3922 0302 66E7 b .L223 3923 .L256: 2206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3924 .loc 1 2206 0 3925 0304 0120 movs r0, #1 3926 0306 64E7 b .L223 3927 .L257: 3928 0308 0120 movs r0, #1 3929 030a 62E7 b .L223 3930 .LVL343: 3931 .L258: 2218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3932 .loc 1 2218 0 3933 030c 0120 movs r0, #1 ARM GAS /tmp/cc7An1gz.s page 127 3934 .LVL344: 3935 030e 60E7 b .L223 3936 .L272: 3937 .align 2 3938 .L271: 3939 0310 F369FFEF .word -268473869 3940 0314 FFCFFFFF .word -12289 3941 0318 00480040 .word 1073760256 3942 031c FFF4FFFF .word -2817 3943 0320 00380140 .word 1073821696 3944 0324 00440040 .word 1073759232 3945 0328 004C0040 .word 1073761280 3946 032c 00500040 .word 1073762304 3947 0330 00000000 .word .L240 3948 0334 00100240 .word 1073876992 3949 0338 00FDFFFF .word -768 3950 033c FFFC0F00 .word 1047807 3951 0340 0024F400 .word 16000000 3952 0344 00093D00 .word 4000000 3953 0348 24000000 .word .L233 3954 034c 00127A00 .word 8000000 3955 0350 0048E801 .word 32000000 3956 .LVL345: 3957 .L260: 2288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** break; 3958 .loc 1 2288 0 3959 0354 0120 movs r0, #1 3960 .LVL346: 3961 0356 3CE7 b .L223 3962 .cfi_endproc 3963 .LFE78: 3965 .section .text.UART_AdvFeatureConfig,"ax",%progbits 3966 .align 1 3967 .global UART_AdvFeatureConfig 3968 .syntax unified 3969 .code 16 3970 .thumb_func 3971 .fpu softvfp 3973 UART_AdvFeatureConfig: 3974 .LFB79: 2303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check whether the set of advanced features to configure is properly set */ 3975 .loc 1 2303 0 3976 .cfi_startproc 3977 @ args = 0, pretend = 0, frame = 0 3978 @ frame_needed = 0, uses_anonymous_args = 0 3979 @ link register save eliminated. 3980 .LVL347: 2308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3981 .loc 1 2308 0 3982 0000 436A ldr r3, [r0, #36] 3983 0002 DB07 lsls r3, r3, #31 3984 0004 06D5 bpl .L274 2311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3985 .loc 1 2311 0 3986 0006 0268 ldr r2, [r0] 3987 0008 5368 ldr r3, [r2, #4] 3988 000a 2C49 ldr r1, .L283 ARM GAS /tmp/cc7An1gz.s page 128 3989 000c 0B40 ands r3, r1 3990 000e 816A ldr r1, [r0, #40] 3991 0010 0B43 orrs r3, r1 3992 0012 5360 str r3, [r2, #4] 3993 .L274: 2315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 3994 .loc 1 2315 0 3995 0014 436A ldr r3, [r0, #36] 3996 0016 9B07 lsls r3, r3, #30 3997 0018 06D5 bpl .L275 2318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 3998 .loc 1 2318 0 3999 001a 0268 ldr r2, [r0] 4000 001c 5368 ldr r3, [r2, #4] 4001 001e 2849 ldr r1, .L283+4 4002 0020 0B40 ands r3, r1 4003 0022 C16A ldr r1, [r0, #44] 4004 0024 0B43 orrs r3, r1 4005 0026 5360 str r3, [r2, #4] 4006 .L275: 2322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4007 .loc 1 2322 0 4008 0028 436A ldr r3, [r0, #36] 4009 002a 5B07 lsls r3, r3, #29 4010 002c 06D5 bpl .L276 2325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4011 .loc 1 2325 0 4012 002e 0268 ldr r2, [r0] 4013 0030 5368 ldr r3, [r2, #4] 4014 0032 2449 ldr r1, .L283+8 4015 0034 0B40 ands r3, r1 4016 0036 016B ldr r1, [r0, #48] 4017 0038 0B43 orrs r3, r1 4018 003a 5360 str r3, [r2, #4] 4019 .L276: 2329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4020 .loc 1 2329 0 4021 003c 436A ldr r3, [r0, #36] 4022 003e 1B07 lsls r3, r3, #28 4023 0040 06D5 bpl .L277 2332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4024 .loc 1 2332 0 4025 0042 0268 ldr r2, [r0] 4026 0044 5368 ldr r3, [r2, #4] 4027 0046 2049 ldr r1, .L283+12 4028 0048 0B40 ands r3, r1 4029 004a 416B ldr r1, [r0, #52] 4030 004c 0B43 orrs r3, r1 4031 004e 5360 str r3, [r2, #4] 4032 .L277: 2336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4033 .loc 1 2336 0 4034 0050 436A ldr r3, [r0, #36] 4035 0052 DB06 lsls r3, r3, #27 4036 0054 06D5 bpl .L278 2339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4037 .loc 1 2339 0 ARM GAS /tmp/cc7An1gz.s page 129 4038 0056 0268 ldr r2, [r0] 4039 0058 9368 ldr r3, [r2, #8] 4040 005a 1C49 ldr r1, .L283+16 4041 005c 0B40 ands r3, r1 4042 005e 816B ldr r1, [r0, #56] 4043 0060 0B43 orrs r3, r1 4044 0062 9360 str r3, [r2, #8] 4045 .L278: 2343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4046 .loc 1 2343 0 4047 0064 436A ldr r3, [r0, #36] 4048 0066 9B06 lsls r3, r3, #26 4049 0068 06D5 bpl .L279 2346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4050 .loc 1 2346 0 4051 006a 0268 ldr r2, [r0] 4052 006c 9368 ldr r3, [r2, #8] 4053 006e 1849 ldr r1, .L283+20 4054 0070 0B40 ands r3, r1 4055 0072 C16B ldr r1, [r0, #60] 4056 0074 0B43 orrs r3, r1 4057 0076 9360 str r3, [r2, #8] 4058 .L279: 2350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4059 .loc 1 2350 0 4060 0078 436A ldr r3, [r0, #36] 4061 007a 5B06 lsls r3, r3, #25 4062 007c 0BD5 bpl .L280 2354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* set auto Baudrate detection parameters if detection is enabled */ 4063 .loc 1 2354 0 4064 007e 0268 ldr r2, [r0] 4065 0080 5368 ldr r3, [r2, #4] 4066 0082 1449 ldr r1, .L283+24 4067 0084 0B40 ands r3, r1 4068 0086 016C ldr r1, [r0, #64] 4069 0088 0B43 orrs r3, r1 4070 008a 5360 str r3, [r2, #4] 2356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4071 .loc 1 2356 0 4072 008c 8023 movs r3, #128 4073 008e 5B03 lsls r3, r3, #13 4074 0090 026C ldr r2, [r0, #64] 4075 0092 9A42 cmp r2, r3 4076 0094 0AD0 beq .L282 4077 .L280: 2364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4078 .loc 1 2364 0 4079 0096 436A ldr r3, [r0, #36] 4080 0098 1B06 lsls r3, r3, #24 4081 009a 06D5 bpl .L273 2367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4082 .loc 1 2367 0 4083 009c 0268 ldr r2, [r0] 4084 009e 5368 ldr r3, [r2, #4] 4085 00a0 0D49 ldr r1, .L283+28 4086 00a2 0B40 ands r3, r1 4087 00a4 816C ldr r1, [r0, #72] ARM GAS /tmp/cc7An1gz.s page 130 4088 00a6 0B43 orrs r3, r1 4089 00a8 5360 str r3, [r2, #4] 4090 .L273: 2369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4091 .loc 1 2369 0 4092 @ sp needed 4093 00aa 7047 bx lr 4094 .L282: 2359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4095 .loc 1 2359 0 4096 00ac 0268 ldr r2, [r0] 4097 00ae 5368 ldr r3, [r2, #4] 4098 00b0 0A49 ldr r1, .L283+32 4099 00b2 0B40 ands r3, r1 4100 00b4 416C ldr r1, [r0, #68] 4101 00b6 0B43 orrs r3, r1 4102 00b8 5360 str r3, [r2, #4] 4103 00ba ECE7 b .L280 4104 .L284: 4105 .align 2 4106 .L283: 4107 00bc FFFFFDFF .word -131073 4108 00c0 FFFFFEFF .word -65537 4109 00c4 FFFFFBFF .word -262145 4110 00c8 FF7FFFFF .word -32769 4111 00cc FFEFFFFF .word -4097 4112 00d0 FFDFFFFF .word -8193 4113 00d4 FFFFEFFF .word -1048577 4114 00d8 FFFFF7FF .word -524289 4115 00dc FFFF9FFF .word -6291457 4116 .cfi_endproc 4117 .LFE79: 4119 .section .text.UART_WaitOnFlagUntilTimeout,"ax",%progbits 4120 .align 1 4121 .global UART_WaitOnFlagUntilTimeout 4122 .syntax unified 4123 .code 16 4124 .thumb_func 4125 .fpu softvfp 4127 UART_WaitOnFlagUntilTimeout: 4128 .LFB81: 2427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Wait until flag is set */ 4129 .loc 1 2427 0 4130 .cfi_startproc 4131 @ args = 4, pretend = 0, frame = 0 4132 @ frame_needed = 0, uses_anonymous_args = 0 4133 .LVL348: 4134 0000 F0B5 push {r4, r5, r6, r7, lr} 4135 .LCFI28: 4136 .cfi_def_cfa_offset 20 4137 .cfi_offset 4, -20 4138 .cfi_offset 5, -16 4139 .cfi_offset 6, -12 4140 .cfi_offset 7, -8 4141 .cfi_offset 14, -4 4142 0002 C646 mov lr, r8 4143 0004 00B5 push {lr} ARM GAS /tmp/cc7An1gz.s page 131 4144 .LCFI29: 4145 .cfi_def_cfa_offset 24 4146 .cfi_offset 8, -24 4147 0006 0600 movs r6, r0 4148 0008 0C00 movs r4, r1 4149 000a 1700 movs r7, r2 4150 000c 9846 mov r8, r3 4151 000e 069D ldr r5, [sp, #24] 4152 .LVL349: 4153 .L287: 2429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4154 .loc 1 2429 0 4155 0010 3368 ldr r3, [r6] 4156 0012 DB69 ldr r3, [r3, #28] 4157 0014 2340 ands r3, r4 4158 0016 1B1B subs r3, r3, r4 4159 0018 5A42 rsbs r2, r3, #0 4160 001a 5341 adcs r3, r3, r2 4161 001c BB42 cmp r3, r7 4162 001e 1ED1 bne .L291 2432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4163 .loc 1 2432 0 4164 0020 6B1C adds r3, r5, #1 4165 0022 F5D0 beq .L287 2434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4166 .loc 1 2434 0 4167 0024 002D cmp r5, #0 4168 0026 05D0 beq .L288 2434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4169 .loc 1 2434 0 is_stmt 0 discriminator 1 4170 0028 FFF7FEFF bl HAL_GetTick 4171 .LVL350: 4172 002c 4346 mov r3, r8 4173 002e C01A subs r0, r0, r3 4174 0030 A842 cmp r0, r5 4175 0032 EDD9 bls .L287 4176 .L288: 2437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); 4177 .loc 1 2437 0 is_stmt 1 4178 0034 3268 ldr r2, [r6] 4179 0036 1368 ldr r3, [r2] 4180 0038 0B49 ldr r1, .L292 4181 003a 0B40 ands r3, r1 4182 003c 1360 str r3, [r2] 2438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4183 .loc 1 2438 0 4184 003e 3268 ldr r2, [r6] 4185 0040 9368 ldr r3, [r2, #8] 4186 0042 A331 adds r1, r1, #163 4187 0044 FF31 adds r1, r1, #255 4188 0046 8B43 bics r3, r1 4189 0048 9360 str r3, [r2, #8] 2440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 4190 .loc 1 2440 0 4191 004a 2023 movs r3, #32 4192 004c 6922 movs r2, #105 4193 004e B354 strb r3, [r6, r2] ARM GAS /tmp/cc7An1gz.s page 132 2441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4194 .loc 1 2441 0 4195 0050 0132 adds r2, r2, #1 4196 0052 B354 strb r3, [r6, r2] 2444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** return HAL_TIMEOUT; 4197 .loc 1 2444 0 4198 0054 4833 adds r3, r3, #72 4199 0056 0022 movs r2, #0 4200 0058 F254 strb r2, [r6, r3] 2445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4201 .loc 1 2445 0 4202 005a 0320 movs r0, #3 4203 005c 00E0 b .L289 4204 .L291: 2449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4205 .loc 1 2449 0 4206 005e 0020 movs r0, #0 4207 .L289: 2450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4208 .loc 1 2450 0 4209 @ sp needed 4210 .LVL351: 4211 .LVL352: 4212 .LVL353: 4213 0060 04BC pop {r2} 4214 0062 9046 mov r8, r2 4215 0064 F0BD pop {r4, r5, r6, r7, pc} 4216 .L293: 4217 0066 C046 .align 2 4218 .L292: 4219 0068 5FFEFFFF .word -417 4220 .cfi_endproc 4221 .LFE81: 4223 .section .text.HAL_UART_Transmit,"ax",%progbits 4224 .align 1 4225 .global HAL_UART_Transmit 4226 .syntax unified 4227 .code 16 4228 .thumb_func 4229 .fpu softvfp 4231 HAL_UART_Transmit: 4232 .LFB46: 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 4233 .loc 1 659 0 4234 .cfi_startproc 4235 @ args = 0, pretend = 0, frame = 8 4236 @ frame_needed = 0, uses_anonymous_args = 0 4237 .LVL354: 4238 0000 F0B5 push {r4, r5, r6, r7, lr} 4239 .LCFI30: 4240 .cfi_def_cfa_offset 20 4241 .cfi_offset 4, -20 4242 .cfi_offset 5, -16 4243 .cfi_offset 6, -12 4244 .cfi_offset 7, -8 4245 .cfi_offset 14, -4 4246 0002 85B0 sub sp, sp, #20 ARM GAS /tmp/cc7An1gz.s page 133 4247 .LCFI31: 4248 .cfi_def_cfa_offset 40 4249 0004 0400 movs r4, r0 4250 0006 0E00 movs r6, r1 4251 0008 1700 movs r7, r2 4252 000a 1D00 movs r5, r3 4253 .LVL355: 664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4254 .loc 1 664 0 4255 000c 6923 movs r3, #105 4256 .LVL356: 4257 000e C35C ldrb r3, [r0, r3] 4258 0010 202B cmp r3, #32 4259 0012 59D1 bne .L301 666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4260 .loc 1 666 0 4261 0014 0029 cmp r1, #0 4262 0016 5AD0 beq .L302 666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4263 .loc 1 666 0 is_stmt 0 discriminator 1 4264 0018 002A cmp r2, #0 4265 001a 5AD0 beq .L303 674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4266 .loc 1 674 0 is_stmt 1 4267 001c 8023 movs r3, #128 4268 001e 5B01 lsls r3, r3, #5 4269 0020 8268 ldr r2, [r0, #8] 4270 .LVL357: 4271 0022 9A42 cmp r2, r3 4272 0024 13D0 beq .L308 4273 .L296: 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4274 .loc 1 683 0 4275 0026 6823 movs r3, #104 4276 0028 E35C ldrb r3, [r4, r3] 4277 002a 012B cmp r3, #1 4278 002c 53D0 beq .L305 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4279 .loc 1 683 0 is_stmt 0 discriminator 2 4280 002e 6823 movs r3, #104 4281 0030 0122 movs r2, #1 4282 0032 E254 strb r2, [r4, r3] 685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->gState = HAL_UART_STATE_BUSY_TX; 4283 .loc 1 685 0 is_stmt 1 discriminator 2 4284 0034 0023 movs r3, #0 4285 0036 E366 str r3, [r4, #108] 686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4286 .loc 1 686 0 discriminator 2 4287 0038 6933 adds r3, r3, #105 4288 003a 2032 adds r2, r2, #32 4289 003c E254 strb r2, [r4, r3] 689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4290 .loc 1 689 0 discriminator 2 4291 003e FFF7FEFF bl HAL_GetTick 4292 .LVL358: 4293 0042 0390 str r0, [sp, #12] 4294 .LVL359: ARM GAS /tmp/cc7An1gz.s page 134 691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->TxXferCount = Size; 4295 .loc 1 691 0 discriminator 2 4296 0044 5023 movs r3, #80 4297 0046 E752 strh r7, [r4, r3] 692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** while(huart->TxXferCount > 0U) 4298 .loc 1 692 0 discriminator 2 4299 0048 0233 adds r3, r3, #2 4300 004a E752 strh r7, [r4, r3] 693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4301 .loc 1 693 0 discriminator 2 4302 004c 0AE0 b .L297 4303 .LVL360: 4304 .L308: 674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4305 .loc 1 674 0 discriminator 1 4306 004e 0369 ldr r3, [r0, #16] 4307 0050 002B cmp r3, #0 4308 0052 E8D1 bne .L296 676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4309 .loc 1 676 0 4310 0054 CB07 lsls r3, r1, #31 4311 0056 E6D5 bpl .L296 678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4312 .loc 1 678 0 4313 0058 0120 movs r0, #1 4314 .LVL361: 4315 005a 36E0 b .L295 4316 .LVL362: 4317 .L298: 708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4318 .loc 1 708 0 4319 005c 3278 ldrb r2, [r6] 4320 005e 2368 ldr r3, [r4] 4321 0060 9A62 str r2, [r3, #40] 4322 0062 0136 adds r6, r6, #1 4323 .LVL363: 4324 .L297: 693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4325 .loc 1 693 0 4326 0064 5223 movs r3, #82 4327 0066 E35A ldrh r3, [r4, r3] 4328 0068 9BB2 uxth r3, r3 4329 006a 002B cmp r3, #0 4330 006c 1CD0 beq .L309 695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) 4331 .loc 1 695 0 4332 006e 5222 movs r2, #82 4333 0070 A35A ldrh r3, [r4, r2] 4334 0072 013B subs r3, r3, #1 4335 0074 9BB2 uxth r3, r3 4336 0076 A352 strh r3, [r4, r2] 696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4337 .loc 1 696 0 4338 0078 0095 str r5, [sp] 4339 007a 039B ldr r3, [sp, #12] 4340 007c 0022 movs r2, #0 4341 007e 8021 movs r1, #128 ARM GAS /tmp/cc7An1gz.s page 135 4342 0080 2000 movs r0, r4 4343 0082 FFF7FEFF bl UART_WaitOnFlagUntilTimeout 4344 .LVL364: 4345 0086 0028 cmp r0, #0 4346 0088 27D1 bne .L306 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4347 .loc 1 700 0 4348 008a 8023 movs r3, #128 4349 008c 5B01 lsls r3, r3, #5 4350 008e A268 ldr r2, [r4, #8] 4351 0090 9A42 cmp r2, r3 4352 0092 E3D1 bne .L298 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4353 .loc 1 700 0 is_stmt 0 discriminator 1 4354 0094 2369 ldr r3, [r4, #16] 4355 0096 002B cmp r3, #0 4356 0098 E0D1 bne .L298 4357 .LVL365: 703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** pData += 2U; 4358 .loc 1 703 0 is_stmt 1 4359 009a 3388 ldrh r3, [r6] 4360 009c 2268 ldr r2, [r4] 4361 009e DB05 lsls r3, r3, #23 4362 00a0 DB0D lsrs r3, r3, #23 4363 00a2 9362 str r3, [r2, #40] 704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4364 .loc 1 704 0 4365 00a4 0236 adds r6, r6, #2 4366 .LVL366: 4367 00a6 DDE7 b .L297 4368 .LVL367: 4369 .L309: 711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4370 .loc 1 711 0 4371 00a8 0095 str r5, [sp] 4372 00aa 039B ldr r3, [sp, #12] 4373 00ac 0022 movs r2, #0 4374 00ae 4021 movs r1, #64 4375 00b0 2000 movs r0, r4 4376 00b2 FFF7FEFF bl UART_WaitOnFlagUntilTimeout 4377 .LVL368: 4378 00b6 0028 cmp r0, #0 4379 00b8 11D1 bne .L307 717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4380 .loc 1 717 0 4381 00ba 6923 movs r3, #105 4382 00bc 2022 movs r2, #32 4383 00be E254 strb r2, [r4, r3] 720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4384 .loc 1 720 0 4385 00c0 013B subs r3, r3, #1 4386 00c2 0022 movs r2, #0 4387 00c4 E254 strb r2, [r4, r3] 722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4388 .loc 1 722 0 4389 00c6 00E0 b .L295 4390 .LVL369: ARM GAS /tmp/cc7An1gz.s page 136 4391 .L301: 726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4392 .loc 1 726 0 4393 00c8 0220 movs r0, #2 4394 .LVL370: 4395 .L295: 728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4396 .loc 1 728 0 4397 00ca 05B0 add sp, sp, #20 4398 @ sp needed 4399 .LVL371: 4400 .LVL372: 4401 .LVL373: 4402 00cc F0BD pop {r4, r5, r6, r7, pc} 4403 .LVL374: 4404 .L302: 668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4405 .loc 1 668 0 4406 00ce 0120 movs r0, #1 4407 .LVL375: 4408 00d0 FBE7 b .L295 4409 .LVL376: 4410 .L303: 4411 00d2 0120 movs r0, #1 4412 .LVL377: 4413 00d4 F9E7 b .L295 4414 .LVL378: 4415 .L305: 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4416 .loc 1 683 0 4417 00d6 0220 movs r0, #2 4418 .LVL379: 4419 00d8 F7E7 b .L295 4420 .LVL380: 4421 .L306: 698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4422 .loc 1 698 0 4423 00da 0320 movs r0, #3 4424 00dc F5E7 b .L295 4425 .L307: 713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4426 .loc 1 713 0 4427 00de 0320 movs r0, #3 4428 00e0 F3E7 b .L295 4429 .cfi_endproc 4430 .LFE46: 4432 .section .text.HAL_UART_Receive,"ax",%progbits 4433 .align 1 4434 .global HAL_UART_Receive 4435 .syntax unified 4436 .code 16 4437 .thumb_func 4438 .fpu softvfp 4440 HAL_UART_Receive: 4441 .LFB47: 743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint16_t* tmp; 4442 .loc 1 743 0 ARM GAS /tmp/cc7An1gz.s page 137 4443 .cfi_startproc 4444 @ args = 0, pretend = 0, frame = 8 4445 @ frame_needed = 0, uses_anonymous_args = 0 4446 .LVL381: 4447 0000 F0B5 push {r4, r5, r6, r7, lr} 4448 .LCFI32: 4449 .cfi_def_cfa_offset 20 4450 .cfi_offset 4, -20 4451 .cfi_offset 5, -16 4452 .cfi_offset 6, -12 4453 .cfi_offset 7, -8 4454 .cfi_offset 14, -4 4455 0002 85B0 sub sp, sp, #20 4456 .LCFI33: 4457 .cfi_def_cfa_offset 40 4458 0004 0400 movs r4, r0 4459 0006 0F00 movs r7, r1 4460 0008 1600 movs r6, r2 4461 000a 1D00 movs r5, r3 4462 .LVL382: 749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4463 .loc 1 749 0 4464 000c 6A23 movs r3, #106 4465 .LVL383: 4466 000e C35C ldrb r3, [r0, r3] 4467 0010 202B cmp r3, #32 4468 0012 00D0 beq .LCB4183 4469 0014 83E0 b .L323 @long jump 4470 .LCB4183: 751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4471 .loc 1 751 0 4472 0016 0029 cmp r1, #0 4473 0018 00D1 bne .LCB4185 4474 001a 83E0 b .L324 @long jump 4475 .LCB4185: 751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4476 .loc 1 751 0 is_stmt 0 discriminator 1 4477 001c 002A cmp r2, #0 4478 001e 00D1 bne .LCB4187 4479 0020 82E0 b .L325 @long jump 4480 .LCB4187: 759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4481 .loc 1 759 0 is_stmt 1 4482 0022 8023 movs r3, #128 4483 0024 5B01 lsls r3, r3, #5 4484 0026 8268 ldr r2, [r0, #8] 4485 .LVL384: 4486 0028 9A42 cmp r2, r3 4487 002a 21D0 beq .L329 4488 .L312: 768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4489 .loc 1 768 0 4490 002c 6823 movs r3, #104 4491 002e E35C ldrb r3, [r4, r3] 4492 0030 012B cmp r3, #1 4493 0032 00D1 bne .LCB4199 4494 0034 7AE0 b .L327 @long jump ARM GAS /tmp/cc7An1gz.s page 138 4495 .LCB4199: 768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4496 .loc 1 768 0 is_stmt 0 discriminator 2 4497 0036 6823 movs r3, #104 4498 0038 0122 movs r2, #1 4499 003a E254 strb r2, [r4, r3] 770:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_BUSY_RX; 4500 .loc 1 770 0 is_stmt 1 discriminator 2 4501 003c 0023 movs r3, #0 4502 003e E366 str r3, [r4, #108] 771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4503 .loc 1 771 0 discriminator 2 4504 0040 6A33 adds r3, r3, #106 4505 0042 2132 adds r2, r2, #33 4506 0044 E254 strb r2, [r4, r3] 774:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4507 .loc 1 774 0 discriminator 2 4508 0046 FFF7FEFF bl HAL_GetTick 4509 .LVL385: 4510 004a 0390 str r0, [sp, #12] 4511 .LVL386: 776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxXferCount = Size; 4512 .loc 1 776 0 discriminator 2 4513 004c 5823 movs r3, #88 4514 004e E652 strh r6, [r4, r3] 777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4515 .loc 1 777 0 discriminator 2 4516 0050 0233 adds r3, r3, #2 4517 0052 E652 strh r6, [r4, r3] 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4518 .loc 1 780 0 discriminator 2 4519 0054 A368 ldr r3, [r4, #8] 4520 0056 8022 movs r2, #128 4521 0058 5201 lsls r2, r2, #5 4522 005a 9342 cmp r3, r2 4523 005c 0FD0 beq .L330 4524 005e 002B cmp r3, #0 4525 0060 1CD1 bne .L316 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4526 .loc 1 780 0 is_stmt 0 discriminator 5 4527 0062 2369 ldr r3, [r4, #16] 4528 0064 002B cmp r3, #0 4529 0066 15D1 bne .L317 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4530 .loc 1 780 0 discriminator 7 4531 0068 5C33 adds r3, r3, #92 4532 006a FF22 movs r2, #255 4533 006c E252 strh r2, [r4, r3] 4534 006e 19E0 b .L315 4535 .LVL387: 4536 .L329: 759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4537 .loc 1 759 0 is_stmt 1 discriminator 1 4538 0070 0369 ldr r3, [r0, #16] 4539 0072 002B cmp r3, #0 4540 0074 DAD1 bne .L312 761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { ARM GAS /tmp/cc7An1gz.s page 139 4541 .loc 1 761 0 4542 0076 CB07 lsls r3, r1, #31 4543 0078 D8D5 bpl .L312 763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4544 .loc 1 763 0 4545 007a 0120 movs r0, #1 4546 .LVL388: 4547 007c 50E0 b .L311 4548 .LVL389: 4549 .L330: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4550 .loc 1 780 0 discriminator 1 4551 007e 2369 ldr r3, [r4, #16] 4552 0080 002B cmp r3, #0 4553 0082 03D1 bne .L314 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4554 .loc 1 780 0 is_stmt 0 discriminator 3 4555 0084 5C33 adds r3, r3, #92 4556 0086 2B4A ldr r2, .L333 4557 0088 E252 strh r2, [r4, r3] 4558 008a 0BE0 b .L315 4559 .L314: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4560 .loc 1 780 0 discriminator 4 4561 008c 5C23 movs r3, #92 4562 008e FF22 movs r2, #255 4563 0090 E252 strh r2, [r4, r3] 4564 0092 07E0 b .L315 4565 .L317: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4566 .loc 1 780 0 discriminator 8 4567 0094 5C23 movs r3, #92 4568 0096 7F22 movs r2, #127 4569 0098 E252 strh r2, [r4, r3] 4570 009a 03E0 b .L315 4571 .L316: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4572 .loc 1 780 0 discriminator 6 4573 009c 8022 movs r2, #128 4574 009e 5205 lsls r2, r2, #21 4575 00a0 9342 cmp r3, r2 4576 00a2 02D0 beq .L331 4577 .L315: 781:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4578 .loc 1 781 0 is_stmt 1 4579 00a4 5C23 movs r3, #92 4580 00a6 E65A ldrh r6, [r4, r3] 4581 .LVL390: 784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4582 .loc 1 784 0 4583 00a8 10E0 b .L319 4584 .LVL391: 4585 .L331: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4586 .loc 1 780 0 discriminator 9 4587 00aa 2369 ldr r3, [r4, #16] 4588 00ac 002B cmp r3, #0 ARM GAS /tmp/cc7An1gz.s page 140 4589 00ae 03D1 bne .L318 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4590 .loc 1 780 0 is_stmt 0 discriminator 10 4591 00b0 5C33 adds r3, r3, #92 4592 00b2 7F22 movs r2, #127 4593 00b4 E252 strh r2, [r4, r3] 4594 00b6 F5E7 b .L315 4595 .L318: 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uhMask = huart->Mask; 4596 .loc 1 780 0 discriminator 11 4597 00b8 5C23 movs r3, #92 4598 00ba 3F22 movs r2, #63 4599 00bc E252 strh r2, [r4, r3] 4600 00be F1E7 b .L315 4601 .LVL392: 4602 .L320: 799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4603 .loc 1 799 0 is_stmt 1 4604 00c0 2368 ldr r3, [r4] 4605 00c2 5B6A ldr r3, [r3, #36] 4606 00c4 F2B2 uxtb r2, r6 4607 .LVL393: 4608 00c6 1340 ands r3, r2 4609 00c8 3B70 strb r3, [r7] 4610 00ca 0137 adds r7, r7, #1 4611 .LVL394: 4612 .L319: 784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4613 .loc 1 784 0 4614 00cc 5A23 movs r3, #90 4615 00ce E35A ldrh r3, [r4, r3] 4616 00d0 9BB2 uxth r3, r3 4617 00d2 002B cmp r3, #0 4618 00d4 1BD0 beq .L332 786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** if(UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) 4619 .loc 1 786 0 4620 00d6 5A22 movs r2, #90 4621 00d8 A35A ldrh r3, [r4, r2] 4622 00da 013B subs r3, r3, #1 4623 00dc 9BB2 uxth r3, r3 4624 00de A352 strh r3, [r4, r2] 787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4625 .loc 1 787 0 4626 00e0 0095 str r5, [sp] 4627 00e2 039B ldr r3, [sp, #12] 4628 00e4 0022 movs r2, #0 4629 00e6 2021 movs r1, #32 4630 00e8 2000 movs r0, r4 4631 00ea FFF7FEFF bl UART_WaitOnFlagUntilTimeout 4632 .LVL395: 4633 00ee 0028 cmp r0, #0 4634 00f0 1ED1 bne .L328 791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4635 .loc 1 791 0 4636 00f2 8023 movs r3, #128 4637 00f4 5B01 lsls r3, r3, #5 4638 00f6 A268 ldr r2, [r4, #8] ARM GAS /tmp/cc7An1gz.s page 141 4639 00f8 9A42 cmp r2, r3 4640 00fa E1D1 bne .L320 791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4641 .loc 1 791 0 is_stmt 0 discriminator 1 4642 00fc 2369 ldr r3, [r4, #16] 4643 00fe 002B cmp r3, #0 4644 0100 DED1 bne .L320 4645 .LVL396: 794:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** pData +=2U; 4646 .loc 1 794 0 is_stmt 1 4647 0102 2368 ldr r3, [r4] 4648 0104 5B6A ldr r3, [r3, #36] 4649 0106 3340 ands r3, r6 4650 0108 3B80 strh r3, [r7] 795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4651 .loc 1 795 0 4652 010a 0237 adds r7, r7, #2 4653 .LVL397: 4654 010c DEE7 b .L319 4655 .LVL398: 4656 .L332: 804:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4657 .loc 1 804 0 4658 010e 6A33 adds r3, r3, #106 4659 0110 2022 movs r2, #32 4660 0112 E254 strb r2, [r4, r3] 807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4661 .loc 1 807 0 4662 0114 023B subs r3, r3, #2 4663 0116 0022 movs r2, #0 4664 0118 E254 strb r2, [r4, r3] 809:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4665 .loc 1 809 0 4666 011a 0020 movs r0, #0 4667 011c 00E0 b .L311 4668 .LVL399: 4669 .L323: 813:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4670 .loc 1 813 0 4671 011e 0220 movs r0, #2 4672 .LVL400: 4673 .L311: 815:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4674 .loc 1 815 0 4675 0120 05B0 add sp, sp, #20 4676 @ sp needed 4677 .LVL401: 4678 .LVL402: 4679 .LVL403: 4680 0122 F0BD pop {r4, r5, r6, r7, pc} 4681 .LVL404: 4682 .L324: 753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4683 .loc 1 753 0 4684 0124 0120 movs r0, #1 4685 .LVL405: 4686 0126 FBE7 b .L311 ARM GAS /tmp/cc7An1gz.s page 142 4687 .LVL406: 4688 .L325: 4689 0128 0120 movs r0, #1 4690 .LVL407: 4691 012a F9E7 b .L311 4692 .LVL408: 4693 .L327: 768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4694 .loc 1 768 0 4695 012c 0220 movs r0, #2 4696 .LVL409: 4697 012e F7E7 b .L311 4698 .LVL410: 4699 .L328: 789:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4700 .loc 1 789 0 4701 0130 0320 movs r0, #3 4702 0132 F5E7 b .L311 4703 .L334: 4704 .align 2 4705 .L333: 4706 0134 FF010000 .word 511 4707 .cfi_endproc 4708 .LFE47: 4710 .section .text.UART_CheckIdleState,"ax",%progbits 4711 .align 1 4712 .global UART_CheckIdleState 4713 .syntax unified 4714 .code 16 4715 .thumb_func 4716 .fpu softvfp 4718 UART_CheckIdleState: 4719 .LFB80: 2377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** uint32_t tickstart = 0; 4720 .loc 1 2377 0 4721 .cfi_startproc 4722 @ args = 0, pretend = 0, frame = 0 4723 @ frame_needed = 0, uses_anonymous_args = 0 4724 .LVL411: 4725 0000 30B5 push {r4, r5, lr} 4726 .LCFI34: 4727 .cfi_def_cfa_offset 12 4728 .cfi_offset 4, -12 4729 .cfi_offset 5, -8 4730 .cfi_offset 14, -4 4731 0002 83B0 sub sp, sp, #12 4732 .LCFI35: 4733 .cfi_def_cfa_offset 24 4734 0004 0400 movs r4, r0 4735 .LVL412: 2381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4736 .loc 1 2381 0 4737 0006 0023 movs r3, #0 4738 0008 C366 str r3, [r0, #108] 2384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4739 .loc 1 2384 0 4740 000a FFF7FEFF bl HAL_GetTick ARM GAS /tmp/cc7An1gz.s page 143 4741 .LVL413: 4742 000e 0500 movs r5, r0 4743 .LVL414: 2387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4744 .loc 1 2387 0 4745 0010 2368 ldr r3, [r4] 4746 0012 1B68 ldr r3, [r3] 4747 0014 1B07 lsls r3, r3, #28 4748 0016 0ED4 bmi .L341 4749 .LVL415: 4750 .L336: 2397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4751 .loc 1 2397 0 4752 0018 2368 ldr r3, [r4] 4753 001a 1B68 ldr r3, [r3] 4754 001c 5B07 lsls r3, r3, #29 4755 001e 17D4 bmi .L342 4756 .L338: 2408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** huart->RxState = HAL_UART_STATE_READY; 4757 .loc 1 2408 0 4758 0020 2023 movs r3, #32 4759 0022 6922 movs r2, #105 4760 0024 A354 strb r3, [r4, r2] 2409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4761 .loc 1 2409 0 4762 0026 0132 adds r2, r2, #1 4763 0028 A354 strb r3, [r4, r2] 2412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4764 .loc 1 2412 0 4765 002a 4833 adds r3, r3, #72 4766 002c 0022 movs r2, #0 4767 002e E254 strb r2, [r4, r3] 2414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4768 .loc 1 2414 0 4769 0030 0020 movs r0, #0 4770 .L337: 2415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4771 .loc 1 2415 0 4772 0032 03B0 add sp, sp, #12 4773 @ sp needed 4774 .LVL416: 4775 .LVL417: 4776 0034 30BD pop {r4, r5, pc} 4777 .LVL418: 4778 .L341: 2390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4779 .loc 1 2390 0 4780 0036 8021 movs r1, #128 4781 0038 0C4B ldr r3, .L343 4782 003a 0093 str r3, [sp] 4783 003c 0300 movs r3, r0 4784 003e 0022 movs r2, #0 4785 0040 8903 lsls r1, r1, #14 4786 0042 2000 movs r0, r4 4787 .LVL419: 4788 0044 FFF7FEFF bl UART_WaitOnFlagUntilTimeout 4789 .LVL420: ARM GAS /tmp/cc7An1gz.s page 144 4790 0048 0028 cmp r0, #0 4791 004a E5D0 beq .L336 2393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4792 .loc 1 2393 0 4793 004c 0320 movs r0, #3 4794 004e F0E7 b .L337 4795 .L342: 2400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4796 .loc 1 2400 0 4797 0050 8021 movs r1, #128 4798 0052 064B ldr r3, .L343 4799 0054 0093 str r3, [sp] 4800 0056 2B00 movs r3, r5 4801 0058 0022 movs r2, #0 4802 005a C903 lsls r1, r1, #15 4803 005c 2000 movs r0, r4 4804 005e FFF7FEFF bl UART_WaitOnFlagUntilTimeout 4805 .LVL421: 4806 0062 0028 cmp r0, #0 4807 0064 DCD0 beq .L338 2403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4808 .loc 1 2403 0 4809 0066 0320 movs r0, #3 4810 0068 E3E7 b .L337 4811 .L344: 4812 006a C046 .align 2 4813 .L343: 4814 006c FFFFFF01 .word 33554431 4815 .cfi_endproc 4816 .LFE80: 4818 .section .text.HAL_UART_Init,"ax",%progbits 4819 .align 1 4820 .global HAL_UART_Init 4821 .syntax unified 4822 .code 16 4823 .thumb_func 4824 .fpu softvfp 4826 HAL_UART_Init: 4827 .LFB39: 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 4828 .loc 1 226 0 4829 .cfi_startproc 4830 @ args = 0, pretend = 0, frame = 0 4831 @ frame_needed = 0, uses_anonymous_args = 0 4832 .LVL422: 4833 0000 10B5 push {r4, lr} 4834 .LCFI36: 4835 .cfi_def_cfa_offset 8 4836 .cfi_offset 4, -8 4837 .cfi_offset 14, -4 4838 0002 041E subs r4, r0, #0 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4839 .loc 1 228 0 4840 0004 30D0 beq .L349 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4841 .loc 1 244 0 4842 0006 6923 movs r3, #105 ARM GAS /tmp/cc7An1gz.s page 145 4843 0008 C35C ldrb r3, [r0, r3] 4844 000a 002B cmp r3, #0 4845 000c 22D0 beq .L350 4846 .LVL423: 4847 .L347: 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4848 .loc 1 253 0 4849 000e 6923 movs r3, #105 4850 0010 2422 movs r2, #36 4851 0012 E254 strb r2, [r4, r3] 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4852 .loc 1 256 0 4853 0014 2268 ldr r2, [r4] 4854 0016 1368 ldr r3, [r2] 4855 0018 0121 movs r1, #1 4856 001a 8B43 bics r3, r1 4857 001c 1360 str r3, [r2] 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4858 .loc 1 259 0 4859 001e 636A ldr r3, [r4, #36] 4860 0020 002B cmp r3, #0 4861 0022 1DD1 bne .L351 4862 .L348: 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4863 .loc 1 264 0 4864 0024 2000 movs r0, r4 4865 0026 FFF7FEFF bl UART_SetConfig 4866 .LVL424: 4867 002a 0128 cmp r0, #1 4868 002c 11D0 beq .L346 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); 4869 .loc 1 272 0 4870 002e 2268 ldr r2, [r4] 4871 0030 5368 ldr r3, [r2, #4] 4872 0032 0E49 ldr r1, .L352 4873 0034 0B40 ands r3, r1 4874 0036 5360 str r3, [r2, #4] 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4875 .loc 1 273 0 4876 0038 2268 ldr r2, [r4] 4877 003a 9368 ldr r3, [r2, #8] 4878 003c 2A21 movs r1, #42 4879 003e 8B43 bics r3, r1 4880 0040 9360 str r3, [r2, #8] 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4881 .loc 1 276 0 4882 0042 2268 ldr r2, [r4] 4883 0044 1368 ldr r3, [r2] 4884 0046 2939 subs r1, r1, #41 4885 0048 0B43 orrs r3, r1 4886 004a 1360 str r3, [r2] 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4887 .loc 1 279 0 4888 004c 2000 movs r0, r4 4889 004e FFF7FEFF bl UART_CheckIdleState 4890 .LVL425: 4891 .L346: ARM GAS /tmp/cc7An1gz.s page 146 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4892 .loc 1 280 0 4893 @ sp needed 4894 .LVL426: 4895 0052 10BD pop {r4, pc} 4896 .LVL427: 4897 .L350: 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4898 .loc 1 247 0 4899 0054 6833 adds r3, r3, #104 4900 0056 0022 movs r2, #0 4901 0058 C254 strb r2, [r0, r3] 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4902 .loc 1 250 0 4903 005a FFF7FEFF bl HAL_UART_MspInit 4904 .LVL428: 4905 005e D6E7 b .L347 4906 .L351: 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4907 .loc 1 261 0 4908 0060 2000 movs r0, r4 4909 0062 FFF7FEFF bl UART_AdvFeatureConfig 4910 .LVL429: 4911 0066 DDE7 b .L348 4912 .LVL430: 4913 .L349: 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 4914 .loc 1 230 0 4915 0068 0120 movs r0, #1 4916 .LVL431: 4917 006a F2E7 b .L346 4918 .L353: 4919 .align 2 4920 .L352: 4921 006c FFB7FFFF .word -18433 4922 .cfi_endproc 4923 .LFE39: 4925 .section .text.HAL_HalfDuplex_Init,"ax",%progbits 4926 .align 1 4927 .global HAL_HalfDuplex_Init 4928 .syntax unified 4929 .code 16 4930 .thumb_func 4931 .fpu softvfp 4933 HAL_HalfDuplex_Init: 4934 .LFB40: 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 4935 .loc 1 289 0 4936 .cfi_startproc 4937 @ args = 0, pretend = 0, frame = 0 4938 @ frame_needed = 0, uses_anonymous_args = 0 4939 .LVL432: 4940 0000 10B5 push {r4, lr} 4941 .LCFI37: 4942 .cfi_def_cfa_offset 8 4943 .cfi_offset 4, -8 4944 .cfi_offset 14, -4 ARM GAS /tmp/cc7An1gz.s page 147 4945 0002 041E subs r4, r0, #0 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4946 .loc 1 291 0 4947 0004 35D0 beq .L358 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4948 .loc 1 299 0 4949 0006 6923 movs r3, #105 4950 0008 C35C ldrb r3, [r0, r3] 4951 000a 002B cmp r3, #0 4952 000c 27D0 beq .L359 4953 .LVL433: 4954 .L356: 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4955 .loc 1 308 0 4956 000e 6923 movs r3, #105 4957 0010 2422 movs r2, #36 4958 0012 E254 strb r2, [r4, r3] 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4959 .loc 1 311 0 4960 0014 2268 ldr r2, [r4] 4961 0016 1368 ldr r3, [r2] 4962 0018 0121 movs r1, #1 4963 001a 8B43 bics r3, r1 4964 001c 1360 str r3, [r2] 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4965 .loc 1 314 0 4966 001e 636A ldr r3, [r4, #36] 4967 0020 002B cmp r3, #0 4968 0022 22D1 bne .L360 4969 .L357: 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 4970 .loc 1 319 0 4971 0024 2000 movs r0, r4 4972 0026 FFF7FEFF bl UART_SetConfig 4973 .LVL434: 4974 002a 0128 cmp r0, #1 4975 002c 16D0 beq .L355 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN)); 4976 .loc 1 327 0 4977 002e 2268 ldr r2, [r4] 4978 0030 5368 ldr r3, [r2, #4] 4979 0032 1149 ldr r1, .L361 4980 0034 0B40 ands r3, r1 4981 0036 5360 str r3, [r2, #4] 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4982 .loc 1 328 0 4983 0038 2268 ldr r2, [r4] 4984 003a 9368 ldr r3, [r2, #8] 4985 003c 2221 movs r1, #34 4986 003e 8B43 bics r3, r1 4987 0040 9360 str r3, [r2, #8] 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4988 .loc 1 331 0 4989 0042 2268 ldr r2, [r4] 4990 0044 9368 ldr r3, [r2, #8] 4991 0046 1A39 subs r1, r1, #26 4992 0048 0B43 orrs r3, r1 ARM GAS /tmp/cc7An1gz.s page 148 4993 004a 9360 str r3, [r2, #8] 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 4994 .loc 1 334 0 4995 004c 2268 ldr r2, [r4] 4996 004e 1368 ldr r3, [r2] 4997 0050 0739 subs r1, r1, #7 4998 0052 0B43 orrs r3, r1 4999 0054 1360 str r3, [r2] 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5000 .loc 1 337 0 5001 0056 2000 movs r0, r4 5002 0058 FFF7FEFF bl UART_CheckIdleState 5003 .LVL435: 5004 .L355: 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5005 .loc 1 338 0 5006 @ sp needed 5007 .LVL436: 5008 005c 10BD pop {r4, pc} 5009 .LVL437: 5010 .L359: 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5011 .loc 1 302 0 5012 005e 6833 adds r3, r3, #104 5013 0060 0022 movs r2, #0 5014 0062 C254 strb r2, [r0, r3] 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5015 .loc 1 305 0 5016 0064 FFF7FEFF bl HAL_UART_MspInit 5017 .LVL438: 5018 0068 D1E7 b .L356 5019 .L360: 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5020 .loc 1 316 0 5021 006a 2000 movs r0, r4 5022 006c FFF7FEFF bl UART_AdvFeatureConfig 5023 .LVL439: 5024 0070 D8E7 b .L357 5025 .LVL440: 5026 .L358: 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5027 .loc 1 293 0 5028 0072 0120 movs r0, #1 5029 .LVL441: 5030 0074 F2E7 b .L355 5031 .L362: 5032 0076 C046 .align 2 5033 .L361: 5034 0078 FFB7FFFF .word -18433 5035 .cfi_endproc 5036 .LFE40: 5038 .section .text.HAL_LIN_Init,"ax",%progbits 5039 .align 1 5040 .global HAL_LIN_Init 5041 .syntax unified 5042 .code 16 5043 .thumb_func ARM GAS /tmp/cc7An1gz.s page 149 5044 .fpu softvfp 5046 HAL_LIN_Init: 5047 .LFB41: 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 5048 .loc 1 352 0 5049 .cfi_startproc 5050 @ args = 0, pretend = 0, frame = 0 5051 @ frame_needed = 0, uses_anonymous_args = 0 5052 .LVL442: 5053 0000 70B5 push {r4, r5, r6, lr} 5054 .LCFI38: 5055 .cfi_def_cfa_offset 16 5056 .cfi_offset 4, -16 5057 .cfi_offset 5, -12 5058 .cfi_offset 6, -8 5059 .cfi_offset 14, -4 5060 0002 0400 movs r4, r0 5061 0004 0D00 movs r5, r1 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5062 .loc 1 354 0 5063 0006 0028 cmp r0, #0 5064 0008 44D0 beq .L367 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5065 .loc 1 365 0 5066 000a 8023 movs r3, #128 5067 000c 1B02 lsls r3, r3, #8 5068 000e C269 ldr r2, [r0, #28] 5069 0010 9A42 cmp r2, r3 5070 0012 41D0 beq .L368 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5071 .loc 1 370 0 5072 0014 8368 ldr r3, [r0, #8] 5073 0016 002B cmp r3, #0 5074 0018 40D1 bne .L369 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5075 .loc 1 375 0 5076 001a 6933 adds r3, r3, #105 5077 001c C35C ldrb r3, [r0, r3] 5078 001e 002B cmp r3, #0 5079 0020 2ED0 beq .L370 5080 .LVL443: 5081 .L365: 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5082 .loc 1 384 0 5083 0022 6923 movs r3, #105 5084 0024 2422 movs r2, #36 5085 0026 E254 strb r2, [r4, r3] 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5086 .loc 1 387 0 5087 0028 2268 ldr r2, [r4] 5088 002a 1368 ldr r3, [r2] 5089 002c 0121 movs r1, #1 5090 002e 8B43 bics r3, r1 5091 0030 1360 str r3, [r2] 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5092 .loc 1 390 0 5093 0032 636A ldr r3, [r4, #36] ARM GAS /tmp/cc7An1gz.s page 150 5094 0034 002B cmp r3, #0 5095 0036 29D1 bne .L371 5096 .L366: 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5097 .loc 1 395 0 5098 0038 2000 movs r0, r4 5099 003a FFF7FEFF bl UART_SetConfig 5100 .LVL444: 5101 003e 0128 cmp r0, #1 5102 0040 29D0 beq .L364 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN)); 5103 .loc 1 403 0 5104 0042 2268 ldr r2, [r4] 5105 0044 5368 ldr r3, [r2, #4] 5106 0046 1649 ldr r1, .L372 5107 0048 0B40 ands r3, r1 5108 004a 5360 str r3, [r2, #4] 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5109 .loc 1 404 0 5110 004c 2268 ldr r2, [r4] 5111 004e 9368 ldr r3, [r2, #8] 5112 0050 2A21 movs r1, #42 5113 0052 8B43 bics r3, r1 5114 0054 9360 str r3, [r2, #8] 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5115 .loc 1 407 0 5116 0056 2268 ldr r2, [r4] 5117 0058 5168 ldr r1, [r2, #4] 5118 005a 8023 movs r3, #128 5119 005c DB01 lsls r3, r3, #7 5120 005e 0B43 orrs r3, r1 5121 0060 5360 str r3, [r2, #4] 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5122 .loc 1 410 0 5123 0062 2268 ldr r2, [r4] 5124 0064 5368 ldr r3, [r2, #4] 5125 0066 2021 movs r1, #32 5126 0068 8B43 bics r3, r1 5127 006a 1D43 orrs r5, r3 5128 .LVL445: 5129 006c 5560 str r5, [r2, #4] 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5130 .loc 1 413 0 5131 006e 2268 ldr r2, [r4] 5132 0070 1368 ldr r3, [r2] 5133 0072 1F39 subs r1, r1, #31 5134 0074 0B43 orrs r3, r1 5135 0076 1360 str r3, [r2] 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5136 .loc 1 416 0 5137 0078 2000 movs r0, r4 5138 007a FFF7FEFF bl UART_CheckIdleState 5139 .LVL446: 5140 007e 0AE0 b .L364 5141 .LVL447: 5142 .L370: 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** ARM GAS /tmp/cc7An1gz.s page 151 5143 .loc 1 378 0 5144 0080 6833 adds r3, r3, #104 5145 0082 0022 movs r2, #0 5146 0084 C254 strb r2, [r0, r3] 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5147 .loc 1 381 0 5148 0086 FFF7FEFF bl HAL_UART_MspInit 5149 .LVL448: 5150 008a CAE7 b .L365 5151 .L371: 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5152 .loc 1 392 0 5153 008c 2000 movs r0, r4 5154 008e FFF7FEFF bl UART_AdvFeatureConfig 5155 .LVL449: 5156 0092 D1E7 b .L366 5157 .LVL450: 5158 .L367: 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5159 .loc 1 356 0 5160 0094 0120 movs r0, #1 5161 .LVL451: 5162 .L364: 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5163 .loc 1 417 0 5164 @ sp needed 5165 .LVL452: 5166 0096 70BD pop {r4, r5, r6, pc} 5167 .LVL453: 5168 .L368: 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5169 .loc 1 367 0 5170 0098 0120 movs r0, #1 5171 .LVL454: 5172 009a FCE7 b .L364 5173 .LVL455: 5174 .L369: 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5175 .loc 1 372 0 5176 009c 0120 movs r0, #1 5177 .LVL456: 5178 009e FAE7 b .L364 5179 .L373: 5180 .align 2 5181 .L372: 5182 00a0 FFF7FFFF .word -2049 5183 .cfi_endproc 5184 .LFE41: 5186 .section .text.HAL_MultiProcessor_Init,"ax",%progbits 5187 .align 1 5188 .global HAL_MultiProcessor_Init 5189 .syntax unified 5190 .code 16 5191 .thumb_func 5192 .fpu softvfp 5194 HAL_MultiProcessor_Init: 5195 .LFB42: ARM GAS /tmp/cc7An1gz.s page 152 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Check the UART handle allocation */ 5196 .loc 1 439 0 5197 .cfi_startproc 5198 @ args = 0, pretend = 0, frame = 0 5199 @ frame_needed = 0, uses_anonymous_args = 0 5200 .LVL457: 5201 0000 70B5 push {r4, r5, r6, lr} 5202 .LCFI39: 5203 .cfi_def_cfa_offset 16 5204 .cfi_offset 4, -16 5205 .cfi_offset 5, -12 5206 .cfi_offset 6, -8 5207 .cfi_offset 14, -4 5208 0002 0400 movs r4, r0 5209 0004 0D00 movs r5, r1 5210 0006 1600 movs r6, r2 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5211 .loc 1 441 0 5212 0008 0028 cmp r0, #0 5213 000a 42D0 beq .L379 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5214 .loc 1 449 0 5215 000c 6923 movs r3, #105 5216 000e C35C ldrb r3, [r0, r3] 5217 0010 002B cmp r3, #0 5218 0012 2CD0 beq .L380 5219 .LVL458: 5220 .L376: 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5221 .loc 1 458 0 5222 0014 6923 movs r3, #105 5223 0016 2422 movs r2, #36 5224 0018 E254 strb r2, [r4, r3] 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5225 .loc 1 461 0 5226 001a 2268 ldr r2, [r4] 5227 001c 1368 ldr r3, [r2] 5228 001e 0121 movs r1, #1 5229 0020 8B43 bics r3, r1 5230 0022 1360 str r3, [r2] 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5231 .loc 1 464 0 5232 0024 636A ldr r3, [r4, #36] 5233 0026 002B cmp r3, #0 5234 0028 27D1 bne .L381 5235 .L377: 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5236 .loc 1 469 0 5237 002a 2000 movs r0, r4 5238 002c FFF7FEFF bl UART_SetConfig 5239 .LVL459: 5240 0030 0128 cmp r0, #1 5241 0032 1BD0 beq .L375 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); 5242 .loc 1 477 0 5243 0034 2268 ldr r2, [r4] 5244 0036 5368 ldr r3, [r2, #4] ARM GAS /tmp/cc7An1gz.s page 153 5245 0038 1749 ldr r1, .L383 5246 003a 0B40 ands r3, r1 5247 003c 5360 str r3, [r2, #4] 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5248 .loc 1 478 0 5249 003e 2268 ldr r2, [r4] 5250 0040 9368 ldr r3, [r2, #8] 5251 0042 2A21 movs r1, #42 5252 0044 8B43 bics r3, r1 5253 0046 9360 str r3, [r2, #8] 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** { 5254 .loc 1 480 0 5255 0048 8023 movs r3, #128 5256 004a 1B01 lsls r3, r3, #4 5257 004c 9E42 cmp r6, r3 5258 004e 18D0 beq .L382 5259 .L378: 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5260 .loc 1 487 0 5261 0050 2368 ldr r3, [r4] 5262 0052 1A68 ldr r2, [r3] 5263 0054 1149 ldr r1, .L383+4 5264 0056 0A40 ands r2, r1 5265 0058 3243 orrs r2, r6 5266 005a 1A60 str r2, [r3] 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5267 .loc 1 490 0 5268 005c 2268 ldr r2, [r4] 5269 005e 1368 ldr r3, [r2] 5270 0060 0121 movs r1, #1 5271 0062 0B43 orrs r3, r1 5272 0064 1360 str r3, [r2] 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5273 .loc 1 493 0 5274 0066 2000 movs r0, r4 5275 0068 FFF7FEFF bl UART_CheckIdleState 5276 .LVL460: 5277 .L375: 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5278 .loc 1 494 0 5279 @ sp needed 5280 .LVL461: 5281 .LVL462: 5282 006c 70BD pop {r4, r5, r6, pc} 5283 .LVL463: 5284 .L380: 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5285 .loc 1 452 0 5286 006e 6833 adds r3, r3, #104 5287 0070 0022 movs r2, #0 5288 .LVL464: 5289 0072 C254 strb r2, [r0, r3] 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5290 .loc 1 455 0 5291 0074 FFF7FEFF bl HAL_UART_MspInit 5292 .LVL465: 5293 0078 CCE7 b .L376 ARM GAS /tmp/cc7An1gz.s page 154 5294 .L381: 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5295 .loc 1 466 0 5296 007a 2000 movs r0, r4 5297 007c FFF7FEFF bl UART_AdvFeatureConfig 5298 .LVL466: 5299 0080 D3E7 b .L377 5300 .L382: 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5301 .loc 1 483 0 5302 0082 2268 ldr r2, [r4] 5303 0084 5368 ldr r3, [r2, #4] 5304 0086 1B02 lsls r3, r3, #8 5305 0088 1B0A lsrs r3, r3, #8 5306 008a 2D06 lsls r5, r5, #24 5307 008c 1D43 orrs r5, r3 5308 008e 5560 str r5, [r2, #4] 5309 0090 DEE7 b .L378 5310 .LVL467: 5311 .L379: 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5312 .loc 1 443 0 5313 0092 0120 movs r0, #1 5314 .LVL468: 5315 0094 EAE7 b .L375 5316 .L384: 5317 0096 C046 .align 2 5318 .L383: 5319 0098 FFB7FFFF .word -18433 5320 009c FFF7FFFF .word -2049 5321 .cfi_endproc 5322 .LFE42: 5324 .section .text.HAL_MultiProcessor_EnableMuteMode,"ax",%progbits 5325 .align 1 5326 .global HAL_MultiProcessor_EnableMuteMode 5327 .syntax unified 5328 .code 16 5329 .thumb_func 5330 .fpu softvfp 5332 HAL_MultiProcessor_EnableMuteMode: 5333 .LFB70: 1924:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 5334 .loc 1 1924 0 5335 .cfi_startproc 5336 @ args = 0, pretend = 0, frame = 0 5337 @ frame_needed = 0, uses_anonymous_args = 0 5338 .LVL469: 5339 0000 10B5 push {r4, lr} 5340 .LCFI40: 5341 .cfi_def_cfa_offset 8 5342 .cfi_offset 4, -8 5343 .cfi_offset 14, -4 1926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5344 .loc 1 1926 0 5345 0002 6823 movs r3, #104 5346 0004 C35C ldrb r3, [r0, r3] 5347 0006 012B cmp r3, #1 ARM GAS /tmp/cc7An1gz.s page 155 5348 0008 10D0 beq .L387 1926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5349 .loc 1 1926 0 is_stmt 0 discriminator 2 5350 000a 6823 movs r3, #104 5351 000c 0122 movs r2, #1 5352 000e C254 strb r2, [r0, r3] 1928:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5353 .loc 1 1928 0 is_stmt 1 discriminator 2 5354 0010 6832 adds r2, r2, #104 5355 0012 443B subs r3, r3, #68 5356 0014 8354 strb r3, [r0, r2] 1931:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5357 .loc 1 1931 0 discriminator 2 5358 0016 0168 ldr r1, [r0] 5359 0018 0C68 ldr r4, [r1] 5360 001a 8023 movs r3, #128 5361 001c 9B01 lsls r3, r3, #6 5362 001e 2343 orrs r3, r4 5363 0020 0B60 str r3, [r1] 1933:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5364 .loc 1 1933 0 discriminator 2 5365 0022 2023 movs r3, #32 5366 0024 8354 strb r3, [r0, r2] 1935:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5367 .loc 1 1935 0 discriminator 2 5368 0026 FFF7FEFF bl UART_CheckIdleState 5369 .LVL470: 5370 .L386: 1936:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5371 .loc 1 1936 0 5372 @ sp needed 5373 002a 10BD pop {r4, pc} 5374 .LVL471: 5375 .L387: 1926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5376 .loc 1 1926 0 5377 002c 0220 movs r0, #2 5378 .LVL472: 5379 002e FCE7 b .L386 5380 .cfi_endproc 5381 .LFE70: 5383 .section .text.HAL_MultiProcessor_DisableMuteMode,"ax",%progbits 5384 .align 1 5385 .global HAL_MultiProcessor_DisableMuteMode 5386 .syntax unified 5387 .code 16 5388 .thumb_func 5389 .fpu softvfp 5391 HAL_MultiProcessor_DisableMuteMode: 5392 .LFB71: 1945:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** /* Process Locked */ 5393 .loc 1 1945 0 5394 .cfi_startproc 5395 @ args = 0, pretend = 0, frame = 0 5396 @ frame_needed = 0, uses_anonymous_args = 0 5397 .LVL473: 5398 0000 10B5 push {r4, lr} ARM GAS /tmp/cc7An1gz.s page 156 5399 .LCFI41: 5400 .cfi_def_cfa_offset 8 5401 .cfi_offset 4, -8 5402 .cfi_offset 14, -4 1947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5403 .loc 1 1947 0 5404 0002 6823 movs r3, #104 5405 0004 C35C ldrb r3, [r0, r3] 5406 0006 012B cmp r3, #1 5407 0008 0FD0 beq .L390 1947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5408 .loc 1 1947 0 is_stmt 0 discriminator 2 5409 000a 6823 movs r3, #104 5410 000c 0122 movs r2, #1 5411 000e C254 strb r2, [r0, r3] 1949:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5412 .loc 1 1949 0 is_stmt 1 discriminator 2 5413 0010 6832 adds r2, r2, #104 5414 0012 443B subs r3, r3, #68 5415 0014 8354 strb r3, [r0, r2] 1952:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5416 .loc 1 1952 0 discriminator 2 5417 0016 0168 ldr r1, [r0] 5418 0018 0B68 ldr r3, [r1] 5419 001a 054C ldr r4, .L391 5420 001c 2340 ands r3, r4 5421 001e 0B60 str r3, [r1] 1954:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5422 .loc 1 1954 0 discriminator 2 5423 0020 2023 movs r3, #32 5424 0022 8354 strb r3, [r0, r2] 1956:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** } 5425 .loc 1 1956 0 discriminator 2 5426 0024 FFF7FEFF bl UART_CheckIdleState 5427 .LVL474: 5428 .L389: 1957:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5429 .loc 1 1957 0 5430 @ sp needed 5431 0028 10BD pop {r4, pc} 5432 .LVL475: 5433 .L390: 1947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c **** 5434 .loc 1 1947 0 5435 002a 0220 movs r0, #2 5436 .LVL476: 5437 002c FCE7 b .L389 5438 .L392: 5439 002e C046 .align 2 5440 .L391: 5441 0030 FFDFFFFF .word -8193 5442 .cfi_endproc 5443 .LFE71: 5445 .text 5446 .Letext0: 5447 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 5448 .file 3 "/usr/arm-none-eabi/include/sys/_stdint.h" ARM GAS /tmp/cc7An1gz.s page 157 5449 .file 4 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h" 5450 .file 5 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h" 5451 .file 6 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h" 5452 .file 7 "/usr/arm-none-eabi/include/sys/lock.h" 5453 .file 8 "/usr/arm-none-eabi/include/sys/_types.h" 5454 .file 9 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 5455 .file 10 "/usr/arm-none-eabi/include/sys/reent.h" 5456 .file 11 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h" 5457 .file 12 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h" 5458 .file 13 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h" 5459 .file 14 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h" 5460 .file 15 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h" 5461 .file 16 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h" 5462 .file 17 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h" ARM GAS /tmp/cc7An1gz.s page 158 DEFINED SYMBOLS *ABS*:0000000000000000 stm32l0xx_hal_uart.c /tmp/cc7An1gz.s:16 .text.HAL_UART_MspInit:0000000000000000 $t /tmp/cc7An1gz.s:23 .text.HAL_UART_MspInit:0000000000000000 HAL_UART_MspInit /tmp/cc7An1gz.s:39 .text.HAL_UART_MspDeInit:0000000000000000 $t /tmp/cc7An1gz.s:46 .text.HAL_UART_MspDeInit:0000000000000000 HAL_UART_MspDeInit /tmp/cc7An1gz.s:61 .text.HAL_UART_DeInit:0000000000000000 $t /tmp/cc7An1gz.s:68 .text.HAL_UART_DeInit:0000000000000000 HAL_UART_DeInit /tmp/cc7An1gz.s:135 .text.HAL_UART_Transmit_IT:0000000000000000 $t /tmp/cc7An1gz.s:142 .text.HAL_UART_Transmit_IT:0000000000000000 HAL_UART_Transmit_IT /tmp/cc7An1gz.s:250 .text.HAL_UART_Receive_IT:0000000000000000 $t /tmp/cc7An1gz.s:257 .text.HAL_UART_Receive_IT:0000000000000000 HAL_UART_Receive_IT /tmp/cc7An1gz.s:451 .text.HAL_UART_Receive_IT:00000000000000d0 $d /tmp/cc7An1gz.s:456 .text.HAL_UART_Transmit_DMA:0000000000000000 $t /tmp/cc7An1gz.s:463 .text.HAL_UART_Transmit_DMA:0000000000000000 HAL_UART_Transmit_DMA /tmp/cc7An1gz.s:598 .text.HAL_UART_Transmit_DMA:000000000000009c $d /tmp/cc7An1gz.s:1362 .text.UART_DMATransmitCplt:0000000000000000 UART_DMATransmitCplt /tmp/cc7An1gz.s:1445 .text.UART_DMATxHalfCplt:0000000000000000 UART_DMATxHalfCplt /tmp/cc7An1gz.s:1776 .text.UART_DMAError:0000000000000000 UART_DMAError /tmp/cc7An1gz.s:605 .text.HAL_UART_Receive_DMA:0000000000000000 $t /tmp/cc7An1gz.s:612 .text.HAL_UART_Receive_DMA:0000000000000000 HAL_UART_Receive_DMA /tmp/cc7An1gz.s:753 .text.HAL_UART_Receive_DMA:00000000000000a4 $d /tmp/cc7An1gz.s:1498 .text.UART_DMAReceiveCplt:0000000000000000 UART_DMAReceiveCplt /tmp/cc7An1gz.s:1723 .text.UART_DMARxHalfCplt:0000000000000000 UART_DMARxHalfCplt /tmp/cc7An1gz.s:760 .text.HAL_UART_DMAPause:0000000000000000 $t /tmp/cc7An1gz.s:767 .text.HAL_UART_DMAPause:0000000000000000 HAL_UART_DMAPause /tmp/cc7An1gz.s:855 .text.HAL_UART_DMAPause:0000000000000068 $d /tmp/cc7An1gz.s:860 .text.HAL_UART_DMAResume:0000000000000000 $t /tmp/cc7An1gz.s:867 .text.HAL_UART_DMAResume:0000000000000000 HAL_UART_DMAResume /tmp/cc7An1gz.s:950 .text.HAL_UART_DMAStop:0000000000000000 $t /tmp/cc7An1gz.s:957 .text.HAL_UART_DMAStop:0000000000000000 HAL_UART_DMAStop /tmp/cc7An1gz.s:1069 .text.HAL_UART_DMAStop:000000000000007c $d /tmp/cc7An1gz.s:1076 .text.HAL_UART_Abort:0000000000000000 $t /tmp/cc7An1gz.s:1083 .text.HAL_UART_Abort:0000000000000000 HAL_UART_Abort /tmp/cc7An1gz.s:1182 .text.HAL_UART_Abort:000000000000007c $d /tmp/cc7An1gz.s:1187 .text.HAL_UART_AbortTransmit:0000000000000000 $t /tmp/cc7An1gz.s:1194 .text.HAL_UART_AbortTransmit:0000000000000000 HAL_UART_AbortTransmit /tmp/cc7An1gz.s:1253 .text.HAL_UART_AbortReceive:0000000000000000 $t /tmp/cc7An1gz.s:1260 .text.HAL_UART_AbortReceive:0000000000000000 HAL_UART_AbortReceive /tmp/cc7An1gz.s:1329 .text.HAL_UART_AbortReceive:0000000000000050 $d /tmp/cc7An1gz.s:1334 .text.HAL_UART_TxCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:1341 .text.HAL_UART_TxCpltCallback:0000000000000000 HAL_UART_TxCpltCallback /tmp/cc7An1gz.s:1356 .text.UART_DMATransmitCplt:0000000000000000 $t /tmp/cc7An1gz.s:1417 .text.HAL_UART_TxHalfCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:1424 .text.HAL_UART_TxHalfCpltCallback:0000000000000000 HAL_UART_TxHalfCpltCallback /tmp/cc7An1gz.s:1439 .text.UART_DMATxHalfCplt:0000000000000000 $t /tmp/cc7An1gz.s:1470 .text.HAL_UART_RxCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:1477 .text.HAL_UART_RxCpltCallback:0000000000000000 HAL_UART_RxCpltCallback /tmp/cc7An1gz.s:1492 .text.UART_DMAReceiveCplt:0000000000000000 $t /tmp/cc7An1gz.s:1557 .text.UART_DMAReceiveCplt:0000000000000040 $d /tmp/cc7An1gz.s:1562 .text.UART_Receive_IT:0000000000000000 $t /tmp/cc7An1gz.s:1568 .text.UART_Receive_IT:0000000000000000 UART_Receive_IT /tmp/cc7An1gz.s:1690 .text.UART_Receive_IT:0000000000000084 $d /tmp/cc7An1gz.s:1695 .text.HAL_UART_RxHalfCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:1702 .text.HAL_UART_RxHalfCpltCallback:0000000000000000 HAL_UART_RxHalfCpltCallback /tmp/cc7An1gz.s:1717 .text.UART_DMARxHalfCplt:0000000000000000 $t /tmp/cc7An1gz.s:1748 .text.HAL_UART_ErrorCallback:0000000000000000 $t ARM GAS /tmp/cc7An1gz.s page 159 /tmp/cc7An1gz.s:1755 .text.HAL_UART_ErrorCallback:0000000000000000 HAL_UART_ErrorCallback /tmp/cc7An1gz.s:1770 .text.UART_DMAError:0000000000000000 $t /tmp/cc7An1gz.s:1874 .text.UART_DMAError:000000000000006c $d /tmp/cc7An1gz.s:1881 .text.HAL_UART_IRQHandler:0000000000000000 $t /tmp/cc7An1gz.s:1888 .text.HAL_UART_IRQHandler:0000000000000000 HAL_UART_IRQHandler /tmp/cc7An1gz.s:2265 .text.HAL_UART_IRQHandler:00000000000001c0 $d /tmp/cc7An1gz.s:2279 .text.UART_DMAAbortOnError:0000000000000000 UART_DMAAbortOnError /tmp/cc7An1gz.s:2273 .text.UART_DMAAbortOnError:0000000000000000 $t /tmp/cc7An1gz.s:2311 .text.HAL_UART_AbortCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:2318 .text.HAL_UART_AbortCpltCallback:0000000000000000 HAL_UART_AbortCpltCallback /tmp/cc7An1gz.s:2333 .text.HAL_UART_Abort_IT:0000000000000000 $t /tmp/cc7An1gz.s:2340 .text.HAL_UART_Abort_IT:0000000000000000 HAL_UART_Abort_IT /tmp/cc7An1gz.s:2510 .text.HAL_UART_Abort_IT:00000000000000cc $d /tmp/cc7An1gz.s:2591 .text.UART_DMATxAbortCallback:0000000000000000 UART_DMATxAbortCallback /tmp/cc7An1gz.s:2523 .text.UART_DMARxAbortCallback:0000000000000000 UART_DMARxAbortCallback /tmp/cc7An1gz.s:2517 .text.UART_DMARxAbortCallback:0000000000000000 $t /tmp/cc7An1gz.s:2585 .text.UART_DMATxAbortCallback:0000000000000000 $t /tmp/cc7An1gz.s:2653 .text.HAL_UART_AbortTransmitCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:2660 .text.HAL_UART_AbortTransmitCpltCallback:0000000000000000 HAL_UART_AbortTransmitCpltCallback /tmp/cc7An1gz.s:2675 .text.HAL_UART_AbortTransmit_IT:0000000000000000 $t /tmp/cc7An1gz.s:2682 .text.HAL_UART_AbortTransmit_IT:0000000000000000 HAL_UART_AbortTransmit_IT /tmp/cc7An1gz.s:2767 .text.HAL_UART_AbortTransmit_IT:0000000000000060 $d /tmp/cc7An1gz.s:2778 .text.UART_DMATxOnlyAbortCallback:0000000000000000 UART_DMATxOnlyAbortCallback /tmp/cc7An1gz.s:2772 .text.UART_DMATxOnlyAbortCallback:0000000000000000 $t /tmp/cc7An1gz.s:2811 .text.HAL_UART_AbortReceiveCpltCallback:0000000000000000 $t /tmp/cc7An1gz.s:2818 .text.HAL_UART_AbortReceiveCpltCallback:0000000000000000 HAL_UART_AbortReceiveCpltCallback /tmp/cc7An1gz.s:2833 .text.HAL_UART_AbortReceive_IT:0000000000000000 $t /tmp/cc7An1gz.s:2840 .text.HAL_UART_AbortReceive_IT:0000000000000000 HAL_UART_AbortReceive_IT /tmp/cc7An1gz.s:2939 .text.HAL_UART_AbortReceive_IT:0000000000000078 $d /tmp/cc7An1gz.s:2951 .text.UART_DMARxOnlyAbortCallback:0000000000000000 UART_DMARxOnlyAbortCallback /tmp/cc7An1gz.s:2945 .text.UART_DMARxOnlyAbortCallback:0000000000000000 $t /tmp/cc7An1gz.s:2988 .text.HAL_MultiProcessor_EnterMuteMode:0000000000000000 $t /tmp/cc7An1gz.s:2995 .text.HAL_MultiProcessor_EnterMuteMode:0000000000000000 HAL_MultiProcessor_EnterMuteMode /tmp/cc7An1gz.s:3016 .text.HAL_HalfDuplex_EnableTransmitter:0000000000000000 $t /tmp/cc7An1gz.s:3023 .text.HAL_HalfDuplex_EnableTransmitter:0000000000000000 HAL_HalfDuplex_EnableTransmitter /tmp/cc7An1gz.s:3084 .text.HAL_HalfDuplex_EnableReceiver:0000000000000000 $t /tmp/cc7An1gz.s:3091 .text.HAL_HalfDuplex_EnableReceiver:0000000000000000 HAL_HalfDuplex_EnableReceiver /tmp/cc7An1gz.s:3152 .text.HAL_LIN_SendBreak:0000000000000000 $t /tmp/cc7An1gz.s:3159 .text.HAL_LIN_SendBreak:0000000000000000 HAL_LIN_SendBreak /tmp/cc7An1gz.s:3214 .text.HAL_UART_GetState:0000000000000000 $t /tmp/cc7An1gz.s:3221 .text.HAL_UART_GetState:0000000000000000 HAL_UART_GetState /tmp/cc7An1gz.s:3247 .text.HAL_UART_GetError:0000000000000000 $t /tmp/cc7An1gz.s:3254 .text.HAL_UART_GetError:0000000000000000 HAL_UART_GetError /tmp/cc7An1gz.s:3274 .text.UART_SetConfig:0000000000000000 $t /tmp/cc7An1gz.s:3281 .text.UART_SetConfig:0000000000000000 UART_SetConfig /tmp/cc7An1gz.s:3399 .rodata.UART_SetConfig:0000000000000000 $d /tmp/cc7An1gz.s:3939 .text.UART_SetConfig:0000000000000310 $d /tmp/cc7An1gz.s:3959 .text.UART_SetConfig:0000000000000354 $t /tmp/cc7An1gz.s:3966 .text.UART_AdvFeatureConfig:0000000000000000 $t /tmp/cc7An1gz.s:3973 .text.UART_AdvFeatureConfig:0000000000000000 UART_AdvFeatureConfig /tmp/cc7An1gz.s:4107 .text.UART_AdvFeatureConfig:00000000000000bc $d /tmp/cc7An1gz.s:4120 .text.UART_WaitOnFlagUntilTimeout:0000000000000000 $t /tmp/cc7An1gz.s:4127 .text.UART_WaitOnFlagUntilTimeout:0000000000000000 UART_WaitOnFlagUntilTimeout /tmp/cc7An1gz.s:4219 .text.UART_WaitOnFlagUntilTimeout:0000000000000068 $d /tmp/cc7An1gz.s:4224 .text.HAL_UART_Transmit:0000000000000000 $t /tmp/cc7An1gz.s:4231 .text.HAL_UART_Transmit:0000000000000000 HAL_UART_Transmit /tmp/cc7An1gz.s:4433 .text.HAL_UART_Receive:0000000000000000 $t ARM GAS /tmp/cc7An1gz.s page 160 /tmp/cc7An1gz.s:4440 .text.HAL_UART_Receive:0000000000000000 HAL_UART_Receive /tmp/cc7An1gz.s:4706 .text.HAL_UART_Receive:0000000000000134 $d /tmp/cc7An1gz.s:4711 .text.UART_CheckIdleState:0000000000000000 $t /tmp/cc7An1gz.s:4718 .text.UART_CheckIdleState:0000000000000000 UART_CheckIdleState /tmp/cc7An1gz.s:4814 .text.UART_CheckIdleState:000000000000006c $d /tmp/cc7An1gz.s:4819 .text.HAL_UART_Init:0000000000000000 $t /tmp/cc7An1gz.s:4826 .text.HAL_UART_Init:0000000000000000 HAL_UART_Init /tmp/cc7An1gz.s:4921 .text.HAL_UART_Init:000000000000006c $d /tmp/cc7An1gz.s:4926 .text.HAL_HalfDuplex_Init:0000000000000000 $t /tmp/cc7An1gz.s:4933 .text.HAL_HalfDuplex_Init:0000000000000000 HAL_HalfDuplex_Init /tmp/cc7An1gz.s:5034 .text.HAL_HalfDuplex_Init:0000000000000078 $d /tmp/cc7An1gz.s:5039 .text.HAL_LIN_Init:0000000000000000 $t /tmp/cc7An1gz.s:5046 .text.HAL_LIN_Init:0000000000000000 HAL_LIN_Init /tmp/cc7An1gz.s:5182 .text.HAL_LIN_Init:00000000000000a0 $d /tmp/cc7An1gz.s:5187 .text.HAL_MultiProcessor_Init:0000000000000000 $t /tmp/cc7An1gz.s:5194 .text.HAL_MultiProcessor_Init:0000000000000000 HAL_MultiProcessor_Init /tmp/cc7An1gz.s:5319 .text.HAL_MultiProcessor_Init:0000000000000098 $d /tmp/cc7An1gz.s:5325 .text.HAL_MultiProcessor_EnableMuteMode:0000000000000000 $t /tmp/cc7An1gz.s:5332 .text.HAL_MultiProcessor_EnableMuteMode:0000000000000000 HAL_MultiProcessor_EnableMuteMode /tmp/cc7An1gz.s:5384 .text.HAL_MultiProcessor_DisableMuteMode:0000000000000000 $t /tmp/cc7An1gz.s:5391 .text.HAL_MultiProcessor_DisableMuteMode:0000000000000000 HAL_MultiProcessor_DisableMuteMode /tmp/cc7An1gz.s:5441 .text.HAL_MultiProcessor_DisableMuteMode:0000000000000030 $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS HAL_DMA_Start_IT HAL_DMA_Abort HAL_DMA_Abort_IT HAL_UARTEx_WakeupCallback __aeabi_uldivmod __aeabi_uidiv HAL_RCCEx_GetPeriphCLKFreq HAL_RCC_GetPCLK1Freq HAL_RCC_GetSysClockFreq HAL_RCC_GetPCLK2Freq HAL_GetTick