ARM GAS /tmp/cc5G5cqz.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 6 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f3xx_hal_i2c.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c" 20 .section .text.HAL_I2C_Init,"ax",%progbits 21 .align 1 22 .global HAL_I2C_Init 23 .syntax unified 24 .thumb 25 .thumb_func 27 HAL_I2C_Init: 28 .LFB130: 1:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ****************************************************************************** 3:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @file stm32f3xx_hal_i2c.c 4:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @author MCD Application Team 5:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C HAL module driver. 6:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * functionalities of the Inter Integrated Circuit (I2C) peripheral: 8:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + Initialization and de-initialization functions 9:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + IO operation functions 10:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + Peripheral State and Errors functions 11:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 12:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ****************************************************************************** 13:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @attention 14:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 15:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * Copyright (c) 2016 STMicroelectronics. 16:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * All rights reserved. 17:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 18:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This software is licensed under terms that can be found in the LICENSE file 19:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in the root directory of this software component. 20:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 21:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 22:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ****************************************************************************** 23:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 24:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ============================================================================== 25:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### How to use this driver ##### 26:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ============================================================================== 27:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 28:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The I2C HAL driver can be used as follows: 29:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 30:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Declare a I2C_HandleTypeDef handle structure, for example: ARM GAS /tmp/cc5G5cqz.s page 2 31:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef hi2c; 32:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 33:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API: 34:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) Enable the I2Cx interface clock 35:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) I2C pins configuration 36:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the clock for the I2C GPIOs 37:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure I2C pins as alternate function open-drain 38:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) NVIC configuration if you need to use interrupt process 39:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the I2Cx interrupt priority 40:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the NVIC I2C IRQ Channel 41:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) DMA Configuration if you need to use DMA process 42:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Declare a DMA_HandleTypeDef handle structure for 43:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the transmit or receive channel 44:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the DMAx interface clock using 45:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the DMA handle parameters 46:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the DMA Tx or Rx channel 47:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle 48:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on 49:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the DMA Tx or Rx channel 50:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 51:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addres 52:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure 53:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 54:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level H 55:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API. 56:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 57:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceRead 58:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 59:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) For I2C IO and IO MEM operations, three operation modes are available within this driver : 60:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 61:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Polling mode IO operation *** 62:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ================================= 63:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 64:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit( 65:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive() 66:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit() 67:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive() 68:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 69:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Polling mode IO MEM operation *** 70:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===================================== 71:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 72:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_W 73:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_ 74:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 75:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 76:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode IO operation *** 77:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =================================== 78:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 79:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Trans 80:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can 81:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() 82:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receiv 83:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can 84:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() 85:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmi 86:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can 87:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() ARM GAS /tmp/cc5G5cqz.s page 3 88:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_ 89:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can 90:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() 91:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can 92:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() 93:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() 94:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can 95:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() 96:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. 97:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication 98:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 99:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode or DMA mode IO sequential operation *** 101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ========================================================== 102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (@) These interfaces allow to manage a sequential transfer with a repeated start condition 104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** when a direction change during transfer 105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) A specific option field manage the different steps of a sequential transfer 107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Option field values are defined through I2C_XFEROPTIONS and are listed below: 108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfac 109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** no sequential mode 110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start con 111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and data to transfer without a final stop condition 112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a 113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** start condition, address and data to transfer without a final stop cond 114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** an then permit a call the same master sequential interface several time 115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit 116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_D 117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart 118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th 119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfer 120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if no direction change and without a final stop condition in both cases 121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart 122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th 123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfer 124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if no direction change and with a final stop condition in both cases 125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a re 126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** after several call of the same master sequential interface several time 127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (link with option I2C_FIRST_AND_NEXT_FRAME). 128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Usage can, transfer several bytes one by one using 129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT 130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT 131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA 132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA 133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME. 134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit 135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Receive sequence permit to call the opposite interface Receive or Tra 136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** without stopping the communication and so generate a restart conditio 137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart c 138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** each call of the same master sequential 139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** interface. 140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Usage can, transfer several bytes one by one with a restart with slave 141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** each bytes using 142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT 143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT 144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA ARM GAS /tmp/cc5G5cqz.s page 4 145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA 146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** with option I2C_FIRST_FRAME then I2C_OTHER_FRAME. 147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to 148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** generation of STOP condition. 149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Different sequential I2C interfaces are listed below: 151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using 152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA() 153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is execut 154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltC 155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using 156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA() 157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed 158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() 159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_A 160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can 161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() 162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() 163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_DisableListen_IT() 164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can 165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code to check the Address Match Code and the transmission direction reques 166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (Write/Read). 167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can 168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ListenCpltCallback() 169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using 170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA() 171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is execute 172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCa 173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using 174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA() 175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed a 176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() 177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can 178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() 179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. 180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication 181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode IO MEM operation *** 183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ======================================= 184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address 186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Write_IT() 187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can 188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() 189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address 190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Read_IT() 191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can 192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() 193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can 194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() 195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** DMA mode IO operation *** 197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ============================== 198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Transmit_DMA() 201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can ARM GAS /tmp/cc5G5cqz.s page 5 202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() 203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode (DMA) using 204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Receive_DMA() 205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can 206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() 207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using 208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Transmit_DMA() 209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can 210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() 211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using 212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Receive_DMA() 213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can 214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() 215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can 216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() 217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() 218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can 219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() 220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. 221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication 222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** DMA mode IO MEM operation *** 224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ================================= 225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using 227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Write_DMA() 228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can 229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() 230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using 231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Read_DMA() 232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can 233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() 234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can 235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() 236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** I2C HAL driver macros list *** 239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ================================== 240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Below the list of most used macros in I2C HAL driver. 242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE: Enable the I2C peripheral 244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE: Disable the I2C peripheral 245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode 246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not 247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag 248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt 249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt 250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Callback registration *** 252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ============================================= 253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1 255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** allows the user to configure dynamically the driver callbacks. 256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback() 257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to register an interrupt callback. 258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] ARM GAS /tmp/cc5G5cqz.s page 6 259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Function HAL_I2C_RegisterCallback() allows to register following callbacks: 260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer. 261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer. 262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. 263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. 264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode. 265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer. 266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer. 267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection. 268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process. 269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init. 270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit. 271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This function takes as parameters the HAL peripheral handle, the Callback ID 272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and a pointer to the user callback function. 273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCall 275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Use function HAL_I2C_UnRegisterCallback to reset a callback to the default 277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** weak function. 278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle, 279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and the Callback ID. 280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This function allows to reset following callbacks: 281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer. 282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer. 283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. 284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. 285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode. 286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer. 287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer. 288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection. 289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process. 290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init. 291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit. 292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback(). 294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET 296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** all callbacks are set to the corresponding weak functions: 297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback(). 298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Exception done for MspInit and MspDeInit functions that are 299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when 300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** these callbacks are null (not registered beforehand). 301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit() 302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. 303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only. 305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Exception done MspInit/MspDeInit functions that can be registered/unregistered 306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state, 307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. 308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then, the user first registers the MspInit/MspDeInit user callbacks 309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit() 310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Init() function. 311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or 313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** not defined, the callback registration feature is not available and all callbacks 314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** are set to the corresponding weak functions. 315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 7 316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (@) You can refer to the I2C HAL driver header file for more useful macros 318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Includes ------------------------------------------------------------------*/ 323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #include "stm32f3xx_hal.h" 324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup STM32F3xx_HAL_Driver 326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C I2C 330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C HAL module driver 331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #ifdef HAL_I2C_MODULE_ENABLED 335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private typedef -----------------------------------------------------------*/ 337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define ------------------------------------------------------------*/ 338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Private_Define I2C Private Define 340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */ 343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */ 344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */ 345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */ 346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */ 347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */ 348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TC (25U) /*!< 25 ms */ 349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */ 350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */ 351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */ 352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define MAX_NBYTE_SIZE 255U 354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define SLAVE_ADDR_SHIFT 7U 355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define SLAVE_ADDR_MSK 0x06U 356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define for @ref PreviousState usage */ 358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \ 359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_STATE_BUSY_RX) & \ 360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) 361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Mask State define, keep only RX and TX bits */ 362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) 363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Default Value */ 364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ 365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER)) 366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Master Busy TX, combinaison of State LSB and Mode enum */ 367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ 368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER)) 369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Master Busy RX, combinaison of State LSB and Mode enum */ 370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ 371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE)) 372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Slave Busy TX, combinaison of State LSB and Mode enum */ ARM GAS /tmp/cc5G5cqz.s page 8 373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ 374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE)) 375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Slave Busy RX, combinaison of State LSB and Mode enum */ 376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ 377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM)) 378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Memory Busy TX, combinaison of State LSB and Mode enum */ 379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ 380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM)) 381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Memory Busy RX, combinaison of State LSB and Mode enum */ 382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define to centralize the enable/disable of Interrupts */ 385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with 386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */ 387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with 388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */ 389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2 390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and @ref I2C_XFER_RX_IT */ 391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of glo 393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and NACK treatment */ 394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evene 395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of 396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define Sequential Transfer Options default/reset value */ 398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_NO_OPTION_FRAME (0xFFFF0000U) 399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private macros ------------------------------------------------------------*/ 404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup I2C_Private_Macro 405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Macro to get remaining data to transfer on DMA side */ 408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__) 409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private variables ---------------------------------------------------------*/ 414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function prototypes -----------------------------------------------*/ 415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Private_Functions I2C Private Functions 417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle DMA transfer */ 420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma); 421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma); 422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma); 423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma); 424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma); 425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma); 426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle IT transfer */ 429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); ARM GAS /tmp/cc5G5cqz.s page 9 430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c); 431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c); 432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); 433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); 434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); 435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode); 436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle IT transfer */ 438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t 440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T 443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions for I2C transfer IRQ handler */ 446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources); 458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle flags during polling transfer */ 460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta 461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart); 462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart); 470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to centralize the enable/disable of Interrupts */ 472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); 473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); 474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to treat different error callback */ 476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c); 477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to flush TXDR register */ 479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c); 480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to handle start, restart or stop a transfer */ 482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t 483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Request); 484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to Convert Specific options */ 486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c); ARM GAS /tmp/cc5G5cqz.s page 10 487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Exported functions --------------------------------------------------------*/ 492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions I2C Exported Functions 494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions 498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initialization and Configuration functions 499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### Initialization and de-initialization functions ##### 503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] This subsection provides a set of functions allowing to initialize and 505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** deinitialize the I2Cx peripheral: 506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) User must Implement HAL_I2C_MspInit() function in which he configures 508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). 509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Call the function HAL_I2C_Init() to configure the selected device with 511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the selected configuration: 512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Clock Timing 513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 1 514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Addressing mode (Master, Slave) 515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Dual Addressing mode 516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 2 517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 2 Mask 518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) General call mode 519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Nostretch mode 520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Call the function HAL_I2C_DeInit() to restore the default configuration 522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** of the selected I2Cx peripheral. 523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initializes the I2C according to the specified parameters 530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in the I2C_InitTypeDef and initialize the associated handle. 531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) 536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 29 .loc 1 536 1 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 8 32 @ frame_needed = 1, uses_anonymous_args = 0 33 0000 80B5 push {r7, lr} 34 .cfi_def_cfa_offset 8 35 .cfi_offset 7, -8 ARM GAS /tmp/cc5G5cqz.s page 11 36 .cfi_offset 14, -4 37 0002 82B0 sub sp, sp, #8 38 .cfi_def_cfa_offset 16 39 0004 00AF add r7, sp, #0 40 .cfi_def_cfa_register 7 41 0006 7860 str r0, [r7, #4] 537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the I2C handle allocation */ 538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c == NULL) 42 .loc 1 538 6 43 0008 7B68 ldr r3, [r7, #4] 44 000a 002B cmp r3, #0 45 000c 01D1 bne .L2 539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 46 .loc 1 540 12 47 000e 0123 movs r3, #1 48 0010 81E0 b .L3 49 .L2: 541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); 546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); 547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); 548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); 549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); 550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); 551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); 552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_RESET) 50 .loc 1 553 11 51 0012 7B68 ldr r3, [r7, #4] 52 0014 93F84130 ldrb r3, [r3, #65] 53 0018 DBB2 uxtb r3, r3 54 .loc 1 553 6 55 001a 002B cmp r3, #0 56 001c 06D1 bne .L4 554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Allocate lock resource and initialize it */ 556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Lock = HAL_UNLOCKED; 57 .loc 1 556 16 58 001e 7B68 ldr r3, [r7, #4] 59 0020 0022 movs r2, #0 60 0022 83F84020 strb r2, [r3, #64] 557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the I2C Callback settings */ 560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback 561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback 562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback 563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback 564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback 565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback 566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback 567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback 568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback ARM GAS /tmp/cc5G5cqz.s page 12 569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback 570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->MspInitCallback == NULL) 572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ 574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ 577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback(hi2c); 578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ 580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MspInit(hi2c); 61 .loc 1 580 5 62 0026 7868 ldr r0, [r7, #4] 63 0028 FFF7FEFF bl HAL_I2C_MspInit 64 .L4: 581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; 65 .loc 1 584 15 66 002c 7B68 ldr r3, [r7, #4] 67 002e 2422 movs r2, #36 68 0030 83F84120 strb r2, [r3, #65] 585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the selected I2C peripheral */ 587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c); 69 .loc 1 587 3 70 0034 7B68 ldr r3, [r7, #4] 71 0036 1B68 ldr r3, [r3] 72 0038 1A68 ldr r2, [r3] 73 003a 7B68 ldr r3, [r7, #4] 74 003c 1B68 ldr r3, [r3] 75 003e 22F00102 bic r2, r2, #1 76 0042 1A60 str r2, [r3] 588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ 590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Frequency range */ 591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; 77 .loc 1 591 39 78 0044 7B68 ldr r3, [r7, #4] 79 0046 5A68 ldr r2, [r3, #4] 80 .loc 1 591 7 81 0048 7B68 ldr r3, [r7, #4] 82 004a 1B68 ldr r3, [r3] 83 .loc 1 591 47 84 004c 22F07062 bic r2, r2, #251658240 85 .loc 1 591 27 86 0050 1A61 str r2, [r3, #16] 592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ 594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Own Address1 before set the Own Address1 configuration */ 595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; 87 .loc 1 595 7 88 0052 7B68 ldr r3, [r7, #4] 89 0054 1B68 ldr r3, [r3] 90 .loc 1 595 17 ARM GAS /tmp/cc5G5cqz.s page 13 91 0056 9A68 ldr r2, [r3, #8] 92 .loc 1 595 7 93 0058 7B68 ldr r3, [r7, #4] 94 005a 1B68 ldr r3, [r3] 95 .loc 1 595 24 96 005c 22F40042 bic r2, r2, #32768 97 0060 9A60 str r2, [r3, #8] 596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Own Address1 and ack own address1 mode */ 598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) 98 .loc 1 598 17 99 0062 7B68 ldr r3, [r7, #4] 100 0064 DB68 ldr r3, [r3, #12] 101 .loc 1 598 6 102 0066 012B cmp r3, #1 103 0068 07D1 bne .L5 599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); 104 .loc 1 600 56 105 006a 7B68 ldr r3, [r7, #4] 106 006c 9A68 ldr r2, [r3, #8] 107 .loc 1 600 9 108 006e 7B68 ldr r3, [r7, #4] 109 0070 1B68 ldr r3, [r3] 110 .loc 1 600 44 111 0072 42F40042 orr r2, r2, #32768 112 .loc 1 600 26 113 0076 9A60 str r2, [r3, #8] 114 0078 06E0 b .L6 115 .L5: 601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else /* I2C_ADDRESSINGMODE_10BIT */ 603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); 116 .loc 1 604 75 117 007a 7B68 ldr r3, [r7, #4] 118 007c 9A68 ldr r2, [r3, #8] 119 .loc 1 604 9 120 007e 7B68 ldr r3, [r7, #4] 121 0080 1B68 ldr r3, [r3] 122 .loc 1 604 63 123 0082 42F40442 orr r2, r2, #33792 124 .loc 1 604 26 125 0086 9A60 str r2, [r3, #8] 126 .L6: 605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx CR2 Configuration ----------------------*/ 608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Addressing Master mode */ 609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) 127 .loc 1 609 17 128 0088 7B68 ldr r3, [r7, #4] 129 008a DB68 ldr r3, [r3, #12] 130 .loc 1 609 6 131 008c 022B cmp r3, #2 132 008e 04D1 bne .L7 610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 14 611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 = (I2C_CR2_ADD10); 133 .loc 1 611 9 134 0090 7B68 ldr r3, [r7, #4] 135 0092 1B68 ldr r3, [r3] 136 .loc 1 611 25 137 0094 4FF40062 mov r2, #2048 138 0098 5A60 str r2, [r3, #4] 139 .L7: 612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ 614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); 140 .loc 1 614 7 141 009a 7B68 ldr r3, [r7, #4] 142 009c 1B68 ldr r3, [r3] 143 .loc 1 614 17 144 009e 5B68 ldr r3, [r3, #4] 145 .loc 1 614 7 146 00a0 7A68 ldr r2, [r7, #4] 147 00a2 1268 ldr r2, [r2] 148 .loc 1 614 23 149 00a4 43F00073 orr r3, r3, #33554432 150 00a8 43F40043 orr r3, r3, #32768 151 00ac 5360 str r3, [r2, #4] 615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ 617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Own Address2 before set the Own Address2 configuration */ 618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; 152 .loc 1 618 7 153 00ae 7B68 ldr r3, [r7, #4] 154 00b0 1B68 ldr r3, [r3] 155 .loc 1 618 17 156 00b2 DA68 ldr r2, [r3, #12] 157 .loc 1 618 7 158 00b4 7B68 ldr r3, [r7, #4] 159 00b6 1B68 ldr r3, [r3] 160 .loc 1 618 24 161 00b8 22F40042 bic r2, r2, #32768 162 00bc DA60 str r2, [r3, #12] 619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Dual mode and Own Address2 */ 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ 163 .loc 1 621 37 164 00be 7B68 ldr r3, [r7, #4] 165 00c0 1A69 ldr r2, [r3, #16] 166 .loc 1 621 66 167 00c2 7B68 ldr r3, [r7, #4] 168 00c4 5B69 ldr r3, [r3, #20] 169 .loc 1 621 54 170 00c6 42EA0301 orr r1, r2, r3 622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 171 .loc 1 622 38 172 00ca 7B68 ldr r3, [r7, #4] 173 00cc 9B69 ldr r3, [r3, #24] 174 .loc 1 622 56 175 00ce 1A02 lsls r2, r3, #8 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 176 .loc 1 621 7 ARM GAS /tmp/cc5G5cqz.s page 15 177 00d0 7B68 ldr r3, [r7, #4] 178 00d2 1B68 ldr r3, [r3] 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 179 .loc 1 621 79 180 00d4 0A43 orrs r2, r2, r1 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 181 .loc 1 621 24 182 00d6 DA60 str r2, [r3, #12] 623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx CR1 Configuration ----------------------*/ 625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Generalcall and NoStretch mode */ 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); 183 .loc 1 626 36 184 00d8 7B68 ldr r3, [r7, #4] 185 00da D969 ldr r1, [r3, #28] 186 .loc 1 626 65 187 00dc 7B68 ldr r3, [r7, #4] 188 00de 1A6A ldr r2, [r3, #32] 189 .loc 1 626 7 190 00e0 7B68 ldr r3, [r7, #4] 191 00e2 1B68 ldr r3, [r3] 192 .loc 1 626 53 193 00e4 0A43 orrs r2, r2, r1 194 .loc 1 626 23 195 00e6 1A60 str r2, [r3] 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the selected I2C peripheral */ 629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE(hi2c); 196 .loc 1 629 3 197 00e8 7B68 ldr r3, [r7, #4] 198 00ea 1B68 ldr r3, [r3] 199 00ec 1A68 ldr r2, [r3] 200 00ee 7B68 ldr r3, [r7, #4] 201 00f0 1B68 ldr r3, [r3] 202 00f2 42F00102 orr r2, r2, #1 203 00f6 1A60 str r2, [r3] 630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 204 .loc 1 631 19 205 00f8 7B68 ldr r3, [r7, #4] 206 00fa 0022 movs r2, #0 207 00fc 5A64 str r2, [r3, #68] 632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 208 .loc 1 632 15 209 00fe 7B68 ldr r3, [r7, #4] 210 0100 2022 movs r2, #32 211 0102 83F84120 strb r2, [r3, #65] 633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 212 .loc 1 633 23 213 0106 7B68 ldr r3, [r7, #4] 214 0108 0022 movs r2, #0 215 010a 1A63 str r2, [r3, #48] 634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 216 .loc 1 634 14 217 010c 7B68 ldr r3, [r7, #4] 218 010e 0022 movs r2, #0 219 0110 83F84220 strb r2, [r3, #66] ARM GAS /tmp/cc5G5cqz.s page 16 635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 220 .loc 1 636 10 221 0114 0023 movs r3, #0 222 .L3: 637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 223 .loc 1 637 1 224 0116 1846 mov r0, r3 225 0118 0837 adds r7, r7, #8 226 .cfi_def_cfa_offset 8 227 011a BD46 mov sp, r7 228 .cfi_def_cfa_register 13 229 @ sp needed 230 011c 80BD pop {r7, pc} 231 .cfi_endproc 232 .LFE130: 234 .section .text.HAL_I2C_DeInit,"ax",%progbits 235 .align 1 236 .global HAL_I2C_DeInit 237 .syntax unified 238 .thumb 239 .thumb_func 241 HAL_I2C_DeInit: 242 .LFB131: 638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C peripheral. 641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) 646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 243 .loc 1 646 1 244 .cfi_startproc 245 @ args = 0, pretend = 0, frame = 8 246 @ frame_needed = 1, uses_anonymous_args = 0 247 0000 80B5 push {r7, lr} 248 .cfi_def_cfa_offset 8 249 .cfi_offset 7, -8 250 .cfi_offset 14, -4 251 0002 82B0 sub sp, sp, #8 252 .cfi_def_cfa_offset 16 253 0004 00AF add r7, sp, #0 254 .cfi_def_cfa_register 7 255 0006 7860 str r0, [r7, #4] 647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the I2C handle allocation */ 648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c == NULL) 256 .loc 1 648 6 257 0008 7B68 ldr r3, [r7, #4] 258 000a 002B cmp r3, #0 259 000c 01D1 bne .L9 649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 260 .loc 1 650 12 261 000e 0123 movs r3, #1 262 0010 21E0 b .L10 ARM GAS /tmp/cc5G5cqz.s page 17 263 .L9: 651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; 264 .loc 1 656 15 265 0012 7B68 ldr r3, [r7, #4] 266 0014 2422 movs r2, #36 267 0016 83F84120 strb r2, [r3, #65] 657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the I2C Peripheral Clock */ 659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c); 268 .loc 1 659 3 269 001a 7B68 ldr r3, [r7, #4] 270 001c 1B68 ldr r3, [r3] 271 001e 1A68 ldr r2, [r3] 272 0020 7B68 ldr r3, [r7, #4] 273 0022 1B68 ldr r3, [r3] 274 0024 22F00102 bic r2, r2, #1 275 0028 1A60 str r2, [r3] 660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->MspDeInitCallback == NULL) 663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ 665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ 668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback(hi2c); 669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ 671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MspDeInit(hi2c); 276 .loc 1 671 3 277 002a 7868 ldr r0, [r7, #4] 278 002c FFF7FEFF bl HAL_I2C_MspDeInit 672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 279 .loc 1 674 19 280 0030 7B68 ldr r3, [r7, #4] 281 0032 0022 movs r2, #0 282 0034 5A64 str r2, [r3, #68] 675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET; 283 .loc 1 675 15 284 0036 7B68 ldr r3, [r7, #4] 285 0038 0022 movs r2, #0 286 003a 83F84120 strb r2, [r3, #65] 676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 287 .loc 1 676 23 288 003e 7B68 ldr r3, [r7, #4] 289 0040 0022 movs r2, #0 290 0042 1A63 str r2, [r3, #48] 677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 291 .loc 1 677 14 292 0044 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 18 293 0046 0022 movs r2, #0 294 0048 83F84220 strb r2, [r3, #66] 678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Release Lock */ 680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 295 .loc 1 680 3 296 004c 7B68 ldr r3, [r7, #4] 297 004e 0022 movs r2, #0 298 0050 83F84020 strb r2, [r3, #64] 681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 299 .loc 1 682 10 300 0054 0023 movs r3, #0 301 .L10: 683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 302 .loc 1 683 1 303 0056 1846 mov r0, r3 304 0058 0837 adds r7, r7, #8 305 .cfi_def_cfa_offset 8 306 005a BD46 mov sp, r7 307 .cfi_def_cfa_register 13 308 @ sp needed 309 005c 80BD pop {r7, pc} 310 .cfi_endproc 311 .LFE131: 313 .section .text.HAL_I2C_MspInit,"ax",%progbits 314 .align 1 315 .weak HAL_I2C_MspInit 316 .syntax unified 317 .thumb 318 .thumb_func 320 HAL_I2C_MspInit: 321 .LFB132: 684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initialize the I2C MSP. 687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) 692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 322 .loc 1 692 1 323 .cfi_startproc 324 @ args = 0, pretend = 0, frame = 8 325 @ frame_needed = 1, uses_anonymous_args = 0 326 @ link register save eliminated. 327 0000 80B4 push {r7} 328 .cfi_def_cfa_offset 4 329 .cfi_offset 7, -4 330 0002 83B0 sub sp, sp, #12 331 .cfi_def_cfa_offset 16 332 0004 00AF add r7, sp, #0 333 .cfi_def_cfa_register 7 334 0006 7860 str r0, [r7, #4] 693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); ARM GAS /tmp/cc5G5cqz.s page 19 695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspInit could be implemented in the user file 698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 335 .loc 1 699 1 336 0008 00BF nop 337 000a 0C37 adds r7, r7, #12 338 .cfi_def_cfa_offset 4 339 000c BD46 mov sp, r7 340 .cfi_def_cfa_register 13 341 @ sp needed 342 000e 5DF8047B ldr r7, [sp], #4 343 .cfi_restore 7 344 .cfi_def_cfa_offset 0 345 0012 7047 bx lr 346 .cfi_endproc 347 .LFE132: 349 .section .text.HAL_I2C_MspDeInit,"ax",%progbits 350 .align 1 351 .weak HAL_I2C_MspDeInit 352 .syntax unified 353 .thumb 354 .thumb_func 356 HAL_I2C_MspDeInit: 357 .LFB133: 700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C MSP. 703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) 708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 358 .loc 1 708 1 359 .cfi_startproc 360 @ args = 0, pretend = 0, frame = 8 361 @ frame_needed = 1, uses_anonymous_args = 0 362 @ link register save eliminated. 363 0000 80B4 push {r7} 364 .cfi_def_cfa_offset 4 365 .cfi_offset 7, -4 366 0002 83B0 sub sp, sp, #12 367 .cfi_def_cfa_offset 16 368 0004 00AF add r7, sp, #0 369 .cfi_def_cfa_register 7 370 0006 7860 str r0, [r7, #4] 709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspDeInit could be implemented in the user file 714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 371 .loc 1 715 1 372 0008 00BF nop ARM GAS /tmp/cc5G5cqz.s page 20 373 000a 0C37 adds r7, r7, #12 374 .cfi_def_cfa_offset 4 375 000c BD46 mov sp, r7 376 .cfi_def_cfa_register 13 377 @ sp needed 378 000e 5DF8047B ldr r7, [sp], #4 379 .cfi_restore 7 380 .cfi_def_cfa_offset 0 381 0012 7047 bx lr 382 .cfi_endproc 383 .LFE133: 385 .section .text.HAL_I2C_Master_Transmit,"ax",%progbits 386 .align 1 387 .global HAL_I2C_Master_Transmit 388 .syntax unified 389 .thumb 390 .thumb_func 392 HAL_I2C_Master_Transmit: 393 .LFB134: 716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register a User I2C Callback 720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak predefined callback 721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RES 722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. 723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be registered 726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID 728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID 729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID 730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID 731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID 732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID 733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID 734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID 735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID 736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID 737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID 738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Callback function 739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb 742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** pI2C_CallbackTypeDef pCallback) 743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL) 747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 21 754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : 759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = pCallback; 760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : 763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = pCallback; 764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : 767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = pCallback; 768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : 771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = pCallback; 772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : 775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = pCallback; 776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : 779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = pCallback; 780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : 783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = pCallback; 784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : 787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = pCallback; 788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : 791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = pCallback; 792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; 796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; 800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 22 811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) 812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; 817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; 821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Unregister an I2C Callback 846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * I2C callback is redirected to the weak predefined callback 847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_R 848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. 849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be unregistered 852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID 855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID 856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID 857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID 858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID 859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID 860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID 861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID 862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID 863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID 864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID 865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal ARM GAS /tmp/cc5G5cqz.s page 23 868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : 876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallb 877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : 880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallb 881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : 884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallba 885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : 888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallba 889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : 892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallbac 893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : 896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback 897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : 900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback 901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : 904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback 905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : 908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback 909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit 913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit 917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; ARM GAS /tmp/cc5G5cqz.s page 24 925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) 929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit 934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit 938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register the Slave Address Match I2C Callback 963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback 964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Address Match Callback function 967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC 970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL) 974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) ARM GAS /tmp/cc5G5cqz.s page 25 982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = pCallback; 984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief UnRegister the Slave Address Match I2C Callback 999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined cal 1000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) 1005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 1007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 1009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ 1011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 1015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 1016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 1018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 1019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 1022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 1025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 1028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions 1031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Data transfers functions 1032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 1033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 1034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 1035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### IO operation functions ##### 1036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 1037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 1038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection provides a set of functions allowing to manage the I2C data ARM GAS /tmp/cc5G5cqz.s page 26 1039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfers. 1040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) There are two modes of transfer: 1042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Blocking mode : The communication is performed in the polling mode. 1043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The status of all data processing is returned by the same function 1044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** after finishing transfer. 1045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) No-Blocking mode : The communication is performed using Interrupts 1046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or DMA. These functions return the status of the transfer startup. 1047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The end of the data processing will be indicated through the 1048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when 1049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** using DMA mode. 1050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Blocking mode functions are : 1052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit() 1053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive() 1054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit() 1055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive() 1056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write() 1057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read() 1058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_IsDeviceReady() 1059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with Interrupt are : 1061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_IT() 1062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_IT() 1063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_IT() 1064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_IT() 1065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_IT() 1066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_IT() 1067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_IT() 1068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_IT() 1069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_IT() 1070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_IT() 1071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_EnableListen_IT() 1072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_DisableListen_IT() 1073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Abort_IT() 1074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with DMA are : 1076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_DMA() 1077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_DMA() 1078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_DMA() 1079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_DMA() 1080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_DMA() 1081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_DMA() 1082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_DMA() 1083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_DMA() 1084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_DMA() 1085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_DMA() 1086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: 1088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterTxCpltCallback() 1089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterRxCpltCallback() 1090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveTxCpltCallback() 1091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveRxCpltCallback() 1092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemTxCpltCallback() 1093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemRxCpltCallback() 1094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AddrCallback() 1095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ListenCpltCallback() ARM GAS /tmp/cc5G5cqz.s page 27 1096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ErrorCallback() 1097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AbortCpltCallback() 1098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 1100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 1101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in master mode an amount of data in blocking mode. 1105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD 1115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) 1116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 394 .loc 1 1116 1 395 .cfi_startproc 396 @ args = 4, pretend = 0, frame = 24 397 @ frame_needed = 1, uses_anonymous_args = 0 398 0000 80B5 push {r7, lr} 399 .cfi_def_cfa_offset 8 400 .cfi_offset 7, -8 401 .cfi_offset 14, -4 402 0002 88B0 sub sp, sp, #32 403 .cfi_def_cfa_offset 40 404 0004 02AF add r7, sp, #8 405 .cfi_def_cfa 7, 32 406 0006 F860 str r0, [r7, #12] 407 0008 7A60 str r2, [r7, #4] 408 000a 1A46 mov r2, r3 409 000c 0B46 mov r3, r1 @ movhi 410 000e 7B81 strh r3, [r7, #10] @ movhi 411 0010 1346 mov r3, r2 @ movhi 412 0012 3B81 strh r3, [r7, #8] @ movhi 1117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 413 .loc 1 1119 11 414 0014 FB68 ldr r3, [r7, #12] 415 0016 93F84130 ldrb r3, [r3, #65] 416 001a DBB2 uxtb r3, r3 417 .loc 1 1119 6 418 001c 202B cmp r3, #32 419 001e 40F0DA80 bne .L14 1120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 420 .loc 1 1122 5 421 0022 FB68 ldr r3, [r7, #12] 422 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 423 0028 012B cmp r3, #1 ARM GAS /tmp/cc5G5cqz.s page 28 424 002a 01D1 bne .L15 425 .loc 1 1122 5 is_stmt 0 discriminator 1 426 002c 0223 movs r3, #2 427 .loc 1 1122 5 428 002e D3E0 b .L16 429 .L15: 430 .loc 1 1122 5 discriminator 2 431 0030 FB68 ldr r3, [r7, #12] 432 0032 0122 movs r2, #1 433 0034 83F84020 strb r2, [r3, #64] 1123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 434 .loc 1 1125 17 is_stmt 1 435 0038 FFF7FEFF bl HAL_GetTick 436 003c 7861 str r0, [r7, #20] 1126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 437 .loc 1 1127 9 438 003e 7B69 ldr r3, [r7, #20] 439 0040 0093 str r3, [sp] 440 0042 1923 movs r3, #25 441 0044 0122 movs r2, #1 442 0046 4FF40041 mov r1, #32768 443 004a F868 ldr r0, [r7, #12] 444 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 445 0050 0346 mov r3, r0 446 .loc 1 1127 8 discriminator 1 447 0052 002B cmp r3, #0 448 0054 01D0 beq .L17 1128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 449 .loc 1 1129 14 450 0056 0123 movs r3, #1 451 0058 BEE0 b .L16 452 .L17: 1130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 453 .loc 1 1132 21 454 005a FB68 ldr r3, [r7, #12] 455 005c 2122 movs r2, #33 456 005e 83F84120 strb r2, [r3, #65] 1133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 457 .loc 1 1133 21 458 0062 FB68 ldr r3, [r7, #12] 459 0064 1022 movs r2, #16 460 0066 83F84220 strb r2, [r3, #66] 1134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 461 .loc 1 1134 21 462 006a FB68 ldr r3, [r7, #12] 463 006c 0022 movs r2, #0 464 006e 5A64 str r2, [r3, #68] 1135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 465 .loc 1 1137 21 ARM GAS /tmp/cc5G5cqz.s page 29 466 0070 FB68 ldr r3, [r7, #12] 467 0072 7A68 ldr r2, [r7, #4] 468 0074 5A62 str r2, [r3, #36] 1138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 469 .loc 1 1138 21 470 0076 FB68 ldr r3, [r7, #12] 471 0078 3A89 ldrh r2, [r7, #8] @ movhi 472 007a 5A85 strh r2, [r3, #42] @ movhi 1139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 473 .loc 1 1139 21 474 007c FB68 ldr r3, [r7, #12] 475 007e 0022 movs r2, #0 476 0080 5A63 str r2, [r3, #52] 1140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 1143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 477 .loc 1 1143 13 478 0082 FB68 ldr r3, [r7, #12] 479 0084 5B8D ldrh r3, [r3, #42] @ movhi 480 0086 9BB2 uxth r3, r3 481 .loc 1 1143 8 482 0088 FF2B cmp r3, #255 483 008a 0ED9 bls .L18 1144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 484 .loc 1 1145 22 485 008c FB68 ldr r3, [r7, #12] 486 008e FF22 movs r2, #255 487 0090 1A85 strh r2, [r3, #40] @ movhi 1146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 488 .loc 1 1146 57 489 0092 FB68 ldr r3, [r7, #12] 490 0094 1B8D ldrh r3, [r3, #40] 491 .loc 1 1146 7 492 0096 DAB2 uxtb r2, r3 493 0098 7989 ldrh r1, [r7, #10] 494 009a 514B ldr r3, .L27 495 009c 0093 str r3, [sp] 496 009e 4FF08073 mov r3, #16777216 497 00a2 F868 ldr r0, [r7, #12] 498 00a4 FFF7FEFF bl I2C_TransferConfig 499 00a8 6CE0 b .L20 500 .L18: 1147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 501 .loc 1 1151 28 502 00aa FB68 ldr r3, [r7, #12] 503 00ac 5B8D ldrh r3, [r3, #42] @ movhi 504 00ae 9AB2 uxth r2, r3 505 .loc 1 1151 22 506 00b0 FB68 ldr r3, [r7, #12] 507 00b2 1A85 strh r2, [r3, #40] @ movhi 1152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, ARM GAS /tmp/cc5G5cqz.s page 30 508 .loc 1 1152 57 509 00b4 FB68 ldr r3, [r7, #12] 510 00b6 1B8D ldrh r3, [r3, #40] 511 .loc 1 1152 7 512 00b8 DAB2 uxtb r2, r3 513 00ba 7989 ldrh r1, [r7, #10] 514 00bc 484B ldr r3, .L27 515 00be 0093 str r3, [sp] 516 00c0 4FF00073 mov r3, #33554432 517 00c4 F868 ldr r0, [r7, #12] 518 00c6 FFF7FEFF bl I2C_TransferConfig 1153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 519 .loc 1 1156 11 520 00ca 5BE0 b .L20 521 .L25: 1157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 1159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 522 .loc 1 1159 11 523 00cc 7A69 ldr r2, [r7, #20] 524 00ce 396A ldr r1, [r7, #32] 525 00d0 F868 ldr r0, [r7, #12] 526 00d2 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 527 00d6 0346 mov r3, r0 528 .loc 1 1159 10 discriminator 1 529 00d8 002B cmp r3, #0 530 00da 01D0 beq .L21 1160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 531 .loc 1 1161 16 532 00dc 0123 movs r3, #1 533 00de 7BE0 b .L16 534 .L21: 1162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 535 .loc 1 1164 35 536 00e0 FB68 ldr r3, [r7, #12] 537 00e2 5B6A ldr r3, [r3, #36] 538 .loc 1 1164 30 539 00e4 1A78 ldrb r2, [r3] @ zero_extendqisi2 540 .loc 1 1164 11 541 00e6 FB68 ldr r3, [r7, #12] 542 00e8 1B68 ldr r3, [r3] 543 .loc 1 1164 28 544 00ea 9A62 str r2, [r3, #40] 1165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 545 .loc 1 1167 11 546 00ec FB68 ldr r3, [r7, #12] 547 00ee 5B6A ldr r3, [r3, #36] 548 .loc 1 1167 21 549 00f0 5A1C adds r2, r3, #1 ARM GAS /tmp/cc5G5cqz.s page 31 550 00f2 FB68 ldr r3, [r7, #12] 551 00f4 5A62 str r2, [r3, #36] 1168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 552 .loc 1 1169 11 553 00f6 FB68 ldr r3, [r7, #12] 554 00f8 5B8D ldrh r3, [r3, #42] @ movhi 555 00fa 9BB2 uxth r3, r3 556 .loc 1 1169 22 557 00fc 013B subs r3, r3, #1 558 00fe 9AB2 uxth r2, r3 559 0100 FB68 ldr r3, [r7, #12] 560 0102 5A85 strh r2, [r3, #42] @ movhi 1170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 561 .loc 1 1170 11 562 0104 FB68 ldr r3, [r7, #12] 563 0106 1B8D ldrh r3, [r3, #40] 564 .loc 1 1170 21 565 0108 013B subs r3, r3, #1 566 010a 9AB2 uxth r2, r3 567 010c FB68 ldr r3, [r7, #12] 568 010e 1A85 strh r2, [r3, #40] @ movhi 1171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 569 .loc 1 1172 16 570 0110 FB68 ldr r3, [r7, #12] 571 0112 5B8D ldrh r3, [r3, #42] @ movhi 572 0114 9BB2 uxth r3, r3 573 .loc 1 1172 10 574 0116 002B cmp r3, #0 575 0118 34D0 beq .L20 576 .loc 1 1172 43 discriminator 1 577 011a FB68 ldr r3, [r7, #12] 578 011c 1B8D ldrh r3, [r3, #40] 579 .loc 1 1172 35 discriminator 1 580 011e 002B cmp r3, #0 581 0120 30D1 bne .L20 1173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 1175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 582 .loc 1 1175 13 583 0122 7B69 ldr r3, [r7, #20] 584 0124 0093 str r3, [sp] 585 0126 3B6A ldr r3, [r7, #32] 586 0128 0022 movs r2, #0 587 012a 8021 movs r1, #128 588 012c F868 ldr r0, [r7, #12] 589 012e FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 590 0132 0346 mov r3, r0 591 .loc 1 1175 12 discriminator 1 592 0134 002B cmp r3, #0 593 0136 01D0 beq .L23 1176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 594 .loc 1 1177 18 595 0138 0123 movs r3, #1 596 013a 4DE0 b .L16 ARM GAS /tmp/cc5G5cqz.s page 32 597 .L23: 1178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 598 .loc 1 1180 17 599 013c FB68 ldr r3, [r7, #12] 600 013e 5B8D ldrh r3, [r3, #42] @ movhi 601 0140 9BB2 uxth r3, r3 602 .loc 1 1180 12 603 0142 FF2B cmp r3, #255 604 0144 0ED9 bls .L24 1181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 605 .loc 1 1182 26 606 0146 FB68 ldr r3, [r7, #12] 607 0148 FF22 movs r2, #255 608 014a 1A85 strh r2, [r3, #40] @ movhi 1183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 609 .loc 1 1183 61 610 014c FB68 ldr r3, [r7, #12] 611 014e 1B8D ldrh r3, [r3, #40] 612 .loc 1 1183 11 613 0150 DAB2 uxtb r2, r3 614 0152 7989 ldrh r1, [r7, #10] 615 0154 0023 movs r3, #0 616 0156 0093 str r3, [sp] 617 0158 4FF08073 mov r3, #16777216 618 015c F868 ldr r0, [r7, #12] 619 015e FFF7FEFF bl I2C_TransferConfig 620 0162 0FE0 b .L20 621 .L24: 1184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 622 .loc 1 1188 32 623 0164 FB68 ldr r3, [r7, #12] 624 0166 5B8D ldrh r3, [r3, #42] @ movhi 625 0168 9AB2 uxth r2, r3 626 .loc 1 1188 26 627 016a FB68 ldr r3, [r7, #12] 628 016c 1A85 strh r2, [r3, #40] @ movhi 1189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 629 .loc 1 1189 61 630 016e FB68 ldr r3, [r7, #12] 631 0170 1B8D ldrh r3, [r3, #40] 632 .loc 1 1189 11 633 0172 DAB2 uxtb r2, r3 634 0174 7989 ldrh r1, [r7, #10] 635 0176 0023 movs r3, #0 636 0178 0093 str r3, [sp] 637 017a 4FF00073 mov r3, #33554432 638 017e F868 ldr r0, [r7, #12] 639 0180 FFF7FEFF bl I2C_TransferConfig 640 .L20: 1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 33 641 .loc 1 1156 16 642 0184 FB68 ldr r3, [r7, #12] 643 0186 5B8D ldrh r3, [r3, #42] @ movhi 644 0188 9BB2 uxth r3, r3 1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 645 .loc 1 1156 28 646 018a 002B cmp r3, #0 647 018c 9ED1 bne .L25 1190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 1196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */ 1197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 648 .loc 1 1197 9 649 018e 7A69 ldr r2, [r7, #20] 650 0190 396A ldr r1, [r7, #32] 651 0192 F868 ldr r0, [r7, #12] 652 0194 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 653 0198 0346 mov r3, r0 654 .loc 1 1197 8 discriminator 1 655 019a 002B cmp r3, #0 656 019c 01D0 beq .L26 1198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 657 .loc 1 1199 14 658 019e 0123 movs r3, #1 659 01a0 1AE0 b .L16 660 .L26: 1200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 1203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 661 .loc 1 1203 5 662 01a2 FB68 ldr r3, [r7, #12] 663 01a4 1B68 ldr r3, [r3] 664 01a6 2022 movs r2, #32 665 01a8 DA61 str r2, [r3, #28] 1204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 1206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 666 .loc 1 1206 5 667 01aa FB68 ldr r3, [r7, #12] 668 01ac 1B68 ldr r3, [r3] 669 01ae 5968 ldr r1, [r3, #4] 670 01b0 FB68 ldr r3, [r7, #12] 671 01b2 1A68 ldr r2, [r3] 672 01b4 0B4B ldr r3, .L27+4 673 01b6 0B40 ands r3, r3, r1 674 01b8 5360 str r3, [r2, #4] 1207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 675 .loc 1 1208 17 676 01ba FB68 ldr r3, [r7, #12] 677 01bc 2022 movs r2, #32 ARM GAS /tmp/cc5G5cqz.s page 34 678 01be 83F84120 strb r2, [r3, #65] 1209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 679 .loc 1 1209 17 680 01c2 FB68 ldr r3, [r7, #12] 681 01c4 0022 movs r2, #0 682 01c6 83F84220 strb r2, [r3, #66] 1210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 683 .loc 1 1212 5 684 01ca FB68 ldr r3, [r7, #12] 685 01cc 0022 movs r2, #0 686 01ce 83F84020 strb r2, [r3, #64] 1213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 687 .loc 1 1214 12 688 01d2 0023 movs r3, #0 689 01d4 00E0 b .L16 690 .L14: 1215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 691 .loc 1 1218 12 692 01d6 0223 movs r3, #2 693 .L16: 1219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 694 .loc 1 1220 1 695 01d8 1846 mov r0, r3 696 01da 1837 adds r7, r7, #24 697 .cfi_def_cfa_offset 8 698 01dc BD46 mov sp, r7 699 .cfi_def_cfa_register 13 700 @ sp needed 701 01de 80BD pop {r7, pc} 702 .L28: 703 .align 2 704 .L27: 705 01e0 00200080 .word -2147475456 706 01e4 00E800FE .word -33495040 707 .cfi_endproc 708 .LFE134: 710 .section .text.HAL_I2C_Master_Receive,"ax",%progbits 711 .align 1 712 .global HAL_I2C_Master_Receive 713 .syntax unified 714 .thumb 715 .thumb_func 717 HAL_I2C_Master_Receive: 718 .LFB135: 1221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receives in master mode an amount of data in blocking mode. 1224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value ARM GAS /tmp/cc5G5cqz.s page 35 1227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa 1234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) 1235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 719 .loc 1 1235 1 720 .cfi_startproc 721 @ args = 4, pretend = 0, frame = 24 722 @ frame_needed = 1, uses_anonymous_args = 0 723 0000 80B5 push {r7, lr} 724 .cfi_def_cfa_offset 8 725 .cfi_offset 7, -8 726 .cfi_offset 14, -4 727 0002 88B0 sub sp, sp, #32 728 .cfi_def_cfa_offset 40 729 0004 02AF add r7, sp, #8 730 .cfi_def_cfa 7, 32 731 0006 F860 str r0, [r7, #12] 732 0008 7A60 str r2, [r7, #4] 733 000a 1A46 mov r2, r3 734 000c 0B46 mov r3, r1 @ movhi 735 000e 7B81 strh r3, [r7, #10] @ movhi 736 0010 1346 mov r3, r2 @ movhi 737 0012 3B81 strh r3, [r7, #8] @ movhi 1236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 738 .loc 1 1238 11 739 0014 FB68 ldr r3, [r7, #12] 740 0016 93F84130 ldrb r3, [r3, #65] 741 001a DBB2 uxtb r3, r3 742 .loc 1 1238 6 743 001c 202B cmp r3, #32 744 001e 40F0DB80 bne .L30 1239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 745 .loc 1 1241 5 746 0022 FB68 ldr r3, [r7, #12] 747 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 748 0028 012B cmp r3, #1 749 002a 01D1 bne .L31 750 .loc 1 1241 5 is_stmt 0 discriminator 1 751 002c 0223 movs r3, #2 752 .loc 1 1241 5 753 002e D4E0 b .L32 754 .L31: 755 .loc 1 1241 5 discriminator 2 756 0030 FB68 ldr r3, [r7, #12] 757 0032 0122 movs r2, #1 758 0034 83F84020 strb r2, [r3, #64] 1242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ ARM GAS /tmp/cc5G5cqz.s page 36 1244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 759 .loc 1 1244 17 is_stmt 1 760 0038 FFF7FEFF bl HAL_GetTick 761 003c 7861 str r0, [r7, #20] 1245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 762 .loc 1 1246 9 763 003e 7B69 ldr r3, [r7, #20] 764 0040 0093 str r3, [sp] 765 0042 1923 movs r3, #25 766 0044 0122 movs r2, #1 767 0046 4FF40041 mov r1, #32768 768 004a F868 ldr r0, [r7, #12] 769 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 770 0050 0346 mov r3, r0 771 .loc 1 1246 8 discriminator 1 772 0052 002B cmp r3, #0 773 0054 01D0 beq .L33 1247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 774 .loc 1 1248 14 775 0056 0123 movs r3, #1 776 0058 BFE0 b .L32 777 .L33: 1249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 778 .loc 1 1251 21 779 005a FB68 ldr r3, [r7, #12] 780 005c 2222 movs r2, #34 781 005e 83F84120 strb r2, [r3, #65] 1252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 782 .loc 1 1252 21 783 0062 FB68 ldr r3, [r7, #12] 784 0064 1022 movs r2, #16 785 0066 83F84220 strb r2, [r3, #66] 1253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 786 .loc 1 1253 21 787 006a FB68 ldr r3, [r7, #12] 788 006c 0022 movs r2, #0 789 006e 5A64 str r2, [r3, #68] 1254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 790 .loc 1 1256 21 791 0070 FB68 ldr r3, [r7, #12] 792 0072 7A68 ldr r2, [r7, #4] 793 0074 5A62 str r2, [r3, #36] 1257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 794 .loc 1 1257 21 795 0076 FB68 ldr r3, [r7, #12] 796 0078 3A89 ldrh r2, [r7, #8] @ movhi 797 007a 5A85 strh r2, [r3, #42] @ movhi 1258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 798 .loc 1 1258 21 799 007c FB68 ldr r3, [r7, #12] 800 007e 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 37 801 0080 5A63 str r2, [r3, #52] 1259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 1262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 802 .loc 1 1262 13 803 0082 FB68 ldr r3, [r7, #12] 804 0084 5B8D ldrh r3, [r3, #42] @ movhi 805 0086 9BB2 uxth r3, r3 806 .loc 1 1262 8 807 0088 FF2B cmp r3, #255 808 008a 0ED9 bls .L34 1263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 809 .loc 1 1264 22 810 008c FB68 ldr r3, [r7, #12] 811 008e FF22 movs r2, #255 812 0090 1A85 strh r2, [r3, #40] @ movhi 1265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 813 .loc 1 1265 57 814 0092 FB68 ldr r3, [r7, #12] 815 0094 1B8D ldrh r3, [r3, #40] 816 .loc 1 1265 7 817 0096 DAB2 uxtb r2, r3 818 0098 7989 ldrh r1, [r7, #10] 819 009a 524B ldr r3, .L43 820 009c 0093 str r3, [sp] 821 009e 4FF08073 mov r3, #16777216 822 00a2 F868 ldr r0, [r7, #12] 823 00a4 FFF7FEFF bl I2C_TransferConfig 824 00a8 6DE0 b .L36 825 .L34: 1266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 1267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 826 .loc 1 1270 28 827 00aa FB68 ldr r3, [r7, #12] 828 00ac 5B8D ldrh r3, [r3, #42] @ movhi 829 00ae 9AB2 uxth r2, r3 830 .loc 1 1270 22 831 00b0 FB68 ldr r3, [r7, #12] 832 00b2 1A85 strh r2, [r3, #40] @ movhi 1271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 833 .loc 1 1271 57 834 00b4 FB68 ldr r3, [r7, #12] 835 00b6 1B8D ldrh r3, [r3, #40] 836 .loc 1 1271 7 837 00b8 DAB2 uxtb r2, r3 838 00ba 7989 ldrh r1, [r7, #10] 839 00bc 494B ldr r3, .L43 840 00be 0093 str r3, [sp] 841 00c0 4FF00073 mov r3, #33554432 842 00c4 F868 ldr r0, [r7, #12] 843 00c6 FFF7FEFF bl I2C_TransferConfig 1272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); ARM GAS /tmp/cc5G5cqz.s page 38 1273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 844 .loc 1 1275 11 845 00ca 5CE0 b .L36 846 .L41: 1276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 1278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 847 .loc 1 1278 11 848 00cc 7A69 ldr r2, [r7, #20] 849 00ce 396A ldr r1, [r7, #32] 850 00d0 F868 ldr r0, [r7, #12] 851 00d2 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout 852 00d6 0346 mov r3, r0 853 .loc 1 1278 10 discriminator 1 854 00d8 002B cmp r3, #0 855 00da 01D0 beq .L37 1279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 856 .loc 1 1280 16 857 00dc 0123 movs r3, #1 858 00de 7CE0 b .L32 859 .L37: 1281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 860 .loc 1 1284 38 861 00e0 FB68 ldr r3, [r7, #12] 862 00e2 1B68 ldr r3, [r3] 863 .loc 1 1284 48 864 00e4 5A6A ldr r2, [r3, #36] 865 .loc 1 1284 12 866 00e6 FB68 ldr r3, [r7, #12] 867 00e8 5B6A ldr r3, [r3, #36] 868 .loc 1 1284 25 869 00ea D2B2 uxtb r2, r2 870 .loc 1 1284 23 871 00ec 1A70 strb r2, [r3] 1285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 872 .loc 1 1287 11 873 00ee FB68 ldr r3, [r7, #12] 874 00f0 5B6A ldr r3, [r3, #36] 875 .loc 1 1287 21 876 00f2 5A1C adds r2, r3, #1 877 00f4 FB68 ldr r3, [r7, #12] 878 00f6 5A62 str r2, [r3, #36] 1288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 879 .loc 1 1289 11 880 00f8 FB68 ldr r3, [r7, #12] 881 00fa 1B8D ldrh r3, [r3, #40] 882 .loc 1 1289 21 883 00fc 013B subs r3, r3, #1 ARM GAS /tmp/cc5G5cqz.s page 39 884 00fe 9AB2 uxth r2, r3 885 0100 FB68 ldr r3, [r7, #12] 886 0102 1A85 strh r2, [r3, #40] @ movhi 1290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 887 .loc 1 1290 11 888 0104 FB68 ldr r3, [r7, #12] 889 0106 5B8D ldrh r3, [r3, #42] @ movhi 890 0108 9BB2 uxth r3, r3 891 .loc 1 1290 22 892 010a 013B subs r3, r3, #1 893 010c 9AB2 uxth r2, r3 894 010e FB68 ldr r3, [r7, #12] 895 0110 5A85 strh r2, [r3, #42] @ movhi 1291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 896 .loc 1 1292 16 897 0112 FB68 ldr r3, [r7, #12] 898 0114 5B8D ldrh r3, [r3, #42] @ movhi 899 0116 9BB2 uxth r3, r3 900 .loc 1 1292 10 901 0118 002B cmp r3, #0 902 011a 34D0 beq .L36 903 .loc 1 1292 43 discriminator 1 904 011c FB68 ldr r3, [r7, #12] 905 011e 1B8D ldrh r3, [r3, #40] 906 .loc 1 1292 35 discriminator 1 907 0120 002B cmp r3, #0 908 0122 30D1 bne .L36 1293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 1295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 909 .loc 1 1295 13 910 0124 7B69 ldr r3, [r7, #20] 911 0126 0093 str r3, [sp] 912 0128 3B6A ldr r3, [r7, #32] 913 012a 0022 movs r2, #0 914 012c 8021 movs r1, #128 915 012e F868 ldr r0, [r7, #12] 916 0130 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 917 0134 0346 mov r3, r0 918 .loc 1 1295 12 discriminator 1 919 0136 002B cmp r3, #0 920 0138 01D0 beq .L39 1296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 921 .loc 1 1297 18 922 013a 0123 movs r3, #1 923 013c 4DE0 b .L32 924 .L39: 1298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 925 .loc 1 1300 17 926 013e FB68 ldr r3, [r7, #12] 927 0140 5B8D ldrh r3, [r3, #42] @ movhi 928 0142 9BB2 uxth r3, r3 929 .loc 1 1300 12 ARM GAS /tmp/cc5G5cqz.s page 40 930 0144 FF2B cmp r3, #255 931 0146 0ED9 bls .L40 1301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 932 .loc 1 1302 26 933 0148 FB68 ldr r3, [r7, #12] 934 014a FF22 movs r2, #255 935 014c 1A85 strh r2, [r3, #40] @ movhi 1303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 936 .loc 1 1303 61 937 014e FB68 ldr r3, [r7, #12] 938 0150 1B8D ldrh r3, [r3, #40] 939 .loc 1 1303 11 940 0152 DAB2 uxtb r2, r3 941 0154 7989 ldrh r1, [r7, #10] 942 0156 0023 movs r3, #0 943 0158 0093 str r3, [sp] 944 015a 4FF08073 mov r3, #16777216 945 015e F868 ldr r0, [r7, #12] 946 0160 FFF7FEFF bl I2C_TransferConfig 947 0164 0FE0 b .L36 948 .L40: 1304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 949 .loc 1 1308 32 950 0166 FB68 ldr r3, [r7, #12] 951 0168 5B8D ldrh r3, [r3, #42] @ movhi 952 016a 9AB2 uxth r2, r3 953 .loc 1 1308 26 954 016c FB68 ldr r3, [r7, #12] 955 016e 1A85 strh r2, [r3, #40] @ movhi 1309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 956 .loc 1 1309 61 957 0170 FB68 ldr r3, [r7, #12] 958 0172 1B8D ldrh r3, [r3, #40] 959 .loc 1 1309 11 960 0174 DAB2 uxtb r2, r3 961 0176 7989 ldrh r1, [r7, #10] 962 0178 0023 movs r3, #0 963 017a 0093 str r3, [sp] 964 017c 4FF00073 mov r3, #33554432 965 0180 F868 ldr r0, [r7, #12] 966 0182 FFF7FEFF bl I2C_TransferConfig 967 .L36: 1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 968 .loc 1 1275 16 969 0186 FB68 ldr r3, [r7, #12] 970 0188 5B8D ldrh r3, [r3, #42] @ movhi 971 018a 9BB2 uxth r3, r3 1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 972 .loc 1 1275 28 973 018c 002B cmp r3, #0 974 018e 9DD1 bne .L41 1310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); ARM GAS /tmp/cc5G5cqz.s page 41 1311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 1316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */ 1317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 975 .loc 1 1317 9 976 0190 7A69 ldr r2, [r7, #20] 977 0192 396A ldr r1, [r7, #32] 978 0194 F868 ldr r0, [r7, #12] 979 0196 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 980 019a 0346 mov r3, r0 981 .loc 1 1317 8 discriminator 1 982 019c 002B cmp r3, #0 983 019e 01D0 beq .L42 1318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 984 .loc 1 1319 14 985 01a0 0123 movs r3, #1 986 01a2 1AE0 b .L32 987 .L42: 1320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 1323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 988 .loc 1 1323 5 989 01a4 FB68 ldr r3, [r7, #12] 990 01a6 1B68 ldr r3, [r3] 991 01a8 2022 movs r2, #32 992 01aa DA61 str r2, [r3, #28] 1324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 1326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 993 .loc 1 1326 5 994 01ac FB68 ldr r3, [r7, #12] 995 01ae 1B68 ldr r3, [r3] 996 01b0 5968 ldr r1, [r3, #4] 997 01b2 FB68 ldr r3, [r7, #12] 998 01b4 1A68 ldr r2, [r3] 999 01b6 0C4B ldr r3, .L43+4 1000 01b8 0B40 ands r3, r3, r1 1001 01ba 5360 str r3, [r2, #4] 1327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1002 .loc 1 1328 17 1003 01bc FB68 ldr r3, [r7, #12] 1004 01be 2022 movs r2, #32 1005 01c0 83F84120 strb r2, [r3, #65] 1329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1006 .loc 1 1329 17 1007 01c4 FB68 ldr r3, [r7, #12] 1008 01c6 0022 movs r2, #0 1009 01c8 83F84220 strb r2, [r3, #66] 1330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS /tmp/cc5G5cqz.s page 42 1010 .loc 1 1332 5 1011 01cc FB68 ldr r3, [r7, #12] 1012 01ce 0022 movs r2, #0 1013 01d0 83F84020 strb r2, [r3, #64] 1333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1014 .loc 1 1334 12 1015 01d4 0023 movs r3, #0 1016 01d6 00E0 b .L32 1017 .L30: 1335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1018 .loc 1 1338 12 1019 01d8 0223 movs r3, #2 1020 .L32: 1339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1021 .loc 1 1340 1 1022 01da 1846 mov r0, r3 1023 01dc 1837 adds r7, r7, #24 1024 .cfi_def_cfa_offset 8 1025 01de BD46 mov sp, r7 1026 .cfi_def_cfa_register 13 1027 @ sp needed 1028 01e0 80BD pop {r7, pc} 1029 .L44: 1030 01e2 00BF .align 2 1031 .L43: 1032 01e4 00240080 .word -2147474432 1033 01e8 00E800FE .word -33495040 1034 .cfi_endproc 1035 .LFE135: 1037 .section .text.HAL_I2C_Slave_Transmit,"ax",%progbits 1038 .align 1 1039 .global HAL_I2C_Slave_Transmit 1040 .syntax unified 1041 .thumb 1042 .thumb_func 1044 HAL_I2C_Slave_Transmit: 1045 .LFB136: 1341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in slave mode an amount of data in blocking mode. 1344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, 1352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 1353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1046 .loc 1 1353 1 1047 .cfi_startproc ARM GAS /tmp/cc5G5cqz.s page 43 1048 @ args = 0, pretend = 0, frame = 24 1049 @ frame_needed = 1, uses_anonymous_args = 0 1050 0000 80B5 push {r7, lr} 1051 .cfi_def_cfa_offset 8 1052 .cfi_offset 7, -8 1053 .cfi_offset 14, -4 1054 0002 88B0 sub sp, sp, #32 1055 .cfi_def_cfa_offset 40 1056 0004 02AF add r7, sp, #8 1057 .cfi_def_cfa 7, 32 1058 0006 F860 str r0, [r7, #12] 1059 0008 B960 str r1, [r7, #8] 1060 000a 3B60 str r3, [r7] 1061 000c 1346 mov r3, r2 @ movhi 1062 000e FB80 strh r3, [r7, #6] @ movhi 1354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1063 .loc 1 1356 11 1064 0010 FB68 ldr r3, [r7, #12] 1065 0012 93F84130 ldrb r3, [r3, #65] 1066 0016 DBB2 uxtb r3, r3 1067 .loc 1 1356 6 1068 0018 202B cmp r3, #32 1069 001a 40F02081 bne .L46 1357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 1070 .loc 1 1358 8 1071 001e BB68 ldr r3, [r7, #8] 1072 0020 002B cmp r3, #0 1073 0022 02D0 beq .L47 1074 .loc 1 1358 25 discriminator 1 1075 0024 FB88 ldrh r3, [r7, #6] 1076 0026 002B cmp r3, #0 1077 0028 05D1 bne .L48 1078 .L47: 1359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 1079 .loc 1 1360 23 1080 002a FB68 ldr r3, [r7, #12] 1081 002c 4FF40072 mov r2, #512 1082 0030 5A64 str r2, [r3, #68] 1361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1083 .loc 1 1361 15 1084 0032 0123 movs r3, #1 1085 0034 14E1 b .L49 1086 .L48: 1362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1087 .loc 1 1364 5 1088 0036 FB68 ldr r3, [r7, #12] 1089 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1090 003c 012B cmp r3, #1 1091 003e 01D1 bne .L50 1092 .loc 1 1364 5 is_stmt 0 discriminator 1 1093 0040 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 44 1094 .loc 1 1364 5 1095 0042 0DE1 b .L49 1096 .L50: 1097 .loc 1 1364 5 discriminator 2 1098 0044 FB68 ldr r3, [r7, #12] 1099 0046 0122 movs r2, #1 1100 0048 83F84020 strb r2, [r3, #64] 1365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 1101 .loc 1 1367 17 is_stmt 1 1102 004c FFF7FEFF bl HAL_GetTick 1103 0050 7861 str r0, [r7, #20] 1368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 1104 .loc 1 1369 21 1105 0052 FB68 ldr r3, [r7, #12] 1106 0054 2122 movs r2, #33 1107 0056 83F84120 strb r2, [r3, #65] 1370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 1108 .loc 1 1370 21 1109 005a FB68 ldr r3, [r7, #12] 1110 005c 2022 movs r2, #32 1111 005e 83F84220 strb r2, [r3, #66] 1371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1112 .loc 1 1371 21 1113 0062 FB68 ldr r3, [r7, #12] 1114 0064 0022 movs r2, #0 1115 0066 5A64 str r2, [r3, #68] 1372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 1116 .loc 1 1374 21 1117 0068 FB68 ldr r3, [r7, #12] 1118 006a BA68 ldr r2, [r7, #8] 1119 006c 5A62 str r2, [r3, #36] 1375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1120 .loc 1 1375 21 1121 006e FB68 ldr r3, [r7, #12] 1122 0070 FA88 ldrh r2, [r7, #6] @ movhi 1123 0072 5A85 strh r2, [r3, #42] @ movhi 1376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 1124 .loc 1 1376 21 1125 0074 FB68 ldr r3, [r7, #12] 1126 0076 0022 movs r2, #0 1127 0078 5A63 str r2, [r3, #52] 1377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 1128 .loc 1 1379 9 1129 007a FB68 ldr r3, [r7, #12] 1130 007c 1B68 ldr r3, [r3] 1131 .loc 1 1379 19 1132 007e 5A68 ldr r2, [r3, #4] 1133 .loc 1 1379 9 1134 0080 FB68 ldr r3, [r7, #12] 1135 0082 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 45 1136 .loc 1 1379 25 1137 0084 22F40042 bic r2, r2, #32768 1138 0088 5A60 str r2, [r3, #4] 1380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1139 .loc 1 1382 9 1140 008a 7B69 ldr r3, [r7, #20] 1141 008c 0093 str r3, [sp] 1142 008e 3B68 ldr r3, [r7] 1143 0090 0022 movs r2, #0 1144 0092 0821 movs r1, #8 1145 0094 F868 ldr r0, [r7, #12] 1146 0096 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1147 009a 0346 mov r3, r0 1148 .loc 1 1382 8 discriminator 1 1149 009c 002B cmp r3, #0 1150 009e 09D0 beq .L51 1383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1151 .loc 1 1385 11 1152 00a0 FB68 ldr r3, [r7, #12] 1153 00a2 1B68 ldr r3, [r3] 1154 .loc 1 1385 21 1155 00a4 5A68 ldr r2, [r3, #4] 1156 .loc 1 1385 11 1157 00a6 FB68 ldr r3, [r7, #12] 1158 00a8 1B68 ldr r3, [r3] 1159 .loc 1 1385 27 1160 00aa 42F40042 orr r2, r2, #32768 1161 00ae 5A60 str r2, [r3, #4] 1386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1162 .loc 1 1386 14 1163 00b0 0123 movs r3, #1 1164 00b2 D5E0 b .L49 1165 .L51: 1387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 1390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 1166 .loc 1 1390 19 1167 00b4 FB68 ldr r3, [r7, #12] 1168 00b6 1B6A ldr r3, [r3, #32] 1169 .loc 1 1390 8 1170 00b8 B3F5003F cmp r3, #131072 1171 00bc 11D1 bne .L52 1391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 1172 .loc 1 1394 35 1173 00be FB68 ldr r3, [r7, #12] 1174 00c0 5B6A ldr r3, [r3, #36] 1175 .loc 1 1394 30 1176 00c2 1A78 ldrb r2, [r3] @ zero_extendqisi2 1177 .loc 1 1394 11 ARM GAS /tmp/cc5G5cqz.s page 46 1178 00c4 FB68 ldr r3, [r7, #12] 1179 00c6 1B68 ldr r3, [r3] 1180 .loc 1 1394 28 1181 00c8 9A62 str r2, [r3, #40] 1395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1182 .loc 1 1397 11 1183 00ca FB68 ldr r3, [r7, #12] 1184 00cc 5B6A ldr r3, [r3, #36] 1185 .loc 1 1397 21 1186 00ce 5A1C adds r2, r3, #1 1187 00d0 FB68 ldr r3, [r7, #12] 1188 00d2 5A62 str r2, [r3, #36] 1398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1189 .loc 1 1399 11 1190 00d4 FB68 ldr r3, [r7, #12] 1191 00d6 5B8D ldrh r3, [r3, #42] @ movhi 1192 00d8 9BB2 uxth r3, r3 1193 .loc 1 1399 22 1194 00da 013B subs r3, r3, #1 1195 00dc 9AB2 uxth r2, r3 1196 00de FB68 ldr r3, [r7, #12] 1197 00e0 5A85 strh r2, [r3, #42] @ movhi 1198 .L52: 1400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 1403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1199 .loc 1 1403 5 1200 00e2 FB68 ldr r3, [r7, #12] 1201 00e4 1B68 ldr r3, [r3] 1202 00e6 0822 movs r2, #8 1203 00e8 DA61 str r2, [r3, #28] 1404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bit addressing mode is selected */ 1406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) 1204 .loc 1 1406 19 1205 00ea FB68 ldr r3, [r7, #12] 1206 00ec DB68 ldr r3, [r3, #12] 1207 .loc 1 1406 8 1208 00ee 022B cmp r3, #2 1209 00f0 18D1 bne .L53 1407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1210 .loc 1 1409 11 1211 00f2 7B69 ldr r3, [r7, #20] 1212 00f4 0093 str r3, [sp] 1213 00f6 3B68 ldr r3, [r7] 1214 00f8 0022 movs r2, #0 1215 00fa 0821 movs r1, #8 1216 00fc F868 ldr r0, [r7, #12] 1217 00fe FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1218 0102 0346 mov r3, r0 1219 .loc 1 1409 10 discriminator 1 ARM GAS /tmp/cc5G5cqz.s page 47 1220 0104 002B cmp r3, #0 1221 0106 09D0 beq .L54 1410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1222 .loc 1 1412 13 1223 0108 FB68 ldr r3, [r7, #12] 1224 010a 1B68 ldr r3, [r3] 1225 .loc 1 1412 23 1226 010c 5A68 ldr r2, [r3, #4] 1227 .loc 1 1412 13 1228 010e FB68 ldr r3, [r7, #12] 1229 0110 1B68 ldr r3, [r3] 1230 .loc 1 1412 29 1231 0112 42F40042 orr r2, r2, #32768 1232 0116 5A60 str r2, [r3, #4] 1413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1233 .loc 1 1413 16 1234 0118 0123 movs r3, #1 1235 011a A1E0 b .L49 1236 .L54: 1414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 1417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1237 .loc 1 1417 7 1238 011c FB68 ldr r3, [r7, #12] 1239 011e 1B68 ldr r3, [r3] 1240 0120 0822 movs r2, #8 1241 0122 DA61 str r2, [r3, #28] 1242 .L53: 1418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is set Transmitter mode */ 1421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) 1243 .loc 1 1421 9 1244 0124 7B69 ldr r3, [r7, #20] 1245 0126 0093 str r3, [sp] 1246 0128 3B68 ldr r3, [r7] 1247 012a 0022 movs r2, #0 1248 012c 4FF48031 mov r1, #65536 1249 0130 F868 ldr r0, [r7, #12] 1250 0132 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1251 0136 0346 mov r3, r0 1252 .loc 1 1421 8 discriminator 1 1253 0138 002B cmp r3, #0 1254 013a 2DD0 beq .L56 1422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1255 .loc 1 1424 11 1256 013c FB68 ldr r3, [r7, #12] 1257 013e 1B68 ldr r3, [r3] 1258 .loc 1 1424 21 1259 0140 5A68 ldr r2, [r3, #4] 1260 .loc 1 1424 11 1261 0142 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 48 1262 0144 1B68 ldr r3, [r3] 1263 .loc 1 1424 27 1264 0146 42F40042 orr r2, r2, #32768 1265 014a 5A60 str r2, [r3, #4] 1425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1266 .loc 1 1425 14 1267 014c 0123 movs r3, #1 1268 014e 87E0 b .L49 1269 .L58: 1426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 1429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 1431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1270 .loc 1 1431 11 1271 0150 7A69 ldr r2, [r7, #20] 1272 0152 3968 ldr r1, [r7] 1273 0154 F868 ldr r0, [r7, #12] 1274 0156 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 1275 015a 0346 mov r3, r0 1276 .loc 1 1431 10 discriminator 1 1277 015c 002B cmp r3, #0 1278 015e 09D0 beq .L57 1432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1279 .loc 1 1434 13 1280 0160 FB68 ldr r3, [r7, #12] 1281 0162 1B68 ldr r3, [r3] 1282 .loc 1 1434 23 1283 0164 5A68 ldr r2, [r3, #4] 1284 .loc 1 1434 13 1285 0166 FB68 ldr r3, [r7, #12] 1286 0168 1B68 ldr r3, [r3] 1287 .loc 1 1434 29 1288 016a 42F40042 orr r2, r2, #32768 1289 016e 5A60 str r2, [r3, #4] 1435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1290 .loc 1 1435 16 1291 0170 0123 movs r3, #1 1292 0172 75E0 b .L49 1293 .L57: 1436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 1294 .loc 1 1439 35 1295 0174 FB68 ldr r3, [r7, #12] 1296 0176 5B6A ldr r3, [r3, #36] 1297 .loc 1 1439 30 1298 0178 1A78 ldrb r2, [r3] @ zero_extendqisi2 1299 .loc 1 1439 11 1300 017a FB68 ldr r3, [r7, #12] 1301 017c 1B68 ldr r3, [r3] 1302 .loc 1 1439 28 1303 017e 9A62 str r2, [r3, #40] ARM GAS /tmp/cc5G5cqz.s page 49 1440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1304 .loc 1 1442 11 1305 0180 FB68 ldr r3, [r7, #12] 1306 0182 5B6A ldr r3, [r3, #36] 1307 .loc 1 1442 21 1308 0184 5A1C adds r2, r3, #1 1309 0186 FB68 ldr r3, [r7, #12] 1310 0188 5A62 str r2, [r3, #36] 1443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1311 .loc 1 1444 11 1312 018a FB68 ldr r3, [r7, #12] 1313 018c 5B8D ldrh r3, [r3, #42] @ movhi 1314 018e 9BB2 uxth r3, r3 1315 .loc 1 1444 22 1316 0190 013B subs r3, r3, #1 1317 0192 9AB2 uxth r2, r3 1318 0194 FB68 ldr r3, [r7, #12] 1319 0196 5A85 strh r2, [r3, #42] @ movhi 1320 .L56: 1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1321 .loc 1 1428 16 1322 0198 FB68 ldr r3, [r7, #12] 1323 019a 5B8D ldrh r3, [r3, #42] @ movhi 1324 019c 9BB2 uxth r3, r3 1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1325 .loc 1 1428 28 1326 019e 002B cmp r3, #0 1327 01a0 D6D1 bne .L58 1445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until AF flag is set */ 1448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK) 1328 .loc 1 1448 9 1329 01a2 7B69 ldr r3, [r7, #20] 1330 01a4 0093 str r3, [sp] 1331 01a6 3B68 ldr r3, [r7] 1332 01a8 0022 movs r2, #0 1333 01aa 1021 movs r1, #16 1334 01ac F868 ldr r0, [r7, #12] 1335 01ae FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1336 01b2 0346 mov r3, r0 1337 .loc 1 1448 8 discriminator 1 1338 01b4 002B cmp r3, #0 1339 01b6 09D0 beq .L59 1449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1340 .loc 1 1451 11 1341 01b8 FB68 ldr r3, [r7, #12] 1342 01ba 1B68 ldr r3, [r3] 1343 .loc 1 1451 21 1344 01bc 5A68 ldr r2, [r3, #4] 1345 .loc 1 1451 11 1346 01be FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 50 1347 01c0 1B68 ldr r3, [r3] 1348 .loc 1 1451 27 1349 01c2 42F40042 orr r2, r2, #32768 1350 01c6 5A60 str r2, [r3, #4] 1452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1351 .loc 1 1452 14 1352 01c8 0123 movs r3, #1 1353 01ca 49E0 b .L49 1354 .L59: 1453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 1456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 1355 .loc 1 1456 5 1356 01cc F868 ldr r0, [r7, #12] 1357 01ce FFF7FEFF bl I2C_Flush_TXDR 1457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear AF flag */ 1459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 1358 .loc 1 1459 5 1359 01d2 FB68 ldr r3, [r7, #12] 1360 01d4 1B68 ldr r3, [r3] 1361 01d6 1022 movs r2, #16 1362 01d8 DA61 str r2, [r3, #28] 1460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP flag is set */ 1462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1363 .loc 1 1462 9 1364 01da 7A69 ldr r2, [r7, #20] 1365 01dc 3968 ldr r1, [r7] 1366 01de F868 ldr r0, [r7, #12] 1367 01e0 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 1368 01e4 0346 mov r3, r0 1369 .loc 1 1462 8 discriminator 1 1370 01e6 002B cmp r3, #0 1371 01e8 09D0 beq .L60 1463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1372 .loc 1 1465 11 1373 01ea FB68 ldr r3, [r7, #12] 1374 01ec 1B68 ldr r3, [r3] 1375 .loc 1 1465 21 1376 01ee 5A68 ldr r2, [r3, #4] 1377 .loc 1 1465 11 1378 01f0 FB68 ldr r3, [r7, #12] 1379 01f2 1B68 ldr r3, [r3] 1380 .loc 1 1465 27 1381 01f4 42F40042 orr r2, r2, #32768 1382 01f8 5A60 str r2, [r3, #4] 1466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1383 .loc 1 1467 14 1384 01fa 0123 movs r3, #1 1385 01fc 30E0 b .L49 1386 .L60: 1468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 51 1469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */ 1471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 1387 .loc 1 1471 5 1388 01fe FB68 ldr r3, [r7, #12] 1389 0200 1B68 ldr r3, [r3] 1390 0202 2022 movs r2, #32 1391 0204 DA61 str r2, [r3, #28] 1472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ 1474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) 1392 .loc 1 1474 9 1393 0206 7B69 ldr r3, [r7, #20] 1394 0208 0093 str r3, [sp] 1395 020a 3B68 ldr r3, [r7] 1396 020c 0122 movs r2, #1 1397 020e 4FF40041 mov r1, #32768 1398 0212 F868 ldr r0, [r7, #12] 1399 0214 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1400 0218 0346 mov r3, r0 1401 .loc 1 1474 8 discriminator 1 1402 021a 002B cmp r3, #0 1403 021c 09D0 beq .L61 1475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1404 .loc 1 1477 11 1405 021e FB68 ldr r3, [r7, #12] 1406 0220 1B68 ldr r3, [r3] 1407 .loc 1 1477 21 1408 0222 5A68 ldr r2, [r3, #4] 1409 .loc 1 1477 11 1410 0224 FB68 ldr r3, [r7, #12] 1411 0226 1B68 ldr r3, [r3] 1412 .loc 1 1477 27 1413 0228 42F40042 orr r2, r2, #32768 1414 022c 5A60 str r2, [r3, #4] 1478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1415 .loc 1 1478 14 1416 022e 0123 movs r3, #1 1417 0230 16E0 b .L49 1418 .L61: 1479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1419 .loc 1 1482 9 1420 0232 FB68 ldr r3, [r7, #12] 1421 0234 1B68 ldr r3, [r3] 1422 .loc 1 1482 19 1423 0236 5A68 ldr r2, [r3, #4] 1424 .loc 1 1482 9 1425 0238 FB68 ldr r3, [r7, #12] 1426 023a 1B68 ldr r3, [r3] 1427 .loc 1 1482 25 1428 023c 42F40042 orr r2, r2, #32768 1429 0240 5A60 str r2, [r3, #4] ARM GAS /tmp/cc5G5cqz.s page 52 1483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1430 .loc 1 1484 17 1431 0242 FB68 ldr r3, [r7, #12] 1432 0244 2022 movs r2, #32 1433 0246 83F84120 strb r2, [r3, #65] 1485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1434 .loc 1 1485 17 1435 024a FB68 ldr r3, [r7, #12] 1436 024c 0022 movs r2, #0 1437 024e 83F84220 strb r2, [r3, #66] 1486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1438 .loc 1 1488 5 1439 0252 FB68 ldr r3, [r7, #12] 1440 0254 0022 movs r2, #0 1441 0256 83F84020 strb r2, [r3, #64] 1489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1442 .loc 1 1490 12 1443 025a 0023 movs r3, #0 1444 025c 00E0 b .L49 1445 .L46: 1491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1446 .loc 1 1494 12 1447 025e 0223 movs r3, #2 1448 .L49: 1495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1449 .loc 1 1496 1 1450 0260 1846 mov r0, r3 1451 0262 1837 adds r7, r7, #24 1452 .cfi_def_cfa_offset 8 1453 0264 BD46 mov sp, r7 1454 .cfi_def_cfa_register 13 1455 @ sp needed 1456 0266 80BD pop {r7, pc} 1457 .cfi_endproc 1458 .LFE136: 1460 .section .text.HAL_I2C_Slave_Receive,"ax",%progbits 1461 .align 1 1462 .global HAL_I2C_Slave_Receive 1463 .syntax unified 1464 .thumb 1465 .thumb_func 1467 HAL_I2C_Slave_Receive: 1468 .LFB137: 1497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in blocking mode 1500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer ARM GAS /tmp/cc5G5cqz.s page 53 1503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, 1508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 1509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1469 .loc 1 1509 1 1470 .cfi_startproc 1471 @ args = 0, pretend = 0, frame = 24 1472 @ frame_needed = 1, uses_anonymous_args = 0 1473 0000 80B5 push {r7, lr} 1474 .cfi_def_cfa_offset 8 1475 .cfi_offset 7, -8 1476 .cfi_offset 14, -4 1477 0002 88B0 sub sp, sp, #32 1478 .cfi_def_cfa_offset 40 1479 0004 02AF add r7, sp, #8 1480 .cfi_def_cfa 7, 32 1481 0006 F860 str r0, [r7, #12] 1482 0008 B960 str r1, [r7, #8] 1483 000a 3B60 str r3, [r7] 1484 000c 1346 mov r3, r2 @ movhi 1485 000e FB80 strh r3, [r7, #6] @ movhi 1510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1486 .loc 1 1512 11 1487 0010 FB68 ldr r3, [r7, #12] 1488 0012 93F84130 ldrb r3, [r3, #65] 1489 0016 DBB2 uxtb r3, r3 1490 .loc 1 1512 6 1491 0018 202B cmp r3, #32 1492 001a 40F0FC80 bne .L63 1513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 1493 .loc 1 1514 8 1494 001e BB68 ldr r3, [r7, #8] 1495 0020 002B cmp r3, #0 1496 0022 02D0 beq .L64 1497 .loc 1 1514 25 discriminator 1 1498 0024 FB88 ldrh r3, [r7, #6] 1499 0026 002B cmp r3, #0 1500 0028 05D1 bne .L65 1501 .L64: 1515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 1502 .loc 1 1516 23 1503 002a FB68 ldr r3, [r7, #12] 1504 002c 4FF40072 mov r2, #512 1505 0030 5A64 str r2, [r3, #68] 1517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1506 .loc 1 1517 15 1507 0032 0123 movs r3, #1 1508 0034 F0E0 b .L66 1509 .L65: 1518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 54 1519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1510 .loc 1 1520 5 1511 0036 FB68 ldr r3, [r7, #12] 1512 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1513 003c 012B cmp r3, #1 1514 003e 01D1 bne .L67 1515 .loc 1 1520 5 is_stmt 0 discriminator 1 1516 0040 0223 movs r3, #2 1517 .loc 1 1520 5 1518 0042 E9E0 b .L66 1519 .L67: 1520 .loc 1 1520 5 discriminator 2 1521 0044 FB68 ldr r3, [r7, #12] 1522 0046 0122 movs r2, #1 1523 0048 83F84020 strb r2, [r3, #64] 1521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 1524 .loc 1 1523 17 is_stmt 1 1525 004c FFF7FEFF bl HAL_GetTick 1526 0050 7861 str r0, [r7, #20] 1524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 1527 .loc 1 1525 21 1528 0052 FB68 ldr r3, [r7, #12] 1529 0054 2222 movs r2, #34 1530 0056 83F84120 strb r2, [r3, #65] 1526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 1531 .loc 1 1526 21 1532 005a FB68 ldr r3, [r7, #12] 1533 005c 2022 movs r2, #32 1534 005e 83F84220 strb r2, [r3, #66] 1527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1535 .loc 1 1527 21 1536 0062 FB68 ldr r3, [r7, #12] 1537 0064 0022 movs r2, #0 1538 0066 5A64 str r2, [r3, #68] 1528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 1539 .loc 1 1530 21 1540 0068 FB68 ldr r3, [r7, #12] 1541 006a BA68 ldr r2, [r7, #8] 1542 006c 5A62 str r2, [r3, #36] 1531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1543 .loc 1 1531 21 1544 006e FB68 ldr r3, [r7, #12] 1545 0070 FA88 ldrh r2, [r7, #6] @ movhi 1546 0072 5A85 strh r2, [r3, #42] @ movhi 1532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 1547 .loc 1 1532 26 1548 0074 FB68 ldr r3, [r7, #12] 1549 0076 5B8D ldrh r3, [r3, #42] @ movhi 1550 0078 9AB2 uxth r2, r3 1551 .loc 1 1532 20 1552 007a FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 55 1553 007c 1A85 strh r2, [r3, #40] @ movhi 1533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 1554 .loc 1 1533 21 1555 007e FB68 ldr r3, [r7, #12] 1556 0080 0022 movs r2, #0 1557 0082 5A63 str r2, [r3, #52] 1534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 1558 .loc 1 1536 9 1559 0084 FB68 ldr r3, [r7, #12] 1560 0086 1B68 ldr r3, [r3] 1561 .loc 1 1536 19 1562 0088 5A68 ldr r2, [r3, #4] 1563 .loc 1 1536 9 1564 008a FB68 ldr r3, [r7, #12] 1565 008c 1B68 ldr r3, [r3] 1566 .loc 1 1536 25 1567 008e 22F40042 bic r2, r2, #32768 1568 0092 5A60 str r2, [r3, #4] 1537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1569 .loc 1 1539 9 1570 0094 7B69 ldr r3, [r7, #20] 1571 0096 0093 str r3, [sp] 1572 0098 3B68 ldr r3, [r7] 1573 009a 0022 movs r2, #0 1574 009c 0821 movs r1, #8 1575 009e F868 ldr r0, [r7, #12] 1576 00a0 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1577 00a4 0346 mov r3, r0 1578 .loc 1 1539 8 discriminator 1 1579 00a6 002B cmp r3, #0 1580 00a8 09D0 beq .L68 1540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1581 .loc 1 1542 11 1582 00aa FB68 ldr r3, [r7, #12] 1583 00ac 1B68 ldr r3, [r3] 1584 .loc 1 1542 21 1585 00ae 5A68 ldr r2, [r3, #4] 1586 .loc 1 1542 11 1587 00b0 FB68 ldr r3, [r7, #12] 1588 00b2 1B68 ldr r3, [r3] 1589 .loc 1 1542 27 1590 00b4 42F40042 orr r2, r2, #32768 1591 00b8 5A60 str r2, [r3, #4] 1543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1592 .loc 1 1543 14 1593 00ba 0123 movs r3, #1 1594 00bc ACE0 b .L66 1595 .L68: 1544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ ARM GAS /tmp/cc5G5cqz.s page 56 1547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1596 .loc 1 1547 5 1597 00be FB68 ldr r3, [r7, #12] 1598 00c0 1B68 ldr r3, [r3] 1599 00c2 0822 movs r2, #8 1600 00c4 DA61 str r2, [r3, #28] 1548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is reset Receiver mode */ 1550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) 1601 .loc 1 1550 9 1602 00c6 7B69 ldr r3, [r7, #20] 1603 00c8 0093 str r3, [sp] 1604 00ca 3B68 ldr r3, [r7] 1605 00cc 0122 movs r2, #1 1606 00ce 4FF48031 mov r1, #65536 1607 00d2 F868 ldr r0, [r7, #12] 1608 00d4 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1609 00d8 0346 mov r3, r0 1610 .loc 1 1550 8 discriminator 1 1611 00da 002B cmp r3, #0 1612 00dc 54D0 beq .L70 1551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1613 .loc 1 1553 11 1614 00de FB68 ldr r3, [r7, #12] 1615 00e0 1B68 ldr r3, [r3] 1616 .loc 1 1553 21 1617 00e2 5A68 ldr r2, [r3, #4] 1618 .loc 1 1553 11 1619 00e4 FB68 ldr r3, [r7, #12] 1620 00e6 1B68 ldr r3, [r3] 1621 .loc 1 1553 27 1622 00e8 42F40042 orr r2, r2, #32768 1623 00ec 5A60 str r2, [r3, #4] 1554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1624 .loc 1 1554 14 1625 00ee 0123 movs r3, #1 1626 00f0 92E0 b .L66 1627 .L73: 1555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 1558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 1560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1628 .loc 1 1560 11 1629 00f2 7A69 ldr r2, [r7, #20] 1630 00f4 3968 ldr r1, [r7] 1631 00f6 F868 ldr r0, [r7, #12] 1632 00f8 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout 1633 00fc 0346 mov r3, r0 1634 .loc 1 1560 10 discriminator 1 1635 00fe 002B cmp r3, #0 1636 0100 29D0 beq .L71 1561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ ARM GAS /tmp/cc5G5cqz.s page 57 1563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1637 .loc 1 1563 13 1638 0102 FB68 ldr r3, [r7, #12] 1639 0104 1B68 ldr r3, [r3] 1640 .loc 1 1563 23 1641 0106 5A68 ldr r2, [r3, #4] 1642 .loc 1 1563 13 1643 0108 FB68 ldr r3, [r7, #12] 1644 010a 1B68 ldr r3, [r3] 1645 .loc 1 1563 29 1646 010c 42F40042 orr r2, r2, #32768 1647 0110 5A60 str r2, [r3, #4] 1564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 1566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) 1648 .loc 1 1566 13 1649 0112 FB68 ldr r3, [r7, #12] 1650 0114 1B68 ldr r3, [r3] 1651 0116 9B69 ldr r3, [r3, #24] 1652 0118 03F00403 and r3, r3, #4 1653 .loc 1 1566 12 1654 011c 042B cmp r3, #4 1655 011e 18D1 bne .L72 1567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 1656 .loc 1 1569 42 1657 0120 FB68 ldr r3, [r7, #12] 1658 0122 1B68 ldr r3, [r3] 1659 .loc 1 1569 52 1660 0124 5A6A ldr r2, [r3, #36] 1661 .loc 1 1569 16 1662 0126 FB68 ldr r3, [r7, #12] 1663 0128 5B6A ldr r3, [r3, #36] 1664 .loc 1 1569 29 1665 012a D2B2 uxtb r2, r2 1666 .loc 1 1569 27 1667 012c 1A70 strb r2, [r3] 1570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1668 .loc 1 1572 15 1669 012e FB68 ldr r3, [r7, #12] 1670 0130 5B6A ldr r3, [r3, #36] 1671 .loc 1 1572 25 1672 0132 5A1C adds r2, r3, #1 1673 0134 FB68 ldr r3, [r7, #12] 1674 0136 5A62 str r2, [r3, #36] 1573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1675 .loc 1 1574 15 1676 0138 FB68 ldr r3, [r7, #12] 1677 013a 5B8D ldrh r3, [r3, #42] @ movhi 1678 013c 9BB2 uxth r3, r3 1679 .loc 1 1574 26 1680 013e 013B subs r3, r3, #1 1681 0140 9AB2 uxth r2, r3 ARM GAS /tmp/cc5G5cqz.s page 58 1682 0142 FB68 ldr r3, [r7, #12] 1683 0144 5A85 strh r2, [r3, #42] @ movhi 1575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 1684 .loc 1 1575 15 1685 0146 FB68 ldr r3, [r7, #12] 1686 0148 1B8D ldrh r3, [r3, #40] 1687 .loc 1 1575 25 1688 014a 013B subs r3, r3, #1 1689 014c 9AB2 uxth r2, r3 1690 014e FB68 ldr r3, [r7, #12] 1691 0150 1A85 strh r2, [r3, #40] @ movhi 1692 .L72: 1576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1693 .loc 1 1578 16 1694 0152 0123 movs r3, #1 1695 0154 60E0 b .L66 1696 .L71: 1579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 1697 .loc 1 1582 38 1698 0156 FB68 ldr r3, [r7, #12] 1699 0158 1B68 ldr r3, [r3] 1700 .loc 1 1582 48 1701 015a 5A6A ldr r2, [r3, #36] 1702 .loc 1 1582 12 1703 015c FB68 ldr r3, [r7, #12] 1704 015e 5B6A ldr r3, [r3, #36] 1705 .loc 1 1582 25 1706 0160 D2B2 uxtb r2, r2 1707 .loc 1 1582 23 1708 0162 1A70 strb r2, [r3] 1583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1709 .loc 1 1585 11 1710 0164 FB68 ldr r3, [r7, #12] 1711 0166 5B6A ldr r3, [r3, #36] 1712 .loc 1 1585 21 1713 0168 5A1C adds r2, r3, #1 1714 016a FB68 ldr r3, [r7, #12] 1715 016c 5A62 str r2, [r3, #36] 1586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1716 .loc 1 1587 11 1717 016e FB68 ldr r3, [r7, #12] 1718 0170 5B8D ldrh r3, [r3, #42] @ movhi 1719 0172 9BB2 uxth r3, r3 1720 .loc 1 1587 22 1721 0174 013B subs r3, r3, #1 1722 0176 9AB2 uxth r2, r3 1723 0178 FB68 ldr r3, [r7, #12] 1724 017a 5A85 strh r2, [r3, #42] @ movhi 1588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; ARM GAS /tmp/cc5G5cqz.s page 59 1725 .loc 1 1588 11 1726 017c FB68 ldr r3, [r7, #12] 1727 017e 1B8D ldrh r3, [r3, #40] 1728 .loc 1 1588 21 1729 0180 013B subs r3, r3, #1 1730 0182 9AB2 uxth r2, r3 1731 0184 FB68 ldr r3, [r7, #12] 1732 0186 1A85 strh r2, [r3, #40] @ movhi 1733 .L70: 1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1734 .loc 1 1557 16 1735 0188 FB68 ldr r3, [r7, #12] 1736 018a 5B8D ldrh r3, [r3, #42] @ movhi 1737 018c 9BB2 uxth r3, r3 1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1738 .loc 1 1557 28 1739 018e 002B cmp r3, #0 1740 0190 AFD1 bne .L73 1589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP flag is set */ 1592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1741 .loc 1 1592 9 1742 0192 7A69 ldr r2, [r7, #20] 1743 0194 3968 ldr r1, [r7] 1744 0196 F868 ldr r0, [r7, #12] 1745 0198 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 1746 019c 0346 mov r3, r0 1747 .loc 1 1592 8 discriminator 1 1748 019e 002B cmp r3, #0 1749 01a0 09D0 beq .L74 1593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1750 .loc 1 1595 11 1751 01a2 FB68 ldr r3, [r7, #12] 1752 01a4 1B68 ldr r3, [r3] 1753 .loc 1 1595 21 1754 01a6 5A68 ldr r2, [r3, #4] 1755 .loc 1 1595 11 1756 01a8 FB68 ldr r3, [r7, #12] 1757 01aa 1B68 ldr r3, [r3] 1758 .loc 1 1595 27 1759 01ac 42F40042 orr r2, r2, #32768 1760 01b0 5A60 str r2, [r3, #4] 1596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1761 .loc 1 1596 14 1762 01b2 0123 movs r3, #1 1763 01b4 30E0 b .L66 1764 .L74: 1597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */ 1600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 1765 .loc 1 1600 5 1766 01b6 FB68 ldr r3, [r7, #12] 1767 01b8 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 60 1768 01ba 2022 movs r2, #32 1769 01bc DA61 str r2, [r3, #28] 1601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ 1603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) 1770 .loc 1 1603 9 1771 01be 7B69 ldr r3, [r7, #20] 1772 01c0 0093 str r3, [sp] 1773 01c2 3B68 ldr r3, [r7] 1774 01c4 0122 movs r2, #1 1775 01c6 4FF40041 mov r1, #32768 1776 01ca F868 ldr r0, [r7, #12] 1777 01cc FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1778 01d0 0346 mov r3, r0 1779 .loc 1 1603 8 discriminator 1 1780 01d2 002B cmp r3, #0 1781 01d4 09D0 beq .L75 1604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1782 .loc 1 1606 11 1783 01d6 FB68 ldr r3, [r7, #12] 1784 01d8 1B68 ldr r3, [r3] 1785 .loc 1 1606 21 1786 01da 5A68 ldr r2, [r3, #4] 1787 .loc 1 1606 11 1788 01dc FB68 ldr r3, [r7, #12] 1789 01de 1B68 ldr r3, [r3] 1790 .loc 1 1606 27 1791 01e0 42F40042 orr r2, r2, #32768 1792 01e4 5A60 str r2, [r3, #4] 1607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1793 .loc 1 1607 14 1794 01e6 0123 movs r3, #1 1795 01e8 16E0 b .L66 1796 .L75: 1608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1797 .loc 1 1611 9 1798 01ea FB68 ldr r3, [r7, #12] 1799 01ec 1B68 ldr r3, [r3] 1800 .loc 1 1611 19 1801 01ee 5A68 ldr r2, [r3, #4] 1802 .loc 1 1611 9 1803 01f0 FB68 ldr r3, [r7, #12] 1804 01f2 1B68 ldr r3, [r3] 1805 .loc 1 1611 25 1806 01f4 42F40042 orr r2, r2, #32768 1807 01f8 5A60 str r2, [r3, #4] 1612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1808 .loc 1 1613 17 1809 01fa FB68 ldr r3, [r7, #12] 1810 01fc 2022 movs r2, #32 1811 01fe 83F84120 strb r2, [r3, #65] ARM GAS /tmp/cc5G5cqz.s page 61 1614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1812 .loc 1 1614 17 1813 0202 FB68 ldr r3, [r7, #12] 1814 0204 0022 movs r2, #0 1815 0206 83F84220 strb r2, [r3, #66] 1615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1816 .loc 1 1617 5 1817 020a FB68 ldr r3, [r7, #12] 1818 020c 0022 movs r2, #0 1819 020e 83F84020 strb r2, [r3, #64] 1618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1820 .loc 1 1619 12 1821 0212 0023 movs r3, #0 1822 0214 00E0 b .L66 1823 .L63: 1620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1824 .loc 1 1623 12 1825 0216 0223 movs r3, #2 1826 .L66: 1624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1827 .loc 1 1625 1 1828 0218 1846 mov r0, r3 1829 021a 1837 adds r7, r7, #24 1830 .cfi_def_cfa_offset 8 1831 021c BD46 mov sp, r7 1832 .cfi_def_cfa_register 13 1833 @ sp needed 1834 021e 80BD pop {r7, pc} 1835 .cfi_endproc 1836 .LFE137: 1838 .section .text.HAL_I2C_Master_Transmit_IT,"ax",%progbits 1839 .align 1 1840 .global HAL_I2C_Master_Transmit_IT 1841 .syntax unified 1842 .thumb 1843 .thumb_func 1845 HAL_I2C_Master_Transmit_IT: 1846 .LFB138: 1626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt 1629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t ARM GAS /tmp/cc5G5cqz.s page 62 1638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1847 .loc 1 1639 1 1848 .cfi_startproc 1849 @ args = 0, pretend = 0, frame = 24 1850 @ frame_needed = 1, uses_anonymous_args = 0 1851 0000 80B5 push {r7, lr} 1852 .cfi_def_cfa_offset 8 1853 .cfi_offset 7, -8 1854 .cfi_offset 14, -4 1855 0002 88B0 sub sp, sp, #32 1856 .cfi_def_cfa_offset 40 1857 0004 02AF add r7, sp, #8 1858 .cfi_def_cfa 7, 32 1859 0006 F860 str r0, [r7, #12] 1860 0008 7A60 str r2, [r7, #4] 1861 000a 1A46 mov r2, r3 1862 000c 0B46 mov r3, r1 @ movhi 1863 000e 7B81 strh r3, [r7, #10] @ movhi 1864 0010 1346 mov r3, r2 @ movhi 1865 0012 3B81 strh r3, [r7, #8] @ movhi 1640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1866 .loc 1 1642 11 1867 0014 FB68 ldr r3, [r7, #12] 1868 0016 93F84130 ldrb r3, [r3, #65] 1869 001a DBB2 uxtb r3, r3 1870 .loc 1 1642 6 1871 001c 202B cmp r3, #32 1872 001e 53D1 bne .L77 1643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 1873 .loc 1 1644 9 1874 0020 FB68 ldr r3, [r7, #12] 1875 0022 1B68 ldr r3, [r3] 1876 0024 9B69 ldr r3, [r3, #24] 1877 0026 03F40043 and r3, r3, #32768 1878 .loc 1 1644 8 1879 002a B3F5004F cmp r3, #32768 1880 002e 01D1 bne .L78 1645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1881 .loc 1 1646 14 1882 0030 0223 movs r3, #2 1883 0032 4AE0 b .L79 1884 .L78: 1647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1885 .loc 1 1650 5 1886 0034 FB68 ldr r3, [r7, #12] 1887 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1888 003a 012B cmp r3, #1 1889 003c 01D1 bne .L80 1890 .loc 1 1650 5 is_stmt 0 discriminator 1 ARM GAS /tmp/cc5G5cqz.s page 63 1891 003e 0223 movs r3, #2 1892 .loc 1 1650 5 1893 0040 43E0 b .L79 1894 .L80: 1895 .loc 1 1650 5 discriminator 2 1896 0042 FB68 ldr r3, [r7, #12] 1897 0044 0122 movs r2, #1 1898 0046 83F84020 strb r2, [r3, #64] 1651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 1899 .loc 1 1652 23 is_stmt 1 1900 004a FB68 ldr r3, [r7, #12] 1901 004c 2122 movs r2, #33 1902 004e 83F84120 strb r2, [r3, #65] 1653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 1903 .loc 1 1653 23 1904 0052 FB68 ldr r3, [r7, #12] 1905 0054 1022 movs r2, #16 1906 0056 83F84220 strb r2, [r3, #66] 1654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1907 .loc 1 1654 23 1908 005a FB68 ldr r3, [r7, #12] 1909 005c 0022 movs r2, #0 1910 005e 5A64 str r2, [r3, #68] 1655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 1911 .loc 1 1657 23 1912 0060 FB68 ldr r3, [r7, #12] 1913 0062 7A68 ldr r2, [r7, #4] 1914 0064 5A62 str r2, [r3, #36] 1658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1915 .loc 1 1658 23 1916 0066 FB68 ldr r3, [r7, #12] 1917 0068 3A89 ldrh r2, [r7, #8] @ movhi 1918 006a 5A85 strh r2, [r3, #42] @ movhi 1659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 1919 .loc 1 1659 23 1920 006c FB68 ldr r3, [r7, #12] 1921 006e 194A ldr r2, .L83 1922 0070 DA62 str r2, [r3, #44] 1660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 1923 .loc 1 1660 23 1924 0072 FB68 ldr r3, [r7, #12] 1925 0074 184A ldr r2, .L83+4 1926 0076 5A63 str r2, [r3, #52] 1661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 1927 .loc 1 1662 13 1928 0078 FB68 ldr r3, [r7, #12] 1929 007a 5B8D ldrh r3, [r3, #42] @ movhi 1930 007c 9BB2 uxth r3, r3 1931 .loc 1 1662 8 1932 007e FF2B cmp r3, #255 1933 0080 06D9 bls .L81 1663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; ARM GAS /tmp/cc5G5cqz.s page 64 1934 .loc 1 1664 22 1935 0082 FB68 ldr r3, [r7, #12] 1936 0084 FF22 movs r2, #255 1937 0086 1A85 strh r2, [r3, #40] @ movhi 1665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 1938 .loc 1 1665 16 1939 0088 4FF08073 mov r3, #16777216 1940 008c 7B61 str r3, [r7, #20] 1941 008e 07E0 b .L82 1942 .L81: 1666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 1943 .loc 1 1669 28 1944 0090 FB68 ldr r3, [r7, #12] 1945 0092 5B8D ldrh r3, [r3, #42] @ movhi 1946 0094 9AB2 uxth r2, r3 1947 .loc 1 1669 22 1948 0096 FB68 ldr r3, [r7, #12] 1949 0098 1A85 strh r2, [r3, #40] @ movhi 1670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 1950 .loc 1 1670 16 1951 009a 4FF00073 mov r3, #33554432 1952 009e 7B61 str r3, [r7, #20] 1953 .L82: 1671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 1675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRIT 1954 .loc 1 1675 55 1955 00a0 FB68 ldr r3, [r7, #12] 1956 00a2 1B8D ldrh r3, [r3, #40] 1957 .loc 1 1675 5 1958 00a4 DAB2 uxtb r2, r3 1959 00a6 7989 ldrh r1, [r7, #10] 1960 00a8 0C4B ldr r3, .L83+8 1961 00aa 0093 str r3, [sp] 1962 00ac 7B69 ldr r3, [r7, #20] 1963 00ae F868 ldr r0, [r7, #12] 1964 00b0 FFF7FEFF bl I2C_TransferConfig 1676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1965 .loc 1 1678 5 1966 00b4 FB68 ldr r3, [r7, #12] 1967 00b6 0022 movs r2, #0 1968 00b8 83F84020 strb r2, [r3, #64] 1679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 1685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | ARM GAS /tmp/cc5G5cqz.s page 65 1687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 1688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 1969 .loc 1 1688 5 1970 00bc 0121 movs r1, #1 1971 00be F868 ldr r0, [r7, #12] 1972 00c0 FFF7FEFF bl I2C_Enable_IRQ 1689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1973 .loc 1 1690 12 1974 00c4 0023 movs r3, #0 1975 00c6 00E0 b .L79 1976 .L77: 1691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1977 .loc 1 1694 12 1978 00c8 0223 movs r3, #2 1979 .L79: 1695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1980 .loc 1 1696 1 1981 00ca 1846 mov r0, r3 1982 00cc 1837 adds r7, r7, #24 1983 .cfi_def_cfa_offset 8 1984 00ce BD46 mov sp, r7 1985 .cfi_def_cfa_register 13 1986 @ sp needed 1987 00d0 80BD pop {r7, pc} 1988 .L84: 1989 00d2 00BF .align 2 1990 .L83: 1991 00d4 0000FFFF .word -65536 1992 00d8 00000000 .word I2C_Master_ISR_IT 1993 00dc 00200080 .word -2147475456 1994 .cfi_endproc 1995 .LFE138: 1997 .section .text.HAL_I2C_Master_Receive_IT,"ax",%progbits 1998 .align 1 1999 .global HAL_I2C_Master_Receive_IT 2000 .syntax unified 2001 .thumb 2002 .thumb_func 2004 HAL_I2C_Master_Receive_IT: 2005 .LFB139: 1697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt 1700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t * ARM GAS /tmp/cc5G5cqz.s page 66 1709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2006 .loc 1 1710 1 2007 .cfi_startproc 2008 @ args = 0, pretend = 0, frame = 24 2009 @ frame_needed = 1, uses_anonymous_args = 0 2010 0000 80B5 push {r7, lr} 2011 .cfi_def_cfa_offset 8 2012 .cfi_offset 7, -8 2013 .cfi_offset 14, -4 2014 0002 88B0 sub sp, sp, #32 2015 .cfi_def_cfa_offset 40 2016 0004 02AF add r7, sp, #8 2017 .cfi_def_cfa 7, 32 2018 0006 F860 str r0, [r7, #12] 2019 0008 7A60 str r2, [r7, #4] 2020 000a 1A46 mov r2, r3 2021 000c 0B46 mov r3, r1 @ movhi 2022 000e 7B81 strh r3, [r7, #10] @ movhi 2023 0010 1346 mov r3, r2 @ movhi 2024 0012 3B81 strh r3, [r7, #8] @ movhi 1711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2025 .loc 1 1713 11 2026 0014 FB68 ldr r3, [r7, #12] 2027 0016 93F84130 ldrb r3, [r3, #65] 2028 001a DBB2 uxtb r3, r3 2029 .loc 1 1713 6 2030 001c 202B cmp r3, #32 2031 001e 53D1 bne .L86 1714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2032 .loc 1 1715 9 2033 0020 FB68 ldr r3, [r7, #12] 2034 0022 1B68 ldr r3, [r3] 2035 0024 9B69 ldr r3, [r3, #24] 2036 0026 03F40043 and r3, r3, #32768 2037 .loc 1 1715 8 2038 002a B3F5004F cmp r3, #32768 2039 002e 01D1 bne .L87 1716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2040 .loc 1 1717 14 2041 0030 0223 movs r3, #2 2042 0032 4AE0 b .L88 2043 .L87: 1718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2044 .loc 1 1721 5 2045 0034 FB68 ldr r3, [r7, #12] 2046 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2047 003a 012B cmp r3, #1 2048 003c 01D1 bne .L89 2049 .loc 1 1721 5 is_stmt 0 discriminator 1 ARM GAS /tmp/cc5G5cqz.s page 67 2050 003e 0223 movs r3, #2 2051 .loc 1 1721 5 2052 0040 43E0 b .L88 2053 .L89: 2054 .loc 1 1721 5 discriminator 2 2055 0042 FB68 ldr r3, [r7, #12] 2056 0044 0122 movs r2, #1 2057 0046 83F84020 strb r2, [r3, #64] 1722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 2058 .loc 1 1723 23 is_stmt 1 2059 004a FB68 ldr r3, [r7, #12] 2060 004c 2222 movs r2, #34 2061 004e 83F84120 strb r2, [r3, #65] 1724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2062 .loc 1 1724 23 2063 0052 FB68 ldr r3, [r7, #12] 2064 0054 1022 movs r2, #16 2065 0056 83F84220 strb r2, [r3, #66] 1725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2066 .loc 1 1725 23 2067 005a FB68 ldr r3, [r7, #12] 2068 005c 0022 movs r2, #0 2069 005e 5A64 str r2, [r3, #68] 1726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2070 .loc 1 1728 23 2071 0060 FB68 ldr r3, [r7, #12] 2072 0062 7A68 ldr r2, [r7, #4] 2073 0064 5A62 str r2, [r3, #36] 1729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2074 .loc 1 1729 23 2075 0066 FB68 ldr r3, [r7, #12] 2076 0068 3A89 ldrh r2, [r7, #8] @ movhi 2077 006a 5A85 strh r2, [r3, #42] @ movhi 1730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2078 .loc 1 1730 23 2079 006c FB68 ldr r3, [r7, #12] 2080 006e 194A ldr r2, .L92 2081 0070 DA62 str r2, [r3, #44] 1731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 2082 .loc 1 1731 23 2083 0072 FB68 ldr r3, [r7, #12] 2084 0074 184A ldr r2, .L92+4 2085 0076 5A63 str r2, [r3, #52] 1732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2086 .loc 1 1733 13 2087 0078 FB68 ldr r3, [r7, #12] 2088 007a 5B8D ldrh r3, [r3, #42] @ movhi 2089 007c 9BB2 uxth r3, r3 2090 .loc 1 1733 8 2091 007e FF2B cmp r3, #255 2092 0080 06D9 bls .L90 1734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; ARM GAS /tmp/cc5G5cqz.s page 68 2093 .loc 1 1735 22 2094 0082 FB68 ldr r3, [r7, #12] 2095 0084 FF22 movs r2, #255 2096 0086 1A85 strh r2, [r3, #40] @ movhi 1736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2097 .loc 1 1736 16 2098 0088 4FF08073 mov r3, #16777216 2099 008c 7B61 str r3, [r7, #20] 2100 008e 07E0 b .L91 2101 .L90: 1737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2102 .loc 1 1740 28 2103 0090 FB68 ldr r3, [r7, #12] 2104 0092 5B8D ldrh r3, [r3, #42] @ movhi 2105 0094 9AB2 uxth r2, r3 2106 .loc 1 1740 22 2107 0096 FB68 ldr r3, [r7, #12] 2108 0098 1A85 strh r2, [r3, #40] @ movhi 1741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2109 .loc 1 1741 16 2110 009a 4FF00073 mov r3, #33554432 2111 009e 7B61 str r3, [r7, #20] 2112 .L91: 1742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 1746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ 2113 .loc 1 1746 55 2114 00a0 FB68 ldr r3, [r7, #12] 2115 00a2 1B8D ldrh r3, [r3, #40] 2116 .loc 1 1746 5 2117 00a4 DAB2 uxtb r2, r3 2118 00a6 7989 ldrh r1, [r7, #10] 2119 00a8 0C4B ldr r3, .L92+8 2120 00aa 0093 str r3, [sp] 2121 00ac 7B69 ldr r3, [r7, #20] 2122 00ae F868 ldr r0, [r7, #12] 2123 00b0 FFF7FEFF bl I2C_TransferConfig 1747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2124 .loc 1 1749 5 2125 00b4 FB68 ldr r3, [r7, #12] 2126 00b6 0022 movs r2, #0 2127 00b8 83F84020 strb r2, [r3, #64] 1750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 1756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | ARM GAS /tmp/cc5G5cqz.s page 69 1758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 1759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 2128 .loc 1 1759 5 2129 00bc 0221 movs r1, #2 2130 00be F868 ldr r0, [r7, #12] 2131 00c0 FFF7FEFF bl I2C_Enable_IRQ 1760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2132 .loc 1 1761 12 2133 00c4 0023 movs r3, #0 2134 00c6 00E0 b .L88 2135 .L86: 1762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2136 .loc 1 1765 12 2137 00c8 0223 movs r3, #2 2138 .L88: 1766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2139 .loc 1 1767 1 2140 00ca 1846 mov r0, r3 2141 00cc 1837 adds r7, r7, #24 2142 .cfi_def_cfa_offset 8 2143 00ce BD46 mov sp, r7 2144 .cfi_def_cfa_register 13 2145 @ sp needed 2146 00d0 80BD pop {r7, pc} 2147 .L93: 2148 00d2 00BF .align 2 2149 .L92: 2150 00d4 0000FFFF .word -65536 2151 00d8 00000000 .word I2C_Master_ISR_IT 2152 00dc 00240080 .word -2147474432 2153 .cfi_endproc 2154 .LFE139: 2156 .section .text.HAL_I2C_Slave_Transmit_IT,"ax",%progbits 2157 .align 1 2158 .global HAL_I2C_Slave_Transmit_IT 2159 .syntax unified 2160 .thumb 2161 .thumb_func 2163 HAL_I2C_Slave_Transmit_IT: 2164 .LFB140: 1768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt 1771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) 1778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2165 .loc 1 1778 1 ARM GAS /tmp/cc5G5cqz.s page 70 2166 .cfi_startproc 2167 @ args = 0, pretend = 0, frame = 16 2168 @ frame_needed = 1, uses_anonymous_args = 0 2169 0000 80B5 push {r7, lr} 2170 .cfi_def_cfa_offset 8 2171 .cfi_offset 7, -8 2172 .cfi_offset 14, -4 2173 0002 84B0 sub sp, sp, #16 2174 .cfi_def_cfa_offset 24 2175 0004 00AF add r7, sp, #0 2176 .cfi_def_cfa_register 7 2177 0006 F860 str r0, [r7, #12] 2178 0008 B960 str r1, [r7, #8] 2179 000a 1346 mov r3, r2 2180 000c FB80 strh r3, [r7, #6] @ movhi 1779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2181 .loc 1 1779 11 2182 000e FB68 ldr r3, [r7, #12] 2183 0010 93F84130 ldrb r3, [r3, #65] 2184 0014 DBB2 uxtb r3, r3 2185 .loc 1 1779 6 2186 0016 202B cmp r3, #32 2187 0018 56D1 bne .L95 1780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2188 .loc 1 1782 5 2189 001a FB68 ldr r3, [r7, #12] 2190 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2191 0020 012B cmp r3, #1 2192 0022 01D1 bne .L96 2193 .loc 1 1782 5 is_stmt 0 discriminator 1 2194 0024 0223 movs r3, #2 2195 .loc 1 1782 5 2196 0026 50E0 b .L97 2197 .L96: 2198 .loc 1 1782 5 discriminator 2 2199 0028 FB68 ldr r3, [r7, #12] 2200 002a 0122 movs r2, #1 2201 002c 83F84020 strb r2, [r3, #64] 1783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 2202 .loc 1 1784 23 is_stmt 1 2203 0030 FB68 ldr r3, [r7, #12] 2204 0032 2122 movs r2, #33 2205 0034 83F84120 strb r2, [r3, #65] 1785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 2206 .loc 1 1785 23 2207 0038 FB68 ldr r3, [r7, #12] 2208 003a 2022 movs r2, #32 2209 003c 83F84220 strb r2, [r3, #66] 1786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2210 .loc 1 1786 23 2211 0040 FB68 ldr r3, [r7, #12] 2212 0042 0022 movs r2, #0 2213 0044 5A64 str r2, [r3, #68] 1787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 71 1788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 2214 .loc 1 1789 9 2215 0046 FB68 ldr r3, [r7, #12] 2216 0048 1B68 ldr r3, [r3] 2217 .loc 1 1789 19 2218 004a 5A68 ldr r2, [r3, #4] 2219 .loc 1 1789 9 2220 004c FB68 ldr r3, [r7, #12] 2221 004e 1B68 ldr r3, [r3] 2222 .loc 1 1789 25 2223 0050 22F40042 bic r2, r2, #32768 2224 0054 5A60 str r2, [r3, #4] 1790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2225 .loc 1 1792 23 2226 0056 FB68 ldr r3, [r7, #12] 2227 0058 BA68 ldr r2, [r7, #8] 2228 005a 5A62 str r2, [r3, #36] 1793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2229 .loc 1 1793 23 2230 005c FB68 ldr r3, [r7, #12] 2231 005e FA88 ldrh r2, [r7, #6] @ movhi 2232 0060 5A85 strh r2, [r3, #42] @ movhi 1794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2233 .loc 1 1794 29 2234 0062 FB68 ldr r3, [r7, #12] 2235 0064 5B8D ldrh r3, [r3, #42] @ movhi 2236 0066 9AB2 uxth r2, r3 2237 .loc 1 1794 23 2238 0068 FB68 ldr r3, [r7, #12] 2239 006a 1A85 strh r2, [r3, #40] @ movhi 1795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2240 .loc 1 1795 23 2241 006c FB68 ldr r3, [r7, #12] 2242 006e 194A ldr r2, .L99 2243 0070 DA62 str r2, [r3, #44] 1796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 2244 .loc 1 1796 23 2245 0072 FB68 ldr r3, [r7, #12] 2246 0074 184A ldr r2, .L99+4 2247 0076 5A63 str r2, [r3, #52] 1797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 1799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 2248 .loc 1 1799 19 2249 0078 FB68 ldr r3, [r7, #12] 2250 007a 1B6A ldr r3, [r3, #32] 2251 .loc 1 1799 8 2252 007c B3F5003F cmp r3, #131072 2253 0080 17D1 bne .L98 1800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 2254 .loc 1 1803 35 ARM GAS /tmp/cc5G5cqz.s page 72 2255 0082 FB68 ldr r3, [r7, #12] 2256 0084 5B6A ldr r3, [r3, #36] 2257 .loc 1 1803 30 2258 0086 1A78 ldrb r2, [r3] @ zero_extendqisi2 2259 .loc 1 1803 11 2260 0088 FB68 ldr r3, [r7, #12] 2261 008a 1B68 ldr r3, [r3] 2262 .loc 1 1803 28 2263 008c 9A62 str r2, [r3, #40] 1804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 2264 .loc 1 1806 11 2265 008e FB68 ldr r3, [r7, #12] 2266 0090 5B6A ldr r3, [r3, #36] 2267 .loc 1 1806 21 2268 0092 5A1C adds r2, r3, #1 2269 0094 FB68 ldr r3, [r7, #12] 2270 0096 5A62 str r2, [r3, #36] 1807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 2271 .loc 1 1808 11 2272 0098 FB68 ldr r3, [r7, #12] 2273 009a 5B8D ldrh r3, [r3, #42] @ movhi 2274 009c 9BB2 uxth r3, r3 2275 .loc 1 1808 22 2276 009e 013B subs r3, r3, #1 2277 00a0 9AB2 uxth r2, r3 2278 00a2 FB68 ldr r3, [r7, #12] 2279 00a4 5A85 strh r2, [r3, #42] @ movhi 1809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 2280 .loc 1 1809 11 2281 00a6 FB68 ldr r3, [r7, #12] 2282 00a8 1B8D ldrh r3, [r3, #40] 2283 .loc 1 1809 21 2284 00aa 013B subs r3, r3, #1 2285 00ac 9AB2 uxth r2, r3 2286 00ae FB68 ldr r3, [r7, #12] 2287 00b0 1A85 strh r2, [r3, #40] @ movhi 2288 .L98: 1810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2289 .loc 1 1813 5 2290 00b2 FB68 ldr r3, [r7, #12] 2291 00b4 0022 movs r2, #0 2292 00b6 83F84020 strb r2, [r3, #64] 1814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 1820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ ARM GAS /tmp/cc5G5cqz.s page 73 1823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); 2293 .loc 1 1823 5 2294 00ba 48F20101 movw r1, #32769 2295 00be F868 ldr r0, [r7, #12] 2296 00c0 FFF7FEFF bl I2C_Enable_IRQ 1824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2297 .loc 1 1825 12 2298 00c4 0023 movs r3, #0 2299 00c6 00E0 b .L97 2300 .L95: 1826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2301 .loc 1 1829 12 2302 00c8 0223 movs r3, #2 2303 .L97: 1830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2304 .loc 1 1831 1 2305 00ca 1846 mov r0, r3 2306 00cc 1037 adds r7, r7, #16 2307 .cfi_def_cfa_offset 8 2308 00ce BD46 mov sp, r7 2309 .cfi_def_cfa_register 13 2310 @ sp needed 2311 00d0 80BD pop {r7, pc} 2312 .L100: 2313 00d2 00BF .align 2 2314 .L99: 2315 00d4 0000FFFF .word -65536 2316 00d8 00000000 .word I2C_Slave_ISR_IT 2317 .cfi_endproc 2318 .LFE140: 2320 .section .text.HAL_I2C_Slave_Receive_IT,"ax",%progbits 2321 .align 1 2322 .global HAL_I2C_Slave_Receive_IT 2323 .syntax unified 2324 .thumb 2325 .thumb_func 2327 HAL_I2C_Slave_Receive_IT: 2328 .LFB141: 1832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt 1835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) 1842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2329 .loc 1 1842 1 2330 .cfi_startproc 2331 @ args = 0, pretend = 0, frame = 16 ARM GAS /tmp/cc5G5cqz.s page 74 2332 @ frame_needed = 1, uses_anonymous_args = 0 2333 0000 80B5 push {r7, lr} 2334 .cfi_def_cfa_offset 8 2335 .cfi_offset 7, -8 2336 .cfi_offset 14, -4 2337 0002 84B0 sub sp, sp, #16 2338 .cfi_def_cfa_offset 24 2339 0004 00AF add r7, sp, #0 2340 .cfi_def_cfa_register 7 2341 0006 F860 str r0, [r7, #12] 2342 0008 B960 str r1, [r7, #8] 2343 000a 1346 mov r3, r2 2344 000c FB80 strh r3, [r7, #6] @ movhi 1843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2345 .loc 1 1843 11 2346 000e FB68 ldr r3, [r7, #12] 2347 0010 93F84130 ldrb r3, [r3, #65] 2348 0014 DBB2 uxtb r3, r3 2349 .loc 1 1843 6 2350 0016 202B cmp r3, #32 2351 0018 39D1 bne .L102 1844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2352 .loc 1 1846 5 2353 001a FB68 ldr r3, [r7, #12] 2354 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2355 0020 012B cmp r3, #1 2356 0022 01D1 bne .L103 2357 .loc 1 1846 5 is_stmt 0 discriminator 1 2358 0024 0223 movs r3, #2 2359 .loc 1 1846 5 2360 0026 33E0 b .L104 2361 .L103: 2362 .loc 1 1846 5 discriminator 2 2363 0028 FB68 ldr r3, [r7, #12] 2364 002a 0122 movs r2, #1 2365 002c 83F84020 strb r2, [r3, #64] 1847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 2366 .loc 1 1848 23 is_stmt 1 2367 0030 FB68 ldr r3, [r7, #12] 2368 0032 2222 movs r2, #34 2369 0034 83F84120 strb r2, [r3, #65] 1849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 2370 .loc 1 1849 23 2371 0038 FB68 ldr r3, [r7, #12] 2372 003a 2022 movs r2, #32 2373 003c 83F84220 strb r2, [r3, #66] 1850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2374 .loc 1 1850 23 2375 0040 FB68 ldr r3, [r7, #12] 2376 0042 0022 movs r2, #0 2377 0044 5A64 str r2, [r3, #68] 1851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; ARM GAS /tmp/cc5G5cqz.s page 75 2378 .loc 1 1853 9 2379 0046 FB68 ldr r3, [r7, #12] 2380 0048 1B68 ldr r3, [r3] 2381 .loc 1 1853 19 2382 004a 5A68 ldr r2, [r3, #4] 2383 .loc 1 1853 9 2384 004c FB68 ldr r3, [r7, #12] 2385 004e 1B68 ldr r3, [r3] 2386 .loc 1 1853 25 2387 0050 22F40042 bic r2, r2, #32768 2388 0054 5A60 str r2, [r3, #4] 1854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2389 .loc 1 1856 23 2390 0056 FB68 ldr r3, [r7, #12] 2391 0058 BA68 ldr r2, [r7, #8] 2392 005a 5A62 str r2, [r3, #36] 1857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2393 .loc 1 1857 23 2394 005c FB68 ldr r3, [r7, #12] 2395 005e FA88 ldrh r2, [r7, #6] @ movhi 2396 0060 5A85 strh r2, [r3, #42] @ movhi 1858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2397 .loc 1 1858 29 2398 0062 FB68 ldr r3, [r7, #12] 2399 0064 5B8D ldrh r3, [r3, #42] @ movhi 2400 0066 9AB2 uxth r2, r3 2401 .loc 1 1858 23 2402 0068 FB68 ldr r3, [r7, #12] 2403 006a 1A85 strh r2, [r3, #40] @ movhi 1859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2404 .loc 1 1859 23 2405 006c FB68 ldr r3, [r7, #12] 2406 006e 0A4A ldr r2, .L105 2407 0070 DA62 str r2, [r3, #44] 1860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 2408 .loc 1 1860 23 2409 0072 FB68 ldr r3, [r7, #12] 2410 0074 094A ldr r2, .L105+4 2411 0076 5A63 str r2, [r3, #52] 1861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2412 .loc 1 1863 5 2413 0078 FB68 ldr r3, [r7, #12] 2414 007a 0022 movs r2, #0 2415 007c 83F84020 strb r2, [r3, #64] 1864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 1870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ ARM GAS /tmp/cc5G5cqz.s page 76 1873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 2416 .loc 1 1873 5 2417 0080 48F20201 movw r1, #32770 2418 0084 F868 ldr r0, [r7, #12] 2419 0086 FFF7FEFF bl I2C_Enable_IRQ 1874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2420 .loc 1 1875 12 2421 008a 0023 movs r3, #0 2422 008c 00E0 b .L104 2423 .L102: 1876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2424 .loc 1 1879 12 2425 008e 0223 movs r3, #2 2426 .L104: 1880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2427 .loc 1 1881 1 2428 0090 1846 mov r0, r3 2429 0092 1037 adds r7, r7, #16 2430 .cfi_def_cfa_offset 8 2431 0094 BD46 mov sp, r7 2432 .cfi_def_cfa_register 13 2433 @ sp needed 2434 0096 80BD pop {r7, pc} 2435 .L106: 2436 .align 2 2437 .L105: 2438 0098 0000FFFF .word -65536 2439 009c 00000000 .word I2C_Slave_ISR_IT 2440 .cfi_endproc 2441 .LFE141: 2443 .section .text.HAL_I2C_Master_Transmit_DMA,"ax",%progbits 2444 .align 1 2445 .global HAL_I2C_Master_Transmit_DMA 2446 .syntax unified 2447 .thumb 2448 .thumb_func 2450 HAL_I2C_Master_Transmit_DMA: 2451 .LFB142: 1882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with DMA 1885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t 1894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 77 2452 .loc 1 1895 1 2453 .cfi_startproc 2454 @ args = 0, pretend = 0, frame = 24 2455 @ frame_needed = 1, uses_anonymous_args = 0 2456 0000 80B5 push {r7, lr} 2457 .cfi_def_cfa_offset 8 2458 .cfi_offset 7, -8 2459 .cfi_offset 14, -4 2460 0002 88B0 sub sp, sp, #32 2461 .cfi_def_cfa_offset 40 2462 0004 02AF add r7, sp, #8 2463 .cfi_def_cfa 7, 32 2464 0006 F860 str r0, [r7, #12] 2465 0008 7A60 str r2, [r7, #4] 2466 000a 1A46 mov r2, r3 2467 000c 0B46 mov r3, r1 @ movhi 2468 000e 7B81 strh r3, [r7, #10] @ movhi 2469 0010 1346 mov r3, r2 @ movhi 2470 0012 3B81 strh r3, [r7, #8] @ movhi 1896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 1898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2471 .loc 1 1899 11 2472 0014 FB68 ldr r3, [r7, #12] 2473 0016 93F84130 ldrb r3, [r3, #65] 2474 001a DBB2 uxtb r3, r3 2475 .loc 1 1899 6 2476 001c 202B cmp r3, #32 2477 001e 40F0CD80 bne .L108 1900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2478 .loc 1 1901 9 2479 0022 FB68 ldr r3, [r7, #12] 2480 0024 1B68 ldr r3, [r3] 2481 0026 9B69 ldr r3, [r3, #24] 2482 0028 03F40043 and r3, r3, #32768 2483 .loc 1 1901 8 2484 002c B3F5004F cmp r3, #32768 2485 0030 01D1 bne .L109 1902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2486 .loc 1 1903 14 2487 0032 0223 movs r3, #2 2488 0034 C3E0 b .L110 2489 .L109: 1904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2490 .loc 1 1907 5 2491 0036 FB68 ldr r3, [r7, #12] 2492 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2493 003c 012B cmp r3, #1 2494 003e 01D1 bne .L111 2495 .loc 1 1907 5 is_stmt 0 discriminator 1 2496 0040 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 78 2497 .loc 1 1907 5 2498 0042 BCE0 b .L110 2499 .L111: 2500 .loc 1 1907 5 discriminator 2 2501 0044 FB68 ldr r3, [r7, #12] 2502 0046 0122 movs r2, #1 2503 0048 83F84020 strb r2, [r3, #64] 1908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 2504 .loc 1 1909 23 is_stmt 1 2505 004c FB68 ldr r3, [r7, #12] 2506 004e 2122 movs r2, #33 2507 0050 83F84120 strb r2, [r3, #65] 1910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2508 .loc 1 1910 23 2509 0054 FB68 ldr r3, [r7, #12] 2510 0056 1022 movs r2, #16 2511 0058 83F84220 strb r2, [r3, #66] 1911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2512 .loc 1 1911 23 2513 005c FB68 ldr r3, [r7, #12] 2514 005e 0022 movs r2, #0 2515 0060 5A64 str r2, [r3, #68] 1912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2516 .loc 1 1914 23 2517 0062 FB68 ldr r3, [r7, #12] 2518 0064 7A68 ldr r2, [r7, #4] 2519 0066 5A62 str r2, [r3, #36] 1915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2520 .loc 1 1915 23 2521 0068 FB68 ldr r3, [r7, #12] 2522 006a 3A89 ldrh r2, [r7, #8] @ movhi 2523 006c 5A85 strh r2, [r3, #42] @ movhi 1916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2524 .loc 1 1916 23 2525 006e FB68 ldr r3, [r7, #12] 2526 0070 554A ldr r2, .L120 2527 0072 DA62 str r2, [r3, #44] 1917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 2528 .loc 1 1917 23 2529 0074 FB68 ldr r3, [r7, #12] 2530 0076 554A ldr r2, .L120+4 2531 0078 5A63 str r2, [r3, #52] 1918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2532 .loc 1 1919 13 2533 007a FB68 ldr r3, [r7, #12] 2534 007c 5B8D ldrh r3, [r3, #42] @ movhi 2535 007e 9BB2 uxth r3, r3 2536 .loc 1 1919 8 2537 0080 FF2B cmp r3, #255 2538 0082 06D9 bls .L112 1920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 2539 .loc 1 1921 22 ARM GAS /tmp/cc5G5cqz.s page 79 2540 0084 FB68 ldr r3, [r7, #12] 2541 0086 FF22 movs r2, #255 2542 0088 1A85 strh r2, [r3, #40] @ movhi 1922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2543 .loc 1 1922 16 2544 008a 4FF08073 mov r3, #16777216 2545 008e 7B61 str r3, [r7, #20] 2546 0090 07E0 b .L113 2547 .L112: 1923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2548 .loc 1 1926 28 2549 0092 FB68 ldr r3, [r7, #12] 2550 0094 5B8D ldrh r3, [r3, #42] @ movhi 2551 0096 9AB2 uxth r2, r3 2552 .loc 1 1926 22 2553 0098 FB68 ldr r3, [r7, #12] 2554 009a 1A85 strh r2, [r3, #40] @ movhi 1927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2555 .loc 1 1927 16 2556 009c 4FF00073 mov r3, #33554432 2557 00a0 7B61 str r3, [r7, #20] 2558 .L113: 1928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 2559 .loc 1 1930 13 2560 00a2 FB68 ldr r3, [r7, #12] 2561 00a4 1B8D ldrh r3, [r3, #40] 2562 .loc 1 1930 8 2563 00a6 002B cmp r3, #0 2564 00a8 70D0 beq .L114 1931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 2565 .loc 1 1932 15 2566 00aa FB68 ldr r3, [r7, #12] 2567 00ac 9B6B ldr r3, [r3, #56] 2568 .loc 1 1932 10 2569 00ae 002B cmp r3, #0 2570 00b0 20D0 beq .L115 1933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 1935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 2571 .loc 1 1935 13 2572 00b2 FB68 ldr r3, [r7, #12] 2573 00b4 9B6B ldr r3, [r3, #56] 2574 .loc 1 1935 40 2575 00b6 464A ldr r2, .L120+8 2576 00b8 9A62 str r2, [r3, #40] 1936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 1938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 2577 .loc 1 1938 13 2578 00ba FB68 ldr r3, [r7, #12] 2579 00bc 9B6B ldr r3, [r3, #56] ARM GAS /tmp/cc5G5cqz.s page 80 2580 .loc 1 1938 41 2581 00be 454A ldr r2, .L120+12 2582 00c0 1A63 str r2, [r3, #48] 1939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 1941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 2583 .loc 1 1941 13 2584 00c2 FB68 ldr r3, [r7, #12] 2585 00c4 9B6B ldr r3, [r3, #56] 2586 .loc 1 1941 44 2587 00c6 0022 movs r2, #0 2588 00c8 DA62 str r2, [r3, #44] 1942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 2589 .loc 1 1942 13 2590 00ca FB68 ldr r3, [r7, #12] 2591 00cc 9B6B ldr r3, [r3, #56] 2592 .loc 1 1942 41 2593 00ce 0022 movs r2, #0 2594 00d0 5A63 str r2, [r3, #52] 1943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 1945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance-> 2595 .loc 1 1945 25 2596 00d2 FB68 ldr r3, [r7, #12] 2597 00d4 986B ldr r0, [r3, #56] 2598 00d6 7968 ldr r1, [r7, #4] 2599 .loc 1 1945 88 2600 00d8 FB68 ldr r3, [r7, #12] 2601 00da 1B68 ldr r3, [r3] 2602 .loc 1 1945 83 2603 00dc 2833 adds r3, r3, #40 2604 .loc 1 1945 25 2605 00de 1A46 mov r2, r3 1946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 2606 .loc 1 1946 46 2607 00e0 FB68 ldr r3, [r7, #12] 2608 00e2 1B8D ldrh r3, [r3, #40] 1945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 2609 .loc 1 1945 25 2610 00e4 FFF7FEFF bl HAL_DMA_Start_IT 2611 00e8 0346 mov r3, r0 2612 00ea FB74 strb r3, [r7, #19] 1947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 1951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 1956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 81 1962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 2613 .loc 1 1963 10 2614 00ec FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 2615 00ee 002B cmp r3, #0 2616 00f0 38D1 bne .L117 2617 00f2 13E0 b .L119 2618 .L115: 1951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2619 .loc 1 1951 25 2620 00f4 FB68 ldr r3, [r7, #12] 2621 00f6 2022 movs r2, #32 2622 00f8 83F84120 strb r2, [r3, #65] 1952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2623 .loc 1 1952 25 2624 00fc FB68 ldr r3, [r7, #12] 2625 00fe 0022 movs r2, #0 2626 0100 83F84220 strb r2, [r3, #66] 1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2627 .loc 1 1955 13 2628 0104 FB68 ldr r3, [r7, #12] 2629 0106 5B6C ldr r3, [r3, #68] 1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2630 .loc 1 1955 25 2631 0108 43F08002 orr r2, r3, #128 2632 010c FB68 ldr r3, [r7, #12] 2633 010e 5A64 str r2, [r3, #68] 1958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2634 .loc 1 1958 9 2635 0110 FB68 ldr r3, [r7, #12] 2636 0112 0022 movs r2, #0 2637 0114 83F84020 strb r2, [r3, #64] 1960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2638 .loc 1 1960 16 2639 0118 0123 movs r3, #1 2640 011a 50E0 b .L110 2641 .L119: 1964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART 1967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_ 2642 .loc 1 1967 59 2643 011c FB68 ldr r3, [r7, #12] 2644 011e 1B8D ldrh r3, [r3, #40] 2645 .loc 1 1967 9 2646 0120 DAB2 uxtb r2, r3 2647 0122 7989 ldrh r1, [r7, #10] 2648 0124 2C4B ldr r3, .L120+16 2649 0126 0093 str r3, [sp] 2650 0128 7B69 ldr r3, [r7, #20] 2651 012a F868 ldr r0, [r7, #12] 2652 012c FFF7FEFF bl I2C_TransferConfig 1968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 1970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 2653 .loc 1 1970 13 2654 0130 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 82 2655 0132 5B8D ldrh r3, [r3, #42] @ movhi 2656 0134 9AB2 uxth r2, r3 2657 .loc 1 1970 32 2658 0136 FB68 ldr r3, [r7, #12] 2659 0138 1B8D ldrh r3, [r3, #40] 2660 .loc 1 1970 25 2661 013a D31A subs r3, r2, r3 2662 013c 9AB2 uxth r2, r3 2663 013e FB68 ldr r3, [r7, #12] 2664 0140 5A85 strh r2, [r3, #42] @ movhi 1971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2665 .loc 1 1973 9 2666 0142 FB68 ldr r3, [r7, #12] 2667 0144 0022 movs r2, #0 2668 0146 83F84020 strb r2, [r3, #64] 1974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 1979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 2669 .loc 1 1979 9 2670 014a 1021 movs r1, #16 2671 014c F868 ldr r0, [r7, #12] 2672 014e FFF7FEFF bl I2C_Enable_IRQ 1980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 1982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 2673 .loc 1 1982 13 2674 0152 FB68 ldr r3, [r7, #12] 2675 0154 1B68 ldr r3, [r3] 2676 .loc 1 1982 23 2677 0156 1A68 ldr r2, [r3] 2678 .loc 1 1982 13 2679 0158 FB68 ldr r3, [r7, #12] 2680 015a 1B68 ldr r3, [r3] 2681 .loc 1 1982 29 2682 015c 42F48042 orr r2, r2, #16384 2683 0160 1A60 str r2, [r3] 2684 0162 29E0 b .L118 2685 .L117: 1983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 1987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2686 .loc 1 1987 25 2687 0164 FB68 ldr r3, [r7, #12] 2688 0166 2022 movs r2, #32 2689 0168 83F84120 strb r2, [r3, #65] 1988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2690 .loc 1 1988 25 2691 016c FB68 ldr r3, [r7, #12] 2692 016e 0022 movs r2, #0 2693 0170 83F84220 strb r2, [r3, #66] ARM GAS /tmp/cc5G5cqz.s page 83 1989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 1991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 2694 .loc 1 1991 13 2695 0174 FB68 ldr r3, [r7, #12] 2696 0176 5B6C ldr r3, [r3, #68] 2697 .loc 1 1991 25 2698 0178 43F01002 orr r2, r3, #16 2699 017c FB68 ldr r3, [r7, #12] 2700 017e 5A64 str r2, [r3, #68] 1992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2701 .loc 1 1994 9 2702 0180 FB68 ldr r3, [r7, #12] 2703 0182 0022 movs r2, #0 2704 0184 83F84020 strb r2, [r3, #64] 1995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2705 .loc 1 1996 16 2706 0188 0123 movs r3, #1 2707 018a 18E0 b .L110 2708 .L114: 1997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 2002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 2709 .loc 1 2002 21 2710 018c FB68 ldr r3, [r7, #12] 2711 018e 134A ldr r2, .L120+20 2712 0190 5A63 str r2, [r3, #52] 2003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ 2006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 2713 .loc 1 2006 57 2714 0192 FB68 ldr r3, [r7, #12] 2715 0194 1B8D ldrh r3, [r3, #40] 2716 .loc 1 2006 7 2717 0196 DAB2 uxtb r2, r3 2718 0198 7989 ldrh r1, [r7, #10] 2719 019a 0F4B ldr r3, .L120+16 2720 019c 0093 str r3, [sp] 2721 019e 4FF00073 mov r3, #33554432 2722 01a2 F868 ldr r0, [r7, #12] 2723 01a4 FFF7FEFF bl I2C_TransferConfig 2007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 2008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2724 .loc 1 2010 7 2725 01a8 FB68 ldr r3, [r7, #12] 2726 01aa 0022 movs r2, #0 2727 01ac 83F84020 strb r2, [r3, #64] 2011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 84 2012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 2728 .loc 1 2019 7 2729 01b0 0121 movs r1, #1 2730 01b2 F868 ldr r0, [r7, #12] 2731 01b4 FFF7FEFF bl I2C_Enable_IRQ 2732 .L118: 2020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2733 .loc 1 2022 12 2734 01b8 0023 movs r3, #0 2735 01ba 00E0 b .L110 2736 .L108: 2023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2737 .loc 1 2026 12 2738 01bc 0223 movs r3, #2 2739 .L110: 2027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2740 .loc 1 2028 1 2741 01be 1846 mov r0, r3 2742 01c0 1837 adds r7, r7, #24 2743 .cfi_def_cfa_offset 8 2744 01c2 BD46 mov sp, r7 2745 .cfi_def_cfa_register 13 2746 @ sp needed 2747 01c4 80BD pop {r7, pc} 2748 .L121: 2749 01c6 00BF .align 2 2750 .L120: 2751 01c8 0000FFFF .word -65536 2752 01cc 00000000 .word I2C_Master_ISR_DMA 2753 01d0 00000000 .word I2C_DMAMasterTransmitCplt 2754 01d4 00000000 .word I2C_DMAError 2755 01d8 00200080 .word -2147475456 2756 01dc 00000000 .word I2C_Master_ISR_IT 2757 .cfi_endproc 2758 .LFE142: 2760 .section .text.HAL_I2C_Master_Receive_DMA,"ax",%progbits 2761 .align 1 2762 .global HAL_I2C_Master_Receive_DMA 2763 .syntax unified 2764 .thumb 2765 .thumb_func 2767 HAL_I2C_Master_Receive_DMA: 2768 .LFB143: 2029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 85 2030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with DMA 2032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t 2041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 2042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2769 .loc 1 2042 1 2770 .cfi_startproc 2771 @ args = 0, pretend = 0, frame = 24 2772 @ frame_needed = 1, uses_anonymous_args = 0 2773 0000 80B5 push {r7, lr} 2774 .cfi_def_cfa_offset 8 2775 .cfi_offset 7, -8 2776 .cfi_offset 14, -4 2777 0002 88B0 sub sp, sp, #32 2778 .cfi_def_cfa_offset 40 2779 0004 02AF add r7, sp, #8 2780 .cfi_def_cfa 7, 32 2781 0006 F860 str r0, [r7, #12] 2782 0008 7A60 str r2, [r7, #4] 2783 000a 1A46 mov r2, r3 2784 000c 0B46 mov r3, r1 @ movhi 2785 000e 7B81 strh r3, [r7, #10] @ movhi 2786 0010 1346 mov r3, r2 @ movhi 2787 0012 3B81 strh r3, [r7, #8] @ movhi 2043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 2044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2788 .loc 1 2046 11 2789 0014 FB68 ldr r3, [r7, #12] 2790 0016 93F84130 ldrb r3, [r3, #65] 2791 001a DBB2 uxtb r3, r3 2792 .loc 1 2046 6 2793 001c 202B cmp r3, #32 2794 001e 40F0CD80 bne .L123 2047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2795 .loc 1 2048 9 2796 0022 FB68 ldr r3, [r7, #12] 2797 0024 1B68 ldr r3, [r3] 2798 0026 9B69 ldr r3, [r3, #24] 2799 0028 03F40043 and r3, r3, #32768 2800 .loc 1 2048 8 2801 002c B3F5004F cmp r3, #32768 2802 0030 01D1 bne .L124 2049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2803 .loc 1 2050 14 2804 0032 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 86 2805 0034 C3E0 b .L125 2806 .L124: 2051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2807 .loc 1 2054 5 2808 0036 FB68 ldr r3, [r7, #12] 2809 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2810 003c 012B cmp r3, #1 2811 003e 01D1 bne .L126 2812 .loc 1 2054 5 is_stmt 0 discriminator 1 2813 0040 0223 movs r3, #2 2814 .loc 1 2054 5 2815 0042 BCE0 b .L125 2816 .L126: 2817 .loc 1 2054 5 discriminator 2 2818 0044 FB68 ldr r3, [r7, #12] 2819 0046 0122 movs r2, #1 2820 0048 83F84020 strb r2, [r3, #64] 2055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 2821 .loc 1 2056 23 is_stmt 1 2822 004c FB68 ldr r3, [r7, #12] 2823 004e 2222 movs r2, #34 2824 0050 83F84120 strb r2, [r3, #65] 2057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2825 .loc 1 2057 23 2826 0054 FB68 ldr r3, [r7, #12] 2827 0056 1022 movs r2, #16 2828 0058 83F84220 strb r2, [r3, #66] 2058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2829 .loc 1 2058 23 2830 005c FB68 ldr r3, [r7, #12] 2831 005e 0022 movs r2, #0 2832 0060 5A64 str r2, [r3, #68] 2059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2833 .loc 1 2061 23 2834 0062 FB68 ldr r3, [r7, #12] 2835 0064 7A68 ldr r2, [r7, #4] 2836 0066 5A62 str r2, [r3, #36] 2062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2837 .loc 1 2062 23 2838 0068 FB68 ldr r3, [r7, #12] 2839 006a 3A89 ldrh r2, [r7, #8] @ movhi 2840 006c 5A85 strh r2, [r3, #42] @ movhi 2063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2841 .loc 1 2063 23 2842 006e FB68 ldr r3, [r7, #12] 2843 0070 554A ldr r2, .L135 2844 0072 DA62 str r2, [r3, #44] 2064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 2845 .loc 1 2064 23 2846 0074 FB68 ldr r3, [r7, #12] 2847 0076 554A ldr r2, .L135+4 ARM GAS /tmp/cc5G5cqz.s page 87 2848 0078 5A63 str r2, [r3, #52] 2065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2849 .loc 1 2066 13 2850 007a FB68 ldr r3, [r7, #12] 2851 007c 5B8D ldrh r3, [r3, #42] @ movhi 2852 007e 9BB2 uxth r3, r3 2853 .loc 1 2066 8 2854 0080 FF2B cmp r3, #255 2855 0082 06D9 bls .L127 2067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 2856 .loc 1 2068 22 2857 0084 FB68 ldr r3, [r7, #12] 2858 0086 FF22 movs r2, #255 2859 0088 1A85 strh r2, [r3, #40] @ movhi 2069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2860 .loc 1 2069 16 2861 008a 4FF08073 mov r3, #16777216 2862 008e 7B61 str r3, [r7, #20] 2863 0090 07E0 b .L128 2864 .L127: 2070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2865 .loc 1 2073 28 2866 0092 FB68 ldr r3, [r7, #12] 2867 0094 5B8D ldrh r3, [r3, #42] @ movhi 2868 0096 9AB2 uxth r2, r3 2869 .loc 1 2073 22 2870 0098 FB68 ldr r3, [r7, #12] 2871 009a 1A85 strh r2, [r3, #40] @ movhi 2074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2872 .loc 1 2074 16 2873 009c 4FF00073 mov r3, #33554432 2874 00a0 7B61 str r3, [r7, #20] 2875 .L128: 2075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 2876 .loc 1 2077 13 2877 00a2 FB68 ldr r3, [r7, #12] 2878 00a4 1B8D ldrh r3, [r3, #40] 2879 .loc 1 2077 8 2880 00a6 002B cmp r3, #0 2881 00a8 70D0 beq .L129 2078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 2882 .loc 1 2079 15 2883 00aa FB68 ldr r3, [r7, #12] 2884 00ac DB6B ldr r3, [r3, #60] 2885 .loc 1 2079 10 2886 00ae 002B cmp r3, #0 2887 00b0 20D0 beq .L130 2080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ ARM GAS /tmp/cc5G5cqz.s page 88 2082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 2888 .loc 1 2082 13 2889 00b2 FB68 ldr r3, [r7, #12] 2890 00b4 DB6B ldr r3, [r3, #60] 2891 .loc 1 2082 40 2892 00b6 464A ldr r2, .L135+8 2893 00b8 9A62 str r2, [r3, #40] 2083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 2894 .loc 1 2085 13 2895 00ba FB68 ldr r3, [r7, #12] 2896 00bc DB6B ldr r3, [r3, #60] 2897 .loc 1 2085 41 2898 00be 454A ldr r2, .L135+12 2899 00c0 1A63 str r2, [r3, #48] 2086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 2900 .loc 1 2088 13 2901 00c2 FB68 ldr r3, [r7, #12] 2902 00c4 DB6B ldr r3, [r3, #60] 2903 .loc 1 2088 44 2904 00c6 0022 movs r2, #0 2905 00c8 DA62 str r2, [r3, #44] 2089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 2906 .loc 1 2089 13 2907 00ca FB68 ldr r3, [r7, #12] 2908 00cc DB6B ldr r3, [r3, #60] 2909 .loc 1 2089 41 2910 00ce 0022 movs r2, #0 2911 00d0 5A63 str r2, [r3, #52] 2090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p 2912 .loc 1 2092 25 2913 00d2 FB68 ldr r3, [r7, #12] 2914 00d4 D86B ldr r0, [r3, #60] 2915 .loc 1 2092 71 2916 00d6 FB68 ldr r3, [r7, #12] 2917 00d8 1B68 ldr r3, [r3] 2918 .loc 1 2092 66 2919 00da 2433 adds r3, r3, #36 2920 .loc 1 2092 25 2921 00dc 1946 mov r1, r3 2922 00de 7A68 ldr r2, [r7, #4] 2093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 2923 .loc 1 2093 46 2924 00e0 FB68 ldr r3, [r7, #12] 2925 00e2 1B8D ldrh r3, [r3, #40] 2092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 2926 .loc 1 2092 25 2927 00e4 FFF7FEFF bl HAL_DMA_Start_IT 2928 00e8 0346 mov r3, r0 2929 00ea FB74 strb r3, [r7, #19] 2094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS /tmp/cc5G5cqz.s page 89 2096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 2930 .loc 1 2110 10 2931 00ec FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 2932 00ee 002B cmp r3, #0 2933 00f0 38D1 bne .L132 2934 00f2 13E0 b .L134 2935 .L130: 2098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2936 .loc 1 2098 25 2937 00f4 FB68 ldr r3, [r7, #12] 2938 00f6 2022 movs r2, #32 2939 00f8 83F84120 strb r2, [r3, #65] 2099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2940 .loc 1 2099 25 2941 00fc FB68 ldr r3, [r7, #12] 2942 00fe 0022 movs r2, #0 2943 0100 83F84220 strb r2, [r3, #66] 2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2944 .loc 1 2102 13 2945 0104 FB68 ldr r3, [r7, #12] 2946 0106 5B6C ldr r3, [r3, #68] 2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2947 .loc 1 2102 25 2948 0108 43F08002 orr r2, r3, #128 2949 010c FB68 ldr r3, [r7, #12] 2950 010e 5A64 str r2, [r3, #68] 2105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2951 .loc 1 2105 9 2952 0110 FB68 ldr r3, [r7, #12] 2953 0112 0022 movs r2, #0 2954 0114 83F84020 strb r2, [r3, #64] 2107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2955 .loc 1 2107 16 2956 0118 0123 movs r3, #1 2957 011a 50E0 b .L125 2958 .L134: 2111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART * 2114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_ 2959 .loc 1 2114 59 2960 011c FB68 ldr r3, [r7, #12] 2961 011e 1B8D ldrh r3, [r3, #40] ARM GAS /tmp/cc5G5cqz.s page 90 2962 .loc 1 2114 9 2963 0120 DAB2 uxtb r2, r3 2964 0122 7989 ldrh r1, [r7, #10] 2965 0124 2C4B ldr r3, .L135+16 2966 0126 0093 str r3, [sp] 2967 0128 7B69 ldr r3, [r7, #20] 2968 012a F868 ldr r0, [r7, #12] 2969 012c FFF7FEFF bl I2C_TransferConfig 2115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 2117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 2970 .loc 1 2117 13 2971 0130 FB68 ldr r3, [r7, #12] 2972 0132 5B8D ldrh r3, [r3, #42] @ movhi 2973 0134 9AB2 uxth r2, r3 2974 .loc 1 2117 32 2975 0136 FB68 ldr r3, [r7, #12] 2976 0138 1B8D ldrh r3, [r3, #40] 2977 .loc 1 2117 25 2978 013a D31A subs r3, r2, r3 2979 013c 9AB2 uxth r2, r3 2980 013e FB68 ldr r3, [r7, #12] 2981 0140 5A85 strh r2, [r3, #42] @ movhi 2118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2982 .loc 1 2120 9 2983 0142 FB68 ldr r3, [r7, #12] 2984 0144 0022 movs r2, #0 2985 0146 83F84020 strb r2, [r3, #64] 2121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 2126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 2986 .loc 1 2126 9 2987 014a 1021 movs r1, #16 2988 014c F868 ldr r0, [r7, #12] 2989 014e FFF7FEFF bl I2C_Enable_IRQ 2127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 2990 .loc 1 2129 13 2991 0152 FB68 ldr r3, [r7, #12] 2992 0154 1B68 ldr r3, [r3] 2993 .loc 1 2129 23 2994 0156 1A68 ldr r2, [r3] 2995 .loc 1 2129 13 2996 0158 FB68 ldr r3, [r7, #12] 2997 015a 1B68 ldr r3, [r3] 2998 .loc 1 2129 29 2999 015c 42F40042 orr r2, r2, #32768 3000 0160 1A60 str r2, [r3] 3001 0162 29E0 b .L133 3002 .L132: 2130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 91 2131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3003 .loc 1 2134 25 3004 0164 FB68 ldr r3, [r7, #12] 3005 0166 2022 movs r2, #32 3006 0168 83F84120 strb r2, [r3, #65] 2135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3007 .loc 1 2135 25 3008 016c FB68 ldr r3, [r7, #12] 3009 016e 0022 movs r2, #0 3010 0170 83F84220 strb r2, [r3, #66] 2136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3011 .loc 1 2138 13 3012 0174 FB68 ldr r3, [r7, #12] 3013 0176 5B6C ldr r3, [r3, #68] 3014 .loc 1 2138 25 3015 0178 43F01002 orr r2, r3, #16 3016 017c FB68 ldr r3, [r7, #12] 3017 017e 5A64 str r2, [r3, #68] 2139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3018 .loc 1 2141 9 3019 0180 FB68 ldr r3, [r7, #12] 3020 0182 0022 movs r2, #0 3021 0184 83F84020 strb r2, [r3, #64] 2142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3022 .loc 1 2143 16 3023 0188 0123 movs r3, #1 3024 018a 18E0 b .L125 3025 .L129: 2144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 2149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 3026 .loc 1 2149 21 3027 018c FB68 ldr r3, [r7, #12] 3028 018e 134A ldr r2, .L135+20 3029 0190 5A63 str r2, [r3, #52] 2150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ 2153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 3030 .loc 1 2153 57 3031 0192 FB68 ldr r3, [r7, #12] 3032 0194 1B8D ldrh r3, [r3, #40] 3033 .loc 1 2153 7 3034 0196 DAB2 uxtb r2, r3 3035 0198 7989 ldrh r1, [r7, #10] 3036 019a 0F4B ldr r3, .L135+16 ARM GAS /tmp/cc5G5cqz.s page 92 3037 019c 0093 str r3, [sp] 3038 019e 4FF00073 mov r3, #33554432 3039 01a2 F868 ldr r0, [r7, #12] 3040 01a4 FFF7FEFF bl I2C_TransferConfig 2154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3041 .loc 1 2157 7 3042 01a8 FB68 ldr r3, [r7, #12] 3043 01aa 0022 movs r2, #0 3044 01ac 83F84020 strb r2, [r3, #64] 2158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 3045 .loc 1 2166 7 3046 01b0 0121 movs r1, #1 3047 01b2 F868 ldr r0, [r7, #12] 3048 01b4 FFF7FEFF bl I2C_Enable_IRQ 3049 .L133: 2167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3050 .loc 1 2169 12 3051 01b8 0023 movs r3, #0 3052 01ba 00E0 b .L125 3053 .L123: 2170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3054 .loc 1 2173 12 3055 01bc 0223 movs r3, #2 3056 .L125: 2174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3057 .loc 1 2175 1 3058 01be 1846 mov r0, r3 3059 01c0 1837 adds r7, r7, #24 3060 .cfi_def_cfa_offset 8 3061 01c2 BD46 mov sp, r7 3062 .cfi_def_cfa_register 13 3063 @ sp needed 3064 01c4 80BD pop {r7, pc} 3065 .L136: 3066 01c6 00BF .align 2 3067 .L135: 3068 01c8 0000FFFF .word -65536 3069 01cc 00000000 .word I2C_Master_ISR_DMA 3070 01d0 00000000 .word I2C_DMAMasterReceiveCplt 3071 01d4 00000000 .word I2C_DMAError ARM GAS /tmp/cc5G5cqz.s page 93 3072 01d8 00240080 .word -2147474432 3073 01dc 00000000 .word I2C_Master_ISR_IT 3074 .cfi_endproc 3075 .LFE143: 3077 .section .text.HAL_I2C_Slave_Transmit_DMA,"ax",%progbits 3078 .align 1 3079 .global HAL_I2C_Slave_Transmit_DMA 3080 .syntax unified 3081 .thumb 3082 .thumb_func 3084 HAL_I2C_Slave_Transmit_DMA: 3085 .LFB144: 2176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA 2179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size 2186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3086 .loc 1 2186 1 3087 .cfi_startproc 3088 @ args = 0, pretend = 0, frame = 24 3089 @ frame_needed = 1, uses_anonymous_args = 0 3090 0000 80B5 push {r7, lr} 3091 .cfi_def_cfa_offset 8 3092 .cfi_offset 7, -8 3093 .cfi_offset 14, -4 3094 0002 86B0 sub sp, sp, #24 3095 .cfi_def_cfa_offset 32 3096 0004 00AF add r7, sp, #0 3097 .cfi_def_cfa_register 7 3098 0006 F860 str r0, [r7, #12] 3099 0008 B960 str r1, [r7, #8] 3100 000a 1346 mov r3, r2 3101 000c FB80 strh r3, [r7, #6] @ movhi 2187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3102 .loc 1 2189 11 3103 000e FB68 ldr r3, [r7, #12] 3104 0010 93F84130 ldrb r3, [r3, #65] 3105 0014 DBB2 uxtb r3, r3 3106 .loc 1 2189 6 3107 0016 202B cmp r3, #32 3108 0018 40F0D180 bne .L138 2190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 3109 .loc 1 2191 8 3110 001c BB68 ldr r3, [r7, #8] 3111 001e 002B cmp r3, #0 3112 0020 02D0 beq .L139 3113 .loc 1 2191 25 discriminator 1 3114 0022 FB88 ldrh r3, [r7, #6] ARM GAS /tmp/cc5G5cqz.s page 94 3115 0024 002B cmp r3, #0 3116 0026 05D1 bne .L140 3117 .L139: 2192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 3118 .loc 1 2193 23 3119 0028 FB68 ldr r3, [r7, #12] 3120 002a 4FF40072 mov r2, #512 3121 002e 5A64 str r2, [r3, #68] 2194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3122 .loc 1 2194 15 3123 0030 0123 movs r3, #1 3124 0032 C5E0 b .L141 3125 .L140: 2195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3126 .loc 1 2197 5 3127 0034 FB68 ldr r3, [r7, #12] 3128 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3129 003a 012B cmp r3, #1 3130 003c 01D1 bne .L142 3131 .loc 1 2197 5 is_stmt 0 discriminator 1 3132 003e 0223 movs r3, #2 3133 .loc 1 2197 5 3134 0040 BEE0 b .L141 3135 .L142: 3136 .loc 1 2197 5 discriminator 2 3137 0042 FB68 ldr r3, [r7, #12] 3138 0044 0122 movs r2, #1 3139 0046 83F84020 strb r2, [r3, #64] 2198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 3140 .loc 1 2199 23 is_stmt 1 3141 004a FB68 ldr r3, [r7, #12] 3142 004c 2122 movs r2, #33 3143 004e 83F84120 strb r2, [r3, #65] 2200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 3144 .loc 1 2200 23 3145 0052 FB68 ldr r3, [r7, #12] 3146 0054 2022 movs r2, #32 3147 0056 83F84220 strb r2, [r3, #66] 2201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 3148 .loc 1 2201 23 3149 005a FB68 ldr r3, [r7, #12] 3150 005c 0022 movs r2, #0 3151 005e 5A64 str r2, [r3, #68] 2202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3152 .loc 1 2204 23 3153 0060 FB68 ldr r3, [r7, #12] 3154 0062 BA68 ldr r2, [r7, #8] 3155 0064 5A62 str r2, [r3, #36] 2205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3156 .loc 1 2205 23 3157 0066 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 95 3158 0068 FA88 ldrh r2, [r7, #6] @ movhi 3159 006a 5A85 strh r2, [r3, #42] @ movhi 2206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3160 .loc 1 2206 29 3161 006c FB68 ldr r3, [r7, #12] 3162 006e 5B8D ldrh r3, [r3, #42] @ movhi 3163 0070 9AB2 uxth r2, r3 3164 .loc 1 2206 23 3165 0072 FB68 ldr r3, [r7, #12] 3166 0074 1A85 strh r2, [r3, #40] @ movhi 2207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 3167 .loc 1 2207 23 3168 0076 FB68 ldr r3, [r7, #12] 3169 0078 534A ldr r2, .L150 3170 007a DA62 str r2, [r3, #44] 2208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 3171 .loc 1 2208 23 3172 007c FB68 ldr r3, [r7, #12] 3173 007e 534A ldr r2, .L150+4 3174 0080 5A63 str r2, [r3, #52] 2209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 2211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 3175 .loc 1 2211 19 3176 0082 FB68 ldr r3, [r7, #12] 3177 0084 1B6A ldr r3, [r3, #32] 3178 .loc 1 2211 8 3179 0086 B3F5003F cmp r3, #131072 3180 008a 17D1 bne .L143 2212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 2214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 2215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 3181 .loc 1 2215 35 3182 008c FB68 ldr r3, [r7, #12] 3183 008e 5B6A ldr r3, [r3, #36] 3184 .loc 1 2215 30 3185 0090 1A78 ldrb r2, [r3] @ zero_extendqisi2 3186 .loc 1 2215 11 3187 0092 FB68 ldr r3, [r7, #12] 3188 0094 1B68 ldr r3, [r3] 3189 .loc 1 2215 28 3190 0096 9A62 str r2, [r3, #40] 2216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 3191 .loc 1 2218 11 3192 0098 FB68 ldr r3, [r7, #12] 3193 009a 5B6A ldr r3, [r3, #36] 3194 .loc 1 2218 21 3195 009c 5A1C adds r2, r3, #1 3196 009e FB68 ldr r3, [r7, #12] 3197 00a0 5A62 str r2, [r3, #36] 2219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 3198 .loc 1 2220 11 3199 00a2 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 96 3200 00a4 5B8D ldrh r3, [r3, #42] @ movhi 3201 00a6 9BB2 uxth r3, r3 3202 .loc 1 2220 22 3203 00a8 013B subs r3, r3, #1 3204 00aa 9AB2 uxth r2, r3 3205 00ac FB68 ldr r3, [r7, #12] 3206 00ae 5A85 strh r2, [r3, #42] @ movhi 2221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 3207 .loc 1 2221 11 3208 00b0 FB68 ldr r3, [r7, #12] 3209 00b2 1B8D ldrh r3, [r3, #40] 3210 .loc 1 2221 21 3211 00b4 013B subs r3, r3, #1 3212 00b6 9AB2 uxth r2, r3 3213 00b8 FB68 ldr r3, [r7, #12] 3214 00ba 1A85 strh r2, [r3, #40] @ movhi 3215 .L143: 2222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 3216 .loc 1 2224 13 3217 00bc FB68 ldr r3, [r7, #12] 3218 00be 5B8D ldrh r3, [r3, #42] @ movhi 3219 00c0 9BB2 uxth r3, r3 3220 .loc 1 2224 8 3221 00c2 002B cmp r3, #0 3222 00c4 68D0 beq .L144 2225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 3223 .loc 1 2226 15 3224 00c6 FB68 ldr r3, [r7, #12] 3225 00c8 9B6B ldr r3, [r3, #56] 3226 .loc 1 2226 10 3227 00ca 002B cmp r3, #0 3228 00cc 22D0 beq .L145 2227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; 3229 .loc 1 2229 13 3230 00ce FB68 ldr r3, [r7, #12] 3231 00d0 9B6B ldr r3, [r3, #56] 3232 .loc 1 2229 40 3233 00d2 3F4A ldr r2, .L150+8 3234 00d4 9A62 str r2, [r3, #40] 2230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 3235 .loc 1 2232 13 3236 00d6 FB68 ldr r3, [r7, #12] 3237 00d8 9B6B ldr r3, [r3, #56] 3238 .loc 1 2232 41 3239 00da 3E4A ldr r2, .L150+12 3240 00dc 1A63 str r2, [r3, #48] 2233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 3241 .loc 1 2235 13 ARM GAS /tmp/cc5G5cqz.s page 97 3242 00de FB68 ldr r3, [r7, #12] 3243 00e0 9B6B ldr r3, [r3, #56] 3244 .loc 1 2235 44 3245 00e2 0022 movs r2, #0 3246 00e4 DA62 str r2, [r3, #44] 2236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 3247 .loc 1 2236 13 3248 00e6 FB68 ldr r3, [r7, #12] 3249 00e8 9B6B ldr r3, [r3, #56] 3250 .loc 1 2236 41 3251 00ea 0022 movs r2, #0 3252 00ec 5A63 str r2, [r3, #52] 2237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, 3253 .loc 1 2239 25 3254 00ee FB68 ldr r3, [r7, #12] 3255 00f0 986B ldr r0, [r3, #56] 2240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3256 .loc 1 2240 56 3257 00f2 FB68 ldr r3, [r7, #12] 3258 00f4 5B6A ldr r3, [r3, #36] 2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3259 .loc 1 2239 25 3260 00f6 1946 mov r1, r3 3261 .loc 1 2240 83 3262 00f8 FB68 ldr r3, [r7, #12] 3263 00fa 1B68 ldr r3, [r3] 3264 .loc 1 2240 78 3265 00fc 2833 adds r3, r3, #40 2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3266 .loc 1 2239 25 3267 00fe 1A46 mov r2, r3 2241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3268 .loc 1 2241 46 3269 0100 FB68 ldr r3, [r7, #12] 3270 0102 1B8D ldrh r3, [r3, #40] 2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3271 .loc 1 2239 25 3272 0104 FFF7FEFF bl HAL_DMA_Start_IT 3273 0108 0346 mov r3, r0 3274 010a FB75 strb r3, [r7, #23] 2242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 98 2257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3275 .loc 1 2258 10 3276 010c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 3277 010e 002B cmp r3, #0 3278 0110 2ED1 bne .L147 3279 0112 13E0 b .L149 3280 .L145: 2246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3281 .loc 1 2246 25 3282 0114 FB68 ldr r3, [r7, #12] 3283 0116 2822 movs r2, #40 3284 0118 83F84120 strb r2, [r3, #65] 2247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3285 .loc 1 2247 25 3286 011c FB68 ldr r3, [r7, #12] 3287 011e 0022 movs r2, #0 3288 0120 83F84220 strb r2, [r3, #66] 2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3289 .loc 1 2250 13 3290 0124 FB68 ldr r3, [r7, #12] 3291 0126 5B6C ldr r3, [r3, #68] 2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3292 .loc 1 2250 25 3293 0128 43F08002 orr r2, r3, #128 3294 012c FB68 ldr r3, [r7, #12] 3295 012e 5A64 str r2, [r3, #68] 2253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3296 .loc 1 2253 9 3297 0130 FB68 ldr r3, [r7, #12] 3298 0132 0022 movs r2, #0 3299 0134 83F84020 strb r2, [r3, #64] 2255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3300 .loc 1 2255 16 3301 0138 0123 movs r3, #1 3302 013a 41E0 b .L141 3303 .L149: 2259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 3304 .loc 1 2261 13 3305 013c FB68 ldr r3, [r7, #12] 3306 013e 1B68 ldr r3, [r3] 3307 .loc 1 2261 23 3308 0140 5A68 ldr r2, [r3, #4] 3309 .loc 1 2261 13 3310 0142 FB68 ldr r3, [r7, #12] 3311 0144 1B68 ldr r3, [r3] 3312 .loc 1 2261 29 3313 0146 22F40042 bic r2, r2, #32768 3314 014a 5A60 str r2, [r3, #4] 2262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3315 .loc 1 2264 9 3316 014c FB68 ldr r3, [r7, #12] 3317 014e 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 99 3318 0150 83F84020 strb r2, [r3, #64] 2265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 3319 .loc 1 2270 9 3320 0154 4FF40041 mov r1, #32768 3321 0158 F868 ldr r0, [r7, #12] 3322 015a FFF7FEFF bl I2C_Enable_IRQ 2271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 3323 .loc 1 2273 13 3324 015e FB68 ldr r3, [r7, #12] 3325 0160 1B68 ldr r3, [r3] 3326 .loc 1 2273 23 3327 0162 1A68 ldr r2, [r3] 3328 .loc 1 2273 13 3329 0164 FB68 ldr r3, [r7, #12] 3330 0166 1B68 ldr r3, [r3] 3331 .loc 1 2273 29 3332 0168 42F48042 orr r2, r2, #16384 3333 016c 1A60 str r2, [r3] 3334 016e 24E0 b .L148 3335 .L147: 2274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 3336 .loc 1 2278 25 3337 0170 FB68 ldr r3, [r7, #12] 3338 0172 2822 movs r2, #40 3339 0174 83F84120 strb r2, [r3, #65] 2279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3340 .loc 1 2279 25 3341 0178 FB68 ldr r3, [r7, #12] 3342 017a 0022 movs r2, #0 3343 017c 83F84220 strb r2, [r3, #66] 2280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3344 .loc 1 2282 13 3345 0180 FB68 ldr r3, [r7, #12] 3346 0182 5B6C ldr r3, [r3, #68] 3347 .loc 1 2282 25 3348 0184 43F01002 orr r2, r3, #16 3349 0188 FB68 ldr r3, [r7, #12] 3350 018a 5A64 str r2, [r3, #68] 2283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3351 .loc 1 2285 9 3352 018c FB68 ldr r3, [r7, #12] 3353 018e 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 100 3354 0190 83F84020 strb r2, [r3, #64] 2286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3355 .loc 1 2287 16 3356 0194 0123 movs r3, #1 3357 0196 13E0 b .L141 3358 .L144: 2288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 3359 .loc 1 2293 11 3360 0198 FB68 ldr r3, [r7, #12] 3361 019a 1B68 ldr r3, [r3] 3362 .loc 1 2293 21 3363 019c 5A68 ldr r2, [r3, #4] 3364 .loc 1 2293 11 3365 019e FB68 ldr r3, [r7, #12] 3366 01a0 1B68 ldr r3, [r3] 3367 .loc 1 2293 27 3368 01a2 22F40042 bic r2, r2, #32768 3369 01a6 5A60 str r2, [r3, #4] 2294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3370 .loc 1 2296 7 3371 01a8 FB68 ldr r3, [r7, #12] 3372 01aa 0022 movs r2, #0 3373 01ac 83F84020 strb r2, [r3, #64] 2297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 3374 .loc 1 2302 7 3375 01b0 4FF40041 mov r1, #32768 3376 01b4 F868 ldr r0, [r7, #12] 3377 01b6 FFF7FEFF bl I2C_Enable_IRQ 3378 .L148: 2303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3379 .loc 1 2305 12 3380 01ba 0023 movs r3, #0 3381 01bc 00E0 b .L141 3382 .L138: 2306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3383 .loc 1 2309 12 3384 01be 0223 movs r3, #2 3385 .L141: 2310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 101 2311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3386 .loc 1 2311 1 3387 01c0 1846 mov r0, r3 3388 01c2 1837 adds r7, r7, #24 3389 .cfi_def_cfa_offset 8 3390 01c4 BD46 mov sp, r7 3391 .cfi_def_cfa_register 13 3392 @ sp needed 3393 01c6 80BD pop {r7, pc} 3394 .L151: 3395 .align 2 3396 .L150: 3397 01c8 0000FFFF .word -65536 3398 01cc 00000000 .word I2C_Slave_ISR_DMA 3399 01d0 00000000 .word I2C_DMASlaveTransmitCplt 3400 01d4 00000000 .word I2C_DMAError 3401 .cfi_endproc 3402 .LFE144: 3404 .section .text.HAL_I2C_Slave_Receive_DMA,"ax",%progbits 3405 .align 1 3406 .global HAL_I2C_Slave_Receive_DMA 3407 .syntax unified 3408 .thumb 3409 .thumb_func 3411 HAL_I2C_Slave_Receive_DMA: 3412 .LFB145: 2312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with DMA 2315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) 2322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3413 .loc 1 2322 1 3414 .cfi_startproc 3415 @ args = 0, pretend = 0, frame = 24 3416 @ frame_needed = 1, uses_anonymous_args = 0 3417 0000 80B5 push {r7, lr} 3418 .cfi_def_cfa_offset 8 3419 .cfi_offset 7, -8 3420 .cfi_offset 14, -4 3421 0002 86B0 sub sp, sp, #24 3422 .cfi_def_cfa_offset 32 3423 0004 00AF add r7, sp, #0 3424 .cfi_def_cfa_register 7 3425 0006 F860 str r0, [r7, #12] 3426 0008 B960 str r1, [r7, #8] 3427 000a 1346 mov r3, r2 3428 000c FB80 strh r3, [r7, #6] @ movhi 2323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3429 .loc 1 2325 11 ARM GAS /tmp/cc5G5cqz.s page 102 3430 000e FB68 ldr r3, [r7, #12] 3431 0010 93F84130 ldrb r3, [r3, #65] 3432 0014 DBB2 uxtb r3, r3 3433 .loc 1 2325 6 3434 0016 202B cmp r3, #32 3435 0018 40F09B80 bne .L153 2326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 3436 .loc 1 2327 8 3437 001c BB68 ldr r3, [r7, #8] 3438 001e 002B cmp r3, #0 3439 0020 02D0 beq .L154 3440 .loc 1 2327 25 discriminator 1 3441 0022 FB88 ldrh r3, [r7, #6] 3442 0024 002B cmp r3, #0 3443 0026 05D1 bne .L155 3444 .L154: 2328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 3445 .loc 1 2329 23 3446 0028 FB68 ldr r3, [r7, #12] 3447 002a 4FF40072 mov r2, #512 3448 002e 5A64 str r2, [r3, #68] 2330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3449 .loc 1 2330 15 3450 0030 0123 movs r3, #1 3451 0032 8FE0 b .L156 3452 .L155: 2331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3453 .loc 1 2333 5 3454 0034 FB68 ldr r3, [r7, #12] 3455 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3456 003a 012B cmp r3, #1 3457 003c 01D1 bne .L157 3458 .loc 1 2333 5 is_stmt 0 discriminator 1 3459 003e 0223 movs r3, #2 3460 .loc 1 2333 5 3461 0040 88E0 b .L156 3462 .L157: 3463 .loc 1 2333 5 discriminator 2 3464 0042 FB68 ldr r3, [r7, #12] 3465 0044 0122 movs r2, #1 3466 0046 83F84020 strb r2, [r3, #64] 2334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 3467 .loc 1 2335 23 is_stmt 1 3468 004a FB68 ldr r3, [r7, #12] 3469 004c 2222 movs r2, #34 3470 004e 83F84120 strb r2, [r3, #65] 2336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 3471 .loc 1 2336 23 3472 0052 FB68 ldr r3, [r7, #12] 3473 0054 2022 movs r2, #32 3474 0056 83F84220 strb r2, [r3, #66] 2337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; ARM GAS /tmp/cc5G5cqz.s page 103 3475 .loc 1 2337 23 3476 005a FB68 ldr r3, [r7, #12] 3477 005c 0022 movs r2, #0 3478 005e 5A64 str r2, [r3, #68] 2338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3479 .loc 1 2340 23 3480 0060 FB68 ldr r3, [r7, #12] 3481 0062 BA68 ldr r2, [r7, #8] 3482 0064 5A62 str r2, [r3, #36] 2341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3483 .loc 1 2341 23 3484 0066 FB68 ldr r3, [r7, #12] 3485 0068 FA88 ldrh r2, [r7, #6] @ movhi 3486 006a 5A85 strh r2, [r3, #42] @ movhi 2342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3487 .loc 1 2342 29 3488 006c FB68 ldr r3, [r7, #12] 3489 006e 5B8D ldrh r3, [r3, #42] @ movhi 3490 0070 9AB2 uxth r2, r3 3491 .loc 1 2342 23 3492 0072 FB68 ldr r3, [r7, #12] 3493 0074 1A85 strh r2, [r3, #40] @ movhi 2343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 3494 .loc 1 2343 23 3495 0076 FB68 ldr r3, [r7, #12] 3496 0078 384A ldr r2, .L163 3497 007a DA62 str r2, [r3, #44] 2344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 3498 .loc 1 2344 23 3499 007c FB68 ldr r3, [r7, #12] 3500 007e 384A ldr r2, .L163+4 3501 0080 5A63 str r2, [r3, #52] 2345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 3502 .loc 1 2346 13 3503 0082 FB68 ldr r3, [r7, #12] 3504 0084 DB6B ldr r3, [r3, #60] 3505 .loc 1 2346 8 3506 0086 002B cmp r3, #0 3507 0088 20D0 beq .L158 2347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; 3508 .loc 1 2349 11 3509 008a FB68 ldr r3, [r7, #12] 3510 008c DB6B ldr r3, [r3, #60] 3511 .loc 1 2349 38 3512 008e 354A ldr r2, .L163+8 3513 0090 9A62 str r2, [r3, #40] 2350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 3514 .loc 1 2352 11 3515 0092 FB68 ldr r3, [r7, #12] 3516 0094 DB6B ldr r3, [r3, #60] ARM GAS /tmp/cc5G5cqz.s page 104 3517 .loc 1 2352 39 3518 0096 344A ldr r2, .L163+12 3519 0098 1A63 str r2, [r3, #48] 2353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 3520 .loc 1 2355 11 3521 009a FB68 ldr r3, [r7, #12] 3522 009c DB6B ldr r3, [r3, #60] 3523 .loc 1 2355 42 3524 009e 0022 movs r2, #0 3525 00a0 DA62 str r2, [r3, #44] 2356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 3526 .loc 1 2356 11 3527 00a2 FB68 ldr r3, [r7, #12] 3528 00a4 DB6B ldr r3, [r3, #60] 3529 .loc 1 2356 39 3530 00a6 0022 movs r2, #0 3531 00a8 5A63 str r2, [r3, #52] 2357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa 3532 .loc 1 2359 23 3533 00aa FB68 ldr r3, [r7, #12] 3534 00ac D86B ldr r0, [r3, #60] 3535 .loc 1 2359 69 3536 00ae FB68 ldr r3, [r7, #12] 3537 00b0 1B68 ldr r3, [r3] 3538 .loc 1 2359 64 3539 00b2 2433 adds r3, r3, #36 3540 .loc 1 2359 23 3541 00b4 1946 mov r1, r3 3542 00b6 BA68 ldr r2, [r7, #8] 2360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3543 .loc 1 2360 44 3544 00b8 FB68 ldr r3, [r7, #12] 3545 00ba 1B8D ldrh r3, [r3, #40] 2359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3546 .loc 1 2359 23 3547 00bc FFF7FEFF bl HAL_DMA_Start_IT 3548 00c0 0346 mov r3, r0 3549 00c2 FB75 strb r3, [r7, #23] 2361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 105 2376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3550 .loc 1 2377 8 3551 00c4 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 3552 00c6 002B cmp r3, #0 3553 00c8 2FD1 bne .L160 3554 00ca 13E0 b .L162 3555 .L158: 2365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3556 .loc 1 2365 23 3557 00cc FB68 ldr r3, [r7, #12] 3558 00ce 2822 movs r2, #40 3559 00d0 83F84120 strb r2, [r3, #65] 2366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3560 .loc 1 2366 23 3561 00d4 FB68 ldr r3, [r7, #12] 3562 00d6 0022 movs r2, #0 3563 00d8 83F84220 strb r2, [r3, #66] 2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3564 .loc 1 2369 11 3565 00dc FB68 ldr r3, [r7, #12] 3566 00de 5B6C ldr r3, [r3, #68] 2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3567 .loc 1 2369 23 3568 00e0 43F08002 orr r2, r3, #128 3569 00e4 FB68 ldr r3, [r7, #12] 3570 00e6 5A64 str r2, [r3, #68] 2372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3571 .loc 1 2372 7 3572 00e8 FB68 ldr r3, [r7, #12] 3573 00ea 0022 movs r2, #0 3574 00ec 83F84020 strb r2, [r3, #64] 2374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3575 .loc 1 2374 14 3576 00f0 0123 movs r3, #1 3577 00f2 2FE0 b .L156 3578 .L162: 2378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 3579 .loc 1 2380 11 3580 00f4 FB68 ldr r3, [r7, #12] 3581 00f6 1B68 ldr r3, [r3] 3582 .loc 1 2380 21 3583 00f8 5A68 ldr r2, [r3, #4] 3584 .loc 1 2380 11 3585 00fa FB68 ldr r3, [r7, #12] 3586 00fc 1B68 ldr r3, [r3] 3587 .loc 1 2380 27 3588 00fe 22F40042 bic r2, r2, #32768 3589 0102 5A60 str r2, [r3, #4] 2381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3590 .loc 1 2383 7 3591 0104 FB68 ldr r3, [r7, #12] 3592 0106 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 106 3593 0108 83F84020 strb r2, [r3, #64] 2384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 3594 .loc 1 2389 7 3595 010c 4FF40041 mov r1, #32768 3596 0110 F868 ldr r0, [r7, #12] 3597 0112 FFF7FEFF bl I2C_Enable_IRQ 2390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 3598 .loc 1 2392 11 3599 0116 FB68 ldr r3, [r7, #12] 3600 0118 1B68 ldr r3, [r3] 3601 .loc 1 2392 21 3602 011a 1A68 ldr r2, [r3] 3603 .loc 1 2392 11 3604 011c FB68 ldr r3, [r7, #12] 3605 011e 1B68 ldr r3, [r3] 3606 .loc 1 2392 27 3607 0120 42F40042 orr r2, r2, #32768 3608 0124 1A60 str r2, [r3] 2393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 2402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3609 .loc 1 2409 12 3610 0126 0023 movs r3, #0 3611 0128 14E0 b .L156 3612 .L160: 2397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3613 .loc 1 2397 23 3614 012a FB68 ldr r3, [r7, #12] 3615 012c 2822 movs r2, #40 3616 012e 83F84120 strb r2, [r3, #65] 2398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3617 .loc 1 2398 23 3618 0132 FB68 ldr r3, [r7, #12] 3619 0134 0022 movs r2, #0 3620 0136 83F84220 strb r2, [r3, #66] 2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 107 3621 .loc 1 2401 11 3622 013a FB68 ldr r3, [r7, #12] 3623 013c 5B6C ldr r3, [r3, #68] 2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3624 .loc 1 2401 23 3625 013e 43F01002 orr r2, r3, #16 3626 0142 FB68 ldr r3, [r7, #12] 3627 0144 5A64 str r2, [r3, #68] 2404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3628 .loc 1 2404 7 3629 0146 FB68 ldr r3, [r7, #12] 3630 0148 0022 movs r2, #0 3631 014a 83F84020 strb r2, [r3, #64] 2406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3632 .loc 1 2406 14 3633 014e 0123 movs r3, #1 3634 0150 00E0 b .L156 3635 .L153: 2410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3636 .loc 1 2413 12 3637 0152 0223 movs r3, #2 3638 .L156: 2414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3639 .loc 1 2415 1 3640 0154 1846 mov r0, r3 3641 0156 1837 adds r7, r7, #24 3642 .cfi_def_cfa_offset 8 3643 0158 BD46 mov sp, r7 3644 .cfi_def_cfa_register 13 3645 @ sp needed 3646 015a 80BD pop {r7, pc} 3647 .L164: 3648 .align 2 3649 .L163: 3650 015c 0000FFFF .word -65536 3651 0160 00000000 .word I2C_Slave_ISR_DMA 3652 0164 00000000 .word I2C_DMASlaveReceiveCplt 3653 0168 00000000 .word I2C_DMAError 3654 .cfi_endproc 3655 .LFE145: 3657 .section .text.HAL_I2C_Mem_Write,"ax",%progbits 3658 .align 1 3659 .global HAL_I2C_Mem_Write 3660 .syntax unified 3661 .thumb 3662 .thumb_func 3664 HAL_I2C_Mem_Write: 3665 .LFB146: 2416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in blocking mode to a specific memory address 2419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. ARM GAS /tmp/cc5G5cqz.s page 108 2421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 2428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre 2431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Ti 2432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3666 .loc 1 2432 1 3667 .cfi_startproc 3668 @ args = 12, pretend = 0, frame = 24 3669 @ frame_needed = 1, uses_anonymous_args = 0 3670 0000 80B5 push {r7, lr} 3671 .cfi_def_cfa_offset 8 3672 .cfi_offset 7, -8 3673 .cfi_offset 14, -4 3674 0002 88B0 sub sp, sp, #32 3675 .cfi_def_cfa_offset 40 3676 0004 02AF add r7, sp, #8 3677 .cfi_def_cfa 7, 32 3678 0006 F860 str r0, [r7, #12] 3679 0008 0846 mov r0, r1 3680 000a 1146 mov r1, r2 3681 000c 1A46 mov r2, r3 3682 000e 0346 mov r3, r0 @ movhi 3683 0010 7B81 strh r3, [r7, #10] @ movhi 3684 0012 0B46 mov r3, r1 @ movhi 3685 0014 3B81 strh r3, [r7, #8] @ movhi 3686 0016 1346 mov r3, r2 @ movhi 3687 0018 FB80 strh r3, [r7, #6] @ movhi 2433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 2434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 2437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3688 .loc 1 2438 11 3689 001a FB68 ldr r3, [r7, #12] 3690 001c 93F84130 ldrb r3, [r3, #65] 3691 0020 DBB2 uxtb r3, r3 3692 .loc 1 2438 6 3693 0022 202B cmp r3, #32 3694 0024 40F0F980 bne .L166 2439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 3695 .loc 1 2440 8 3696 0028 3B6A ldr r3, [r7, #32] 3697 002a 002B cmp r3, #0 3698 002c 02D0 beq .L167 3699 .loc 1 2440 25 discriminator 1 3700 002e BB8C ldrh r3, [r7, #36] 3701 0030 002B cmp r3, #0 3702 0032 05D1 bne .L168 ARM GAS /tmp/cc5G5cqz.s page 109 3703 .L167: 2441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 3704 .loc 1 2442 23 3705 0034 FB68 ldr r3, [r7, #12] 3706 0036 4FF40072 mov r2, #512 3707 003a 5A64 str r2, [r3, #68] 2443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3708 .loc 1 2443 15 3709 003c 0123 movs r3, #1 3710 003e EDE0 b .L169 3711 .L168: 2444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3712 .loc 1 2447 5 3713 0040 FB68 ldr r3, [r7, #12] 3714 0042 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3715 0046 012B cmp r3, #1 3716 0048 01D1 bne .L170 3717 .loc 1 2447 5 is_stmt 0 discriminator 1 3718 004a 0223 movs r3, #2 3719 .loc 1 2447 5 3720 004c E6E0 b .L169 3721 .L170: 3722 .loc 1 2447 5 discriminator 2 3723 004e FB68 ldr r3, [r7, #12] 3724 0050 0122 movs r2, #1 3725 0052 83F84020 strb r2, [r3, #64] 2448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 2450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 3726 .loc 1 2450 17 is_stmt 1 3727 0056 FFF7FEFF bl HAL_GetTick 3728 005a 7861 str r0, [r7, #20] 2451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 3729 .loc 1 2452 9 3730 005c 7B69 ldr r3, [r7, #20] 3731 005e 0093 str r3, [sp] 3732 0060 1923 movs r3, #25 3733 0062 0122 movs r2, #1 3734 0064 4FF40041 mov r1, #32768 3735 0068 F868 ldr r0, [r7, #12] 3736 006a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 3737 006e 0346 mov r3, r0 3738 .loc 1 2452 8 discriminator 1 3739 0070 002B cmp r3, #0 3740 0072 01D0 beq .L171 2453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3741 .loc 1 2454 14 3742 0074 0123 movs r3, #1 3743 0076 D1E0 b .L169 3744 .L171: 2455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 110 2456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 3745 .loc 1 2457 21 3746 0078 FB68 ldr r3, [r7, #12] 3747 007a 2122 movs r2, #33 3748 007c 83F84120 strb r2, [r3, #65] 2458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 3749 .loc 1 2458 21 3750 0080 FB68 ldr r3, [r7, #12] 3751 0082 4022 movs r2, #64 3752 0084 83F84220 strb r2, [r3, #66] 2459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 3753 .loc 1 2459 21 3754 0088 FB68 ldr r3, [r7, #12] 3755 008a 0022 movs r2, #0 3756 008c 5A64 str r2, [r3, #68] 2460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3757 .loc 1 2462 21 3758 008e FB68 ldr r3, [r7, #12] 3759 0090 3A6A ldr r2, [r7, #32] 3760 0092 5A62 str r2, [r3, #36] 2463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3761 .loc 1 2463 21 3762 0094 FB68 ldr r3, [r7, #12] 3763 0096 BA8C ldrh r2, [r7, #36] @ movhi 3764 0098 5A85 strh r2, [r3, #42] @ movhi 2464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 3765 .loc 1 2464 21 3766 009a FB68 ldr r3, [r7, #12] 3767 009c 0022 movs r2, #0 3768 009e 5A63 str r2, [r3, #52] 2465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL 3769 .loc 1 2467 9 3770 00a0 F888 ldrh r0, [r7, #6] 3771 00a2 3A89 ldrh r2, [r7, #8] 3772 00a4 7989 ldrh r1, [r7, #10] 3773 00a6 7B69 ldr r3, [r7, #20] 3774 00a8 0193 str r3, [sp, #4] 3775 00aa BB6A ldr r3, [r7, #40] 3776 00ac 0093 str r3, [sp] 3777 00ae 0346 mov r3, r0 3778 00b0 F868 ldr r0, [r7, #12] 3779 00b2 FFF7FEFF bl I2C_RequestMemoryWrite 3780 00b6 0346 mov r3, r0 3781 .loc 1 2467 8 discriminator 1 3782 00b8 002B cmp r3, #0 3783 00ba 05D0 beq .L172 2468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3784 .loc 1 2470 7 3785 00bc FB68 ldr r3, [r7, #12] 3786 00be 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 111 3787 00c0 83F84020 strb r2, [r3, #64] 2471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3788 .loc 1 2471 14 3789 00c4 0123 movs r3, #1 3790 00c6 A9E0 b .L169 3791 .L172: 2472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 2475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 3792 .loc 1 2475 13 3793 00c8 FB68 ldr r3, [r7, #12] 3794 00ca 5B8D ldrh r3, [r3, #42] @ movhi 3795 00cc 9BB2 uxth r3, r3 3796 .loc 1 2475 8 3797 00ce FF2B cmp r3, #255 3798 00d0 0ED9 bls .L173 2476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 3799 .loc 1 2477 22 3800 00d2 FB68 ldr r3, [r7, #12] 3801 00d4 FF22 movs r2, #255 3802 00d6 1A85 strh r2, [r3, #40] @ movhi 2478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST 3803 .loc 1 2478 57 3804 00d8 FB68 ldr r3, [r7, #12] 3805 00da 1B8D ldrh r3, [r3, #40] 3806 .loc 1 2478 7 3807 00dc DAB2 uxtb r2, r3 3808 00de 7989 ldrh r1, [r7, #10] 3809 00e0 0023 movs r3, #0 3810 00e2 0093 str r3, [sp] 3811 00e4 4FF08073 mov r3, #16777216 3812 00e8 F868 ldr r0, [r7, #12] 3813 00ea FFF7FEFF bl I2C_TransferConfig 3814 00ee 0FE0 b .L179 3815 .L173: 2479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3816 .loc 1 2482 28 3817 00f0 FB68 ldr r3, [r7, #12] 3818 00f2 5B8D ldrh r3, [r3, #42] @ movhi 3819 00f4 9AB2 uxth r2, r3 3820 .loc 1 2482 22 3821 00f6 FB68 ldr r3, [r7, #12] 3822 00f8 1A85 strh r2, [r3, #40] @ movhi 2483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS 3823 .loc 1 2483 57 3824 00fa FB68 ldr r3, [r7, #12] 3825 00fc 1B8D ldrh r3, [r3, #40] 3826 .loc 1 2483 7 3827 00fe DAB2 uxtb r2, r3 3828 0100 7989 ldrh r1, [r7, #10] 3829 0102 0023 movs r3, #0 3830 0104 0093 str r3, [sp] ARM GAS /tmp/cc5G5cqz.s page 112 3831 0106 4FF00073 mov r3, #33554432 3832 010a F868 ldr r0, [r7, #12] 3833 010c FFF7FEFF bl I2C_TransferConfig 3834 .L179: 2484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 2487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 2489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 3835 .loc 1 2489 11 3836 0110 7A69 ldr r2, [r7, #20] 3837 0112 B96A ldr r1, [r7, #40] 3838 0114 F868 ldr r0, [r7, #12] 3839 0116 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 3840 011a 0346 mov r3, r0 3841 .loc 1 2489 10 discriminator 1 3842 011c 002B cmp r3, #0 3843 011e 01D0 beq .L175 2490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3844 .loc 1 2491 16 3845 0120 0123 movs r3, #1 3846 0122 7BE0 b .L169 3847 .L175: 2492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 2495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 3848 .loc 1 2495 35 3849 0124 FB68 ldr r3, [r7, #12] 3850 0126 5B6A ldr r3, [r3, #36] 3851 .loc 1 2495 30 3852 0128 1A78 ldrb r2, [r3] @ zero_extendqisi2 3853 .loc 1 2495 11 3854 012a FB68 ldr r3, [r7, #12] 3855 012c 1B68 ldr r3, [r3] 3856 .loc 1 2495 28 3857 012e 9A62 str r2, [r3, #40] 2496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 3858 .loc 1 2498 11 3859 0130 FB68 ldr r3, [r7, #12] 3860 0132 5B6A ldr r3, [r3, #36] 3861 .loc 1 2498 21 3862 0134 5A1C adds r2, r3, #1 3863 0136 FB68 ldr r3, [r7, #12] 3864 0138 5A62 str r2, [r3, #36] 2499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 3865 .loc 1 2500 11 3866 013a FB68 ldr r3, [r7, #12] 3867 013c 5B8D ldrh r3, [r3, #42] @ movhi 3868 013e 9BB2 uxth r3, r3 3869 .loc 1 2500 22 3870 0140 013B subs r3, r3, #1 ARM GAS /tmp/cc5G5cqz.s page 113 3871 0142 9AB2 uxth r2, r3 3872 0144 FB68 ldr r3, [r7, #12] 3873 0146 5A85 strh r2, [r3, #42] @ movhi 2501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 3874 .loc 1 2501 11 3875 0148 FB68 ldr r3, [r7, #12] 3876 014a 1B8D ldrh r3, [r3, #40] 3877 .loc 1 2501 21 3878 014c 013B subs r3, r3, #1 3879 014e 9AB2 uxth r2, r3 3880 0150 FB68 ldr r3, [r7, #12] 3881 0152 1A85 strh r2, [r3, #40] @ movhi 2502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 3882 .loc 1 2503 16 3883 0154 FB68 ldr r3, [r7, #12] 3884 0156 5B8D ldrh r3, [r3, #42] @ movhi 3885 0158 9BB2 uxth r3, r3 3886 .loc 1 2503 10 3887 015a 002B cmp r3, #0 3888 015c 34D0 beq .L176 3889 .loc 1 2503 43 discriminator 1 3890 015e FB68 ldr r3, [r7, #12] 3891 0160 1B8D ldrh r3, [r3, #40] 3892 .loc 1 2503 35 discriminator 1 3893 0162 002B cmp r3, #0 3894 0164 30D1 bne .L176 2504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 2506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 3895 .loc 1 2506 13 3896 0166 7B69 ldr r3, [r7, #20] 3897 0168 0093 str r3, [sp] 3898 016a BB6A ldr r3, [r7, #40] 3899 016c 0022 movs r2, #0 3900 016e 8021 movs r1, #128 3901 0170 F868 ldr r0, [r7, #12] 3902 0172 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 3903 0176 0346 mov r3, r0 3904 .loc 1 2506 12 discriminator 1 3905 0178 002B cmp r3, #0 3906 017a 01D0 beq .L177 2507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3907 .loc 1 2508 18 3908 017c 0123 movs r3, #1 3909 017e 4DE0 b .L169 3910 .L177: 2509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 3911 .loc 1 2511 17 3912 0180 FB68 ldr r3, [r7, #12] 3913 0182 5B8D ldrh r3, [r3, #42] @ movhi 3914 0184 9BB2 uxth r3, r3 3915 .loc 1 2511 12 3916 0186 FF2B cmp r3, #255 ARM GAS /tmp/cc5G5cqz.s page 114 3917 0188 0ED9 bls .L178 2512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 3918 .loc 1 2513 26 3919 018a FB68 ldr r3, [r7, #12] 3920 018c FF22 movs r2, #255 3921 018e 1A85 strh r2, [r3, #40] @ movhi 2514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 3922 .loc 1 2514 61 3923 0190 FB68 ldr r3, [r7, #12] 3924 0192 1B8D ldrh r3, [r3, #40] 3925 .loc 1 2514 11 3926 0194 DAB2 uxtb r2, r3 3927 0196 7989 ldrh r1, [r7, #10] 3928 0198 0023 movs r3, #0 3929 019a 0093 str r3, [sp] 3930 019c 4FF08073 mov r3, #16777216 3931 01a0 F868 ldr r0, [r7, #12] 3932 01a2 FFF7FEFF bl I2C_TransferConfig 3933 01a6 0FE0 b .L176 3934 .L178: 2515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3935 .loc 1 2519 32 3936 01a8 FB68 ldr r3, [r7, #12] 3937 01aa 5B8D ldrh r3, [r3, #42] @ movhi 3938 01ac 9AB2 uxth r2, r3 3939 .loc 1 2519 26 3940 01ae FB68 ldr r3, [r7, #12] 3941 01b0 1A85 strh r2, [r3, #40] @ movhi 2520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 3942 .loc 1 2520 61 3943 01b2 FB68 ldr r3, [r7, #12] 3944 01b4 1B8D ldrh r3, [r3, #40] 3945 .loc 1 2520 11 3946 01b6 DAB2 uxtb r2, r3 3947 01b8 7989 ldrh r1, [r7, #10] 3948 01ba 0023 movs r3, #0 3949 01bc 0093 str r3, [sp] 3950 01be 4FF00073 mov r3, #33554432 3951 01c2 F868 ldr r0, [r7, #12] 3952 01c4 FFF7FEFF bl I2C_TransferConfig 3953 .L176: 2521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); 3954 .loc 1 2525 18 3955 01c8 FB68 ldr r3, [r7, #12] 3956 01ca 5B8D ldrh r3, [r3, #42] @ movhi 3957 01cc 9BB2 uxth r3, r3 3958 .loc 1 2525 30 3959 01ce 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 115 3960 01d0 9ED1 bne .L179 2526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 2528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 2529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 3961 .loc 1 2529 9 3962 01d2 7A69 ldr r2, [r7, #20] 3963 01d4 B96A ldr r1, [r7, #40] 3964 01d6 F868 ldr r0, [r7, #12] 3965 01d8 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 3966 01dc 0346 mov r3, r0 3967 .loc 1 2529 8 discriminator 1 3968 01de 002B cmp r3, #0 3969 01e0 01D0 beq .L180 2530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3970 .loc 1 2531 14 3971 01e2 0123 movs r3, #1 3972 01e4 1AE0 b .L169 3973 .L180: 2532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 2535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 3974 .loc 1 2535 5 3975 01e6 FB68 ldr r3, [r7, #12] 3976 01e8 1B68 ldr r3, [r3] 3977 01ea 2022 movs r2, #32 3978 01ec DA61 str r2, [r3, #28] 2536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 2538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 3979 .loc 1 2538 5 3980 01ee FB68 ldr r3, [r7, #12] 3981 01f0 1B68 ldr r3, [r3] 3982 01f2 5968 ldr r1, [r3, #4] 3983 01f4 FB68 ldr r3, [r7, #12] 3984 01f6 1A68 ldr r2, [r3] 3985 01f8 0A4B ldr r3, .L181 3986 01fa 0B40 ands r3, r3, r1 3987 01fc 5360 str r3, [r2, #4] 2539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3988 .loc 1 2540 17 3989 01fe FB68 ldr r3, [r7, #12] 3990 0200 2022 movs r2, #32 3991 0202 83F84120 strb r2, [r3, #65] 2541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3992 .loc 1 2541 17 3993 0206 FB68 ldr r3, [r7, #12] 3994 0208 0022 movs r2, #0 3995 020a 83F84220 strb r2, [r3, #66] 2542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3996 .loc 1 2544 5 3997 020e FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 116 3998 0210 0022 movs r2, #0 3999 0212 83F84020 strb r2, [r3, #64] 2545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4000 .loc 1 2546 12 4001 0216 0023 movs r3, #0 4002 0218 00E0 b .L169 4003 .L166: 2547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4004 .loc 1 2550 12 4005 021a 0223 movs r3, #2 4006 .L169: 2551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4007 .loc 1 2552 1 4008 021c 1846 mov r0, r3 4009 021e 1837 adds r7, r7, #24 4010 .cfi_def_cfa_offset 8 4011 0220 BD46 mov sp, r7 4012 .cfi_def_cfa_register 13 4013 @ sp needed 4014 0222 80BD pop {r7, pc} 4015 .L182: 4016 .align 2 4017 .L181: 4018 0224 00E800FE .word -33495040 4019 .cfi_endproc 4020 .LFE146: 4022 .section .text.HAL_I2C_Mem_Read,"ax",%progbits 4023 .align 1 4024 .global HAL_I2C_Mem_Read 4025 .syntax unified 4026 .thumb 4027 .thumb_func 4029 HAL_I2C_Mem_Read: 4030 .LFB147: 2553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Read an amount of data in blocking mode from a specific memory address 2556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 2565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres 2568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Tim 2569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4031 .loc 1 2569 1 ARM GAS /tmp/cc5G5cqz.s page 117 4032 .cfi_startproc 4033 @ args = 12, pretend = 0, frame = 24 4034 @ frame_needed = 1, uses_anonymous_args = 0 4035 0000 80B5 push {r7, lr} 4036 .cfi_def_cfa_offset 8 4037 .cfi_offset 7, -8 4038 .cfi_offset 14, -4 4039 0002 88B0 sub sp, sp, #32 4040 .cfi_def_cfa_offset 40 4041 0004 02AF add r7, sp, #8 4042 .cfi_def_cfa 7, 32 4043 0006 F860 str r0, [r7, #12] 4044 0008 0846 mov r0, r1 4045 000a 1146 mov r1, r2 4046 000c 1A46 mov r2, r3 4047 000e 0346 mov r3, r0 @ movhi 4048 0010 7B81 strh r3, [r7, #10] @ movhi 4049 0012 0B46 mov r3, r1 @ movhi 4050 0014 3B81 strh r3, [r7, #8] @ movhi 4051 0016 1346 mov r3, r2 @ movhi 4052 0018 FB80 strh r3, [r7, #6] @ movhi 2570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 2571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 2574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4053 .loc 1 2575 11 4054 001a FB68 ldr r3, [r7, #12] 4055 001c 93F84130 ldrb r3, [r3, #65] 4056 0020 DBB2 uxtb r3, r3 4057 .loc 1 2575 6 4058 0022 202B cmp r3, #32 4059 0024 40F0FD80 bne .L184 2576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4060 .loc 1 2577 8 4061 0028 3B6A ldr r3, [r7, #32] 4062 002a 002B cmp r3, #0 4063 002c 02D0 beq .L185 4064 .loc 1 2577 25 discriminator 1 4065 002e BB8C ldrh r3, [r7, #36] 4066 0030 002B cmp r3, #0 4067 0032 05D1 bne .L186 4068 .L185: 2578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4069 .loc 1 2579 23 4070 0034 FB68 ldr r3, [r7, #12] 4071 0036 4FF40072 mov r2, #512 4072 003a 5A64 str r2, [r3, #68] 2580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4073 .loc 1 2580 15 4074 003c 0123 movs r3, #1 4075 003e F1E0 b .L187 4076 .L186: 2581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 118 2582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4077 .loc 1 2584 5 4078 0040 FB68 ldr r3, [r7, #12] 4079 0042 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4080 0046 012B cmp r3, #1 4081 0048 01D1 bne .L188 4082 .loc 1 2584 5 is_stmt 0 discriminator 1 4083 004a 0223 movs r3, #2 4084 .loc 1 2584 5 4085 004c EAE0 b .L187 4086 .L188: 4087 .loc 1 2584 5 discriminator 2 4088 004e FB68 ldr r3, [r7, #12] 4089 0050 0122 movs r2, #1 4090 0052 83F84020 strb r2, [r3, #64] 2585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 2587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 4091 .loc 1 2587 17 is_stmt 1 4092 0056 FFF7FEFF bl HAL_GetTick 4093 005a 7861 str r0, [r7, #20] 2588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 4094 .loc 1 2589 9 4095 005c 7B69 ldr r3, [r7, #20] 4096 005e 0093 str r3, [sp] 4097 0060 1923 movs r3, #25 4098 0062 0122 movs r2, #1 4099 0064 4FF40041 mov r1, #32768 4100 0068 F868 ldr r0, [r7, #12] 4101 006a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4102 006e 0346 mov r3, r0 4103 .loc 1 2589 8 discriminator 1 4104 0070 002B cmp r3, #0 4105 0072 01D0 beq .L189 2590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4106 .loc 1 2591 14 4107 0074 0123 movs r3, #1 4108 0076 D5E0 b .L187 4109 .L189: 2592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 4110 .loc 1 2594 21 4111 0078 FB68 ldr r3, [r7, #12] 4112 007a 2222 movs r2, #34 4113 007c 83F84120 strb r2, [r3, #65] 2595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4114 .loc 1 2595 21 4115 0080 FB68 ldr r3, [r7, #12] 4116 0082 4022 movs r2, #64 4117 0084 83F84220 strb r2, [r3, #66] 2596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4118 .loc 1 2596 21 ARM GAS /tmp/cc5G5cqz.s page 119 4119 0088 FB68 ldr r3, [r7, #12] 4120 008a 0022 movs r2, #0 4121 008c 5A64 str r2, [r3, #68] 2597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4122 .loc 1 2599 21 4123 008e FB68 ldr r3, [r7, #12] 4124 0090 3A6A ldr r2, [r7, #32] 4125 0092 5A62 str r2, [r3, #36] 2600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4126 .loc 1 2600 21 4127 0094 FB68 ldr r3, [r7, #12] 4128 0096 BA8C ldrh r2, [r7, #36] @ movhi 4129 0098 5A85 strh r2, [r3, #42] @ movhi 2601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 4130 .loc 1 2601 21 4131 009a FB68 ldr r3, [r7, #12] 4132 009c 0022 movs r2, #0 4133 009e 5A63 str r2, [r3, #52] 2602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_ 4134 .loc 1 2604 9 4135 00a0 F888 ldrh r0, [r7, #6] 4136 00a2 3A89 ldrh r2, [r7, #8] 4137 00a4 7989 ldrh r1, [r7, #10] 4138 00a6 7B69 ldr r3, [r7, #20] 4139 00a8 0193 str r3, [sp, #4] 4140 00aa BB6A ldr r3, [r7, #40] 4141 00ac 0093 str r3, [sp] 4142 00ae 0346 mov r3, r0 4143 00b0 F868 ldr r0, [r7, #12] 4144 00b2 FFF7FEFF bl I2C_RequestMemoryRead 4145 00b6 0346 mov r3, r0 4146 .loc 1 2604 8 discriminator 1 4147 00b8 002B cmp r3, #0 4148 00ba 05D0 beq .L190 2605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4149 .loc 1 2607 7 4150 00bc FB68 ldr r3, [r7, #12] 4151 00be 0022 movs r2, #0 4152 00c0 83F84020 strb r2, [r3, #64] 2608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4153 .loc 1 2608 14 4154 00c4 0123 movs r3, #1 4155 00c6 ADE0 b .L187 4156 .L190: 2609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 2613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4157 .loc 1 2613 13 4158 00c8 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 120 4159 00ca 5B8D ldrh r3, [r3, #42] @ movhi 4160 00cc 9BB2 uxth r3, r3 4161 .loc 1 2613 8 4162 00ce FF2B cmp r3, #255 4163 00d0 0ED9 bls .L191 2614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 4164 .loc 1 2615 22 4165 00d2 FB68 ldr r3, [r7, #12] 4166 00d4 FF22 movs r2, #255 4167 00d6 1A85 strh r2, [r3, #40] @ movhi 2616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 4168 .loc 1 2616 57 4169 00d8 FB68 ldr r3, [r7, #12] 4170 00da 1B8D ldrh r3, [r3, #40] 4171 .loc 1 2616 7 4172 00dc DAB2 uxtb r2, r3 4173 00de 7989 ldrh r1, [r7, #10] 4174 00e0 524B ldr r3, .L199 4175 00e2 0093 str r3, [sp] 4176 00e4 4FF08073 mov r3, #16777216 4177 00e8 F868 ldr r0, [r7, #12] 4178 00ea FFF7FEFF bl I2C_TransferConfig 4179 00ee 0FE0 b .L197 4180 .L191: 2617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4181 .loc 1 2621 28 4182 00f0 FB68 ldr r3, [r7, #12] 4183 00f2 5B8D ldrh r3, [r3, #42] @ movhi 4184 00f4 9AB2 uxth r2, r3 4185 .loc 1 2621 22 4186 00f6 FB68 ldr r3, [r7, #12] 4187 00f8 1A85 strh r2, [r3, #40] @ movhi 2622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 4188 .loc 1 2622 57 4189 00fa FB68 ldr r3, [r7, #12] 4190 00fc 1B8D ldrh r3, [r3, #40] 4191 .loc 1 2622 7 4192 00fe DAB2 uxtb r2, r3 4193 0100 7989 ldrh r1, [r7, #10] 4194 0102 4A4B ldr r3, .L199 4195 0104 0093 str r3, [sp] 4196 0106 4FF00073 mov r3, #33554432 4197 010a F868 ldr r0, [r7, #12] 4198 010c FFF7FEFF bl I2C_TransferConfig 4199 .L197: 2623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 2627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 2629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) ARM GAS /tmp/cc5G5cqz.s page 121 4200 .loc 1 2629 11 4201 0110 7B69 ldr r3, [r7, #20] 4202 0112 0093 str r3, [sp] 4203 0114 BB6A ldr r3, [r7, #40] 4204 0116 0022 movs r2, #0 4205 0118 0421 movs r1, #4 4206 011a F868 ldr r0, [r7, #12] 4207 011c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4208 0120 0346 mov r3, r0 4209 .loc 1 2629 10 discriminator 1 4210 0122 002B cmp r3, #0 4211 0124 01D0 beq .L193 2630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4212 .loc 1 2631 16 4213 0126 0123 movs r3, #1 4214 0128 7CE0 b .L187 4215 .L193: 2632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 2635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 4216 .loc 1 2635 38 4217 012a FB68 ldr r3, [r7, #12] 4218 012c 1B68 ldr r3, [r3] 4219 .loc 1 2635 48 4220 012e 5A6A ldr r2, [r3, #36] 4221 .loc 1 2635 12 4222 0130 FB68 ldr r3, [r7, #12] 4223 0132 5B6A ldr r3, [r3, #36] 4224 .loc 1 2635 25 4225 0134 D2B2 uxtb r2, r2 4226 .loc 1 2635 23 4227 0136 1A70 strb r2, [r3] 2636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 4228 .loc 1 2638 11 4229 0138 FB68 ldr r3, [r7, #12] 4230 013a 5B6A ldr r3, [r3, #36] 4231 .loc 1 2638 21 4232 013c 5A1C adds r2, r3, #1 4233 013e FB68 ldr r3, [r7, #12] 4234 0140 5A62 str r2, [r3, #36] 2639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 4235 .loc 1 2640 11 4236 0142 FB68 ldr r3, [r7, #12] 4237 0144 1B8D ldrh r3, [r3, #40] 4238 .loc 1 2640 21 4239 0146 013B subs r3, r3, #1 4240 0148 9AB2 uxth r2, r3 4241 014a FB68 ldr r3, [r7, #12] 4242 014c 1A85 strh r2, [r3, #40] @ movhi 2641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 4243 .loc 1 2641 11 4244 014e FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 122 4245 0150 5B8D ldrh r3, [r3, #42] @ movhi 4246 0152 9BB2 uxth r3, r3 4247 .loc 1 2641 22 4248 0154 013B subs r3, r3, #1 4249 0156 9AB2 uxth r2, r3 4250 0158 FB68 ldr r3, [r7, #12] 4251 015a 5A85 strh r2, [r3, #42] @ movhi 2642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 4252 .loc 1 2643 16 4253 015c FB68 ldr r3, [r7, #12] 4254 015e 5B8D ldrh r3, [r3, #42] @ movhi 4255 0160 9BB2 uxth r3, r3 4256 .loc 1 2643 10 4257 0162 002B cmp r3, #0 4258 0164 34D0 beq .L194 4259 .loc 1 2643 43 discriminator 1 4260 0166 FB68 ldr r3, [r7, #12] 4261 0168 1B8D ldrh r3, [r3, #40] 4262 .loc 1 2643 35 discriminator 1 4263 016a 002B cmp r3, #0 4264 016c 30D1 bne .L194 2644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 2646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 4265 .loc 1 2646 13 4266 016e 7B69 ldr r3, [r7, #20] 4267 0170 0093 str r3, [sp] 4268 0172 BB6A ldr r3, [r7, #40] 4269 0174 0022 movs r2, #0 4270 0176 8021 movs r1, #128 4271 0178 F868 ldr r0, [r7, #12] 4272 017a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4273 017e 0346 mov r3, r0 4274 .loc 1 2646 12 discriminator 1 4275 0180 002B cmp r3, #0 4276 0182 01D0 beq .L195 2647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4277 .loc 1 2648 18 4278 0184 0123 movs r3, #1 4279 0186 4DE0 b .L187 4280 .L195: 2649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4281 .loc 1 2651 17 4282 0188 FB68 ldr r3, [r7, #12] 4283 018a 5B8D ldrh r3, [r3, #42] @ movhi 4284 018c 9BB2 uxth r3, r3 4285 .loc 1 2651 12 4286 018e FF2B cmp r3, #255 4287 0190 0ED9 bls .L196 2652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 4288 .loc 1 2653 26 4289 0192 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 123 4290 0194 FF22 movs r2, #255 4291 0196 1A85 strh r2, [r3, #40] @ movhi 2654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, 4292 .loc 1 2654 62 4293 0198 FB68 ldr r3, [r7, #12] 4294 019a 1B8D ldrh r3, [r3, #40] 4295 .loc 1 2654 11 4296 019c DAB2 uxtb r2, r3 4297 019e 7989 ldrh r1, [r7, #10] 4298 01a0 0023 movs r3, #0 4299 01a2 0093 str r3, [sp] 4300 01a4 4FF08073 mov r3, #16777216 4301 01a8 F868 ldr r0, [r7, #12] 4302 01aa FFF7FEFF bl I2C_TransferConfig 4303 01ae 0FE0 b .L194 4304 .L196: 2655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4305 .loc 1 2659 32 4306 01b0 FB68 ldr r3, [r7, #12] 4307 01b2 5B8D ldrh r3, [r3, #42] @ movhi 4308 01b4 9AB2 uxth r2, r3 4309 .loc 1 2659 26 4310 01b6 FB68 ldr r3, [r7, #12] 4311 01b8 1A85 strh r2, [r3, #40] @ movhi 2660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 4312 .loc 1 2660 61 4313 01ba FB68 ldr r3, [r7, #12] 4314 01bc 1B8D ldrh r3, [r3, #40] 4315 .loc 1 2660 11 4316 01be DAB2 uxtb r2, r3 4317 01c0 7989 ldrh r1, [r7, #10] 4318 01c2 0023 movs r3, #0 4319 01c4 0093 str r3, [sp] 4320 01c6 4FF00073 mov r3, #33554432 4321 01ca F868 ldr r0, [r7, #12] 4322 01cc FFF7FEFF bl I2C_TransferConfig 4323 .L194: 2661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); 4324 .loc 1 2664 18 4325 01d0 FB68 ldr r3, [r7, #12] 4326 01d2 5B8D ldrh r3, [r3, #42] @ movhi 4327 01d4 9BB2 uxth r3, r3 4328 .loc 1 2664 30 4329 01d6 002B cmp r3, #0 4330 01d8 9AD1 bne .L197 2665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 2667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 2668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 4331 .loc 1 2668 9 ARM GAS /tmp/cc5G5cqz.s page 124 4332 01da 7A69 ldr r2, [r7, #20] 4333 01dc B96A ldr r1, [r7, #40] 4334 01de F868 ldr r0, [r7, #12] 4335 01e0 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 4336 01e4 0346 mov r3, r0 4337 .loc 1 2668 8 discriminator 1 4338 01e6 002B cmp r3, #0 4339 01e8 01D0 beq .L198 2669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4340 .loc 1 2670 14 4341 01ea 0123 movs r3, #1 4342 01ec 1AE0 b .L187 4343 .L198: 2671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 2674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 4344 .loc 1 2674 5 4345 01ee FB68 ldr r3, [r7, #12] 4346 01f0 1B68 ldr r3, [r3] 4347 01f2 2022 movs r2, #32 4348 01f4 DA61 str r2, [r3, #28] 2675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 2677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 4349 .loc 1 2677 5 4350 01f6 FB68 ldr r3, [r7, #12] 4351 01f8 1B68 ldr r3, [r3] 4352 01fa 5968 ldr r1, [r3, #4] 4353 01fc FB68 ldr r3, [r7, #12] 4354 01fe 1A68 ldr r2, [r3] 4355 0200 0B4B ldr r3, .L199+4 4356 0202 0B40 ands r3, r3, r1 4357 0204 5360 str r3, [r2, #4] 2678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 4358 .loc 1 2679 17 4359 0206 FB68 ldr r3, [r7, #12] 4360 0208 2022 movs r2, #32 4361 020a 83F84120 strb r2, [r3, #65] 2680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4362 .loc 1 2680 17 4363 020e FB68 ldr r3, [r7, #12] 4364 0210 0022 movs r2, #0 4365 0212 83F84220 strb r2, [r3, #66] 2681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4366 .loc 1 2683 5 4367 0216 FB68 ldr r3, [r7, #12] 4368 0218 0022 movs r2, #0 4369 021a 83F84020 strb r2, [r3, #64] 2684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4370 .loc 1 2685 12 4371 021e 0023 movs r3, #0 ARM GAS /tmp/cc5G5cqz.s page 125 4372 0220 00E0 b .L187 4373 .L184: 2686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4374 .loc 1 2689 12 4375 0222 0223 movs r3, #2 4376 .L187: 2690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4377 .loc 1 2691 1 4378 0224 1846 mov r0, r3 4379 0226 1837 adds r7, r7, #24 4380 .cfi_def_cfa_offset 8 4381 0228 BD46 mov sp, r7 4382 .cfi_def_cfa_register 13 4383 @ sp needed 4384 022a 80BD pop {r7, pc} 4385 .L200: 4386 .align 2 4387 .L199: 4388 022c 00240080 .word -2147474432 4389 0230 00E800FE .word -33495040 4390 .cfi_endproc 4391 .LFE147: 4393 .section .text.HAL_I2C_Mem_Write_IT,"ax",%progbits 4394 .align 1 4395 .global HAL_I2C_Mem_Write_IT 4396 .syntax unified 4397 .thumb 4398 .thumb_func 4400 HAL_I2C_Mem_Write_IT: 4401 .LFB148: 2692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory addres 2694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd 2705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4402 .loc 1 2706 1 4403 .cfi_startproc 4404 @ args = 8, pretend = 0, frame = 16 4405 @ frame_needed = 1, uses_anonymous_args = 0 4406 0000 80B5 push {r7, lr} 4407 .cfi_def_cfa_offset 8 4408 .cfi_offset 7, -8 4409 .cfi_offset 14, -4 ARM GAS /tmp/cc5G5cqz.s page 126 4410 0002 86B0 sub sp, sp, #24 4411 .cfi_def_cfa_offset 32 4412 0004 02AF add r7, sp, #8 4413 .cfi_def_cfa 7, 24 4414 0006 F860 str r0, [r7, #12] 4415 0008 0846 mov r0, r1 4416 000a 1146 mov r1, r2 4417 000c 1A46 mov r2, r3 4418 000e 0346 mov r3, r0 @ movhi 4419 0010 7B81 strh r3, [r7, #10] @ movhi 4420 0012 0B46 mov r3, r1 @ movhi 4421 0014 3B81 strh r3, [r7, #8] @ movhi 4422 0016 1346 mov r3, r2 @ movhi 4423 0018 FB80 strh r3, [r7, #6] @ movhi 2707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 2709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4424 .loc 1 2710 11 4425 001a FB68 ldr r3, [r7, #12] 4426 001c 93F84130 ldrb r3, [r3, #65] 4427 0020 DBB2 uxtb r3, r3 4428 .loc 1 2710 6 4429 0022 202B cmp r3, #32 4430 0024 67D1 bne .L202 2711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4431 .loc 1 2712 8 4432 0026 BB69 ldr r3, [r7, #24] 4433 0028 002B cmp r3, #0 4434 002a 02D0 beq .L203 4435 .loc 1 2712 25 discriminator 1 4436 002c BB8B ldrh r3, [r7, #28] 4437 002e 002B cmp r3, #0 4438 0030 05D1 bne .L204 4439 .L203: 2713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4440 .loc 1 2714 23 4441 0032 FB68 ldr r3, [r7, #12] 4442 0034 4FF40072 mov r2, #512 4443 0038 5A64 str r2, [r3, #68] 2715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4444 .loc 1 2715 15 4445 003a 0123 movs r3, #1 4446 003c 5CE0 b .L205 4447 .L204: 2716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 4448 .loc 1 2718 9 4449 003e FB68 ldr r3, [r7, #12] 4450 0040 1B68 ldr r3, [r3] 4451 0042 9B69 ldr r3, [r3, #24] 4452 0044 03F40043 and r3, r3, #32768 4453 .loc 1 2718 8 4454 0048 B3F5004F cmp r3, #32768 ARM GAS /tmp/cc5G5cqz.s page 127 4455 004c 01D1 bne .L206 2719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4456 .loc 1 2720 14 4457 004e 0223 movs r3, #2 4458 0050 52E0 b .L205 4459 .L206: 2721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4460 .loc 1 2724 5 4461 0052 FB68 ldr r3, [r7, #12] 4462 0054 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4463 0058 012B cmp r3, #1 4464 005a 01D1 bne .L207 4465 .loc 1 2724 5 is_stmt 0 discriminator 1 4466 005c 0223 movs r3, #2 4467 .loc 1 2724 5 4468 005e 4BE0 b .L205 4469 .L207: 4470 .loc 1 2724 5 discriminator 2 4471 0060 FB68 ldr r3, [r7, #12] 4472 0062 0122 movs r2, #1 4473 0064 83F84020 strb r2, [r3, #64] 2725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 4474 .loc 1 2726 23 is_stmt 1 4475 0068 FB68 ldr r3, [r7, #12] 4476 006a 2122 movs r2, #33 4477 006c 83F84120 strb r2, [r3, #65] 2727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4478 .loc 1 2727 23 4479 0070 FB68 ldr r3, [r7, #12] 4480 0072 4022 movs r2, #64 4481 0074 83F84220 strb r2, [r3, #66] 2728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4482 .loc 1 2728 23 4483 0078 FB68 ldr r3, [r7, #12] 4484 007a 0022 movs r2, #0 4485 007c 5A64 str r2, [r3, #68] 2729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4486 .loc 1 2731 23 4487 007e FB68 ldr r3, [r7, #12] 4488 0080 BA69 ldr r2, [r7, #24] 4489 0082 5A62 str r2, [r3, #36] 2732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4490 .loc 1 2732 23 4491 0084 FB68 ldr r3, [r7, #12] 4492 0086 BA8B ldrh r2, [r7, #28] @ movhi 4493 0088 5A85 strh r2, [r3, #42] @ movhi 2733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 4494 .loc 1 2733 23 4495 008a FB68 ldr r3, [r7, #12] 4496 008c 1C4A ldr r2, .L210 ARM GAS /tmp/cc5G5cqz.s page 128 4497 008e DA62 str r2, [r3, #44] 2734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; 4498 .loc 1 2734 23 4499 0090 FB68 ldr r3, [r7, #12] 4500 0092 1C4A ldr r2, .L210+4 4501 0094 5A63 str r2, [r3, #52] 2735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 4502 .loc 1 2735 23 4503 0096 7A89 ldrh r2, [r7, #10] 4504 0098 FB68 ldr r3, [r7, #12] 4505 009a DA64 str r2, [r3, #76] 2736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 2738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 4506 .loc 1 2738 8 4507 009c FB88 ldrh r3, [r7, #6] 4508 009e 012B cmp r3, #1 4509 00a0 09D1 bne .L208 2739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 2741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 4510 .loc 1 2741 30 4511 00a2 3B89 ldrh r3, [r7, #8] @ movhi 4512 00a4 DAB2 uxtb r2, r3 4513 .loc 1 2741 11 4514 00a6 FB68 ldr r3, [r7, #12] 4515 00a8 1B68 ldr r3, [r3] 4516 .loc 1 2741 28 4517 00aa 9A62 str r2, [r3, #40] 2742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 2744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 4518 .loc 1 2744 24 4519 00ac FB68 ldr r3, [r7, #12] 4520 00ae 4FF0FF32 mov r2, #-1 4521 00b2 1A65 str r2, [r3, #80] 4522 00b4 0BE0 b .L209 4523 .L208: 2745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 2747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 2750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 4524 .loc 1 2750 30 4525 00b6 3B89 ldrh r3, [r7, #8] 4526 00b8 1B0A lsrs r3, r3, #8 4527 00ba 9BB2 uxth r3, r3 4528 00bc DAB2 uxtb r2, r3 4529 .loc 1 2750 11 4530 00be FB68 ldr r3, [r7, #12] 4531 00c0 1B68 ldr r3, [r3] 4532 .loc 1 2750 28 4533 00c2 9A62 str r2, [r3, #40] 2751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 2753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); ARM GAS /tmp/cc5G5cqz.s page 129 4534 .loc 1 2753 26 4535 00c4 3B89 ldrh r3, [r7, #8] @ movhi 4536 00c6 DBB2 uxtb r3, r3 4537 00c8 1A46 mov r2, r3 4538 .loc 1 2753 24 4539 00ca FB68 ldr r3, [r7, #12] 4540 00cc 1A65 str r2, [r3, #80] 4541 .L209: 2754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_W 4542 .loc 1 2756 5 4543 00ce FB88 ldrh r3, [r7, #6] @ movhi 4544 00d0 DAB2 uxtb r2, r3 4545 00d2 7989 ldrh r1, [r7, #10] 4546 00d4 0C4B ldr r3, .L210+8 4547 00d6 0093 str r3, [sp] 4548 00d8 4FF08073 mov r3, #16777216 4549 00dc F868 ldr r0, [r7, #12] 4550 00de FFF7FEFF bl I2C_TransferConfig 2757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4551 .loc 1 2759 5 4552 00e2 FB68 ldr r3, [r7, #12] 4553 00e4 0022 movs r2, #0 4554 00e6 83F84020 strb r2, [r3, #64] 2760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 4555 .loc 1 2769 5 4556 00ea 0121 movs r1, #1 4557 00ec F868 ldr r0, [r7, #12] 4558 00ee FFF7FEFF bl I2C_Enable_IRQ 2770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4559 .loc 1 2771 12 4560 00f2 0023 movs r3, #0 4561 00f4 00E0 b .L205 4562 .L202: 2772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4563 .loc 1 2775 12 4564 00f6 0223 movs r3, #2 4565 .L205: 2776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4566 .loc 1 2777 1 ARM GAS /tmp/cc5G5cqz.s page 130 4567 00f8 1846 mov r0, r3 4568 00fa 1037 adds r7, r7, #16 4569 .cfi_def_cfa_offset 8 4570 00fc BD46 mov sp, r7 4571 .cfi_def_cfa_register 13 4572 @ sp needed 4573 00fe 80BD pop {r7, pc} 4574 .L211: 4575 .align 2 4576 .L210: 4577 0100 0000FFFF .word -65536 4578 0104 00000000 .word I2C_Mem_ISR_IT 4579 0108 00200080 .word -2147475456 4580 .cfi_endproc 4581 .LFE148: 4583 .section .text.HAL_I2C_Mem_Read_IT,"ax",%progbits 4584 .align 1 4585 .global HAL_I2C_Mem_Read_IT 4586 .syntax unified 4587 .thumb 4588 .thumb_func 4590 HAL_I2C_Mem_Read_IT: 4591 .LFB149: 2778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory addre 2781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd 2792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4592 .loc 1 2793 1 4593 .cfi_startproc 4594 @ args = 8, pretend = 0, frame = 16 4595 @ frame_needed = 1, uses_anonymous_args = 0 4596 0000 80B5 push {r7, lr} 4597 .cfi_def_cfa_offset 8 4598 .cfi_offset 7, -8 4599 .cfi_offset 14, -4 4600 0002 86B0 sub sp, sp, #24 4601 .cfi_def_cfa_offset 32 4602 0004 02AF add r7, sp, #8 4603 .cfi_def_cfa 7, 24 4604 0006 F860 str r0, [r7, #12] 4605 0008 0846 mov r0, r1 4606 000a 1146 mov r1, r2 4607 000c 1A46 mov r2, r3 4608 000e 0346 mov r3, r0 @ movhi 4609 0010 7B81 strh r3, [r7, #10] @ movhi ARM GAS /tmp/cc5G5cqz.s page 131 4610 0012 0B46 mov r3, r1 @ movhi 4611 0014 3B81 strh r3, [r7, #8] @ movhi 4612 0016 1346 mov r3, r2 @ movhi 4613 0018 FB80 strh r3, [r7, #6] @ movhi 2794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 2796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4614 .loc 1 2797 11 4615 001a FB68 ldr r3, [r7, #12] 4616 001c 93F84130 ldrb r3, [r3, #65] 4617 0020 DBB2 uxtb r3, r3 4618 .loc 1 2797 6 4619 0022 202B cmp r3, #32 4620 0024 66D1 bne .L213 2798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4621 .loc 1 2799 8 4622 0026 BB69 ldr r3, [r7, #24] 4623 0028 002B cmp r3, #0 4624 002a 02D0 beq .L214 4625 .loc 1 2799 25 discriminator 1 4626 002c BB8B ldrh r3, [r7, #28] 4627 002e 002B cmp r3, #0 4628 0030 05D1 bne .L215 4629 .L214: 2800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4630 .loc 1 2801 23 4631 0032 FB68 ldr r3, [r7, #12] 4632 0034 4FF40072 mov r2, #512 4633 0038 5A64 str r2, [r3, #68] 2802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4634 .loc 1 2802 15 4635 003a 0123 movs r3, #1 4636 003c 5BE0 b .L216 4637 .L215: 2803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 4638 .loc 1 2805 9 4639 003e FB68 ldr r3, [r7, #12] 4640 0040 1B68 ldr r3, [r3] 4641 0042 9B69 ldr r3, [r3, #24] 4642 0044 03F40043 and r3, r3, #32768 4643 .loc 1 2805 8 4644 0048 B3F5004F cmp r3, #32768 4645 004c 01D1 bne .L217 2806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4646 .loc 1 2807 14 4647 004e 0223 movs r3, #2 4648 0050 51E0 b .L216 4649 .L217: 2808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ ARM GAS /tmp/cc5G5cqz.s page 132 2811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4650 .loc 1 2811 5 4651 0052 FB68 ldr r3, [r7, #12] 4652 0054 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4653 0058 012B cmp r3, #1 4654 005a 01D1 bne .L218 4655 .loc 1 2811 5 is_stmt 0 discriminator 1 4656 005c 0223 movs r3, #2 4657 .loc 1 2811 5 4658 005e 4AE0 b .L216 4659 .L218: 4660 .loc 1 2811 5 discriminator 2 4661 0060 FB68 ldr r3, [r7, #12] 4662 0062 0122 movs r2, #1 4663 0064 83F84020 strb r2, [r3, #64] 2812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 4664 .loc 1 2813 23 is_stmt 1 4665 0068 FB68 ldr r3, [r7, #12] 4666 006a 2222 movs r2, #34 4667 006c 83F84120 strb r2, [r3, #65] 2814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4668 .loc 1 2814 23 4669 0070 FB68 ldr r3, [r7, #12] 4670 0072 4022 movs r2, #64 4671 0074 83F84220 strb r2, [r3, #66] 2815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4672 .loc 1 2815 23 4673 0078 FB68 ldr r3, [r7, #12] 4674 007a 0022 movs r2, #0 4675 007c 5A64 str r2, [r3, #68] 2816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4676 .loc 1 2818 23 4677 007e FB68 ldr r3, [r7, #12] 4678 0080 BA69 ldr r2, [r7, #24] 4679 0082 5A62 str r2, [r3, #36] 2819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4680 .loc 1 2819 23 4681 0084 FB68 ldr r3, [r7, #12] 4682 0086 BA8B ldrh r2, [r7, #28] @ movhi 4683 0088 5A85 strh r2, [r3, #42] @ movhi 2820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 4684 .loc 1 2820 23 4685 008a FB68 ldr r3, [r7, #12] 4686 008c 1C4A ldr r2, .L221 4687 008e DA62 str r2, [r3, #44] 2821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; 4688 .loc 1 2821 23 4689 0090 FB68 ldr r3, [r7, #12] 4690 0092 1C4A ldr r2, .L221+4 4691 0094 5A63 str r2, [r3, #52] 2822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 4692 .loc 1 2822 23 4693 0096 7A89 ldrh r2, [r7, #10] 4694 0098 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 133 4695 009a DA64 str r2, [r3, #76] 2823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 2825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 4696 .loc 1 2825 8 4697 009c FB88 ldrh r3, [r7, #6] 4698 009e 012B cmp r3, #1 4699 00a0 09D1 bne .L219 2826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 2828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 4700 .loc 1 2828 30 4701 00a2 3B89 ldrh r3, [r7, #8] @ movhi 4702 00a4 DAB2 uxtb r2, r3 4703 .loc 1 2828 11 4704 00a6 FB68 ldr r3, [r7, #12] 4705 00a8 1B68 ldr r3, [r3] 4706 .loc 1 2828 28 4707 00aa 9A62 str r2, [r3, #40] 2829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 2831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 4708 .loc 1 2831 24 4709 00ac FB68 ldr r3, [r7, #12] 4710 00ae 4FF0FF32 mov r2, #-1 4711 00b2 1A65 str r2, [r3, #80] 4712 00b4 0BE0 b .L220 4713 .L219: 2832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 2834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 2837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 4714 .loc 1 2837 30 4715 00b6 3B89 ldrh r3, [r7, #8] 4716 00b8 1B0A lsrs r3, r3, #8 4717 00ba 9BB2 uxth r3, r3 4718 00bc DAB2 uxtb r2, r3 4719 .loc 1 2837 11 4720 00be FB68 ldr r3, [r7, #12] 4721 00c0 1B68 ldr r3, [r3] 4722 .loc 1 2837 28 4723 00c2 9A62 str r2, [r3, #40] 2838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 2840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 4724 .loc 1 2840 26 4725 00c4 3B89 ldrh r3, [r7, #8] @ movhi 4726 00c6 DBB2 uxtb r3, r3 4727 00c8 1A46 mov r2, r3 4728 .loc 1 2840 24 4729 00ca FB68 ldr r3, [r7, #12] 4730 00cc 1A65 str r2, [r3, #80] 4731 .L220: 2841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ ARM GAS /tmp/cc5G5cqz.s page 134 2843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_ 4732 .loc 1 2843 5 4733 00ce FB88 ldrh r3, [r7, #6] @ movhi 4734 00d0 DAB2 uxtb r2, r3 4735 00d2 7989 ldrh r1, [r7, #10] 4736 00d4 0C4B ldr r3, .L221+8 4737 00d6 0093 str r3, [sp] 4738 00d8 0023 movs r3, #0 4739 00da F868 ldr r0, [r7, #12] 4740 00dc FFF7FEFF bl I2C_TransferConfig 2844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4741 .loc 1 2846 5 4742 00e0 FB68 ldr r3, [r7, #12] 4743 00e2 0022 movs r2, #0 4744 00e4 83F84020 strb r2, [r3, #64] 2847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 2853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, (I2C_XFER_TX_IT | I2C_XFER_RX_IT)); 4745 .loc 1 2856 5 4746 00e8 0321 movs r1, #3 4747 00ea F868 ldr r0, [r7, #12] 4748 00ec FFF7FEFF bl I2C_Enable_IRQ 2857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4749 .loc 1 2858 12 4750 00f0 0023 movs r3, #0 4751 00f2 00E0 b .L216 4752 .L213: 2859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4753 .loc 1 2862 12 4754 00f4 0223 movs r3, #2 4755 .L216: 2863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4756 .loc 1 2864 1 4757 00f6 1846 mov r0, r3 4758 00f8 1037 adds r7, r7, #16 4759 .cfi_def_cfa_offset 8 4760 00fa BD46 mov sp, r7 4761 .cfi_def_cfa_register 13 4762 @ sp needed 4763 00fc 80BD pop {r7, pc} 4764 .L222: 4765 00fe 00BF .align 2 4766 .L221: ARM GAS /tmp/cc5G5cqz.s page 135 4767 0100 0000FFFF .word -65536 4768 0104 00000000 .word I2C_Mem_ISR_IT 4769 0108 00200080 .word -2147475456 4770 .cfi_endproc 4771 .LFE149: 4773 .section .text.HAL_I2C_Mem_Write_DMA,"ax",%progbits 4774 .align 1 4775 .global HAL_I2C_Mem_Write_DMA 4776 .syntax unified 4777 .thumb 4778 .thumb_func 4780 HAL_I2C_Mem_Write_DMA: 4781 .LFB150: 2865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address 2868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA 2879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4782 .loc 1 2880 1 4783 .cfi_startproc 4784 @ args = 8, pretend = 0, frame = 24 4785 @ frame_needed = 1, uses_anonymous_args = 0 4786 0000 80B5 push {r7, lr} 4787 .cfi_def_cfa_offset 8 4788 .cfi_offset 7, -8 4789 .cfi_offset 14, -4 4790 0002 88B0 sub sp, sp, #32 4791 .cfi_def_cfa_offset 40 4792 0004 02AF add r7, sp, #8 4793 .cfi_def_cfa 7, 32 4794 0006 F860 str r0, [r7, #12] 4795 0008 0846 mov r0, r1 4796 000a 1146 mov r1, r2 4797 000c 1A46 mov r2, r3 4798 000e 0346 mov r3, r0 @ movhi 4799 0010 7B81 strh r3, [r7, #10] @ movhi 4800 0012 0B46 mov r3, r1 @ movhi 4801 0014 3B81 strh r3, [r7, #8] @ movhi 4802 0016 1346 mov r3, r2 @ movhi 4803 0018 FB80 strh r3, [r7, #6] @ movhi 2881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 2885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) ARM GAS /tmp/cc5G5cqz.s page 136 4804 .loc 1 2886 11 4805 001a FB68 ldr r3, [r7, #12] 4806 001c 93F84130 ldrb r3, [r3, #65] 4807 0020 DBB2 uxtb r3, r3 4808 .loc 1 2886 6 4809 0022 202B cmp r3, #32 4810 0024 40F0C380 bne .L224 2887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4811 .loc 1 2888 8 4812 0028 3B6A ldr r3, [r7, #32] 4813 002a 002B cmp r3, #0 4814 002c 02D0 beq .L225 4815 .loc 1 2888 25 discriminator 1 4816 002e BB8C ldrh r3, [r7, #36] 4817 0030 002B cmp r3, #0 4818 0032 05D1 bne .L226 4819 .L225: 2889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4820 .loc 1 2890 23 4821 0034 FB68 ldr r3, [r7, #12] 4822 0036 4FF40072 mov r2, #512 4823 003a 5A64 str r2, [r3, #68] 2891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4824 .loc 1 2891 15 4825 003c 0123 movs r3, #1 4826 003e B7E0 b .L227 4827 .L226: 2892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 4828 .loc 1 2894 9 4829 0040 FB68 ldr r3, [r7, #12] 4830 0042 1B68 ldr r3, [r3] 4831 0044 9B69 ldr r3, [r3, #24] 4832 0046 03F40043 and r3, r3, #32768 4833 .loc 1 2894 8 4834 004a B3F5004F cmp r3, #32768 4835 004e 01D1 bne .L228 2895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4836 .loc 1 2896 14 4837 0050 0223 movs r3, #2 4838 0052 ADE0 b .L227 4839 .L228: 2897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4840 .loc 1 2900 5 4841 0054 FB68 ldr r3, [r7, #12] 4842 0056 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4843 005a 012B cmp r3, #1 4844 005c 01D1 bne .L229 4845 .loc 1 2900 5 is_stmt 0 discriminator 1 4846 005e 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 137 4847 .loc 1 2900 5 4848 0060 A6E0 b .L227 4849 .L229: 4850 .loc 1 2900 5 discriminator 2 4851 0062 FB68 ldr r3, [r7, #12] 4852 0064 0122 movs r2, #1 4853 0066 83F84020 strb r2, [r3, #64] 2901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 4854 .loc 1 2902 23 is_stmt 1 4855 006a FB68 ldr r3, [r7, #12] 4856 006c 2122 movs r2, #33 4857 006e 83F84120 strb r2, [r3, #65] 2903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4858 .loc 1 2903 23 4859 0072 FB68 ldr r3, [r7, #12] 4860 0074 4022 movs r2, #64 4861 0076 83F84220 strb r2, [r3, #66] 2904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4862 .loc 1 2904 23 4863 007a FB68 ldr r3, [r7, #12] 4864 007c 0022 movs r2, #0 4865 007e 5A64 str r2, [r3, #68] 2905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4866 .loc 1 2907 23 4867 0080 FB68 ldr r3, [r7, #12] 4868 0082 3A6A ldr r2, [r7, #32] 4869 0084 5A62 str r2, [r3, #36] 2908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4870 .loc 1 2908 23 4871 0086 FB68 ldr r3, [r7, #12] 4872 0088 BA8C ldrh r2, [r7, #36] @ movhi 4873 008a 5A85 strh r2, [r3, #42] @ movhi 2909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 4874 .loc 1 2909 23 4875 008c FB68 ldr r3, [r7, #12] 4876 008e 4A4A ldr r2, .L239 4877 0090 DA62 str r2, [r3, #44] 2910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; 4878 .loc 1 2910 23 4879 0092 FB68 ldr r3, [r7, #12] 4880 0094 494A ldr r2, .L239+4 4881 0096 5A63 str r2, [r3, #52] 2911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 4882 .loc 1 2911 23 4883 0098 7A89 ldrh r2, [r7, #10] 4884 009a FB68 ldr r3, [r7, #12] 4885 009c DA64 str r2, [r3, #76] 2912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4886 .loc 1 2913 13 4887 009e FB68 ldr r3, [r7, #12] 4888 00a0 5B8D ldrh r3, [r3, #42] @ movhi 4889 00a2 9BB2 uxth r3, r3 4890 .loc 1 2913 8 ARM GAS /tmp/cc5G5cqz.s page 138 4891 00a4 FF2B cmp r3, #255 4892 00a6 03D9 bls .L230 2914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 4893 .loc 1 2915 22 4894 00a8 FB68 ldr r3, [r7, #12] 4895 00aa FF22 movs r2, #255 4896 00ac 1A85 strh r2, [r3, #40] @ movhi 4897 00ae 04E0 b .L231 4898 .L230: 2916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4899 .loc 1 2919 28 4900 00b0 FB68 ldr r3, [r7, #12] 4901 00b2 5B8D ldrh r3, [r3, #42] @ movhi 4902 00b4 9AB2 uxth r2, r3 4903 .loc 1 2919 22 4904 00b6 FB68 ldr r3, [r7, #12] 4905 00b8 1A85 strh r2, [r3, #40] @ movhi 4906 .L231: 2920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 2923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 4907 .loc 1 2923 8 4908 00ba FB88 ldrh r3, [r7, #6] 4909 00bc 012B cmp r3, #1 4910 00be 09D1 bne .L232 2924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 2926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 4911 .loc 1 2926 30 4912 00c0 3B89 ldrh r3, [r7, #8] @ movhi 4913 00c2 DAB2 uxtb r2, r3 4914 .loc 1 2926 11 4915 00c4 FB68 ldr r3, [r7, #12] 4916 00c6 1B68 ldr r3, [r3] 4917 .loc 1 2926 28 4918 00c8 9A62 str r2, [r3, #40] 2927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 2929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 4919 .loc 1 2929 24 4920 00ca FB68 ldr r3, [r7, #12] 4921 00cc 4FF0FF32 mov r2, #-1 4922 00d0 1A65 str r2, [r3, #80] 4923 00d2 0BE0 b .L233 4924 .L232: 2930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 2932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 2935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 4925 .loc 1 2935 30 ARM GAS /tmp/cc5G5cqz.s page 139 4926 00d4 3B89 ldrh r3, [r7, #8] 4927 00d6 1B0A lsrs r3, r3, #8 4928 00d8 9BB2 uxth r3, r3 4929 00da DAB2 uxtb r2, r3 4930 .loc 1 2935 11 4931 00dc FB68 ldr r3, [r7, #12] 4932 00de 1B68 ldr r3, [r3] 4933 .loc 1 2935 28 4934 00e0 9A62 str r2, [r3, #40] 2936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 2938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 4935 .loc 1 2938 26 4936 00e2 3B89 ldrh r3, [r7, #8] @ movhi 4937 00e4 DBB2 uxtb r3, r3 4938 00e6 1A46 mov r2, r3 4939 .loc 1 2938 24 4940 00e8 FB68 ldr r3, [r7, #12] 4941 00ea 1A65 str r2, [r3, #80] 4942 .L233: 2939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 4943 .loc 1 2941 13 4944 00ec FB68 ldr r3, [r7, #12] 4945 00ee 9B6B ldr r3, [r3, #56] 4946 .loc 1 2941 8 4947 00f0 002B cmp r3, #0 4948 00f2 20D0 beq .L234 2942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 4949 .loc 1 2944 11 4950 00f4 FB68 ldr r3, [r7, #12] 4951 00f6 9B6B ldr r3, [r3, #56] 4952 .loc 1 2944 38 4953 00f8 314A ldr r2, .L239+8 4954 00fa 9A62 str r2, [r3, #40] 2945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 4955 .loc 1 2947 11 4956 00fc FB68 ldr r3, [r7, #12] 4957 00fe 9B6B ldr r3, [r3, #56] 4958 .loc 1 2947 39 4959 0100 304A ldr r2, .L239+12 4960 0102 1A63 str r2, [r3, #48] 2948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 4961 .loc 1 2950 11 4962 0104 FB68 ldr r3, [r7, #12] 4963 0106 9B6B ldr r3, [r3, #56] 4964 .loc 1 2950 42 4965 0108 0022 movs r2, #0 4966 010a DA62 str r2, [r3, #44] 2951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; ARM GAS /tmp/cc5G5cqz.s page 140 4967 .loc 1 2951 11 4968 010c FB68 ldr r3, [r7, #12] 4969 010e 9B6B ldr r3, [r3, #56] 4970 .loc 1 2951 39 4971 0110 0022 movs r2, #0 4972 0112 5A63 str r2, [r3, #52] 2952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX 4973 .loc 1 2954 23 4974 0114 FB68 ldr r3, [r7, #12] 4975 0116 986B ldr r0, [r3, #56] 4976 0118 396A ldr r1, [r7, #32] 4977 .loc 1 2954 86 4978 011a FB68 ldr r3, [r7, #12] 4979 011c 1B68 ldr r3, [r3] 4980 .loc 1 2954 81 4981 011e 2833 adds r3, r3, #40 4982 .loc 1 2954 23 4983 0120 1A46 mov r2, r3 2955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 4984 .loc 1 2955 44 4985 0122 FB68 ldr r3, [r7, #12] 4986 0124 1B8D ldrh r3, [r3, #40] 2954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 4987 .loc 1 2954 23 4988 0126 FFF7FEFF bl HAL_DMA_Start_IT 4989 012a 0346 mov r3, r0 4990 012c FB75 strb r3, [r7, #23] 2956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 4991 .loc 1 2972 8 4992 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 4993 0130 002B cmp r3, #0 4994 0132 28D1 bne .L236 4995 0134 13E0 b .L238 4996 .L234: 2960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4997 .loc 1 2960 23 4998 0136 FB68 ldr r3, [r7, #12] 4999 0138 2022 movs r2, #32 5000 013a 83F84120 strb r2, [r3, #65] ARM GAS /tmp/cc5G5cqz.s page 141 2961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5001 .loc 1 2961 23 5002 013e FB68 ldr r3, [r7, #12] 5003 0140 0022 movs r2, #0 5004 0142 83F84220 strb r2, [r3, #66] 2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5005 .loc 1 2964 11 5006 0146 FB68 ldr r3, [r7, #12] 5007 0148 5B6C ldr r3, [r3, #68] 2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5008 .loc 1 2964 23 5009 014a 43F08002 orr r2, r3, #128 5010 014e FB68 ldr r3, [r7, #12] 5011 0150 5A64 str r2, [r3, #68] 2967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5012 .loc 1 2967 7 5013 0152 FB68 ldr r3, [r7, #12] 5014 0154 0022 movs r2, #0 5015 0156 83F84020 strb r2, [r3, #64] 2969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5016 .loc 1 2969 14 5017 015a 0123 movs r3, #1 5018 015c 28E0 b .L227 5019 .L238: 2973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START 5020 .loc 1 2975 7 5021 015e FB88 ldrh r3, [r7, #6] @ movhi 5022 0160 DAB2 uxtb r2, r3 5023 0162 7989 ldrh r1, [r7, #10] 5024 0164 184B ldr r3, .L239+16 5025 0166 0093 str r3, [sp] 5026 0168 4FF08073 mov r3, #16777216 5027 016c F868 ldr r0, [r7, #12] 5028 016e FFF7FEFF bl I2C_TransferConfig 2976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5029 .loc 1 2978 7 5030 0172 FB68 ldr r3, [r7, #12] 5031 0174 0022 movs r2, #0 5032 0176 83F84020 strb r2, [r3, #64] 2979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5033 .loc 1 2987 7 5034 017a 0121 movs r1, #1 5035 017c F868 ldr r0, [r7, #12] 5036 017e FFF7FEFF bl I2C_Enable_IRQ 2988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 142 2989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 2997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5037 .loc 1 3004 12 5038 0182 0023 movs r3, #0 5039 0184 14E0 b .L227 5040 .L236: 2992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5041 .loc 1 2992 23 5042 0186 FB68 ldr r3, [r7, #12] 5043 0188 2022 movs r2, #32 5044 018a 83F84120 strb r2, [r3, #65] 2993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5045 .loc 1 2993 23 5046 018e FB68 ldr r3, [r7, #12] 5047 0190 0022 movs r2, #0 5048 0192 83F84220 strb r2, [r3, #66] 2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5049 .loc 1 2996 11 5050 0196 FB68 ldr r3, [r7, #12] 5051 0198 5B6C ldr r3, [r3, #68] 2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5052 .loc 1 2996 23 5053 019a 43F01002 orr r2, r3, #16 5054 019e FB68 ldr r3, [r7, #12] 5055 01a0 5A64 str r2, [r3, #68] 2999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5056 .loc 1 2999 7 5057 01a2 FB68 ldr r3, [r7, #12] 5058 01a4 0022 movs r2, #0 5059 01a6 83F84020 strb r2, [r3, #64] 3001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5060 .loc 1 3001 14 5061 01aa 0123 movs r3, #1 5062 01ac 00E0 b .L227 5063 .L224: 3005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5064 .loc 1 3008 12 5065 01ae 0223 movs r3, #2 5066 .L227: 3009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 143 3010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5067 .loc 1 3010 1 5068 01b0 1846 mov r0, r3 5069 01b2 1837 adds r7, r7, #24 5070 .cfi_def_cfa_offset 8 5071 01b4 BD46 mov sp, r7 5072 .cfi_def_cfa_register 13 5073 @ sp needed 5074 01b6 80BD pop {r7, pc} 5075 .L240: 5076 .align 2 5077 .L239: 5078 01b8 0000FFFF .word -65536 5079 01bc 00000000 .word I2C_Mem_ISR_DMA 5080 01c0 00000000 .word I2C_DMAMasterTransmitCplt 5081 01c4 00000000 .word I2C_DMAError 5082 01c8 00200080 .word -2147475456 5083 .cfi_endproc 5084 .LFE150: 5086 .section .text.HAL_I2C_Mem_Read_DMA,"ax",%progbits 5087 .align 1 5088 .global HAL_I2C_Mem_Read_DMA 5089 .syntax unified 5090 .thumb 5091 .thumb_func 5093 HAL_I2C_Mem_Read_DMA: 5094 .LFB151: 3011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address. 3014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 3019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 3020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be read 3022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd 3025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 3026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5095 .loc 1 3026 1 5096 .cfi_startproc 5097 @ args = 8, pretend = 0, frame = 24 5098 @ frame_needed = 1, uses_anonymous_args = 0 5099 0000 80B5 push {r7, lr} 5100 .cfi_def_cfa_offset 8 5101 .cfi_offset 7, -8 5102 .cfi_offset 14, -4 5103 0002 88B0 sub sp, sp, #32 5104 .cfi_def_cfa_offset 40 5105 0004 02AF add r7, sp, #8 5106 .cfi_def_cfa 7, 32 5107 0006 F860 str r0, [r7, #12] 5108 0008 0846 mov r0, r1 ARM GAS /tmp/cc5G5cqz.s page 144 5109 000a 1146 mov r1, r2 5110 000c 1A46 mov r2, r3 5111 000e 0346 mov r3, r0 @ movhi 5112 0010 7B81 strh r3, [r7, #10] @ movhi 5113 0012 0B46 mov r3, r1 @ movhi 5114 0014 3B81 strh r3, [r7, #8] @ movhi 5115 0016 1346 mov r3, r2 @ movhi 5116 0018 FB80 strh r3, [r7, #6] @ movhi 3027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 3031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5117 .loc 1 3032 11 5118 001a FB68 ldr r3, [r7, #12] 5119 001c 93F84130 ldrb r3, [r3, #65] 5120 0020 DBB2 uxtb r3, r3 5121 .loc 1 3032 6 5122 0022 202B cmp r3, #32 5123 0024 40F0C280 bne .L242 3033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 5124 .loc 1 3034 8 5125 0028 3B6A ldr r3, [r7, #32] 5126 002a 002B cmp r3, #0 5127 002c 02D0 beq .L243 5128 .loc 1 3034 25 discriminator 1 5129 002e BB8C ldrh r3, [r7, #36] 5130 0030 002B cmp r3, #0 5131 0032 05D1 bne .L244 5132 .L243: 3035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 5133 .loc 1 3036 23 5134 0034 FB68 ldr r3, [r7, #12] 5135 0036 4FF40072 mov r2, #512 5136 003a 5A64 str r2, [r3, #68] 3037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5137 .loc 1 3037 15 5138 003c 0123 movs r3, #1 5139 003e B6E0 b .L245 5140 .L244: 3038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5141 .loc 1 3040 9 5142 0040 FB68 ldr r3, [r7, #12] 5143 0042 1B68 ldr r3, [r3] 5144 0044 9B69 ldr r3, [r3, #24] 5145 0046 03F40043 and r3, r3, #32768 5146 .loc 1 3040 8 5147 004a B3F5004F cmp r3, #32768 5148 004e 01D1 bne .L246 3041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5149 .loc 1 3042 14 ARM GAS /tmp/cc5G5cqz.s page 145 5150 0050 0223 movs r3, #2 5151 0052 ACE0 b .L245 5152 .L246: 3043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5153 .loc 1 3046 5 5154 0054 FB68 ldr r3, [r7, #12] 5155 0056 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5156 005a 012B cmp r3, #1 5157 005c 01D1 bne .L247 5158 .loc 1 3046 5 is_stmt 0 discriminator 1 5159 005e 0223 movs r3, #2 5160 .loc 1 3046 5 5161 0060 A5E0 b .L245 5162 .L247: 5163 .loc 1 3046 5 discriminator 2 5164 0062 FB68 ldr r3, [r7, #12] 5165 0064 0122 movs r2, #1 5166 0066 83F84020 strb r2, [r3, #64] 3047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 5167 .loc 1 3048 23 is_stmt 1 5168 006a FB68 ldr r3, [r7, #12] 5169 006c 2222 movs r2, #34 5170 006e 83F84120 strb r2, [r3, #65] 3049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 5171 .loc 1 3049 23 5172 0072 FB68 ldr r3, [r7, #12] 5173 0074 4022 movs r2, #64 5174 0076 83F84220 strb r2, [r3, #66] 3050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5175 .loc 1 3050 23 5176 007a FB68 ldr r3, [r7, #12] 5177 007c 0022 movs r2, #0 5178 007e 5A64 str r2, [r3, #68] 3051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 5179 .loc 1 3053 23 5180 0080 FB68 ldr r3, [r7, #12] 5181 0082 3A6A ldr r2, [r7, #32] 5182 0084 5A62 str r2, [r3, #36] 3054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 5183 .loc 1 3054 23 5184 0086 FB68 ldr r3, [r7, #12] 5185 0088 BA8C ldrh r2, [r7, #36] @ movhi 5186 008a 5A85 strh r2, [r3, #42] @ movhi 3055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 5187 .loc 1 3055 23 5188 008c FB68 ldr r3, [r7, #12] 5189 008e 4A4A ldr r2, .L257 5190 0090 DA62 str r2, [r3, #44] 3056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; 5191 .loc 1 3056 23 5192 0092 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 146 5193 0094 494A ldr r2, .L257+4 5194 0096 5A63 str r2, [r3, #52] 3057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 5195 .loc 1 3057 23 5196 0098 7A89 ldrh r2, [r7, #10] 5197 009a FB68 ldr r3, [r7, #12] 5198 009c DA64 str r2, [r3, #76] 3058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 5199 .loc 1 3059 13 5200 009e FB68 ldr r3, [r7, #12] 5201 00a0 5B8D ldrh r3, [r3, #42] @ movhi 5202 00a2 9BB2 uxth r3, r3 5203 .loc 1 3059 8 5204 00a4 FF2B cmp r3, #255 5205 00a6 03D9 bls .L248 3060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 5206 .loc 1 3061 22 5207 00a8 FB68 ldr r3, [r7, #12] 5208 00aa FF22 movs r2, #255 5209 00ac 1A85 strh r2, [r3, #40] @ movhi 5210 00ae 04E0 b .L249 5211 .L248: 3062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 5212 .loc 1 3065 28 5213 00b0 FB68 ldr r3, [r7, #12] 5214 00b2 5B8D ldrh r3, [r3, #42] @ movhi 5215 00b4 9AB2 uxth r2, r3 5216 .loc 1 3065 22 5217 00b6 FB68 ldr r3, [r7, #12] 5218 00b8 1A85 strh r2, [r3, #40] @ movhi 5219 .L249: 3066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 3069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 5220 .loc 1 3069 8 5221 00ba FB88 ldrh r3, [r7, #6] 5222 00bc 012B cmp r3, #1 5223 00be 09D1 bne .L250 3070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 3072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 5224 .loc 1 3072 30 5225 00c0 3B89 ldrh r3, [r7, #8] @ movhi 5226 00c2 DAB2 uxtb r2, r3 5227 .loc 1 3072 11 5228 00c4 FB68 ldr r3, [r7, #12] 5229 00c6 1B68 ldr r3, [r3] 5230 .loc 1 3072 28 5231 00c8 9A62 str r2, [r3, #40] 3073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ ARM GAS /tmp/cc5G5cqz.s page 147 3075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 5232 .loc 1 3075 24 5233 00ca FB68 ldr r3, [r7, #12] 5234 00cc 4FF0FF32 mov r2, #-1 5235 00d0 1A65 str r2, [r3, #80] 5236 00d2 0BE0 b .L251 5237 .L250: 3076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 3078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 3081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 5238 .loc 1 3081 30 5239 00d4 3B89 ldrh r3, [r7, #8] 5240 00d6 1B0A lsrs r3, r3, #8 5241 00d8 9BB2 uxth r3, r3 5242 00da DAB2 uxtb r2, r3 5243 .loc 1 3081 11 5244 00dc FB68 ldr r3, [r7, #12] 5245 00de 1B68 ldr r3, [r3] 5246 .loc 1 3081 28 5247 00e0 9A62 str r2, [r3, #40] 3082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 3084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 5248 .loc 1 3084 26 5249 00e2 3B89 ldrh r3, [r7, #8] @ movhi 5250 00e4 DBB2 uxtb r3, r3 5251 00e6 1A46 mov r2, r3 5252 .loc 1 3084 24 5253 00e8 FB68 ldr r3, [r7, #12] 5254 00ea 1A65 str r2, [r3, #80] 5255 .L251: 3085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 5256 .loc 1 3087 13 5257 00ec FB68 ldr r3, [r7, #12] 5258 00ee DB6B ldr r3, [r3, #60] 5259 .loc 1 3087 8 5260 00f0 002B cmp r3, #0 5261 00f2 20D0 beq .L252 3088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 5262 .loc 1 3090 11 5263 00f4 FB68 ldr r3, [r7, #12] 5264 00f6 DB6B ldr r3, [r3, #60] 5265 .loc 1 3090 38 5266 00f8 314A ldr r2, .L257+8 5267 00fa 9A62 str r2, [r3, #40] 3091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 5268 .loc 1 3093 11 5269 00fc FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 148 5270 00fe DB6B ldr r3, [r3, #60] 5271 .loc 1 3093 39 5272 0100 304A ldr r2, .L257+12 5273 0102 1A63 str r2, [r3, #48] 3094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 5274 .loc 1 3096 11 5275 0104 FB68 ldr r3, [r7, #12] 5276 0106 DB6B ldr r3, [r3, #60] 5277 .loc 1 3096 42 5278 0108 0022 movs r2, #0 5279 010a DA62 str r2, [r3, #44] 3097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 5280 .loc 1 3097 11 5281 010c FB68 ldr r3, [r7, #12] 5282 010e DB6B ldr r3, [r3, #60] 5283 .loc 1 3097 39 5284 0110 0022 movs r2, #0 5285 0112 5A63 str r2, [r3, #52] 3098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa 5286 .loc 1 3100 23 5287 0114 FB68 ldr r3, [r7, #12] 5288 0116 D86B ldr r0, [r3, #60] 5289 .loc 1 3100 69 5290 0118 FB68 ldr r3, [r7, #12] 5291 011a 1B68 ldr r3, [r3] 5292 .loc 1 3100 64 5293 011c 2433 adds r3, r3, #36 5294 .loc 1 3100 23 5295 011e 1946 mov r1, r3 5296 0120 3A6A ldr r2, [r7, #32] 3101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5297 .loc 1 3101 44 5298 0122 FB68 ldr r3, [r7, #12] 5299 0124 1B8D ldrh r3, [r3, #40] 3100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5300 .loc 1 3100 23 5301 0126 FFF7FEFF bl HAL_DMA_Start_IT 5302 012a 0346 mov r3, r0 5303 012c FB75 strb r3, [r7, #23] 3102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; ARM GAS /tmp/cc5G5cqz.s page 149 3116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 5304 .loc 1 3118 8 5305 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 5306 0130 002B cmp r3, #0 5307 0132 27D1 bne .L254 5308 0134 13E0 b .L256 5309 .L252: 3106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5310 .loc 1 3106 23 5311 0136 FB68 ldr r3, [r7, #12] 5312 0138 2022 movs r2, #32 5313 013a 83F84120 strb r2, [r3, #65] 3107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5314 .loc 1 3107 23 5315 013e FB68 ldr r3, [r7, #12] 5316 0140 0022 movs r2, #0 5317 0142 83F84220 strb r2, [r3, #66] 3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5318 .loc 1 3110 11 5319 0146 FB68 ldr r3, [r7, #12] 5320 0148 5B6C ldr r3, [r3, #68] 3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5321 .loc 1 3110 23 5322 014a 43F08002 orr r2, r3, #128 5323 014e FB68 ldr r3, [r7, #12] 5324 0150 5A64 str r2, [r3, #68] 3113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5325 .loc 1 3113 7 5326 0152 FB68 ldr r3, [r7, #12] 5327 0154 0022 movs r2, #0 5328 0156 83F84020 strb r2, [r3, #64] 3115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5329 .loc 1 3115 14 5330 015a 0123 movs r3, #1 5331 015c 27E0 b .L245 5332 .L256: 3119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 3121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_STAR 5333 .loc 1 3121 7 5334 015e FB88 ldrh r3, [r7, #6] @ movhi 5335 0160 DAB2 uxtb r2, r3 5336 0162 7989 ldrh r1, [r7, #10] 5337 0164 184B ldr r3, .L257+16 5338 0166 0093 str r3, [sp] 5339 0168 0023 movs r3, #0 5340 016a F868 ldr r0, [r7, #12] 5341 016c FFF7FEFF bl I2C_TransferConfig 3122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5342 .loc 1 3124 7 5343 0170 FB68 ldr r3, [r7, #12] 5344 0172 0022 movs r2, #0 5345 0174 83F84020 strb r2, [r3, #64] ARM GAS /tmp/cc5G5cqz.s page 150 3125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5346 .loc 1 3133 7 5347 0178 0121 movs r1, #1 5348 017a F868 ldr r0, [r7, #12] 5349 017c FFF7FEFF bl I2C_Enable_IRQ 3134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5350 .loc 1 3150 12 5351 0180 0023 movs r3, #0 5352 0182 14E0 b .L245 5353 .L254: 3138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5354 .loc 1 3138 23 5355 0184 FB68 ldr r3, [r7, #12] 5356 0186 2022 movs r2, #32 5357 0188 83F84120 strb r2, [r3, #65] 3139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5358 .loc 1 3139 23 5359 018c FB68 ldr r3, [r7, #12] 5360 018e 0022 movs r2, #0 5361 0190 83F84220 strb r2, [r3, #66] 3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5362 .loc 1 3142 11 5363 0194 FB68 ldr r3, [r7, #12] 5364 0196 5B6C ldr r3, [r3, #68] 3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5365 .loc 1 3142 23 5366 0198 43F01002 orr r2, r3, #16 5367 019c FB68 ldr r3, [r7, #12] 5368 019e 5A64 str r2, [r3, #68] 3145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5369 .loc 1 3145 7 5370 01a0 FB68 ldr r3, [r7, #12] 5371 01a2 0022 movs r2, #0 ARM GAS /tmp/cc5G5cqz.s page 151 5372 01a4 83F84020 strb r2, [r3, #64] 3147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5373 .loc 1 3147 14 5374 01a8 0123 movs r3, #1 5375 01aa 00E0 b .L245 5376 .L242: 3151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5377 .loc 1 3154 12 5378 01ac 0223 movs r3, #2 5379 .L245: 3155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5380 .loc 1 3156 1 5381 01ae 1846 mov r0, r3 5382 01b0 1837 adds r7, r7, #24 5383 .cfi_def_cfa_offset 8 5384 01b2 BD46 mov sp, r7 5385 .cfi_def_cfa_register 13 5386 @ sp needed 5387 01b4 80BD pop {r7, pc} 5388 .L258: 5389 01b6 00BF .align 2 5390 .L257: 5391 01b8 0000FFFF .word -65536 5392 01bc 00000000 .word I2C_Mem_ISR_DMA 5393 01c0 00000000 .word I2C_DMAMasterReceiveCplt 5394 01c4 00000000 .word I2C_DMAError 5395 01c8 00200080 .word -2147475456 5396 .cfi_endproc 5397 .LFE151: 5399 .section .text.HAL_I2C_IsDeviceReady,"ax",%progbits 5400 .align 1 5401 .global HAL_I2C_IsDeviceReady 5402 .syntax unified 5403 .thumb 5404 .thumb_func 5406 HAL_I2C_IsDeviceReady: 5407 .LFB152: 3157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Checks if target device is ready for communication. 3160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This function is used with Memory devices 3161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Trials Number of trials 3166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 3167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria 3170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 3171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5408 .loc 1 3171 1 ARM GAS /tmp/cc5G5cqz.s page 152 5409 .cfi_startproc 5410 @ args = 0, pretend = 0, frame = 32 5411 @ frame_needed = 1, uses_anonymous_args = 0 5412 0000 80B5 push {r7, lr} 5413 .cfi_def_cfa_offset 8 5414 .cfi_offset 7, -8 5415 .cfi_offset 14, -4 5416 0002 8AB0 sub sp, sp, #40 5417 .cfi_def_cfa_offset 48 5418 0004 02AF add r7, sp, #8 5419 .cfi_def_cfa 7, 40 5420 0006 F860 str r0, [r7, #12] 5421 0008 7A60 str r2, [r7, #4] 5422 000a 3B60 str r3, [r7] 5423 000c 0B46 mov r3, r1 @ movhi 5424 000e 7B81 strh r3, [r7, #10] @ movhi 3172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 3173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t I2C_Trials = 0UL; 5425 .loc 1 3174 17 5426 0010 0023 movs r3, #0 5427 0012 7B61 str r3, [r7, #20] 3175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp1; 3177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp2; 3178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5428 .loc 1 3179 11 5429 0014 FB68 ldr r3, [r7, #12] 5430 0016 93F84130 ldrb r3, [r3, #65] 5431 001a DBB2 uxtb r3, r3 5432 .loc 1 3179 6 5433 001c 202B cmp r3, #32 5434 001e 40F0F380 bne .L260 3180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5435 .loc 1 3181 9 5436 0022 FB68 ldr r3, [r7, #12] 5437 0024 1B68 ldr r3, [r3] 5438 0026 9B69 ldr r3, [r3, #24] 5439 0028 03F40043 and r3, r3, #32768 5440 .loc 1 3181 8 5441 002c B3F5004F cmp r3, #32768 5442 0030 01D1 bne .L261 3182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5443 .loc 1 3183 14 5444 0032 0223 movs r3, #2 5445 0034 E9E0 b .L262 5446 .L261: 3184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5447 .loc 1 3187 5 5448 0036 FB68 ldr r3, [r7, #12] 5449 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 ARM GAS /tmp/cc5G5cqz.s page 153 5450 003c 012B cmp r3, #1 5451 003e 01D1 bne .L263 5452 .loc 1 3187 5 is_stmt 0 discriminator 1 5453 0040 0223 movs r3, #2 5454 .loc 1 3187 5 5455 0042 E2E0 b .L262 5456 .L263: 5457 .loc 1 3187 5 discriminator 2 5458 0044 FB68 ldr r3, [r7, #12] 5459 0046 0122 movs r2, #1 5460 0048 83F84020 strb r2, [r3, #64] 3188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; 5461 .loc 1 3189 17 is_stmt 1 5462 004c FB68 ldr r3, [r7, #12] 5463 004e 2422 movs r2, #36 5464 0050 83F84120 strb r2, [r3, #65] 3190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5465 .loc 1 3190 21 5466 0054 FB68 ldr r3, [r7, #12] 5467 0056 0022 movs r2, #0 5468 0058 5A64 str r2, [r3, #68] 5469 .L276: 3191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 3193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Start */ 3195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); 5470 .loc 1 3195 29 5471 005a FB68 ldr r3, [r7, #12] 5472 005c DB68 ldr r3, [r3, #12] 5473 005e 012B cmp r3, #1 5474 0060 07D1 bne .L264 5475 .loc 1 3195 29 is_stmt 0 discriminator 1 5476 0062 7B89 ldrh r3, [r7, #10] 5477 0064 C3F30903 ubfx r3, r3, #0, #10 5478 0068 43F00073 orr r3, r3, #33554432 5479 006c 43F40053 orr r3, r3, #8192 5480 0070 06E0 b .L265 5481 .L264: 5482 .loc 1 3195 29 discriminator 2 5483 0072 7B89 ldrh r3, [r7, #10] 5484 0074 C3F30903 ubfx r3, r3, #0, #10 5485 0078 43F00073 orr r3, r3, #33554432 5486 007c 43F42053 orr r3, r3, #10240 5487 .L265: 5488 .loc 1 3195 11 is_stmt 1 discriminator 4 5489 0080 FA68 ldr r2, [r7, #12] 5490 0082 1268 ldr r2, [r2] 5491 .loc 1 3195 27 discriminator 4 5492 0084 5360 str r3, [r2, #4] 3196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 3198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set or a NACK flag is set*/ 3199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 5493 .loc 1 3199 19 5494 0086 FFF7FEFF bl HAL_GetTick ARM GAS /tmp/cc5G5cqz.s page 154 5495 008a B861 str r0, [r7, #24] 3200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); 5496 .loc 1 3201 14 5497 008c FB68 ldr r3, [r7, #12] 5498 008e 1B68 ldr r3, [r3] 5499 0090 9B69 ldr r3, [r3, #24] 5500 0092 03F02003 and r3, r3, #32 5501 0096 202B cmp r3, #32 5502 0098 0CBF ite eq 5503 009a 0123 moveq r3, #1 5504 009c 0023 movne r3, #0 5505 009e DBB2 uxtb r3, r3 5506 .loc 1 3201 12 5507 00a0 FB77 strb r3, [r7, #31] 3202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); 5508 .loc 1 3202 14 5509 00a2 FB68 ldr r3, [r7, #12] 5510 00a4 1B68 ldr r3, [r3] 5511 00a6 9B69 ldr r3, [r3, #24] 5512 00a8 03F01003 and r3, r3, #16 5513 00ac 102B cmp r3, #16 5514 00ae 0CBF ite eq 5515 00b0 0123 moveq r3, #1 5516 00b2 0023 movne r3, #0 5517 00b4 DBB2 uxtb r3, r3 5518 .loc 1 3202 12 5519 00b6 BB77 strb r3, [r7, #30] 3203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((tmp1 == RESET) && (tmp2 == RESET)) 5520 .loc 1 3204 13 5521 00b8 34E0 b .L266 5522 .L270: 3205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 5523 .loc 1 3206 12 5524 00ba 3B68 ldr r3, [r7] 5525 00bc B3F1FF3F cmp r3, #-1 5526 00c0 1AD0 beq .L267 3207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 5527 .loc 1 3208 17 5528 00c2 FFF7FEFF bl HAL_GetTick 5529 00c6 0246 mov r2, r0 5530 .loc 1 3208 31 discriminator 1 5531 00c8 BB69 ldr r3, [r7, #24] 5532 00ca D31A subs r3, r2, r3 5533 .loc 1 3208 14 discriminator 1 5534 00cc 3A68 ldr r2, [r7] 5535 00ce 9A42 cmp r2, r3 5536 00d0 02D3 bcc .L268 5537 .loc 1 3208 55 discriminator 1 5538 00d2 3B68 ldr r3, [r7] 5539 00d4 002B cmp r3, #0 5540 00d6 0FD1 bne .L267 5541 .L268: 3209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 155 3210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 5542 .loc 1 3211 25 5543 00d8 FB68 ldr r3, [r7, #12] 5544 00da 2022 movs r2, #32 5545 00dc 83F84120 strb r2, [r3, #65] 3212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 5546 .loc 1 3214 17 5547 00e0 FB68 ldr r3, [r7, #12] 5548 00e2 5B6C ldr r3, [r3, #68] 5549 .loc 1 3214 29 5550 00e4 43F02002 orr r2, r3, #32 5551 00e8 FB68 ldr r3, [r7, #12] 5552 00ea 5A64 str r2, [r3, #68] 3215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5553 .loc 1 3217 13 5554 00ec FB68 ldr r3, [r7, #12] 5555 00ee 0022 movs r2, #0 5556 00f0 83F84020 strb r2, [r3, #64] 3218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5557 .loc 1 3219 20 5558 00f4 0123 movs r3, #1 5559 00f6 88E0 b .L262 5560 .L267: 3220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); 5561 .loc 1 3223 16 5562 00f8 FB68 ldr r3, [r7, #12] 5563 00fa 1B68 ldr r3, [r3] 5564 00fc 9B69 ldr r3, [r3, #24] 5565 00fe 03F02003 and r3, r3, #32 5566 0102 202B cmp r3, #32 5567 0104 0CBF ite eq 5568 0106 0123 moveq r3, #1 5569 0108 0023 movne r3, #0 5570 010a DBB2 uxtb r3, r3 5571 .loc 1 3223 14 5572 010c FB77 strb r3, [r7, #31] 3224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); 5573 .loc 1 3224 16 5574 010e FB68 ldr r3, [r7, #12] 5575 0110 1B68 ldr r3, [r3] 5576 0112 9B69 ldr r3, [r3, #24] 5577 0114 03F01003 and r3, r3, #16 5578 0118 102B cmp r3, #16 5579 011a 0CBF ite eq 5580 011c 0123 moveq r3, #1 5581 011e 0023 movne r3, #0 5582 0120 DBB2 uxtb r3, r3 5583 .loc 1 3224 14 ARM GAS /tmp/cc5G5cqz.s page 156 5584 0122 BB77 strb r3, [r7, #30] 5585 .L266: 3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5586 .loc 1 3204 30 5587 0124 FB7F ldrb r3, [r7, #31] @ zero_extendqisi2 5588 0126 002B cmp r3, #0 5589 0128 02D1 bne .L269 3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5590 .loc 1 3204 30 is_stmt 0 discriminator 1 5591 012a BB7F ldrb r3, [r7, #30] @ zero_extendqisi2 5592 012c 002B cmp r3, #0 5593 012e C4D0 beq .L270 5594 .L269: 3225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if the NACKF flag has not been set */ 3228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) 5595 .loc 1 3228 11 is_stmt 1 5596 0130 FB68 ldr r3, [r7, #12] 5597 0132 1B68 ldr r3, [r3] 5598 0134 9B69 ldr r3, [r3, #24] 5599 0136 03F01003 and r3, r3, #16 5600 .loc 1 3228 10 5601 013a 102B cmp r3, #16 5602 013c 1AD0 beq .L271 3229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 3231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) 5603 .loc 1 3231 13 5604 013e BB69 ldr r3, [r7, #24] 5605 0140 0093 str r3, [sp] 5606 0142 3B68 ldr r3, [r7] 5607 0144 0022 movs r2, #0 5608 0146 2021 movs r1, #32 5609 0148 F868 ldr r0, [r7, #12] 5610 014a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 5611 014e 0346 mov r3, r0 5612 .loc 1 3231 12 discriminator 1 5613 0150 002B cmp r3, #0 5614 0152 01D0 beq .L272 3232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5615 .loc 1 3233 18 5616 0154 0123 movs r3, #1 5617 0156 58E0 b .L262 5618 .L272: 3234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 3237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 5619 .loc 1 3237 9 5620 0158 FB68 ldr r3, [r7, #12] 5621 015a 1B68 ldr r3, [r3] 5622 015c 2022 movs r2, #32 5623 015e DA61 str r2, [r3, #28] 3238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Device is ready */ ARM GAS /tmp/cc5G5cqz.s page 157 3240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 5624 .loc 1 3240 21 5625 0160 FB68 ldr r3, [r7, #12] 5626 0162 2022 movs r2, #32 5627 0164 83F84120 strb r2, [r3, #65] 3241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5628 .loc 1 3243 9 5629 0168 FB68 ldr r3, [r7, #12] 5630 016a 0022 movs r2, #0 5631 016c 83F84020 strb r2, [r3, #64] 3244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5632 .loc 1 3245 16 5633 0170 0023 movs r3, #0 5634 0172 4AE0 b .L262 5635 .L271: 3246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 3250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) 5636 .loc 1 3250 13 5637 0174 BB69 ldr r3, [r7, #24] 5638 0176 0093 str r3, [sp] 5639 0178 3B68 ldr r3, [r7] 5640 017a 0022 movs r2, #0 5641 017c 2021 movs r1, #32 5642 017e F868 ldr r0, [r7, #12] 5643 0180 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 5644 0184 0346 mov r3, r0 5645 .loc 1 3250 12 discriminator 1 5646 0186 002B cmp r3, #0 5647 0188 01D0 beq .L273 3251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5648 .loc 1 3252 18 5649 018a 0123 movs r3, #1 5650 018c 3DE0 b .L262 5651 .L273: 3253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 3256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 5652 .loc 1 3256 9 5653 018e FB68 ldr r3, [r7, #12] 5654 0190 1B68 ldr r3, [r3] 5655 0192 1022 movs r2, #16 5656 0194 DA61 str r2, [r3, #28] 3257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag, auto generated with autoend*/ 3259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 5657 .loc 1 3259 9 5658 0196 FB68 ldr r3, [r7, #12] 5659 0198 1B68 ldr r3, [r3] 5660 019a 2022 movs r2, #32 ARM GAS /tmp/cc5G5cqz.s page 158 5661 019c DA61 str r2, [r3, #28] 3260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if the maximum allowed number of trials has been reached */ 3263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_Trials == Trials) 5662 .loc 1 3263 22 5663 019e 7B69 ldr r3, [r7, #20] 5664 .loc 1 3263 10 5665 01a0 7A68 ldr r2, [r7, #4] 5666 01a2 9A42 cmp r2, r3 5667 01a4 18D1 bne .L274 3264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 3266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 5668 .loc 1 3266 13 5669 01a6 FB68 ldr r3, [r7, #12] 5670 01a8 1B68 ldr r3, [r3] 5671 .loc 1 3266 23 5672 01aa 5A68 ldr r2, [r3, #4] 5673 .loc 1 3266 13 5674 01ac FB68 ldr r3, [r7, #12] 5675 01ae 1B68 ldr r3, [r3] 5676 .loc 1 3266 29 5677 01b0 42F48042 orr r2, r2, #16384 5678 01b4 5A60 str r2, [r3, #4] 3267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 3269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) 5679 .loc 1 3269 13 5680 01b6 BB69 ldr r3, [r7, #24] 5681 01b8 0093 str r3, [sp] 5682 01ba 3B68 ldr r3, [r7] 5683 01bc 0022 movs r2, #0 5684 01be 2021 movs r1, #32 5685 01c0 F868 ldr r0, [r7, #12] 5686 01c2 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 5687 01c6 0346 mov r3, r0 5688 .loc 1 3269 12 discriminator 1 5689 01c8 002B cmp r3, #0 5690 01ca 01D0 beq .L275 3270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5691 .loc 1 3271 18 5692 01cc 0123 movs r3, #1 5693 01ce 1CE0 b .L262 5694 .L275: 3272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 3275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 5695 .loc 1 3275 9 5696 01d0 FB68 ldr r3, [r7, #12] 5697 01d2 1B68 ldr r3, [r3] 5698 01d4 2022 movs r2, #32 5699 01d6 DA61 str r2, [r3, #28] 5700 .L274: 3276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 159 3277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Trials */ 3279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Trials++; 5701 .loc 1 3279 17 5702 01d8 7B69 ldr r3, [r7, #20] 5703 01da 0133 adds r3, r3, #1 5704 01dc 7B61 str r3, [r7, #20] 3280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (I2C_Trials < Trials); 5705 .loc 1 3280 25 5706 01de 7B69 ldr r3, [r7, #20] 5707 01e0 7A68 ldr r2, [r7, #4] 5708 01e2 9A42 cmp r2, r3 5709 01e4 3FF639AF bhi .L276 3281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 5710 .loc 1 3283 17 5711 01e8 FB68 ldr r3, [r7, #12] 5712 01ea 2022 movs r2, #32 5713 01ec 83F84120 strb r2, [r3, #65] 3284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 5714 .loc 1 3286 9 5715 01f0 FB68 ldr r3, [r7, #12] 5716 01f2 5B6C ldr r3, [r3, #68] 5717 .loc 1 3286 21 5718 01f4 43F02002 orr r2, r3, #32 5719 01f8 FB68 ldr r3, [r7, #12] 5720 01fa 5A64 str r2, [r3, #68] 3287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5721 .loc 1 3289 5 5722 01fc FB68 ldr r3, [r7, #12] 5723 01fe 0022 movs r2, #0 5724 0200 83F84020 strb r2, [r3, #64] 3290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5725 .loc 1 3291 12 5726 0204 0123 movs r3, #1 5727 0206 00E0 b .L262 5728 .L260: 3292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5729 .loc 1 3295 12 5730 0208 0223 movs r3, #2 5731 .L262: 3296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5732 .loc 1 3297 1 5733 020a 1846 mov r0, r3 5734 020c 2037 adds r7, r7, #32 5735 .cfi_def_cfa_offset 8 5736 020e BD46 mov sp, r7 ARM GAS /tmp/cc5G5cqz.s page 160 5737 .cfi_def_cfa_register 13 5738 @ sp needed 5739 0210 80BD pop {r7, pc} 5740 .cfi_endproc 5741 .LFE152: 5743 .section .text.HAL_I2C_Master_Seq_Transmit_IT,"ax",%progbits 5744 .align 1 5745 .global HAL_I2C_Master_Seq_Transmit_IT 5746 .syntax unified 5747 .thumb 5748 .thumb_func 5750 HAL_I2C_Master_Seq_Transmit_IT: 5751 .LFB153: 3298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Inte 3301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint 3312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5752 .loc 1 3313 1 5753 .cfi_startproc 5754 @ args = 4, pretend = 0, frame = 24 5755 @ frame_needed = 1, uses_anonymous_args = 0 5756 0000 80B5 push {r7, lr} 5757 .cfi_def_cfa_offset 8 5758 .cfi_offset 7, -8 5759 .cfi_offset 14, -4 5760 0002 88B0 sub sp, sp, #32 5761 .cfi_def_cfa_offset 40 5762 0004 02AF add r7, sp, #8 5763 .cfi_def_cfa 7, 32 5764 0006 F860 str r0, [r7, #12] 5765 0008 7A60 str r2, [r7, #4] 5766 000a 1A46 mov r2, r3 5767 000c 0B46 mov r3, r1 @ movhi 5768 000e 7B81 strh r3, [r7, #10] @ movhi 5769 0010 1346 mov r3, r2 @ movhi 5770 0012 3B81 strh r3, [r7, #8] @ movhi 3314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; 5771 .loc 1 3315 12 5772 0014 3A4B ldr r3, .L288 5773 0016 3B61 str r3, [r7, #16] 3316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 161 3320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5774 .loc 1 3320 11 5775 0018 FB68 ldr r3, [r7, #12] 5776 001a 93F84130 ldrb r3, [r3, #65] 5777 001e DBB2 uxtb r3, r3 5778 .loc 1 3320 6 5779 0020 202B cmp r3, #32 5780 0022 67D1 bne .L278 3321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5781 .loc 1 3323 5 5782 0024 FB68 ldr r3, [r7, #12] 5783 0026 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5784 002a 012B cmp r3, #1 5785 002c 01D1 bne .L279 5786 .loc 1 3323 5 is_stmt 0 discriminator 1 5787 002e 0223 movs r3, #2 5788 .loc 1 3323 5 5789 0030 61E0 b .L280 5790 .L279: 5791 .loc 1 3323 5 discriminator 2 5792 0032 FB68 ldr r3, [r7, #12] 5793 0034 0122 movs r2, #1 5794 0036 83F84020 strb r2, [r3, #64] 3324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 5795 .loc 1 3325 21 is_stmt 1 5796 003a FB68 ldr r3, [r7, #12] 5797 003c 2122 movs r2, #33 5798 003e 83F84120 strb r2, [r3, #65] 3326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 5799 .loc 1 3326 21 5800 0042 FB68 ldr r3, [r7, #12] 5801 0044 1022 movs r2, #16 5802 0046 83F84220 strb r2, [r3, #66] 3327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5803 .loc 1 3327 21 5804 004a FB68 ldr r3, [r7, #12] 5805 004c 0022 movs r2, #0 5806 004e 5A64 str r2, [r3, #68] 3328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 5807 .loc 1 3330 23 5808 0050 FB68 ldr r3, [r7, #12] 5809 0052 7A68 ldr r2, [r7, #4] 5810 0054 5A62 str r2, [r3, #36] 3331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 5811 .loc 1 3331 23 5812 0056 FB68 ldr r3, [r7, #12] 5813 0058 3A89 ldrh r2, [r7, #8] @ movhi 5814 005a 5A85 strh r2, [r3, #42] @ movhi 3332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 5815 .loc 1 3332 23 5816 005c FB68 ldr r3, [r7, #12] 5817 005e 3A6A ldr r2, [r7, #32] ARM GAS /tmp/cc5G5cqz.s page 162 5818 0060 DA62 str r2, [r3, #44] 3333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 5819 .loc 1 3333 23 5820 0062 FB68 ldr r3, [r7, #12] 5821 0064 274A ldr r2, .L288+4 5822 0066 5A63 str r2, [r3, #52] 3334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 5823 .loc 1 3336 13 5824 0068 FB68 ldr r3, [r7, #12] 5825 006a 5B8D ldrh r3, [r3, #42] @ movhi 5826 006c 9BB2 uxth r3, r3 5827 .loc 1 3336 8 5828 006e FF2B cmp r3, #255 5829 0070 06D9 bls .L281 3337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 5830 .loc 1 3338 22 5831 0072 FB68 ldr r3, [r7, #12] 5832 0074 FF22 movs r2, #255 5833 0076 1A85 strh r2, [r3, #40] @ movhi 3339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 5834 .loc 1 3339 16 5835 0078 4FF08073 mov r3, #16777216 5836 007c 7B61 str r3, [r7, #20] 5837 007e 07E0 b .L282 5838 .L281: 3340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 5839 .loc 1 3343 28 5840 0080 FB68 ldr r3, [r7, #12] 5841 0082 5B8D ldrh r3, [r3, #42] @ movhi 5842 0084 9AB2 uxth r2, r3 5843 .loc 1 3343 22 5844 0086 FB68 ldr r3, [r7, #12] 5845 0088 1A85 strh r2, [r3, #40] @ movhi 3344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 5846 .loc 1 3344 16 5847 008a FB68 ldr r3, [r7, #12] 5848 008c DB6A ldr r3, [r3, #44] 5849 008e 7B61 str r3, [r7, #20] 5850 .L282: 3345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ 5851 .loc 1 3350 14 5852 0090 FB68 ldr r3, [r7, #12] 5853 0092 1B6B ldr r3, [r3, #48] 5854 .loc 1 3350 8 5855 0094 112B cmp r3, #17 5856 0096 0ED1 bne .L283 ARM GAS /tmp/cc5G5cqz.s page 163 3351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 5857 .loc 1 3351 10 5858 0098 3B6A ldr r3, [r7, #32] 5859 009a AA2B cmp r3, #170 5860 009c 03D0 beq .L284 5861 .loc 1 3351 10 is_stmt 0 discriminator 2 5862 009e 3B6A ldr r3, [r7, #32] 5863 00a0 B3F52A4F cmp r3, #43520 5864 00a4 01D1 bne .L285 5865 .L284: 5866 .loc 1 3351 10 discriminator 3 5867 00a6 0123 movs r3, #1 5868 .loc 1 3351 10 5869 00a8 00E0 b .L286 5870 .L285: 5871 .loc 1 3351 10 discriminator 4 5872 00aa 0023 movs r3, #0 5873 .L286: 3350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 5874 .loc 1 3350 59 is_stmt 1 5875 00ac 002B cmp r3, #0 5876 00ae 02D1 bne .L283 3352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 5877 .loc 1 3353 19 5878 00b0 0023 movs r3, #0 5879 00b2 3B61 str r3, [r7, #16] 5880 00b4 0AE0 b .L287 5881 .L283: 3354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 5882 .loc 1 3358 7 5883 00b6 F868 ldr r0, [r7, #12] 5884 00b8 FFF7FEFF bl I2C_ConvertOtherXferOptions 3359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 5885 .loc 1 3361 15 5886 00bc FB68 ldr r3, [r7, #12] 5887 00be 5B8D ldrh r3, [r3, #42] @ movhi 5888 00c0 9BB2 uxth r3, r3 5889 .loc 1 3361 10 5890 00c2 FF2B cmp r3, #255 5891 00c4 02D8 bhi .L287 3362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 5892 .loc 1 3363 18 5893 00c6 FB68 ldr r3, [r7, #12] 5894 00c8 DB6A ldr r3, [r3, #44] 5895 00ca 7B61 str r3, [r7, #20] 5896 .L287: 3364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 164 3367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ 3368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 5897 .loc 1 3368 55 5898 00cc FB68 ldr r3, [r7, #12] 5899 00ce 1B8D ldrh r3, [r3, #40] 5900 .loc 1 3368 5 5901 00d0 DAB2 uxtb r2, r3 5902 00d2 7989 ldrh r1, [r7, #10] 5903 00d4 3B69 ldr r3, [r7, #16] 5904 00d6 0093 str r3, [sp] 5905 00d8 7B69 ldr r3, [r7, #20] 5906 00da F868 ldr r0, [r7, #12] 5907 00dc FFF7FEFF bl I2C_TransferConfig 3369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5908 .loc 1 3371 5 5909 00e0 FB68 ldr r3, [r7, #12] 5910 00e2 0022 movs r2, #0 5911 00e4 83F84020 strb r2, [r3, #64] 3372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5912 .loc 1 3380 5 5913 00e8 0121 movs r1, #1 5914 00ea F868 ldr r0, [r7, #12] 5915 00ec FFF7FEFF bl I2C_Enable_IRQ 3381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5916 .loc 1 3382 12 5917 00f0 0023 movs r3, #0 5918 00f2 00E0 b .L280 5919 .L278: 3383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5920 .loc 1 3386 12 5921 00f4 0223 movs r3, #2 5922 .L280: 3387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5923 .loc 1 3388 1 5924 00f6 1846 mov r0, r3 5925 00f8 1837 adds r7, r7, #24 5926 .cfi_def_cfa_offset 8 5927 00fa BD46 mov sp, r7 5928 .cfi_def_cfa_register 13 5929 @ sp needed 5930 00fc 80BD pop {r7, pc} 5931 .L289: ARM GAS /tmp/cc5G5cqz.s page 165 5932 00fe 00BF .align 2 5933 .L288: 5934 0100 00200080 .word -2147475456 5935 0104 00000000 .word I2C_Master_ISR_IT 5936 .cfi_endproc 5937 .LFE153: 5939 .section .text.HAL_I2C_Master_Seq_Transmit_DMA,"ax",%progbits 5940 .align 1 5941 .global HAL_I2C_Master_Seq_Transmit_DMA 5942 .syntax unified 5943 .thumb 5944 .thumb_func 5946 HAL_I2C_Master_Seq_Transmit_DMA: 5947 .LFB154: 3389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. 3392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin 3403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5948 .loc 1 3404 1 5949 .cfi_startproc 5950 @ args = 4, pretend = 0, frame = 32 5951 @ frame_needed = 1, uses_anonymous_args = 0 5952 0000 80B5 push {r7, lr} 5953 .cfi_def_cfa_offset 8 5954 .cfi_offset 7, -8 5955 .cfi_offset 14, -4 5956 0002 8AB0 sub sp, sp, #40 5957 .cfi_def_cfa_offset 48 5958 0004 02AF add r7, sp, #8 5959 .cfi_def_cfa 7, 40 5960 0006 F860 str r0, [r7, #12] 5961 0008 7A60 str r2, [r7, #4] 5962 000a 1A46 mov r2, r3 5963 000c 0B46 mov r3, r1 @ movhi 5964 000e 7B81 strh r3, [r7, #10] @ movhi 5965 0010 1346 mov r3, r2 @ movhi 5966 0012 3B81 strh r3, [r7, #8] @ movhi 3405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; 5967 .loc 1 3406 12 5968 0014 774B ldr r3, .L307 5969 0016 BB61 str r3, [r7, #24] 3407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ ARM GAS /tmp/cc5G5cqz.s page 166 3410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5970 .loc 1 3412 11 5971 0018 FB68 ldr r3, [r7, #12] 5972 001a 93F84130 ldrb r3, [r3, #65] 5973 001e DBB2 uxtb r3, r3 5974 .loc 1 3412 6 5975 0020 202B cmp r3, #32 5976 0022 40F0E180 bne .L291 3413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5977 .loc 1 3415 5 5978 0026 FB68 ldr r3, [r7, #12] 5979 0028 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5980 002c 012B cmp r3, #1 5981 002e 01D1 bne .L292 5982 .loc 1 3415 5 is_stmt 0 discriminator 1 5983 0030 0223 movs r3, #2 5984 .loc 1 3415 5 5985 0032 DAE0 b .L293 5986 .L292: 5987 .loc 1 3415 5 discriminator 2 5988 0034 FB68 ldr r3, [r7, #12] 5989 0036 0122 movs r2, #1 5990 0038 83F84020 strb r2, [r3, #64] 3416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 5991 .loc 1 3417 21 is_stmt 1 5992 003c FB68 ldr r3, [r7, #12] 5993 003e 2122 movs r2, #33 5994 0040 83F84120 strb r2, [r3, #65] 3418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 5995 .loc 1 3418 21 5996 0044 FB68 ldr r3, [r7, #12] 5997 0046 1022 movs r2, #16 5998 0048 83F84220 strb r2, [r3, #66] 3419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5999 .loc 1 3419 21 6000 004c FB68 ldr r3, [r7, #12] 6001 004e 0022 movs r2, #0 6002 0050 5A64 str r2, [r3, #68] 3420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 6003 .loc 1 3422 23 6004 0052 FB68 ldr r3, [r7, #12] 6005 0054 7A68 ldr r2, [r7, #4] 6006 0056 5A62 str r2, [r3, #36] 3423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 6007 .loc 1 3423 23 6008 0058 FB68 ldr r3, [r7, #12] 6009 005a 3A89 ldrh r2, [r7, #8] @ movhi 6010 005c 5A85 strh r2, [r3, #42] @ movhi 3424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 6011 .loc 1 3424 23 ARM GAS /tmp/cc5G5cqz.s page 167 6012 005e FB68 ldr r3, [r7, #12] 6013 0060 BA6A ldr r2, [r7, #40] 6014 0062 DA62 str r2, [r3, #44] 3425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 6015 .loc 1 3425 23 6016 0064 FB68 ldr r3, [r7, #12] 6017 0066 644A ldr r2, .L307+4 6018 0068 5A63 str r2, [r3, #52] 3426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6019 .loc 1 3428 13 6020 006a FB68 ldr r3, [r7, #12] 6021 006c 5B8D ldrh r3, [r3, #42] @ movhi 6022 006e 9BB2 uxth r3, r3 6023 .loc 1 3428 8 6024 0070 FF2B cmp r3, #255 6025 0072 06D9 bls .L294 3429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6026 .loc 1 3430 22 6027 0074 FB68 ldr r3, [r7, #12] 6028 0076 FF22 movs r2, #255 6029 0078 1A85 strh r2, [r3, #40] @ movhi 3431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 6030 .loc 1 3431 16 6031 007a 4FF08073 mov r3, #16777216 6032 007e FB61 str r3, [r7, #28] 6033 0080 07E0 b .L295 6034 .L294: 3432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6035 .loc 1 3435 28 6036 0082 FB68 ldr r3, [r7, #12] 6037 0084 5B8D ldrh r3, [r3, #42] @ movhi 6038 0086 9AB2 uxth r2, r3 6039 .loc 1 3435 22 6040 0088 FB68 ldr r3, [r7, #12] 6041 008a 1A85 strh r2, [r3, #40] @ movhi 3436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6042 .loc 1 3436 16 6043 008c FB68 ldr r3, [r7, #12] 6044 008e DB6A ldr r3, [r3, #44] 6045 0090 FB61 str r3, [r7, #28] 6046 .L295: 3437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ 6047 .loc 1 3442 14 6048 0092 FB68 ldr r3, [r7, #12] 6049 0094 1B6B ldr r3, [r3, #48] 6050 .loc 1 3442 8 ARM GAS /tmp/cc5G5cqz.s page 168 6051 0096 112B cmp r3, #17 6052 0098 0ED1 bne .L296 3443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6053 .loc 1 3443 10 6054 009a BB6A ldr r3, [r7, #40] 6055 009c AA2B cmp r3, #170 6056 009e 03D0 beq .L297 6057 .loc 1 3443 10 is_stmt 0 discriminator 2 6058 00a0 BB6A ldr r3, [r7, #40] 6059 00a2 B3F52A4F cmp r3, #43520 6060 00a6 01D1 bne .L298 6061 .L297: 6062 .loc 1 3443 10 discriminator 3 6063 00a8 0123 movs r3, #1 6064 .loc 1 3443 10 6065 00aa 00E0 b .L299 6066 .L298: 6067 .loc 1 3443 10 discriminator 4 6068 00ac 0023 movs r3, #0 6069 .L299: 3442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6070 .loc 1 3442 59 is_stmt 1 6071 00ae 002B cmp r3, #0 6072 00b0 02D1 bne .L296 3444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 6073 .loc 1 3445 19 6074 00b2 0023 movs r3, #0 6075 00b4 BB61 str r3, [r7, #24] 6076 00b6 0AE0 b .L300 6077 .L296: 3446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 6078 .loc 1 3450 7 6079 00b8 F868 ldr r0, [r7, #12] 6080 00ba FFF7FEFF bl I2C_ConvertOtherXferOptions 3451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 6081 .loc 1 3453 15 6082 00be FB68 ldr r3, [r7, #12] 6083 00c0 5B8D ldrh r3, [r3, #42] @ movhi 6084 00c2 9BB2 uxth r3, r3 6085 .loc 1 3453 10 6086 00c4 FF2B cmp r3, #255 6087 00c6 02D8 bhi .L300 3454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6088 .loc 1 3455 18 6089 00c8 FB68 ldr r3, [r7, #12] 6090 00ca DB6A ldr r3, [r3, #44] 6091 00cc FB61 str r3, [r7, #28] 6092 .L300: 3456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 169 3457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 6093 .loc 1 3459 13 6094 00ce FB68 ldr r3, [r7, #12] 6095 00d0 1B8D ldrh r3, [r3, #40] 6096 .loc 1 3459 8 6097 00d2 002B cmp r3, #0 6098 00d4 70D0 beq .L301 3460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 6099 .loc 1 3461 15 6100 00d6 FB68 ldr r3, [r7, #12] 6101 00d8 9B6B ldr r3, [r3, #56] 6102 .loc 1 3461 10 6103 00da 002B cmp r3, #0 6104 00dc 20D0 beq .L302 3462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 6105 .loc 1 3464 13 6106 00de FB68 ldr r3, [r7, #12] 6107 00e0 9B6B ldr r3, [r3, #56] 6108 .loc 1 3464 40 6109 00e2 464A ldr r2, .L307+8 6110 00e4 9A62 str r2, [r3, #40] 3465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 6111 .loc 1 3467 13 6112 00e6 FB68 ldr r3, [r7, #12] 6113 00e8 9B6B ldr r3, [r3, #56] 6114 .loc 1 3467 41 6115 00ea 454A ldr r2, .L307+12 6116 00ec 1A63 str r2, [r3, #48] 3468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 6117 .loc 1 3470 13 6118 00ee FB68 ldr r3, [r7, #12] 6119 00f0 9B6B ldr r3, [r3, #56] 6120 .loc 1 3470 44 6121 00f2 0022 movs r2, #0 6122 00f4 DA62 str r2, [r3, #44] 3471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 6123 .loc 1 3471 13 6124 00f6 FB68 ldr r3, [r7, #12] 6125 00f8 9B6B ldr r3, [r3, #56] 6126 .loc 1 3471 41 6127 00fa 0022 movs r2, #0 6128 00fc 5A63 str r2, [r3, #52] 3472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance-> 6129 .loc 1 3474 25 6130 00fe FB68 ldr r3, [r7, #12] 6131 0100 986B ldr r0, [r3, #56] ARM GAS /tmp/cc5G5cqz.s page 170 6132 0102 7968 ldr r1, [r7, #4] 6133 .loc 1 3474 88 6134 0104 FB68 ldr r3, [r7, #12] 6135 0106 1B68 ldr r3, [r3] 6136 .loc 1 3474 83 6137 0108 2833 adds r3, r3, #40 6138 .loc 1 3474 25 6139 010a 1A46 mov r2, r3 3475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 6140 .loc 1 3475 46 6141 010c FB68 ldr r3, [r7, #12] 6142 010e 1B8D ldrh r3, [r3, #40] 3474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 6143 .loc 1 3474 25 6144 0110 FFF7FEFF bl HAL_DMA_Start_IT 6145 0114 0346 mov r3, r0 6146 0116 FB75 strb r3, [r7, #23] 3476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 6147 .loc 1 3492 10 6148 0118 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 6149 011a 002B cmp r3, #0 6150 011c 38D1 bne .L304 6151 011e 13E0 b .L306 6152 .L302: 3480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6153 .loc 1 3480 25 6154 0120 FB68 ldr r3, [r7, #12] 6155 0122 2022 movs r2, #32 6156 0124 83F84120 strb r2, [r3, #65] 3481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6157 .loc 1 3481 25 6158 0128 FB68 ldr r3, [r7, #12] 6159 012a 0022 movs r2, #0 6160 012c 83F84220 strb r2, [r3, #66] 3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6161 .loc 1 3484 13 6162 0130 FB68 ldr r3, [r7, #12] 6163 0132 5B6C ldr r3, [r3, #68] 3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6164 .loc 1 3484 25 6165 0134 43F08002 orr r2, r3, #128 ARM GAS /tmp/cc5G5cqz.s page 171 6166 0138 FB68 ldr r3, [r7, #12] 6167 013a 5A64 str r2, [r3, #68] 3487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6168 .loc 1 3487 9 6169 013c FB68 ldr r3, [r7, #12] 6170 013e 0022 movs r2, #0 6171 0140 83F84020 strb r2, [r3, #64] 3489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6172 .loc 1 3489 16 6173 0144 0123 movs r3, #1 6174 0146 50E0 b .L293 6175 .L306: 3493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ 3495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 6176 .loc 1 3495 59 6177 0148 FB68 ldr r3, [r7, #12] 6178 014a 1B8D ldrh r3, [r3, #40] 6179 .loc 1 3495 9 6180 014c DAB2 uxtb r2, r3 6181 014e 7989 ldrh r1, [r7, #10] 6182 0150 BB69 ldr r3, [r7, #24] 6183 0152 0093 str r3, [sp] 6184 0154 FB69 ldr r3, [r7, #28] 6185 0156 F868 ldr r0, [r7, #12] 6186 0158 FFF7FEFF bl I2C_TransferConfig 3496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 3498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 6187 .loc 1 3498 13 6188 015c FB68 ldr r3, [r7, #12] 6189 015e 5B8D ldrh r3, [r3, #42] @ movhi 6190 0160 9AB2 uxth r2, r3 6191 .loc 1 3498 32 6192 0162 FB68 ldr r3, [r7, #12] 6193 0164 1B8D ldrh r3, [r3, #40] 6194 .loc 1 3498 25 6195 0166 D31A subs r3, r2, r3 6196 0168 9AB2 uxth r2, r3 6197 016a FB68 ldr r3, [r7, #12] 6198 016c 5A85 strh r2, [r3, #42] @ movhi 3499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6199 .loc 1 3501 9 6200 016e FB68 ldr r3, [r7, #12] 6201 0170 0022 movs r2, #0 6202 0172 83F84020 strb r2, [r3, #64] 3502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 3507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 6203 .loc 1 3507 9 6204 0176 1021 movs r1, #16 6205 0178 F868 ldr r0, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 172 6206 017a FFF7FEFF bl I2C_Enable_IRQ 3508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 3510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 6207 .loc 1 3510 13 6208 017e FB68 ldr r3, [r7, #12] 6209 0180 1B68 ldr r3, [r3] 6210 .loc 1 3510 23 6211 0182 1A68 ldr r2, [r3] 6212 .loc 1 3510 13 6213 0184 FB68 ldr r3, [r7, #12] 6214 0186 1B68 ldr r3, [r3] 6215 .loc 1 3510 29 6216 0188 42F48042 orr r2, r2, #16384 6217 018c 1A60 str r2, [r3] 6218 018e 29E0 b .L305 6219 .L304: 3511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6220 .loc 1 3515 25 6221 0190 FB68 ldr r3, [r7, #12] 6222 0192 2022 movs r2, #32 6223 0194 83F84120 strb r2, [r3, #65] 3516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6224 .loc 1 3516 25 6225 0198 FB68 ldr r3, [r7, #12] 6226 019a 0022 movs r2, #0 6227 019c 83F84220 strb r2, [r3, #66] 3517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 6228 .loc 1 3519 13 6229 01a0 FB68 ldr r3, [r7, #12] 6230 01a2 5B6C ldr r3, [r3, #68] 6231 .loc 1 3519 25 6232 01a4 43F01002 orr r2, r3, #16 6233 01a8 FB68 ldr r3, [r7, #12] 6234 01aa 5A64 str r2, [r3, #68] 3520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6235 .loc 1 3522 9 6236 01ac FB68 ldr r3, [r7, #12] 6237 01ae 0022 movs r2, #0 6238 01b0 83F84020 strb r2, [r3, #64] 3523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6239 .loc 1 3524 16 6240 01b4 0123 movs r3, #1 6241 01b6 18E0 b .L293 6242 .L301: 3525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS /tmp/cc5G5cqz.s page 173 3528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 3530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 6243 .loc 1 3530 21 6244 01b8 FB68 ldr r3, [r7, #12] 6245 01ba 124A ldr r2, .L307+16 6246 01bc 5A63 str r2, [r3, #52] 3531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 3533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ 3534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 6247 .loc 1 3534 57 6248 01be FB68 ldr r3, [r7, #12] 6249 01c0 1B8D ldrh r3, [r3, #40] 6250 .loc 1 3534 7 6251 01c2 DAB2 uxtb r2, r3 6252 01c4 7989 ldrh r1, [r7, #10] 6253 01c6 0B4B ldr r3, .L307 6254 01c8 0093 str r3, [sp] 6255 01ca 4FF00073 mov r3, #33554432 6256 01ce F868 ldr r0, [r7, #12] 6257 01d0 FFF7FEFF bl I2C_TransferConfig 3535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 3536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6258 .loc 1 3538 7 6259 01d4 FB68 ldr r3, [r7, #12] 6260 01d6 0022 movs r2, #0 6261 01d8 83F84020 strb r2, [r3, #64] 3539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 6262 .loc 1 3547 7 6263 01dc 0121 movs r1, #1 6264 01de F868 ldr r0, [r7, #12] 6265 01e0 FFF7FEFF bl I2C_Enable_IRQ 6266 .L305: 3548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 6267 .loc 1 3550 12 6268 01e4 0023 movs r3, #0 6269 01e6 00E0 b .L293 6270 .L291: 3551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 6271 .loc 1 3554 12 6272 01e8 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 174 6273 .L293: 3555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6274 .loc 1 3556 1 6275 01ea 1846 mov r0, r3 6276 01ec 2037 adds r7, r7, #32 6277 .cfi_def_cfa_offset 8 6278 01ee BD46 mov sp, r7 6279 .cfi_def_cfa_register 13 6280 @ sp needed 6281 01f0 80BD pop {r7, pc} 6282 .L308: 6283 01f2 00BF .align 2 6284 .L307: 6285 01f4 00200080 .word -2147475456 6286 01f8 00000000 .word I2C_Master_ISR_DMA 6287 01fc 00000000 .word I2C_DMAMasterTransmitCplt 6288 0200 00000000 .word I2C_DMAError 6289 0204 00000000 .word I2C_Master_ISR_IT 6290 .cfi_endproc 6291 .LFE154: 6293 .section .text.HAL_I2C_Master_Seq_Receive_IT,"ax",%progbits 6294 .align 1 6295 .global HAL_I2C_Master_Seq_Receive_IT 6296 .syntax unified 6297 .thumb 6298 .thumb_func 6300 HAL_I2C_Master_Seq_Receive_IT: 6301 .LFB155: 3557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Inter 3560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8 3571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6302 .loc 1 3572 1 6303 .cfi_startproc 6304 @ args = 4, pretend = 0, frame = 24 6305 @ frame_needed = 1, uses_anonymous_args = 0 6306 0000 80B5 push {r7, lr} 6307 .cfi_def_cfa_offset 8 6308 .cfi_offset 7, -8 6309 .cfi_offset 14, -4 6310 0002 88B0 sub sp, sp, #32 6311 .cfi_def_cfa_offset 40 6312 0004 02AF add r7, sp, #8 6313 .cfi_def_cfa 7, 32 ARM GAS /tmp/cc5G5cqz.s page 175 6314 0006 F860 str r0, [r7, #12] 6315 0008 7A60 str r2, [r7, #4] 6316 000a 1A46 mov r2, r3 6317 000c 0B46 mov r3, r1 @ movhi 6318 000e 7B81 strh r3, [r7, #10] @ movhi 6319 0010 1346 mov r3, r2 @ movhi 6320 0012 3B81 strh r3, [r7, #8] @ movhi 3573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; 6321 .loc 1 3574 12 6322 0014 3A4B ldr r3, .L320 6323 0016 3B61 str r3, [r7, #16] 3575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 6324 .loc 1 3579 11 6325 0018 FB68 ldr r3, [r7, #12] 6326 001a 93F84130 ldrb r3, [r3, #65] 6327 001e DBB2 uxtb r3, r3 6328 .loc 1 3579 6 6329 0020 202B cmp r3, #32 6330 0022 67D1 bne .L310 3580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6331 .loc 1 3582 5 6332 0024 FB68 ldr r3, [r7, #12] 6333 0026 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6334 002a 012B cmp r3, #1 6335 002c 01D1 bne .L311 6336 .loc 1 3582 5 is_stmt 0 discriminator 1 6337 002e 0223 movs r3, #2 6338 .loc 1 3582 5 6339 0030 61E0 b .L312 6340 .L311: 6341 .loc 1 3582 5 discriminator 2 6342 0032 FB68 ldr r3, [r7, #12] 6343 0034 0122 movs r2, #1 6344 0036 83F84020 strb r2, [r3, #64] 3583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 6345 .loc 1 3584 21 is_stmt 1 6346 003a FB68 ldr r3, [r7, #12] 6347 003c 2222 movs r2, #34 6348 003e 83F84120 strb r2, [r3, #65] 3585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 6349 .loc 1 3585 21 6350 0042 FB68 ldr r3, [r7, #12] 6351 0044 1022 movs r2, #16 6352 0046 83F84220 strb r2, [r3, #66] 3586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6353 .loc 1 3586 21 6354 004a FB68 ldr r3, [r7, #12] 6355 004c 0022 movs r2, #0 6356 004e 5A64 str r2, [r3, #68] ARM GAS /tmp/cc5G5cqz.s page 176 3587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 6357 .loc 1 3589 23 6358 0050 FB68 ldr r3, [r7, #12] 6359 0052 7A68 ldr r2, [r7, #4] 6360 0054 5A62 str r2, [r3, #36] 3590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 6361 .loc 1 3590 23 6362 0056 FB68 ldr r3, [r7, #12] 6363 0058 3A89 ldrh r2, [r7, #8] @ movhi 6364 005a 5A85 strh r2, [r3, #42] @ movhi 3591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 6365 .loc 1 3591 23 6366 005c FB68 ldr r3, [r7, #12] 6367 005e 3A6A ldr r2, [r7, #32] 6368 0060 DA62 str r2, [r3, #44] 3592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 6369 .loc 1 3592 23 6370 0062 FB68 ldr r3, [r7, #12] 6371 0064 274A ldr r2, .L320+4 6372 0066 5A63 str r2, [r3, #52] 3593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6373 .loc 1 3595 13 6374 0068 FB68 ldr r3, [r7, #12] 6375 006a 5B8D ldrh r3, [r3, #42] @ movhi 6376 006c 9BB2 uxth r3, r3 6377 .loc 1 3595 8 6378 006e FF2B cmp r3, #255 6379 0070 06D9 bls .L313 3596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6380 .loc 1 3597 22 6381 0072 FB68 ldr r3, [r7, #12] 6382 0074 FF22 movs r2, #255 6383 0076 1A85 strh r2, [r3, #40] @ movhi 3598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 6384 .loc 1 3598 16 6385 0078 4FF08073 mov r3, #16777216 6386 007c 7B61 str r3, [r7, #20] 6387 007e 07E0 b .L314 6388 .L313: 3599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6389 .loc 1 3602 28 6390 0080 FB68 ldr r3, [r7, #12] 6391 0082 5B8D ldrh r3, [r3, #42] @ movhi 6392 0084 9AB2 uxth r2, r3 6393 .loc 1 3602 22 6394 0086 FB68 ldr r3, [r7, #12] 6395 0088 1A85 strh r2, [r3, #40] @ movhi 3603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6396 .loc 1 3603 16 ARM GAS /tmp/cc5G5cqz.s page 177 6397 008a FB68 ldr r3, [r7, #12] 6398 008c DB6A ldr r3, [r3, #44] 6399 008e 7B61 str r3, [r7, #20] 6400 .L314: 3604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ 6401 .loc 1 3609 14 6402 0090 FB68 ldr r3, [r7, #12] 6403 0092 1B6B ldr r3, [r3, #48] 6404 .loc 1 3609 8 6405 0094 122B cmp r3, #18 6406 0096 0ED1 bne .L315 3610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6407 .loc 1 3610 10 6408 0098 3B6A ldr r3, [r7, #32] 6409 009a AA2B cmp r3, #170 6410 009c 03D0 beq .L316 6411 .loc 1 3610 10 is_stmt 0 discriminator 2 6412 009e 3B6A ldr r3, [r7, #32] 6413 00a0 B3F52A4F cmp r3, #43520 6414 00a4 01D1 bne .L317 6415 .L316: 6416 .loc 1 3610 10 discriminator 3 6417 00a6 0123 movs r3, #1 6418 .loc 1 3610 10 6419 00a8 00E0 b .L318 6420 .L317: 6421 .loc 1 3610 10 discriminator 4 6422 00aa 0023 movs r3, #0 6423 .L318: 3609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6424 .loc 1 3609 59 is_stmt 1 6425 00ac 002B cmp r3, #0 6426 00ae 02D1 bne .L315 3611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 6427 .loc 1 3612 19 6428 00b0 0023 movs r3, #0 6429 00b2 3B61 str r3, [r7, #16] 6430 00b4 0AE0 b .L319 6431 .L315: 3613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 6432 .loc 1 3617 7 6433 00b6 F868 ldr r0, [r7, #12] 6434 00b8 FFF7FEFF bl I2C_ConvertOtherXferOptions 3618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 6435 .loc 1 3620 15 ARM GAS /tmp/cc5G5cqz.s page 178 6436 00bc FB68 ldr r3, [r7, #12] 6437 00be 5B8D ldrh r3, [r3, #42] @ movhi 6438 00c0 9BB2 uxth r3, r3 6439 .loc 1 3620 10 6440 00c2 FF2B cmp r3, #255 6441 00c4 02D8 bhi .L319 3621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6442 .loc 1 3622 18 6443 00c6 FB68 ldr r3, [r7, #12] 6444 00c8 DB6A ldr r3, [r3, #44] 6445 00ca 7B61 str r3, [r7, #20] 6446 .L319: 3623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ 3627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 6447 .loc 1 3627 55 6448 00cc FB68 ldr r3, [r7, #12] 6449 00ce 1B8D ldrh r3, [r3, #40] 6450 .loc 1 3627 5 6451 00d0 DAB2 uxtb r2, r3 6452 00d2 7989 ldrh r1, [r7, #10] 6453 00d4 3B69 ldr r3, [r7, #16] 6454 00d6 0093 str r3, [sp] 6455 00d8 7B69 ldr r3, [r7, #20] 6456 00da F868 ldr r0, [r7, #12] 6457 00dc FFF7FEFF bl I2C_TransferConfig 3628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6458 .loc 1 3630 5 6459 00e0 FB68 ldr r3, [r7, #12] 6460 00e2 0022 movs r2, #0 6461 00e4 83F84020 strb r2, [r3, #64] 3631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 6462 .loc 1 3635 5 6463 00e8 0221 movs r1, #2 6464 00ea F868 ldr r0, [r7, #12] 6465 00ec FFF7FEFF bl I2C_Enable_IRQ 3636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 6466 .loc 1 3637 12 6467 00f0 0023 movs r3, #0 6468 00f2 00E0 b .L312 6469 .L310: 3638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 6470 .loc 1 3641 12 6471 00f4 0223 movs r3, #2 ARM GAS /tmp/cc5G5cqz.s page 179 6472 .L312: 3642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6473 .loc 1 3643 1 6474 00f6 1846 mov r0, r3 6475 00f8 1837 adds r7, r7, #24 6476 .cfi_def_cfa_offset 8 6477 00fa BD46 mov sp, r7 6478 .cfi_def_cfa_register 13 6479 @ sp needed 6480 00fc 80BD pop {r7, pc} 6481 .L321: 6482 00fe 00BF .align 2 6483 .L320: 6484 0100 00240080 .word -2147474432 6485 0104 00000000 .word I2C_Master_ISR_IT 6486 .cfi_endproc 6487 .LFE155: 6489 .section .text.HAL_I2C_Master_Seq_Receive_DMA,"ax",%progbits 6490 .align 1 6491 .global HAL_I2C_Master_Seq_Receive_DMA 6492 .syntax unified 6493 .thumb 6494 .thumb_func 6496 HAL_I2C_Master_Seq_Receive_DMA: 6497 .LFB156: 3644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA 3647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint 3658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6498 .loc 1 3659 1 6499 .cfi_startproc 6500 @ args = 4, pretend = 0, frame = 32 6501 @ frame_needed = 1, uses_anonymous_args = 0 6502 0000 80B5 push {r7, lr} 6503 .cfi_def_cfa_offset 8 6504 .cfi_offset 7, -8 6505 .cfi_offset 14, -4 6506 0002 8AB0 sub sp, sp, #40 6507 .cfi_def_cfa_offset 48 6508 0004 02AF add r7, sp, #8 6509 .cfi_def_cfa 7, 40 6510 0006 F860 str r0, [r7, #12] 6511 0008 7A60 str r2, [r7, #4] 6512 000a 1A46 mov r2, r3 ARM GAS /tmp/cc5G5cqz.s page 180 6513 000c 0B46 mov r3, r1 @ movhi 6514 000e 7B81 strh r3, [r7, #10] @ movhi 6515 0010 1346 mov r3, r2 @ movhi 6516 0012 3B81 strh r3, [r7, #8] @ movhi 3660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; 6517 .loc 1 3661 12 6518 0014 774B ldr r3, .L339 6519 0016 BB61 str r3, [r7, #24] 3662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 6520 .loc 1 3667 11 6521 0018 FB68 ldr r3, [r7, #12] 6522 001a 93F84130 ldrb r3, [r3, #65] 6523 001e DBB2 uxtb r3, r3 6524 .loc 1 3667 6 6525 0020 202B cmp r3, #32 6526 0022 40F0E180 bne .L323 3668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6527 .loc 1 3670 5 6528 0026 FB68 ldr r3, [r7, #12] 6529 0028 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6530 002c 012B cmp r3, #1 6531 002e 01D1 bne .L324 6532 .loc 1 3670 5 is_stmt 0 discriminator 1 6533 0030 0223 movs r3, #2 6534 .loc 1 3670 5 6535 0032 DAE0 b .L325 6536 .L324: 6537 .loc 1 3670 5 discriminator 2 6538 0034 FB68 ldr r3, [r7, #12] 6539 0036 0122 movs r2, #1 6540 0038 83F84020 strb r2, [r3, #64] 3671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 6541 .loc 1 3672 21 is_stmt 1 6542 003c FB68 ldr r3, [r7, #12] 6543 003e 2222 movs r2, #34 6544 0040 83F84120 strb r2, [r3, #65] 3673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 6545 .loc 1 3673 21 6546 0044 FB68 ldr r3, [r7, #12] 6547 0046 1022 movs r2, #16 6548 0048 83F84220 strb r2, [r3, #66] 3674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6549 .loc 1 3674 21 6550 004c FB68 ldr r3, [r7, #12] 6551 004e 0022 movs r2, #0 6552 0050 5A64 str r2, [r3, #68] 3675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ ARM GAS /tmp/cc5G5cqz.s page 181 3677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 6553 .loc 1 3677 23 6554 0052 FB68 ldr r3, [r7, #12] 6555 0054 7A68 ldr r2, [r7, #4] 6556 0056 5A62 str r2, [r3, #36] 3678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 6557 .loc 1 3678 23 6558 0058 FB68 ldr r3, [r7, #12] 6559 005a 3A89 ldrh r2, [r7, #8] @ movhi 6560 005c 5A85 strh r2, [r3, #42] @ movhi 3679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 6561 .loc 1 3679 23 6562 005e FB68 ldr r3, [r7, #12] 6563 0060 BA6A ldr r2, [r7, #40] 6564 0062 DA62 str r2, [r3, #44] 3680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 6565 .loc 1 3680 23 6566 0064 FB68 ldr r3, [r7, #12] 6567 0066 644A ldr r2, .L339+4 6568 0068 5A63 str r2, [r3, #52] 3681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6569 .loc 1 3683 13 6570 006a FB68 ldr r3, [r7, #12] 6571 006c 5B8D ldrh r3, [r3, #42] @ movhi 6572 006e 9BB2 uxth r3, r3 6573 .loc 1 3683 8 6574 0070 FF2B cmp r3, #255 6575 0072 06D9 bls .L326 3684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6576 .loc 1 3685 22 6577 0074 FB68 ldr r3, [r7, #12] 6578 0076 FF22 movs r2, #255 6579 0078 1A85 strh r2, [r3, #40] @ movhi 3686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 6580 .loc 1 3686 16 6581 007a 4FF08073 mov r3, #16777216 6582 007e FB61 str r3, [r7, #28] 6583 0080 07E0 b .L327 6584 .L326: 3687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6585 .loc 1 3690 28 6586 0082 FB68 ldr r3, [r7, #12] 6587 0084 5B8D ldrh r3, [r3, #42] @ movhi 6588 0086 9AB2 uxth r2, r3 6589 .loc 1 3690 22 6590 0088 FB68 ldr r3, [r7, #12] 6591 008a 1A85 strh r2, [r3, #40] @ movhi 3691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6592 .loc 1 3691 16 6593 008c FB68 ldr r3, [r7, #12] 6594 008e DB6A ldr r3, [r3, #44] ARM GAS /tmp/cc5G5cqz.s page 182 6595 0090 FB61 str r3, [r7, #28] 6596 .L327: 3692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ 6597 .loc 1 3697 14 6598 0092 FB68 ldr r3, [r7, #12] 6599 0094 1B6B ldr r3, [r3, #48] 6600 .loc 1 3697 8 6601 0096 122B cmp r3, #18 6602 0098 0ED1 bne .L328 3698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6603 .loc 1 3698 10 6604 009a BB6A ldr r3, [r7, #40] 6605 009c AA2B cmp r3, #170 6606 009e 03D0 beq .L329 6607 .loc 1 3698 10 is_stmt 0 discriminator 2 6608 00a0 BB6A ldr r3, [r7, #40] 6609 00a2 B3F52A4F cmp r3, #43520 6610 00a6 01D1 bne .L330 6611 .L329: 6612 .loc 1 3698 10 discriminator 3 6613 00a8 0123 movs r3, #1 6614 .loc 1 3698 10 6615 00aa 00E0 b .L331 6616 .L330: 6617 .loc 1 3698 10 discriminator 4 6618 00ac 0023 movs r3, #0 6619 .L331: 3697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6620 .loc 1 3697 59 is_stmt 1 6621 00ae 002B cmp r3, #0 6622 00b0 02D1 bne .L328 3699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 6623 .loc 1 3700 19 6624 00b2 0023 movs r3, #0 6625 00b4 BB61 str r3, [r7, #24] 6626 00b6 0AE0 b .L332 6627 .L328: 3701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 6628 .loc 1 3705 7 6629 00b8 F868 ldr r0, [r7, #12] 6630 00ba FFF7FEFF bl I2C_ConvertOtherXferOptions 3706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 6631 .loc 1 3708 15 6632 00be FB68 ldr r3, [r7, #12] 6633 00c0 5B8D ldrh r3, [r3, #42] @ movhi ARM GAS /tmp/cc5G5cqz.s page 183 6634 00c2 9BB2 uxth r3, r3 6635 .loc 1 3708 10 6636 00c4 FF2B cmp r3, #255 6637 00c6 02D8 bhi .L332 3709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6638 .loc 1 3710 18 6639 00c8 FB68 ldr r3, [r7, #12] 6640 00ca DB6A ldr r3, [r3, #44] 6641 00cc FB61 str r3, [r7, #28] 6642 .L332: 3711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 6643 .loc 1 3714 13 6644 00ce FB68 ldr r3, [r7, #12] 6645 00d0 1B8D ldrh r3, [r3, #40] 6646 .loc 1 3714 8 6647 00d2 002B cmp r3, #0 6648 00d4 70D0 beq .L333 3715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 6649 .loc 1 3716 15 6650 00d6 FB68 ldr r3, [r7, #12] 6651 00d8 DB6B ldr r3, [r3, #60] 6652 .loc 1 3716 10 6653 00da 002B cmp r3, #0 6654 00dc 20D0 beq .L334 3717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 6655 .loc 1 3719 13 6656 00de FB68 ldr r3, [r7, #12] 6657 00e0 DB6B ldr r3, [r3, #60] 6658 .loc 1 3719 40 6659 00e2 464A ldr r2, .L339+8 6660 00e4 9A62 str r2, [r3, #40] 3720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 6661 .loc 1 3722 13 6662 00e6 FB68 ldr r3, [r7, #12] 6663 00e8 DB6B ldr r3, [r3, #60] 6664 .loc 1 3722 41 6665 00ea 454A ldr r2, .L339+12 6666 00ec 1A63 str r2, [r3, #48] 3723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 6667 .loc 1 3725 13 6668 00ee FB68 ldr r3, [r7, #12] 6669 00f0 DB6B ldr r3, [r3, #60] 6670 .loc 1 3725 44 6671 00f2 0022 movs r2, #0 6672 00f4 DA62 str r2, [r3, #44] 3726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; ARM GAS /tmp/cc5G5cqz.s page 184 6673 .loc 1 3726 13 6674 00f6 FB68 ldr r3, [r7, #12] 6675 00f8 DB6B ldr r3, [r3, #60] 6676 .loc 1 3726 41 6677 00fa 0022 movs r2, #0 6678 00fc 5A63 str r2, [r3, #52] 3727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p 6679 .loc 1 3729 25 6680 00fe FB68 ldr r3, [r7, #12] 6681 0100 D86B ldr r0, [r3, #60] 6682 .loc 1 3729 71 6683 0102 FB68 ldr r3, [r7, #12] 6684 0104 1B68 ldr r3, [r3] 6685 .loc 1 3729 66 6686 0106 2433 adds r3, r3, #36 6687 .loc 1 3729 25 6688 0108 1946 mov r1, r3 6689 010a 7A68 ldr r2, [r7, #4] 3730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 6690 .loc 1 3730 46 6691 010c FB68 ldr r3, [r7, #12] 6692 010e 1B8D ldrh r3, [r3, #40] 3729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 6693 .loc 1 3729 25 6694 0110 FFF7FEFF bl HAL_DMA_Start_IT 6695 0114 0346 mov r3, r0 6696 0116 FB75 strb r3, [r7, #23] 3731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 6697 .loc 1 3747 10 6698 0118 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 6699 011a 002B cmp r3, #0 6700 011c 38D1 bne .L336 6701 011e 13E0 b .L338 6702 .L334: 3735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6703 .loc 1 3735 25 6704 0120 FB68 ldr r3, [r7, #12] 6705 0122 2022 movs r2, #32 6706 0124 83F84120 strb r2, [r3, #65] ARM GAS /tmp/cc5G5cqz.s page 185 3736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6707 .loc 1 3736 25 6708 0128 FB68 ldr r3, [r7, #12] 6709 012a 0022 movs r2, #0 6710 012c 83F84220 strb r2, [r3, #66] 3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6711 .loc 1 3739 13 6712 0130 FB68 ldr r3, [r7, #12] 6713 0132 5B6C ldr r3, [r3, #68] 3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6714 .loc 1 3739 25 6715 0134 43F08002 orr r2, r3, #128 6716 0138 FB68 ldr r3, [r7, #12] 6717 013a 5A64 str r2, [r3, #68] 3742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6718 .loc 1 3742 9 6719 013c FB68 ldr r3, [r7, #12] 6720 013e 0022 movs r2, #0 6721 0140 83F84020 strb r2, [r3, #64] 3744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6722 .loc 1 3744 16 6723 0144 0123 movs r3, #1 6724 0146 50E0 b .L325 6725 .L338: 3748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ 3750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 6726 .loc 1 3750 59 6727 0148 FB68 ldr r3, [r7, #12] 6728 014a 1B8D ldrh r3, [r3, #40] 6729 .loc 1 3750 9 6730 014c DAB2 uxtb r2, r3 6731 014e 7989 ldrh r1, [r7, #10] 6732 0150 BB69 ldr r3, [r7, #24] 6733 0152 0093 str r3, [sp] 6734 0154 FB69 ldr r3, [r7, #28] 6735 0156 F868 ldr r0, [r7, #12] 6736 0158 FFF7FEFF bl I2C_TransferConfig 3751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 3753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 6737 .loc 1 3753 13 6738 015c FB68 ldr r3, [r7, #12] 6739 015e 5B8D ldrh r3, [r3, #42] @ movhi 6740 0160 9AB2 uxth r2, r3 6741 .loc 1 3753 32 6742 0162 FB68 ldr r3, [r7, #12] 6743 0164 1B8D ldrh r3, [r3, #40] 6744 .loc 1 3753 25 6745 0166 D31A subs r3, r2, r3 6746 0168 9AB2 uxth r2, r3 6747 016a FB68 ldr r3, [r7, #12] 6748 016c 5A85 strh r2, [r3, #42] @ movhi 3754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6749 .loc 1 3756 9 ARM GAS /tmp/cc5G5cqz.s page 186 6750 016e FB68 ldr r3, [r7, #12] 6751 0170 0022 movs r2, #0 6752 0172 83F84020 strb r2, [r3, #64] 3757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 3762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 6753 .loc 1 3762 9 6754 0176 1021 movs r1, #16 6755 0178 F868 ldr r0, [r7, #12] 6756 017a FFF7FEFF bl I2C_Enable_IRQ 3763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 3765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 6757 .loc 1 3765 13 6758 017e FB68 ldr r3, [r7, #12] 6759 0180 1B68 ldr r3, [r3] 6760 .loc 1 3765 23 6761 0182 1A68 ldr r2, [r3] 6762 .loc 1 3765 13 6763 0184 FB68 ldr r3, [r7, #12] 6764 0186 1B68 ldr r3, [r3] 6765 .loc 1 3765 29 6766 0188 42F40042 orr r2, r2, #32768 6767 018c 1A60 str r2, [r3] 6768 018e 29E0 b .L337 6769 .L336: 3766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6770 .loc 1 3770 25 6771 0190 FB68 ldr r3, [r7, #12] 6772 0192 2022 movs r2, #32 6773 0194 83F84120 strb r2, [r3, #65] 3771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6774 .loc 1 3771 25 6775 0198 FB68 ldr r3, [r7, #12] 6776 019a 0022 movs r2, #0 6777 019c 83F84220 strb r2, [r3, #66] 3772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 6778 .loc 1 3774 13 6779 01a0 FB68 ldr r3, [r7, #12] 6780 01a2 5B6C ldr r3, [r3, #68] 6781 .loc 1 3774 25 6782 01a4 43F01002 orr r2, r3, #16 6783 01a8 FB68 ldr r3, [r7, #12] 6784 01aa 5A64 str r2, [r3, #68] 3775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6785 .loc 1 3777 9 ARM GAS /tmp/cc5G5cqz.s page 187 6786 01ac FB68 ldr r3, [r7, #12] 6787 01ae 0022 movs r2, #0 6788 01b0 83F84020 strb r2, [r3, #64] 3778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6789 .loc 1 3779 16 6790 01b4 0123 movs r3, #1 6791 01b6 18E0 b .L325 6792 .L333: 3780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 3785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 6793 .loc 1 3785 21 6794 01b8 FB68 ldr r3, [r7, #12] 6795 01ba 124A ldr r2, .L339+16 6796 01bc 5A63 str r2, [r3, #52] 3786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 3788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ 3789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 6797 .loc 1 3789 57 6798 01be FB68 ldr r3, [r7, #12] 6799 01c0 1B8D ldrh r3, [r3, #40] 6800 .loc 1 3789 7 6801 01c2 DAB2 uxtb r2, r3 6802 01c4 7989 ldrh r1, [r7, #10] 6803 01c6 0B4B ldr r3, .L339 6804 01c8 0093 str r3, [sp] 6805 01ca 4FF00073 mov r3, #33554432 6806 01ce F868 ldr r0, [r7, #12] 6807 01d0 FFF7FEFF bl I2C_TransferConfig 3790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 3791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6808 .loc 1 3793 7 6809 01d4 FB68 ldr r3, [r7, #12] 6810 01d6 0022 movs r2, #0 6811 01d8 83F84020 strb r2, [r3, #64] 3794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 6812 .loc 1 3802 7 6813 01dc 0121 movs r1, #1 6814 01de F868 ldr r0, [r7, #12] 6815 01e0 FFF7FEFF bl I2C_Enable_IRQ 6816 .L337: 3803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 188 3804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 6817 .loc 1 3805 12 6818 01e4 0023 movs r3, #0 6819 01e6 00E0 b .L325 6820 .L323: 3806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 6821 .loc 1 3809 12 6822 01e8 0223 movs r3, #2 6823 .L325: 3810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6824 .loc 1 3811 1 6825 01ea 1846 mov r0, r3 6826 01ec 2037 adds r7, r7, #32 6827 .cfi_def_cfa_offset 8 6828 01ee BD46 mov sp, r7 6829 .cfi_def_cfa_register 13 6830 @ sp needed 6831 01f0 80BD pop {r7, pc} 6832 .L340: 6833 01f2 00BF .align 2 6834 .L339: 6835 01f4 00240080 .word -2147474432 6836 01f8 00000000 .word I2C_Master_ISR_DMA 6837 01fc 00000000 .word I2C_DMAMasterReceiveCplt 6838 0200 00000000 .word I2C_DMAError 6839 0204 00000000 .word I2C_Master_ISR_IT 6840 .cfi_endproc 6841 .LFE156: 6843 .section .text.HAL_I2C_Slave_Seq_Transmit_IT,"ax",%progbits 6844 .align 1 6845 .global HAL_I2C_Slave_Seq_Transmit_IT 6846 .syntax unified 6847 .thumb 6848 .thumb_func 6850 HAL_I2C_Slave_Seq_Transmit_IT: 6851 .LFB157: 3812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit 3815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S 3824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 3825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6852 .loc 1 3825 1 6853 .cfi_startproc ARM GAS /tmp/cc5G5cqz.s page 189 6854 @ args = 0, pretend = 0, frame = 24 6855 @ frame_needed = 1, uses_anonymous_args = 0 6856 0000 80B5 push {r7, lr} 6857 .cfi_def_cfa_offset 8 6858 .cfi_offset 7, -8 6859 .cfi_offset 14, -4 6860 0002 86B0 sub sp, sp, #24 6861 .cfi_def_cfa_offset 32 6862 0004 00AF add r7, sp, #0 6863 .cfi_def_cfa_register 7 6864 0006 F860 str r0, [r7, #12] 6865 0008 B960 str r1, [r7, #8] 6866 000a 3B60 str r3, [r7] 6867 000c 1346 mov r3, r2 @ movhi 6868 000e FB80 strh r3, [r7, #6] @ movhi 3826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 3827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 3828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) 6869 .loc 1 3832 22 6870 0010 FB68 ldr r3, [r7, #12] 6871 0012 93F84130 ldrb r3, [r3, #65] 6872 0016 DBB2 uxtb r3, r3 6873 .loc 1 3832 30 6874 0018 03F02803 and r3, r3, #40 6875 .loc 1 3832 6 6876 001c 282B cmp r3, #40 6877 001e 40F09880 bne .L342 3833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 6878 .loc 1 3834 8 6879 0022 BB68 ldr r3, [r7, #8] 6880 0024 002B cmp r3, #0 6881 0026 02D0 beq .L343 6882 .loc 1 3834 25 discriminator 1 6883 0028 FB88 ldrh r3, [r7, #6] 6884 002a 002B cmp r3, #0 6885 002c 05D1 bne .L344 6886 .L343: 3835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 6887 .loc 1 3836 23 6888 002e FB68 ldr r3, [r7, #12] 6889 0030 4FF40072 mov r2, #512 6890 0034 5A64 str r2, [r3, #68] 3837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6891 .loc 1 3837 15 6892 0036 0123 movs r3, #1 6893 0038 8CE0 b .L345 6894 .L344: 3838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 3841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); ARM GAS /tmp/cc5G5cqz.s page 190 6895 .loc 1 3841 5 6896 003a 48F20101 movw r1, #32769 6897 003e F868 ldr r0, [r7, #12] 6898 0040 FFF7FEFF bl I2C_Disable_IRQ 3842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6899 .loc 1 3844 5 6900 0044 FB68 ldr r3, [r7, #12] 6901 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6902 004a 012B cmp r3, #1 6903 004c 01D1 bne .L346 6904 .loc 1 3844 5 is_stmt 0 discriminator 1 6905 004e 0223 movs r3, #2 6906 .loc 1 3844 5 6907 0050 80E0 b .L345 6908 .L346: 6909 .loc 1 3844 5 discriminator 2 6910 0052 FB68 ldr r3, [r7, #12] 6911 0054 0122 movs r2, #1 6912 0056 83F84020 strb r2, [r3, #64] 3845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 3847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ 3848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 6913 .loc 1 3848 13 is_stmt 1 6914 005a FB68 ldr r3, [r7, #12] 6915 005c 93F84130 ldrb r3, [r3, #65] 6916 0060 DBB2 uxtb r3, r3 6917 .loc 1 3848 8 6918 0062 2A2B cmp r3, #42 6919 0064 2AD1 bne .L347 3849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 3851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 6920 .loc 1 3851 7 6921 0066 0221 movs r1, #2 6922 0068 F868 ldr r0, [r7, #12] 6923 006a FFF7FEFF bl I2C_Disable_IRQ 3852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 3854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 6924 .loc 1 3854 16 6925 006e FB68 ldr r3, [r7, #12] 6926 0070 1B68 ldr r3, [r3] 6927 .loc 1 3854 26 6928 0072 1B68 ldr r3, [r3] 6929 .loc 1 3854 32 6930 0074 03F40043 and r3, r3, #32768 6931 .loc 1 3854 10 6932 0078 B3F5004F cmp r3, #32768 6933 007c 1ED1 bne .L347 3855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 6934 .loc 1 3856 13 6935 007e FB68 ldr r3, [r7, #12] 6936 0080 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 191 6937 .loc 1 3856 23 6938 0082 1A68 ldr r2, [r3] 6939 .loc 1 3856 13 6940 0084 FB68 ldr r3, [r7, #12] 6941 0086 1B68 ldr r3, [r3] 6942 .loc 1 3856 29 6943 0088 22F40042 bic r2, r2, #32768 6944 008c 1A60 str r2, [r3] 3857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 6945 .loc 1 3858 17 6946 008e FB68 ldr r3, [r7, #12] 6947 0090 DB6B ldr r3, [r3, #60] 6948 .loc 1 3858 12 6949 0092 002B cmp r3, #0 6950 0094 12D0 beq .L347 3859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 3861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 3862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 6951 .loc 1 3862 15 6952 0096 FB68 ldr r3, [r7, #12] 6953 0098 DB6B ldr r3, [r3, #60] 6954 .loc 1 3862 43 6955 009a 304A ldr r2, .L349 6956 009c 5A63 str r2, [r3, #52] 3863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 3865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 6957 .loc 1 3865 15 6958 009e FB68 ldr r3, [r7, #12] 6959 00a0 DB6B ldr r3, [r3, #60] 6960 00a2 1846 mov r0, r3 6961 00a4 FFF7FEFF bl HAL_DMA_Abort_IT 6962 00a8 0346 mov r3, r0 6963 .loc 1 3865 14 discriminator 1 6964 00aa 002B cmp r3, #0 6965 00ac 06D0 beq .L347 3866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 3868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 6966 .loc 1 3868 17 6967 00ae FB68 ldr r3, [r7, #12] 6968 00b0 DB6B ldr r3, [r3, #60] 6969 .loc 1 3868 25 6970 00b2 5B6B ldr r3, [r3, #52] 6971 .loc 1 3868 49 6972 00b4 FA68 ldr r2, [r7, #12] 6973 00b6 D26B ldr r2, [r2, #60] 6974 .loc 1 3868 13 6975 00b8 1046 mov r0, r2 6976 00ba 9847 blx r3 6977 .LVL0: 6978 .L347: 3869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 192 3872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; 6979 .loc 1 3874 21 6980 00bc FB68 ldr r3, [r7, #12] 6981 00be 2922 movs r2, #41 6982 00c0 83F84120 strb r2, [r3, #65] 3875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 6983 .loc 1 3875 21 6984 00c4 FB68 ldr r3, [r7, #12] 6985 00c6 2022 movs r2, #32 6986 00c8 83F84220 strb r2, [r3, #66] 3876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6987 .loc 1 3876 21 6988 00cc FB68 ldr r3, [r7, #12] 6989 00ce 0022 movs r2, #0 6990 00d0 5A64 str r2, [r3, #68] 3877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 3879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 6991 .loc 1 3879 9 6992 00d2 FB68 ldr r3, [r7, #12] 6993 00d4 1B68 ldr r3, [r3] 6994 .loc 1 3879 19 6995 00d6 5A68 ldr r2, [r3, #4] 6996 .loc 1 3879 9 6997 00d8 FB68 ldr r3, [r7, #12] 6998 00da 1B68 ldr r3, [r3] 6999 .loc 1 3879 25 7000 00dc 22F40042 bic r2, r2, #32768 7001 00e0 5A60 str r2, [r3, #4] 3880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7002 .loc 1 3882 23 7003 00e2 FB68 ldr r3, [r7, #12] 7004 00e4 BA68 ldr r2, [r7, #8] 7005 00e6 5A62 str r2, [r3, #36] 3883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7006 .loc 1 3883 23 7007 00e8 FB68 ldr r3, [r7, #12] 7008 00ea FA88 ldrh r2, [r7, #6] @ movhi 7009 00ec 5A85 strh r2, [r3, #42] @ movhi 3884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7010 .loc 1 3884 29 7011 00ee FB68 ldr r3, [r7, #12] 7012 00f0 5B8D ldrh r3, [r3, #42] @ movhi 7013 00f2 9AB2 uxth r2, r3 7014 .loc 1 3884 23 7015 00f4 FB68 ldr r3, [r7, #12] 7016 00f6 1A85 strh r2, [r3, #40] @ movhi 3885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7017 .loc 1 3885 23 7018 00f8 FB68 ldr r3, [r7, #12] 7019 00fa 3A68 ldr r2, [r7] 7020 00fc DA62 str r2, [r3, #44] 3886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; ARM GAS /tmp/cc5G5cqz.s page 193 7021 .loc 1 3886 23 7022 00fe FB68 ldr r3, [r7, #12] 7023 0100 174A ldr r2, .L349+4 7024 0102 5A63 str r2, [r3, #52] 3887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 7025 .loc 1 3888 11 7026 0104 FB68 ldr r3, [r7, #12] 7027 0106 1B68 ldr r3, [r3] 7028 0108 9B69 ldr r3, [r3, #24] 7029 010a 03F00803 and r3, r3, #8 7030 010e 082B cmp r3, #8 7031 0110 0CBF ite eq 7032 0112 0123 moveq r3, #1 7033 0114 0023 movne r3, #0 7034 0116 DBB2 uxtb r3, r3 7035 .loc 1 3888 9 7036 0118 FB75 strb r3, [r7, #23] 3889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) 7037 .loc 1 3889 10 7038 011a FB68 ldr r3, [r7, #12] 7039 011c 1B68 ldr r3, [r3] 7040 011e 9B69 ldr r3, [r3, #24] 7041 0120 1B0C lsrs r3, r3, #16 7042 0122 DBB2 uxtb r3, r3 7043 0124 03F00103 and r3, r3, #1 7044 0128 DBB2 uxtb r3, r3 7045 .loc 1 3889 8 7046 012a 012B cmp r3, #1 7047 012c 06D1 bne .L348 7048 .loc 1 3889 54 discriminator 1 7049 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7050 0130 002B cmp r3, #0 7051 0132 03D0 beq .L348 3890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 3892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 3893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 7052 .loc 1 3893 7 7053 0134 FB68 ldr r3, [r7, #12] 7054 0136 1B68 ldr r3, [r3] 7055 0138 0822 movs r2, #8 7056 013a DA61 str r2, [r3, #28] 7057 .L348: 3894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7058 .loc 1 3897 5 7059 013c FB68 ldr r3, [r7, #12] 7060 013e 0022 movs r2, #0 7061 0140 83F84020 strb r2, [r3, #64] 3898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ ARM GAS /tmp/cc5G5cqz.s page 194 3903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); 7062 .loc 1 3903 5 7063 0144 48F20101 movw r1, #32769 7064 0148 F868 ldr r0, [r7, #12] 7065 014a FFF7FEFF bl I2C_Enable_IRQ 3904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7066 .loc 1 3905 12 7067 014e 0023 movs r3, #0 7068 0150 00E0 b .L345 7069 .L342: 3906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7070 .loc 1 3909 12 7071 0152 0123 movs r3, #1 7072 .L345: 3910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7073 .loc 1 3911 1 7074 0154 1846 mov r0, r3 7075 0156 1837 adds r7, r7, #24 7076 .cfi_def_cfa_offset 8 7077 0158 BD46 mov sp, r7 7078 .cfi_def_cfa_register 13 7079 @ sp needed 7080 015a 80BD pop {r7, pc} 7081 .L350: 7082 .align 2 7083 .L349: 7084 015c 00000000 .word I2C_DMAAbort 7085 0160 00000000 .word I2C_Slave_ISR_IT 7086 .cfi_endproc 7087 .LFE157: 7089 .section .text.HAL_I2C_Slave_Seq_Transmit_DMA,"ax",%progbits 7090 .align 1 7091 .global HAL_I2C_Slave_Seq_Transmit_DMA 7092 .syntax unified 7093 .thumb 7094 .thumb_func 7096 HAL_I2C_Slave_Seq_Transmit_DMA: 7097 .LFB158: 3912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit 3915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t 3924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 3925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 195 7098 .loc 1 3925 1 7099 .cfi_startproc 7100 @ args = 0, pretend = 0, frame = 24 7101 @ frame_needed = 1, uses_anonymous_args = 0 7102 0000 80B5 push {r7, lr} 7103 .cfi_def_cfa_offset 8 7104 .cfi_offset 7, -8 7105 .cfi_offset 14, -4 7106 0002 86B0 sub sp, sp, #24 7107 .cfi_def_cfa_offset 32 7108 0004 00AF add r7, sp, #0 7109 .cfi_def_cfa_register 7 7110 0006 F860 str r0, [r7, #12] 7111 0008 B960 str r1, [r7, #8] 7112 000a 3B60 str r3, [r7] 7113 000c 1346 mov r3, r2 @ movhi 7114 000e FB80 strh r3, [r7, #6] @ movhi 3926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 3927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 3928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 3932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) 7115 .loc 1 3933 22 7116 0010 FB68 ldr r3, [r7, #12] 7117 0012 93F84130 ldrb r3, [r3, #65] 7118 0016 DBB2 uxtb r3, r3 7119 .loc 1 3933 30 7120 0018 03F02803 and r3, r3, #40 7121 .loc 1 3933 6 7122 001c 282B cmp r3, #40 7123 001e 40F02881 bne .L352 3934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 7124 .loc 1 3935 8 7125 0022 BB68 ldr r3, [r7, #8] 7126 0024 002B cmp r3, #0 7127 0026 02D0 beq .L353 7128 .loc 1 3935 25 discriminator 1 7129 0028 FB88 ldrh r3, [r7, #6] 7130 002a 002B cmp r3, #0 7131 002c 05D1 bne .L354 7132 .L353: 3936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 7133 .loc 1 3937 23 7134 002e FB68 ldr r3, [r7, #12] 7135 0030 4FF40072 mov r2, #512 7136 0034 5A64 str r2, [r3, #68] 3938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7137 .loc 1 3938 15 7138 0036 0123 movs r3, #1 7139 0038 1CE1 b .L355 7140 .L354: 3939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 196 3940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7141 .loc 1 3942 5 7142 003a FB68 ldr r3, [r7, #12] 7143 003c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7144 0040 012B cmp r3, #1 7145 0042 01D1 bne .L356 7146 .loc 1 3942 5 is_stmt 0 discriminator 1 7147 0044 0223 movs r3, #2 7148 .loc 1 3942 5 7149 0046 15E1 b .L355 7150 .L356: 7151 .loc 1 3942 5 discriminator 2 7152 0048 FB68 ldr r3, [r7, #12] 7153 004a 0122 movs r2, #1 7154 004c 83F84020 strb r2, [r3, #64] 3943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 3945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); 7155 .loc 1 3945 5 is_stmt 1 7156 0050 48F20101 movw r1, #32769 7157 0054 F868 ldr r0, [r7, #12] 7158 0056 FFF7FEFF bl I2C_Disable_IRQ 3946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 3948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ 3949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 7159 .loc 1 3949 13 7160 005a FB68 ldr r3, [r7, #12] 7161 005c 93F84130 ldrb r3, [r3, #65] 7162 0060 DBB2 uxtb r3, r3 7163 .loc 1 3949 8 7164 0062 2A2B cmp r3, #42 7165 0064 2BD1 bne .L357 3950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 3952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 7166 .loc 1 3952 7 7167 0066 0221 movs r1, #2 7168 0068 F868 ldr r0, [r7, #12] 7169 006a FFF7FEFF bl I2C_Disable_IRQ 3953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 7170 .loc 1 3954 16 7171 006e FB68 ldr r3, [r7, #12] 7172 0070 1B68 ldr r3, [r3] 7173 .loc 1 3954 26 7174 0072 1B68 ldr r3, [r3] 7175 .loc 1 3954 32 7176 0074 03F40043 and r3, r3, #32768 7177 .loc 1 3954 10 7178 0078 B3F5004F cmp r3, #32768 7179 007c 4CD1 bne .L358 3955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 3957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) ARM GAS /tmp/cc5G5cqz.s page 197 7180 .loc 1 3957 17 7181 007e FB68 ldr r3, [r7, #12] 7182 0080 DB6B ldr r3, [r3, #60] 7183 .loc 1 3957 12 7184 0082 002B cmp r3, #0 7185 0084 48D0 beq .L358 3958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 7186 .loc 1 3959 15 7187 0086 FB68 ldr r3, [r7, #12] 7188 0088 1B68 ldr r3, [r3] 7189 .loc 1 3959 25 7190 008a 1A68 ldr r2, [r3] 7191 .loc 1 3959 15 7192 008c FB68 ldr r3, [r7, #12] 7193 008e 1B68 ldr r3, [r3] 7194 .loc 1 3959 31 7195 0090 22F40042 bic r2, r2, #32768 7196 0094 1A60 str r2, [r3] 3960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 3962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 3963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 7197 .loc 1 3963 15 7198 0096 FB68 ldr r3, [r7, #12] 7199 0098 DB6B ldr r3, [r3, #60] 7200 .loc 1 3963 43 7201 009a 784A ldr r2, .L366 7202 009c 5A63 str r2, [r3, #52] 3964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 3966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 7203 .loc 1 3966 15 7204 009e FB68 ldr r3, [r7, #12] 7205 00a0 DB6B ldr r3, [r3, #60] 7206 00a2 1846 mov r0, r3 7207 00a4 FFF7FEFF bl HAL_DMA_Abort_IT 7208 00a8 0346 mov r3, r0 7209 .loc 1 3966 14 discriminator 1 7210 00aa 002B cmp r3, #0 7211 00ac 34D0 beq .L358 3967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 3969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 7212 .loc 1 3969 17 7213 00ae FB68 ldr r3, [r7, #12] 7214 00b0 DB6B ldr r3, [r3, #60] 7215 .loc 1 3969 25 7216 00b2 5B6B ldr r3, [r3, #52] 7217 .loc 1 3969 49 7218 00b4 FA68 ldr r2, [r7, #12] 7219 00b6 D26B ldr r2, [r2, #60] 7220 .loc 1 3969 13 7221 00b8 1046 mov r0, r2 7222 00ba 9847 blx r3 7223 .LVL1: 7224 00bc 2CE0 b .L358 ARM GAS /tmp/cc5G5cqz.s page 198 7225 .L357: 3970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 7226 .loc 1 3974 18 7227 00be FB68 ldr r3, [r7, #12] 7228 00c0 93F84130 ldrb r3, [r3, #65] 7229 00c4 DBB2 uxtb r3, r3 7230 .loc 1 3974 13 7231 00c6 292B cmp r3, #41 7232 00c8 26D1 bne .L358 3975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 7233 .loc 1 3976 16 7234 00ca FB68 ldr r3, [r7, #12] 7235 00cc 1B68 ldr r3, [r3] 7236 .loc 1 3976 26 7237 00ce 1B68 ldr r3, [r3] 7238 .loc 1 3976 32 7239 00d0 03F48043 and r3, r3, #16384 7240 .loc 1 3976 10 7241 00d4 B3F5804F cmp r3, #16384 7242 00d8 1ED1 bne .L358 3977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 7243 .loc 1 3978 13 7244 00da FB68 ldr r3, [r7, #12] 7245 00dc 1B68 ldr r3, [r3] 7246 .loc 1 3978 23 7247 00de 1A68 ldr r2, [r3] 7248 .loc 1 3978 13 7249 00e0 FB68 ldr r3, [r7, #12] 7250 00e2 1B68 ldr r3, [r3] 7251 .loc 1 3978 29 7252 00e4 22F48042 bic r2, r2, #16384 7253 00e8 1A60 str r2, [r3] 3979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 3981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 7254 .loc 1 3981 17 7255 00ea FB68 ldr r3, [r7, #12] 7256 00ec 9B6B ldr r3, [r3, #56] 7257 .loc 1 3981 12 7258 00ee 002B cmp r3, #0 7259 00f0 12D0 beq .L358 3982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 3984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 3985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 7260 .loc 1 3985 15 7261 00f2 FB68 ldr r3, [r7, #12] 7262 00f4 9B6B ldr r3, [r3, #56] 7263 .loc 1 3985 43 7264 00f6 614A ldr r2, .L366 7265 00f8 5A63 str r2, [r3, #52] ARM GAS /tmp/cc5G5cqz.s page 199 3986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 3988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 7266 .loc 1 3988 15 7267 00fa FB68 ldr r3, [r7, #12] 7268 00fc 9B6B ldr r3, [r3, #56] 7269 00fe 1846 mov r0, r3 7270 0100 FFF7FEFF bl HAL_DMA_Abort_IT 7271 0104 0346 mov r3, r0 7272 .loc 1 3988 14 discriminator 1 7273 0106 002B cmp r3, #0 7274 0108 06D0 beq .L358 3989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 3991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 7275 .loc 1 3991 17 7276 010a FB68 ldr r3, [r7, #12] 7277 010c 9B6B ldr r3, [r3, #56] 7278 .loc 1 3991 25 7279 010e 5B6B ldr r3, [r3, #52] 7280 .loc 1 3991 49 7281 0110 FA68 ldr r2, [r7, #12] 7282 0112 926B ldr r2, [r2, #56] 7283 .loc 1 3991 13 7284 0114 1046 mov r0, r2 7285 0116 9847 blx r3 7286 .LVL2: 7287 .L358: 3992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 3999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; 7288 .loc 1 4001 21 7289 0118 FB68 ldr r3, [r7, #12] 7290 011a 2922 movs r2, #41 7291 011c 83F84120 strb r2, [r3, #65] 4002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 7292 .loc 1 4002 21 7293 0120 FB68 ldr r3, [r7, #12] 7294 0122 2022 movs r2, #32 7295 0124 83F84220 strb r2, [r3, #66] 4003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7296 .loc 1 4003 21 7297 0128 FB68 ldr r3, [r7, #12] 7298 012a 0022 movs r2, #0 7299 012c 5A64 str r2, [r3, #68] 4004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 7300 .loc 1 4006 9 7301 012e FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 200 7302 0130 1B68 ldr r3, [r3] 7303 .loc 1 4006 19 7304 0132 5A68 ldr r2, [r3, #4] 7305 .loc 1 4006 9 7306 0134 FB68 ldr r3, [r7, #12] 7307 0136 1B68 ldr r3, [r3] 7308 .loc 1 4006 25 7309 0138 22F40042 bic r2, r2, #32768 7310 013c 5A60 str r2, [r3, #4] 4007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7311 .loc 1 4009 23 7312 013e FB68 ldr r3, [r7, #12] 7313 0140 BA68 ldr r2, [r7, #8] 7314 0142 5A62 str r2, [r3, #36] 4010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7315 .loc 1 4010 23 7316 0144 FB68 ldr r3, [r7, #12] 7317 0146 FA88 ldrh r2, [r7, #6] @ movhi 7318 0148 5A85 strh r2, [r3, #42] @ movhi 4011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7319 .loc 1 4011 29 7320 014a FB68 ldr r3, [r7, #12] 7321 014c 5B8D ldrh r3, [r3, #42] @ movhi 7322 014e 9AB2 uxth r2, r3 7323 .loc 1 4011 23 7324 0150 FB68 ldr r3, [r7, #12] 7325 0152 1A85 strh r2, [r3, #40] @ movhi 4012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7326 .loc 1 4012 23 7327 0154 FB68 ldr r3, [r7, #12] 7328 0156 3A68 ldr r2, [r7] 7329 0158 DA62 str r2, [r3, #44] 4013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 7330 .loc 1 4013 23 7331 015a FB68 ldr r3, [r7, #12] 7332 015c 484A ldr r2, .L366+4 7333 015e 5A63 str r2, [r3, #52] 4014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 7334 .loc 1 4015 13 7335 0160 FB68 ldr r3, [r7, #12] 7336 0162 9B6B ldr r3, [r3, #56] 7337 .loc 1 4015 8 7338 0164 002B cmp r3, #0 7339 0166 20D0 beq .L359 4016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 4018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; 7340 .loc 1 4018 11 7341 0168 FB68 ldr r3, [r7, #12] 7342 016a 9B6B ldr r3, [r3, #56] 7343 .loc 1 4018 38 7344 016c 454A ldr r2, .L366+8 7345 016e 9A62 str r2, [r3, #40] 4019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 201 4020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 4021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 7346 .loc 1 4021 11 7347 0170 FB68 ldr r3, [r7, #12] 7348 0172 9B6B ldr r3, [r3, #56] 7349 .loc 1 4021 39 7350 0174 444A ldr r2, .L366+12 7351 0176 1A63 str r2, [r3, #48] 4022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 4024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 7352 .loc 1 4024 11 7353 0178 FB68 ldr r3, [r7, #12] 7354 017a 9B6B ldr r3, [r3, #56] 7355 .loc 1 4024 42 7356 017c 0022 movs r2, #0 7357 017e DA62 str r2, [r3, #44] 4025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 7358 .loc 1 4025 11 7359 0180 FB68 ldr r3, [r7, #12] 7360 0182 9B6B ldr r3, [r3, #56] 7361 .loc 1 4025 39 7362 0184 0022 movs r2, #0 7363 0186 5A63 str r2, [r3, #52] 4026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 4028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX 7364 .loc 1 4028 23 7365 0188 FB68 ldr r3, [r7, #12] 7366 018a 986B ldr r0, [r3, #56] 7367 018c B968 ldr r1, [r7, #8] 7368 .loc 1 4028 86 7369 018e FB68 ldr r3, [r7, #12] 7370 0190 1B68 ldr r3, [r3] 7371 .loc 1 4028 81 7372 0192 2833 adds r3, r3, #40 7373 .loc 1 4028 23 7374 0194 1A46 mov r2, r3 4029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 7375 .loc 1 4029 44 7376 0196 FB68 ldr r3, [r7, #12] 7377 0198 1B8D ldrh r3, [r3, #40] 4028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 7378 .loc 1 4028 23 7379 019a FFF7FEFF bl HAL_DMA_Start_IT 7380 019e 0346 mov r3, r0 7381 01a0 FB75 strb r3, [r7, #23] 4030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 4039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 202 4040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 7382 .loc 1 4046 8 7383 01a2 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7384 01a4 002B cmp r3, #0 7385 01a6 36D1 bne .L361 7386 01a8 13E0 b .L364 7387 .L359: 4034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 7388 .loc 1 4034 23 7389 01aa FB68 ldr r3, [r7, #12] 7390 01ac 2822 movs r2, #40 7391 01ae 83F84120 strb r2, [r3, #65] 4035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7392 .loc 1 4035 23 7393 01b2 FB68 ldr r3, [r7, #12] 7394 01b4 0022 movs r2, #0 7395 01b6 83F84220 strb r2, [r3, #66] 4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7396 .loc 1 4038 11 7397 01ba FB68 ldr r3, [r7, #12] 7398 01bc 5B6C ldr r3, [r3, #68] 4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7399 .loc 1 4038 23 7400 01be 43F08002 orr r2, r3, #128 7401 01c2 FB68 ldr r3, [r7, #12] 7402 01c4 5A64 str r2, [r3, #68] 4041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7403 .loc 1 4041 7 7404 01c6 FB68 ldr r3, [r7, #12] 7405 01c8 0022 movs r2, #0 7406 01ca 83F84020 strb r2, [r3, #64] 4043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7407 .loc 1 4043 14 7408 01ce 0123 movs r3, #1 7409 01d0 50E0 b .L355 7410 .L364: 4047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 4049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 7411 .loc 1 4049 11 7412 01d2 FB68 ldr r3, [r7, #12] 7413 01d4 5B8D ldrh r3, [r3, #42] @ movhi 7414 01d6 9AB2 uxth r2, r3 7415 .loc 1 4049 30 7416 01d8 FB68 ldr r3, [r7, #12] 7417 01da 1B8D ldrh r3, [r3, #40] 7418 .loc 1 4049 23 7419 01dc D31A subs r3, r2, r3 7420 01de 9AB2 uxth r2, r3 7421 01e0 FB68 ldr r3, [r7, #12] 7422 01e2 5A85 strh r2, [r3, #42] @ movhi ARM GAS /tmp/cc5G5cqz.s page 203 4050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */ 4052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0; 7423 .loc 1 4052 22 7424 01e4 FB68 ldr r3, [r7, #12] 7425 01e6 0022 movs r2, #0 7426 01e8 1A85 strh r2, [r3, #40] @ movhi 4053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 4062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 7427 .loc 1 4069 11 7428 01ea FB68 ldr r3, [r7, #12] 7429 01ec 1B68 ldr r3, [r3] 7430 01ee 9B69 ldr r3, [r3, #24] 7431 01f0 03F00803 and r3, r3, #8 7432 01f4 082B cmp r3, #8 7433 01f6 0CBF ite eq 7434 01f8 0123 moveq r3, #1 7435 01fa 0023 movne r3, #0 7436 01fc DBB2 uxtb r3, r3 7437 .loc 1 4069 9 7438 01fe BB75 strb r3, [r7, #22] 4070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) 7439 .loc 1 4070 10 7440 0200 FB68 ldr r3, [r7, #12] 7441 0202 1B68 ldr r3, [r3] 7442 0204 9B69 ldr r3, [r3, #24] 7443 0206 1B0C lsrs r3, r3, #16 7444 0208 DBB2 uxtb r3, r3 7445 020a 03F00103 and r3, r3, #1 7446 020e DBB2 uxtb r3, r3 7447 .loc 1 4070 8 7448 0210 012B cmp r3, #1 7449 0212 1BD1 bne .L363 7450 0214 13E0 b .L365 7451 .L361: 4057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 7452 .loc 1 4057 23 7453 0216 FB68 ldr r3, [r7, #12] 7454 0218 2822 movs r2, #40 7455 021a 83F84120 strb r2, [r3, #65] 4058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7456 .loc 1 4058 23 ARM GAS /tmp/cc5G5cqz.s page 204 7457 021e FB68 ldr r3, [r7, #12] 7458 0220 0022 movs r2, #0 7459 0222 83F84220 strb r2, [r3, #66] 4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7460 .loc 1 4061 11 7461 0226 FB68 ldr r3, [r7, #12] 7462 0228 5B6C ldr r3, [r3, #68] 4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7463 .loc 1 4061 23 7464 022a 43F01002 orr r2, r3, #16 7465 022e FB68 ldr r3, [r7, #12] 7466 0230 5A64 str r2, [r3, #68] 4064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7467 .loc 1 4064 7 7468 0232 FB68 ldr r3, [r7, #12] 7469 0234 0022 movs r2, #0 7470 0236 83F84020 strb r2, [r3, #64] 4066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7471 .loc 1 4066 14 7472 023a 0123 movs r3, #1 7473 023c 1AE0 b .L355 7474 .L365: 7475 .loc 1 4070 54 discriminator 1 7476 023e BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 7477 0240 002B cmp r3, #0 7478 0242 03D0 beq .L363 4071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 7479 .loc 1 4074 7 7480 0244 FB68 ldr r3, [r7, #12] 7481 0246 1B68 ldr r3, [r3] 7482 0248 0822 movs r2, #8 7483 024a DA61 str r2, [r3, #28] 7484 .L363: 4075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7485 .loc 1 4078 5 7486 024c FB68 ldr r3, [r7, #12] 7487 024e 0022 movs r2, #0 7488 0250 83F84020 strb r2, [r3, #64] 4079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 4081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 7489 .loc 1 4081 9 7490 0254 FB68 ldr r3, [r7, #12] 7491 0256 1B68 ldr r3, [r3] 7492 .loc 1 4081 19 7493 0258 1A68 ldr r2, [r3] 7494 .loc 1 4081 9 7495 025a FB68 ldr r3, [r7, #12] 7496 025c 1B68 ldr r3, [r3] 7497 .loc 1 4081 25 7498 025e 42F48042 orr r2, r2, #16384 ARM GAS /tmp/cc5G5cqz.s page 205 7499 0262 1A60 str r2, [r3] 4082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 4087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 7500 .loc 1 4087 5 7501 0264 4FF40041 mov r1, #32768 7502 0268 F868 ldr r0, [r7, #12] 7503 026a FFF7FEFF bl I2C_Enable_IRQ 4088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7504 .loc 1 4089 12 7505 026e 0023 movs r3, #0 7506 0270 00E0 b .L355 7507 .L352: 4090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7508 .loc 1 4093 12 7509 0272 0123 movs r3, #1 7510 .L355: 4094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7511 .loc 1 4095 1 7512 0274 1846 mov r0, r3 7513 0276 1837 adds r7, r7, #24 7514 .cfi_def_cfa_offset 8 7515 0278 BD46 mov sp, r7 7516 .cfi_def_cfa_register 13 7517 @ sp needed 7518 027a 80BD pop {r7, pc} 7519 .L367: 7520 .align 2 7521 .L366: 7522 027c 00000000 .word I2C_DMAAbort 7523 0280 00000000 .word I2C_Slave_ISR_DMA 7524 0284 00000000 .word I2C_DMASlaveTransmitCplt 7525 0288 00000000 .word I2C_DMAError 7526 .cfi_endproc 7527 .LFE158: 7529 .section .text.HAL_I2C_Slave_Seq_Receive_IT,"ax",%progbits 7530 .align 1 7531 .global HAL_I2C_Slave_Seq_Receive_IT 7532 .syntax unified 7533 .thumb 7534 .thumb_func 7536 HAL_I2C_Slave_Seq_Receive_IT: 7537 .LFB159: 4096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with 4099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 4100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. ARM GAS /tmp/cc5G5cqz.s page 206 4102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 4103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 4104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 4105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Si 4108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 4109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7538 .loc 1 4109 1 7539 .cfi_startproc 7540 @ args = 0, pretend = 0, frame = 24 7541 @ frame_needed = 1, uses_anonymous_args = 0 7542 0000 80B5 push {r7, lr} 7543 .cfi_def_cfa_offset 8 7544 .cfi_offset 7, -8 7545 .cfi_offset 14, -4 7546 0002 86B0 sub sp, sp, #24 7547 .cfi_def_cfa_offset 32 7548 0004 00AF add r7, sp, #0 7549 .cfi_def_cfa_register 7 7550 0006 F860 str r0, [r7, #12] 7551 0008 B960 str r1, [r7, #8] 7552 000a 3B60 str r3, [r7] 7553 000c 1346 mov r3, r2 @ movhi 7554 000e FB80 strh r3, [r7, #6] @ movhi 4110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 4112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 4114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 4115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) 7555 .loc 1 4116 22 7556 0010 FB68 ldr r3, [r7, #12] 7557 0012 93F84130 ldrb r3, [r3, #65] 7558 0016 DBB2 uxtb r3, r3 7559 .loc 1 4116 30 7560 0018 03F02803 and r3, r3, #40 7561 .loc 1 4116 6 7562 001c 282B cmp r3, #40 7563 001e 40F09880 bne .L369 4117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 7564 .loc 1 4118 8 7565 0022 BB68 ldr r3, [r7, #8] 7566 0024 002B cmp r3, #0 7567 0026 02D0 beq .L370 7568 .loc 1 4118 25 discriminator 1 7569 0028 FB88 ldrh r3, [r7, #6] 7570 002a 002B cmp r3, #0 7571 002c 05D1 bne .L371 7572 .L370: 4119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 7573 .loc 1 4120 23 7574 002e FB68 ldr r3, [r7, #12] 7575 0030 4FF40072 mov r2, #512 ARM GAS /tmp/cc5G5cqz.s page 207 7576 0034 5A64 str r2, [r3, #68] 4121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7577 .loc 1 4121 15 7578 0036 0123 movs r3, #1 7579 0038 8CE0 b .L372 7580 .L371: 4122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 4125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 7581 .loc 1 4125 5 7582 003a 48F20201 movw r1, #32770 7583 003e F868 ldr r0, [r7, #12] 7584 0040 FFF7FEFF bl I2C_Disable_IRQ 4126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7585 .loc 1 4128 5 7586 0044 FB68 ldr r3, [r7, #12] 7587 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7588 004a 012B cmp r3, #1 7589 004c 01D1 bne .L373 7590 .loc 1 4128 5 is_stmt 0 discriminator 1 7591 004e 0223 movs r3, #2 7592 .loc 1 4128 5 7593 0050 80E0 b .L372 7594 .L373: 7595 .loc 1 4128 5 discriminator 2 7596 0052 FB68 ldr r3, [r7, #12] 7597 0054 0122 movs r2, #1 7598 0056 83F84020 strb r2, [r3, #64] 4129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 4131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ 4132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 7599 .loc 1 4132 13 is_stmt 1 7600 005a FB68 ldr r3, [r7, #12] 7601 005c 93F84130 ldrb r3, [r3, #65] 7602 0060 DBB2 uxtb r3, r3 7603 .loc 1 4132 8 7604 0062 292B cmp r3, #41 7605 0064 2AD1 bne .L374 4133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 4135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 7606 .loc 1 4135 7 7607 0066 0121 movs r1, #1 7608 0068 F868 ldr r0, [r7, #12] 7609 006a FFF7FEFF bl I2C_Disable_IRQ 4136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 7610 .loc 1 4137 16 7611 006e FB68 ldr r3, [r7, #12] 7612 0070 1B68 ldr r3, [r3] 7613 .loc 1 4137 26 7614 0072 1B68 ldr r3, [r3] 7615 .loc 1 4137 32 ARM GAS /tmp/cc5G5cqz.s page 208 7616 0074 03F48043 and r3, r3, #16384 7617 .loc 1 4137 10 7618 0078 B3F5804F cmp r3, #16384 7619 007c 1ED1 bne .L374 4138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 7620 .loc 1 4139 13 7621 007e FB68 ldr r3, [r7, #12] 7622 0080 1B68 ldr r3, [r3] 7623 .loc 1 4139 23 7624 0082 1A68 ldr r2, [r3] 7625 .loc 1 4139 13 7626 0084 FB68 ldr r3, [r7, #12] 7627 0086 1B68 ldr r3, [r3] 7628 .loc 1 4139 29 7629 0088 22F48042 bic r2, r2, #16384 7630 008c 1A60 str r2, [r3] 4140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 7631 .loc 1 4142 17 7632 008e FB68 ldr r3, [r7, #12] 7633 0090 9B6B ldr r3, [r3, #56] 7634 .loc 1 4142 12 7635 0092 002B cmp r3, #0 7636 0094 12D0 beq .L374 4143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 7637 .loc 1 4146 15 7638 0096 FB68 ldr r3, [r7, #12] 7639 0098 9B6B ldr r3, [r3, #56] 7640 .loc 1 4146 43 7641 009a 304A ldr r2, .L376 7642 009c 5A63 str r2, [r3, #52] 4147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 4149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 7643 .loc 1 4149 15 7644 009e FB68 ldr r3, [r7, #12] 7645 00a0 9B6B ldr r3, [r3, #56] 7646 00a2 1846 mov r0, r3 7647 00a4 FFF7FEFF bl HAL_DMA_Abort_IT 7648 00a8 0346 mov r3, r0 7649 .loc 1 4149 14 discriminator 1 7650 00aa 002B cmp r3, #0 7651 00ac 06D0 beq .L374 4150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 7652 .loc 1 4152 17 7653 00ae FB68 ldr r3, [r7, #12] 7654 00b0 9B6B ldr r3, [r3, #56] 7655 .loc 1 4152 25 7656 00b2 5B6B ldr r3, [r3, #52] 7657 .loc 1 4152 49 ARM GAS /tmp/cc5G5cqz.s page 209 7658 00b4 FA68 ldr r2, [r7, #12] 7659 00b6 926B ldr r2, [r2, #56] 7660 .loc 1 4152 13 7661 00b8 1046 mov r0, r2 7662 00ba 9847 blx r3 7663 .LVL3: 7664 .L374: 4153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; 7665 .loc 1 4158 21 7666 00bc FB68 ldr r3, [r7, #12] 7667 00be 2A22 movs r2, #42 7668 00c0 83F84120 strb r2, [r3, #65] 4159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 7669 .loc 1 4159 21 7670 00c4 FB68 ldr r3, [r7, #12] 7671 00c6 2022 movs r2, #32 7672 00c8 83F84220 strb r2, [r3, #66] 4160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7673 .loc 1 4160 21 7674 00cc FB68 ldr r3, [r7, #12] 7675 00ce 0022 movs r2, #0 7676 00d0 5A64 str r2, [r3, #68] 4161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 7677 .loc 1 4163 9 7678 00d2 FB68 ldr r3, [r7, #12] 7679 00d4 1B68 ldr r3, [r3] 7680 .loc 1 4163 19 7681 00d6 5A68 ldr r2, [r3, #4] 7682 .loc 1 4163 9 7683 00d8 FB68 ldr r3, [r7, #12] 7684 00da 1B68 ldr r3, [r3] 7685 .loc 1 4163 25 7686 00dc 22F40042 bic r2, r2, #32768 7687 00e0 5A60 str r2, [r3, #4] 4164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7688 .loc 1 4166 23 7689 00e2 FB68 ldr r3, [r7, #12] 7690 00e4 BA68 ldr r2, [r7, #8] 7691 00e6 5A62 str r2, [r3, #36] 4167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7692 .loc 1 4167 23 7693 00e8 FB68 ldr r3, [r7, #12] 7694 00ea FA88 ldrh r2, [r7, #6] @ movhi 7695 00ec 5A85 strh r2, [r3, #42] @ movhi 4168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7696 .loc 1 4168 29 7697 00ee FB68 ldr r3, [r7, #12] 7698 00f0 5B8D ldrh r3, [r3, #42] @ movhi ARM GAS /tmp/cc5G5cqz.s page 210 7699 00f2 9AB2 uxth r2, r3 7700 .loc 1 4168 23 7701 00f4 FB68 ldr r3, [r7, #12] 7702 00f6 1A85 strh r2, [r3, #40] @ movhi 4169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7703 .loc 1 4169 23 7704 00f8 FB68 ldr r3, [r7, #12] 7705 00fa 3A68 ldr r2, [r7] 7706 00fc DA62 str r2, [r3, #44] 4170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 7707 .loc 1 4170 23 7708 00fe FB68 ldr r3, [r7, #12] 7709 0100 174A ldr r2, .L376+4 7710 0102 5A63 str r2, [r3, #52] 4171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 7711 .loc 1 4172 11 7712 0104 FB68 ldr r3, [r7, #12] 7713 0106 1B68 ldr r3, [r3] 7714 0108 9B69 ldr r3, [r3, #24] 7715 010a 03F00803 and r3, r3, #8 7716 010e 082B cmp r3, #8 7717 0110 0CBF ite eq 7718 0112 0123 moveq r3, #1 7719 0114 0023 movne r3, #0 7720 0116 DBB2 uxtb r3, r3 7721 .loc 1 4172 9 7722 0118 FB75 strb r3, [r7, #23] 4173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) 7723 .loc 1 4173 10 7724 011a FB68 ldr r3, [r7, #12] 7725 011c 1B68 ldr r3, [r3] 7726 011e 9B69 ldr r3, [r3, #24] 7727 0120 1B0C lsrs r3, r3, #16 7728 0122 DBB2 uxtb r3, r3 7729 0124 03F00103 and r3, r3, #1 7730 0128 DBB2 uxtb r3, r3 7731 .loc 1 4173 8 7732 012a 002B cmp r3, #0 7733 012c 06D1 bne .L375 7734 .loc 1 4173 55 discriminator 1 7735 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7736 0130 002B cmp r3, #0 7737 0132 03D0 beq .L375 4174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 7738 .loc 1 4177 7 7739 0134 FB68 ldr r3, [r7, #12] 7740 0136 1B68 ldr r3, [r3] 7741 0138 0822 movs r2, #8 7742 013a DA61 str r2, [r3, #28] 7743 .L375: 4178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ ARM GAS /tmp/cc5G5cqz.s page 211 4181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7744 .loc 1 4181 5 7745 013c FB68 ldr r3, [r7, #12] 7746 013e 0022 movs r2, #0 7747 0140 83F84020 strb r2, [r3, #64] 4182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ 4187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 7748 .loc 1 4187 5 7749 0144 48F20201 movw r1, #32770 7750 0148 F868 ldr r0, [r7, #12] 7751 014a FFF7FEFF bl I2C_Enable_IRQ 4188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7752 .loc 1 4189 12 7753 014e 0023 movs r3, #0 7754 0150 00E0 b .L372 7755 .L369: 4190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7756 .loc 1 4193 12 7757 0152 0123 movs r3, #1 7758 .L372: 4194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7759 .loc 1 4195 1 7760 0154 1846 mov r0, r3 7761 0156 1837 adds r7, r7, #24 7762 .cfi_def_cfa_offset 8 7763 0158 BD46 mov sp, r7 7764 .cfi_def_cfa_register 13 7765 @ sp needed 7766 015a 80BD pop {r7, pc} 7767 .L377: 7768 .align 2 7769 .L376: 7770 015c 00000000 .word I2C_DMAAbort 7771 0160 00000000 .word I2C_Slave_ISR_IT 7772 .cfi_endproc 7773 .LFE159: 7775 .section .text.HAL_I2C_Slave_Seq_Receive_DMA,"ax",%progbits 7776 .align 1 7777 .global HAL_I2C_Slave_Seq_Receive_DMA 7778 .syntax unified 7779 .thumb 7780 .thumb_func 7782 HAL_I2C_Slave_Seq_Receive_DMA: 7783 .LFB160: 4196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with 4199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during ARM GAS /tmp/cc5G5cqz.s page 212 4200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 4203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 4204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 4205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S 4208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 4209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7784 .loc 1 4209 1 7785 .cfi_startproc 7786 @ args = 0, pretend = 0, frame = 24 7787 @ frame_needed = 1, uses_anonymous_args = 0 7788 0000 80B5 push {r7, lr} 7789 .cfi_def_cfa_offset 8 7790 .cfi_offset 7, -8 7791 .cfi_offset 14, -4 7792 0002 86B0 sub sp, sp, #24 7793 .cfi_def_cfa_offset 32 7794 0004 00AF add r7, sp, #0 7795 .cfi_def_cfa_register 7 7796 0006 F860 str r0, [r7, #12] 7797 0008 B960 str r1, [r7, #8] 7798 000a 3B60 str r3, [r7] 7799 000c 1346 mov r3, r2 @ movhi 7800 000e FB80 strh r3, [r7, #6] @ movhi 4210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 4212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 4213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 4215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 4216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) 7801 .loc 1 4217 22 7802 0010 FB68 ldr r3, [r7, #12] 7803 0012 93F84130 ldrb r3, [r3, #65] 7804 0016 DBB2 uxtb r3, r3 7805 .loc 1 4217 30 7806 0018 03F02803 and r3, r3, #40 7807 .loc 1 4217 6 7808 001c 282B cmp r3, #40 7809 001e 40F02881 bne .L379 4218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 7810 .loc 1 4219 8 7811 0022 BB68 ldr r3, [r7, #8] 7812 0024 002B cmp r3, #0 7813 0026 02D0 beq .L380 7814 .loc 1 4219 25 discriminator 1 7815 0028 FB88 ldrh r3, [r7, #6] 7816 002a 002B cmp r3, #0 7817 002c 05D1 bne .L381 7818 .L380: 4220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; ARM GAS /tmp/cc5G5cqz.s page 213 7819 .loc 1 4221 23 7820 002e FB68 ldr r3, [r7, #12] 7821 0030 4FF40072 mov r2, #512 7822 0034 5A64 str r2, [r3, #68] 4222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7823 .loc 1 4222 15 7824 0036 0123 movs r3, #1 7825 0038 1CE1 b .L382 7826 .L381: 4223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 4226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 7827 .loc 1 4226 5 7828 003a 48F20201 movw r1, #32770 7829 003e F868 ldr r0, [r7, #12] 7830 0040 FFF7FEFF bl I2C_Disable_IRQ 4227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7831 .loc 1 4229 5 7832 0044 FB68 ldr r3, [r7, #12] 7833 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7834 004a 012B cmp r3, #1 7835 004c 01D1 bne .L383 7836 .loc 1 4229 5 is_stmt 0 discriminator 1 7837 004e 0223 movs r3, #2 7838 .loc 1 4229 5 7839 0050 10E1 b .L382 7840 .L383: 7841 .loc 1 4229 5 discriminator 2 7842 0052 FB68 ldr r3, [r7, #12] 7843 0054 0122 movs r2, #1 7844 0056 83F84020 strb r2, [r3, #64] 4230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 4232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ 4233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 7845 .loc 1 4233 13 is_stmt 1 7846 005a FB68 ldr r3, [r7, #12] 7847 005c 93F84130 ldrb r3, [r3, #65] 7848 0060 DBB2 uxtb r3, r3 7849 .loc 1 4233 8 7850 0062 292B cmp r3, #41 7851 0064 2BD1 bne .L384 4234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 4236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 7852 .loc 1 4236 7 7853 0066 0121 movs r1, #1 7854 0068 F868 ldr r0, [r7, #12] 7855 006a FFF7FEFF bl I2C_Disable_IRQ 4237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 7856 .loc 1 4238 16 7857 006e FB68 ldr r3, [r7, #12] 7858 0070 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 214 7859 .loc 1 4238 26 7860 0072 1B68 ldr r3, [r3] 7861 .loc 1 4238 32 7862 0074 03F48043 and r3, r3, #16384 7863 .loc 1 4238 10 7864 0078 B3F5804F cmp r3, #16384 7865 007c 4CD1 bne .L385 4239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 7866 .loc 1 4241 17 7867 007e FB68 ldr r3, [r7, #12] 7868 0080 9B6B ldr r3, [r3, #56] 7869 .loc 1 4241 12 7870 0082 002B cmp r3, #0 7871 0084 48D0 beq .L385 4242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 7872 .loc 1 4243 15 7873 0086 FB68 ldr r3, [r7, #12] 7874 0088 1B68 ldr r3, [r3] 7875 .loc 1 4243 25 7876 008a 1A68 ldr r2, [r3] 7877 .loc 1 4243 15 7878 008c FB68 ldr r3, [r7, #12] 7879 008e 1B68 ldr r3, [r3] 7880 .loc 1 4243 31 7881 0090 22F48042 bic r2, r2, #16384 7882 0094 1A60 str r2, [r3] 4244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 7883 .loc 1 4247 15 7884 0096 FB68 ldr r3, [r7, #12] 7885 0098 9B6B ldr r3, [r3, #56] 7886 .loc 1 4247 43 7887 009a 784A ldr r2, .L393 7888 009c 5A63 str r2, [r3, #52] 4248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 4250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 7889 .loc 1 4250 15 7890 009e FB68 ldr r3, [r7, #12] 7891 00a0 9B6B ldr r3, [r3, #56] 7892 00a2 1846 mov r0, r3 7893 00a4 FFF7FEFF bl HAL_DMA_Abort_IT 7894 00a8 0346 mov r3, r0 7895 .loc 1 4250 14 discriminator 1 7896 00aa 002B cmp r3, #0 7897 00ac 34D0 beq .L385 4251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 7898 .loc 1 4253 17 7899 00ae FB68 ldr r3, [r7, #12] 7900 00b0 9B6B ldr r3, [r3, #56] ARM GAS /tmp/cc5G5cqz.s page 215 7901 .loc 1 4253 25 7902 00b2 5B6B ldr r3, [r3, #52] 7903 .loc 1 4253 49 7904 00b4 FA68 ldr r2, [r7, #12] 7905 00b6 926B ldr r2, [r2, #56] 7906 .loc 1 4253 13 7907 00b8 1046 mov r0, r2 7908 00ba 9847 blx r3 7909 .LVL4: 7910 00bc 2CE0 b .L385 7911 .L384: 4254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 7912 .loc 1 4258 18 7913 00be FB68 ldr r3, [r7, #12] 7914 00c0 93F84130 ldrb r3, [r3, #65] 7915 00c4 DBB2 uxtb r3, r3 7916 .loc 1 4258 13 7917 00c6 2A2B cmp r3, #42 7918 00c8 26D1 bne .L385 4259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 7919 .loc 1 4260 16 7920 00ca FB68 ldr r3, [r7, #12] 7921 00cc 1B68 ldr r3, [r3] 7922 .loc 1 4260 26 7923 00ce 1B68 ldr r3, [r3] 7924 .loc 1 4260 32 7925 00d0 03F40043 and r3, r3, #32768 7926 .loc 1 4260 10 7927 00d4 B3F5004F cmp r3, #32768 7928 00d8 1ED1 bne .L385 4261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 7929 .loc 1 4262 13 7930 00da FB68 ldr r3, [r7, #12] 7931 00dc 1B68 ldr r3, [r3] 7932 .loc 1 4262 23 7933 00de 1A68 ldr r2, [r3] 7934 .loc 1 4262 13 7935 00e0 FB68 ldr r3, [r7, #12] 7936 00e2 1B68 ldr r3, [r3] 7937 .loc 1 4262 29 7938 00e4 22F40042 bic r2, r2, #32768 7939 00e8 1A60 str r2, [r3] 4263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 7940 .loc 1 4265 17 7941 00ea FB68 ldr r3, [r7, #12] 7942 00ec DB6B ldr r3, [r3, #60] 7943 .loc 1 4265 12 7944 00ee 002B cmp r3, #0 7945 00f0 12D0 beq .L385 ARM GAS /tmp/cc5G5cqz.s page 216 4266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 7946 .loc 1 4269 15 7947 00f2 FB68 ldr r3, [r7, #12] 7948 00f4 DB6B ldr r3, [r3, #60] 7949 .loc 1 4269 43 7950 00f6 614A ldr r2, .L393 7951 00f8 5A63 str r2, [r3, #52] 4270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 4272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 7952 .loc 1 4272 15 7953 00fa FB68 ldr r3, [r7, #12] 7954 00fc DB6B ldr r3, [r3, #60] 7955 00fe 1846 mov r0, r3 7956 0100 FFF7FEFF bl HAL_DMA_Abort_IT 7957 0104 0346 mov r3, r0 7958 .loc 1 4272 14 discriminator 1 7959 0106 002B cmp r3, #0 7960 0108 06D0 beq .L385 4273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 7961 .loc 1 4275 17 7962 010a FB68 ldr r3, [r7, #12] 7963 010c DB6B ldr r3, [r3, #60] 7964 .loc 1 4275 25 7965 010e 5B6B ldr r3, [r3, #52] 7966 .loc 1 4275 49 7967 0110 FA68 ldr r2, [r7, #12] 7968 0112 D26B ldr r2, [r2, #60] 7969 .loc 1 4275 13 7970 0114 1046 mov r0, r2 7971 0116 9847 blx r3 7972 .LVL5: 7973 .L385: 4276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 4283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; 7974 .loc 1 4285 21 7975 0118 FB68 ldr r3, [r7, #12] 7976 011a 2A22 movs r2, #42 7977 011c 83F84120 strb r2, [r3, #65] 4286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 7978 .loc 1 4286 21 7979 0120 FB68 ldr r3, [r7, #12] 7980 0122 2022 movs r2, #32 7981 0124 83F84220 strb r2, [r3, #66] ARM GAS /tmp/cc5G5cqz.s page 217 4287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7982 .loc 1 4287 21 7983 0128 FB68 ldr r3, [r7, #12] 7984 012a 0022 movs r2, #0 7985 012c 5A64 str r2, [r3, #68] 4288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 7986 .loc 1 4290 9 7987 012e FB68 ldr r3, [r7, #12] 7988 0130 1B68 ldr r3, [r3] 7989 .loc 1 4290 19 7990 0132 5A68 ldr r2, [r3, #4] 7991 .loc 1 4290 9 7992 0134 FB68 ldr r3, [r7, #12] 7993 0136 1B68 ldr r3, [r3] 7994 .loc 1 4290 25 7995 0138 22F40042 bic r2, r2, #32768 7996 013c 5A60 str r2, [r3, #4] 4291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7997 .loc 1 4293 23 7998 013e FB68 ldr r3, [r7, #12] 7999 0140 BA68 ldr r2, [r7, #8] 8000 0142 5A62 str r2, [r3, #36] 4294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 8001 .loc 1 4294 23 8002 0144 FB68 ldr r3, [r7, #12] 8003 0146 FA88 ldrh r2, [r7, #6] @ movhi 8004 0148 5A85 strh r2, [r3, #42] @ movhi 4295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 8005 .loc 1 4295 29 8006 014a FB68 ldr r3, [r7, #12] 8007 014c 5B8D ldrh r3, [r3, #42] @ movhi 8008 014e 9AB2 uxth r2, r3 8009 .loc 1 4295 23 8010 0150 FB68 ldr r3, [r7, #12] 8011 0152 1A85 strh r2, [r3, #40] @ movhi 4296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 8012 .loc 1 4296 23 8013 0154 FB68 ldr r3, [r7, #12] 8014 0156 3A68 ldr r2, [r7] 8015 0158 DA62 str r2, [r3, #44] 4297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 8016 .loc 1 4297 23 8017 015a FB68 ldr r3, [r7, #12] 8018 015c 484A ldr r2, .L393+4 8019 015e 5A63 str r2, [r3, #52] 4298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 8020 .loc 1 4299 13 8021 0160 FB68 ldr r3, [r7, #12] 8022 0162 DB6B ldr r3, [r3, #60] 8023 .loc 1 4299 8 8024 0164 002B cmp r3, #0 8025 0166 20D0 beq .L386 ARM GAS /tmp/cc5G5cqz.s page 218 4300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 4302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; 8026 .loc 1 4302 11 8027 0168 FB68 ldr r3, [r7, #12] 8028 016a DB6B ldr r3, [r3, #60] 8029 .loc 1 4302 38 8030 016c 454A ldr r2, .L393+8 8031 016e 9A62 str r2, [r3, #40] 4303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 4305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 8032 .loc 1 4305 11 8033 0170 FB68 ldr r3, [r7, #12] 8034 0172 DB6B ldr r3, [r3, #60] 8035 .loc 1 4305 39 8036 0174 444A ldr r2, .L393+12 8037 0176 1A63 str r2, [r3, #48] 4306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 4308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 8038 .loc 1 4308 11 8039 0178 FB68 ldr r3, [r7, #12] 8040 017a DB6B ldr r3, [r3, #60] 8041 .loc 1 4308 42 8042 017c 0022 movs r2, #0 8043 017e DA62 str r2, [r3, #44] 4309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 8044 .loc 1 4309 11 8045 0180 FB68 ldr r3, [r7, #12] 8046 0182 DB6B ldr r3, [r3, #60] 8047 .loc 1 4309 39 8048 0184 0022 movs r2, #0 8049 0186 5A63 str r2, [r3, #52] 4310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 4312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, 8050 .loc 1 4312 23 8051 0188 FB68 ldr r3, [r7, #12] 8052 018a D86B ldr r0, [r3, #60] 8053 .loc 1 4312 69 8054 018c FB68 ldr r3, [r7, #12] 8055 018e 1B68 ldr r3, [r3] 8056 .loc 1 4312 64 8057 0190 2433 adds r3, r3, #36 8058 .loc 1 4312 23 8059 0192 1946 mov r1, r3 8060 0194 BA68 ldr r2, [r7, #8] 4313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); 8061 .loc 1 4313 61 8062 0196 FB68 ldr r3, [r7, #12] 8063 0198 1B8D ldrh r3, [r3, #40] 4312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); 8064 .loc 1 4312 23 8065 019a FFF7FEFF bl HAL_DMA_Start_IT 8066 019e 0346 mov r3, r0 8067 01a0 FB75 strb r3, [r7, #23] ARM GAS /tmp/cc5G5cqz.s page 219 4314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 4323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 8068 .loc 1 4330 8 8069 01a2 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 8070 01a4 002B cmp r3, #0 8071 01a6 36D1 bne .L388 8072 01a8 13E0 b .L391 8073 .L386: 4318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 8074 .loc 1 4318 23 8075 01aa FB68 ldr r3, [r7, #12] 8076 01ac 2822 movs r2, #40 8077 01ae 83F84120 strb r2, [r3, #65] 4319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8078 .loc 1 4319 23 8079 01b2 FB68 ldr r3, [r7, #12] 8080 01b4 0022 movs r2, #0 8081 01b6 83F84220 strb r2, [r3, #66] 4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8082 .loc 1 4322 11 8083 01ba FB68 ldr r3, [r7, #12] 8084 01bc 5B6C ldr r3, [r3, #68] 4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8085 .loc 1 4322 23 8086 01be 43F08002 orr r2, r3, #128 8087 01c2 FB68 ldr r3, [r7, #12] 8088 01c4 5A64 str r2, [r3, #68] 4325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8089 .loc 1 4325 7 8090 01c6 FB68 ldr r3, [r7, #12] 8091 01c8 0022 movs r2, #0 8092 01ca 83F84020 strb r2, [r3, #64] 4327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8093 .loc 1 4327 14 8094 01ce 0123 movs r3, #1 8095 01d0 50E0 b .L382 8096 .L391: 4331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 4333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 8097 .loc 1 4333 11 8098 01d2 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 220 8099 01d4 5B8D ldrh r3, [r3, #42] @ movhi 8100 01d6 9AB2 uxth r2, r3 8101 .loc 1 4333 30 8102 01d8 FB68 ldr r3, [r7, #12] 8103 01da 1B8D ldrh r3, [r3, #40] 8104 .loc 1 4333 23 8105 01dc D31A subs r3, r2, r3 8106 01de 9AB2 uxth r2, r3 8107 01e0 FB68 ldr r3, [r7, #12] 8108 01e2 5A85 strh r2, [r3, #42] @ movhi 4334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */ 4336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0; 8109 .loc 1 4336 22 8110 01e4 FB68 ldr r3, [r7, #12] 8111 01e6 0022 movs r2, #0 8112 01e8 1A85 strh r2, [r3, #40] @ movhi 4337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 4346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 8113 .loc 1 4353 11 8114 01ea FB68 ldr r3, [r7, #12] 8115 01ec 1B68 ldr r3, [r3] 8116 01ee 9B69 ldr r3, [r3, #24] 8117 01f0 03F00803 and r3, r3, #8 8118 01f4 082B cmp r3, #8 8119 01f6 0CBF ite eq 8120 01f8 0123 moveq r3, #1 8121 01fa 0023 movne r3, #0 8122 01fc DBB2 uxtb r3, r3 8123 .loc 1 4353 9 8124 01fe BB75 strb r3, [r7, #22] 4354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) 8125 .loc 1 4354 10 8126 0200 FB68 ldr r3, [r7, #12] 8127 0202 1B68 ldr r3, [r3] 8128 0204 9B69 ldr r3, [r3, #24] 8129 0206 1B0C lsrs r3, r3, #16 8130 0208 DBB2 uxtb r3, r3 8131 020a 03F00103 and r3, r3, #1 8132 020e DBB2 uxtb r3, r3 8133 .loc 1 4354 8 8134 0210 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 221 8135 0212 1BD1 bne .L390 8136 0214 13E0 b .L392 8137 .L388: 4341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 8138 .loc 1 4341 23 8139 0216 FB68 ldr r3, [r7, #12] 8140 0218 2822 movs r2, #40 8141 021a 83F84120 strb r2, [r3, #65] 4342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8142 .loc 1 4342 23 8143 021e FB68 ldr r3, [r7, #12] 8144 0220 0022 movs r2, #0 8145 0222 83F84220 strb r2, [r3, #66] 4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8146 .loc 1 4345 11 8147 0226 FB68 ldr r3, [r7, #12] 8148 0228 5B6C ldr r3, [r3, #68] 4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8149 .loc 1 4345 23 8150 022a 43F01002 orr r2, r3, #16 8151 022e FB68 ldr r3, [r7, #12] 8152 0230 5A64 str r2, [r3, #68] 4348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8153 .loc 1 4348 7 8154 0232 FB68 ldr r3, [r7, #12] 8155 0234 0022 movs r2, #0 8156 0236 83F84020 strb r2, [r3, #64] 4350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8157 .loc 1 4350 14 8158 023a 0123 movs r3, #1 8159 023c 1AE0 b .L382 8160 .L392: 8161 .loc 1 4354 55 discriminator 1 8162 023e BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 8163 0240 002B cmp r3, #0 8164 0242 03D0 beq .L390 4355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 8165 .loc 1 4358 7 8166 0244 FB68 ldr r3, [r7, #12] 8167 0246 1B68 ldr r3, [r3] 8168 0248 0822 movs r2, #8 8169 024a DA61 str r2, [r3, #28] 8170 .L390: 4359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 8171 .loc 1 4362 5 8172 024c FB68 ldr r3, [r7, #12] 8173 024e 0022 movs r2, #0 8174 0250 83F84020 strb r2, [r3, #64] 4363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 4365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; ARM GAS /tmp/cc5G5cqz.s page 222 8175 .loc 1 4365 9 8176 0254 FB68 ldr r3, [r7, #12] 8177 0256 1B68 ldr r3, [r3] 8178 .loc 1 4365 19 8179 0258 1A68 ldr r2, [r3] 8180 .loc 1 4365 9 8181 025a FB68 ldr r3, [r7, #12] 8182 025c 1B68 ldr r3, [r3] 8183 .loc 1 4365 25 8184 025e 42F40042 orr r2, r2, #32768 8185 0262 1A60 str r2, [r3] 4366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ 4371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 8186 .loc 1 4371 5 8187 0264 48F20201 movw r1, #32770 8188 0268 F868 ldr r0, [r7, #12] 8189 026a FFF7FEFF bl I2C_Enable_IRQ 4372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8190 .loc 1 4373 12 8191 026e 0023 movs r3, #0 8192 0270 00E0 b .L382 8193 .L379: 4374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8194 .loc 1 4377 12 8195 0272 0123 movs r3, #1 8196 .L382: 4378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8197 .loc 1 4379 1 8198 0274 1846 mov r0, r3 8199 0276 1837 adds r7, r7, #24 8200 .cfi_def_cfa_offset 8 8201 0278 BD46 mov sp, r7 8202 .cfi_def_cfa_register 13 8203 @ sp needed 8204 027a 80BD pop {r7, pc} 8205 .L394: 8206 .align 2 8207 .L393: 8208 027c 00000000 .word I2C_DMAAbort 8209 0280 00000000 .word I2C_Slave_ISR_DMA 8210 0284 00000000 .word I2C_DMASlaveReceiveCplt 8211 0288 00000000 .word I2C_DMAError 8212 .cfi_endproc 8213 .LFE160: 8215 .section .text.HAL_I2C_EnableListen_IT,"ax",%progbits 8216 .align 1 8217 .global HAL_I2C_EnableListen_IT 8218 .syntax unified ARM GAS /tmp/cc5G5cqz.s page 223 8219 .thumb 8220 .thumb_func 8222 HAL_I2C_EnableListen_IT: 8223 .LFB161: 4380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Enable the Address listen mode with Interrupt. 4383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) 4388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8224 .loc 1 4388 1 8225 .cfi_startproc 8226 @ args = 0, pretend = 0, frame = 8 8227 @ frame_needed = 1, uses_anonymous_args = 0 8228 0000 80B5 push {r7, lr} 8229 .cfi_def_cfa_offset 8 8230 .cfi_offset 7, -8 8231 .cfi_offset 14, -4 8232 0002 82B0 sub sp, sp, #8 8233 .cfi_def_cfa_offset 16 8234 0004 00AF add r7, sp, #0 8235 .cfi_def_cfa_register 7 8236 0006 7860 str r0, [r7, #4] 4389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 8237 .loc 1 4389 11 8238 0008 7B68 ldr r3, [r7, #4] 8239 000a 93F84130 ldrb r3, [r3, #65] 8240 000e DBB2 uxtb r3, r3 8241 .loc 1 4389 6 8242 0010 202B cmp r3, #32 8243 0012 0DD1 bne .L396 4390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 8244 .loc 1 4391 17 8245 0014 7B68 ldr r3, [r7, #4] 8246 0016 2822 movs r2, #40 8247 0018 83F84120 strb r2, [r3, #65] 4392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 8248 .loc 1 4392 19 8249 001c 7B68 ldr r3, [r7, #4] 8250 001e 074A ldr r2, .L398 8251 0020 5A63 str r2, [r3, #52] 4393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the Address Match interrupt */ 4395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 8252 .loc 1 4395 5 8253 0022 4FF40041 mov r1, #32768 8254 0026 7868 ldr r0, [r7, #4] 8255 0028 FFF7FEFF bl I2C_Enable_IRQ 4396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8256 .loc 1 4397 12 8257 002c 0023 movs r3, #0 8258 002e 00E0 b .L397 ARM GAS /tmp/cc5G5cqz.s page 224 8259 .L396: 4398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 8260 .loc 1 4401 12 8261 0030 0223 movs r3, #2 8262 .L397: 4402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8263 .loc 1 4403 1 8264 0032 1846 mov r0, r3 8265 0034 0837 adds r7, r7, #8 8266 .cfi_def_cfa_offset 8 8267 0036 BD46 mov sp, r7 8268 .cfi_def_cfa_register 13 8269 @ sp needed 8270 0038 80BD pop {r7, pc} 8271 .L399: 8272 003a 00BF .align 2 8273 .L398: 8274 003c 00000000 .word I2C_Slave_ISR_IT 8275 .cfi_endproc 8276 .LFE161: 8278 .section .text.HAL_I2C_DisableListen_IT,"ax",%progbits 8279 .align 1 8280 .global HAL_I2C_DisableListen_IT 8281 .syntax unified 8282 .thumb 8283 .thumb_func 8285 HAL_I2C_DisableListen_IT: 8286 .LFB162: 4404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Disable the Address listen mode with Interrupt. 4407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C 4409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) 4412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8287 .loc 1 4412 1 8288 .cfi_startproc 8289 @ args = 0, pretend = 0, frame = 16 8290 @ frame_needed = 1, uses_anonymous_args = 0 8291 0000 80B5 push {r7, lr} 8292 .cfi_def_cfa_offset 8 8293 .cfi_offset 7, -8 8294 .cfi_offset 14, -4 8295 0002 84B0 sub sp, sp, #16 8296 .cfi_def_cfa_offset 24 8297 0004 00AF add r7, sp, #0 8298 .cfi_def_cfa_register 7 8299 0006 7860 str r0, [r7, #4] 4413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp; 4415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 225 4416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address listen mode only if a transfer is not ongoing */ 4417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) 8300 .loc 1 4417 11 8301 0008 7B68 ldr r3, [r7, #4] 8302 000a 93F84130 ldrb r3, [r3, #65] 8303 000e DBB2 uxtb r3, r3 8304 .loc 1 4417 6 8305 0010 282B cmp r3, #40 8306 0012 21D1 bne .L401 4418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; 8307 .loc 1 4419 26 8308 0014 7B68 ldr r3, [r7, #4] 8309 0016 93F84130 ldrb r3, [r3, #65] 8310 001a DBB2 uxtb r3, r3 8311 .loc 1 4419 9 8312 001c 03F00303 and r3, r3, #3 8313 0020 FB60 str r3, [r7, #12] 4420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); 8314 .loc 1 4420 48 8315 0022 7B68 ldr r3, [r7, #4] 8316 0024 93F84230 ldrb r3, [r3, #66] 8317 0028 DBB2 uxtb r3, r3 8318 .loc 1 4420 33 8319 002a 1A46 mov r2, r3 8320 .loc 1 4420 31 8321 002c FB68 ldr r3, [r7, #12] 8322 002e 1A43 orrs r2, r2, r3 8323 .loc 1 4420 25 8324 0030 7B68 ldr r3, [r7, #4] 8325 0032 1A63 str r2, [r3, #48] 4421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 8326 .loc 1 4421 17 8327 0034 7B68 ldr r3, [r7, #4] 8328 0036 2022 movs r2, #32 8329 0038 83F84120 strb r2, [r3, #65] 4422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 8330 .loc 1 4422 16 8331 003c 7B68 ldr r3, [r7, #4] 8332 003e 0022 movs r2, #0 8333 0040 83F84220 strb r2, [r3, #66] 4423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 8334 .loc 1 4423 19 8335 0044 7B68 ldr r3, [r7, #4] 8336 0046 0022 movs r2, #0 8337 0048 5A63 str r2, [r3, #52] 4424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the Address Match interrupt */ 4426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 8338 .loc 1 4426 5 8339 004a 4FF40041 mov r1, #32768 8340 004e 7868 ldr r0, [r7, #4] 8341 0050 FFF7FEFF bl I2C_Disable_IRQ 4427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8342 .loc 1 4428 12 8343 0054 0023 movs r3, #0 ARM GAS /tmp/cc5G5cqz.s page 226 8344 0056 00E0 b .L402 8345 .L401: 4429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 8346 .loc 1 4432 12 8347 0058 0223 movs r3, #2 8348 .L402: 4433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8349 .loc 1 4434 1 8350 005a 1846 mov r0, r3 8351 005c 1037 adds r7, r7, #16 8352 .cfi_def_cfa_offset 8 8353 005e BD46 mov sp, r7 8354 .cfi_def_cfa_register 13 8355 @ sp needed 8356 0060 80BD pop {r7, pc} 8357 .cfi_endproc 8358 .LFE162: 8360 .section .text.HAL_I2C_Master_Abort_IT,"ax",%progbits 8361 .align 1 8362 .global HAL_I2C_Master_Abort_IT 8363 .syntax unified 8364 .thumb 8365 .thumb_func 8367 HAL_I2C_Master_Abort_IT: 8368 .LFB163: 4435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Abort a master I2C IT or DMA process communication with Interrupt. 4438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 4441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 4442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) 4445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8369 .loc 1 4445 1 8370 .cfi_startproc 8371 @ args = 0, pretend = 0, frame = 8 8372 @ frame_needed = 1, uses_anonymous_args = 0 8373 0000 80B5 push {r7, lr} 8374 .cfi_def_cfa_offset 8 8375 .cfi_offset 7, -8 8376 .cfi_offset 14, -4 8377 0002 84B0 sub sp, sp, #16 8378 .cfi_def_cfa_offset 24 8379 0004 02AF add r7, sp, #8 8380 .cfi_def_cfa 7, 16 8381 0006 7860 str r0, [r7, #4] 8382 0008 0B46 mov r3, r1 8383 000a 7B80 strh r3, [r7, #2] @ movhi 4446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MASTER) 8384 .loc 1 4446 11 ARM GAS /tmp/cc5G5cqz.s page 227 8385 000c 7B68 ldr r3, [r7, #4] 8386 000e 93F84230 ldrb r3, [r3, #66] 8387 0012 DBB2 uxtb r3, r3 8388 .loc 1 4446 6 8389 0014 102B cmp r3, #16 8390 0016 3CD1 bne .L404 4447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 8391 .loc 1 4449 5 8392 0018 7B68 ldr r3, [r7, #4] 8393 001a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 8394 001e 012B cmp r3, #1 8395 0020 01D1 bne .L405 8396 .loc 1 4449 5 is_stmt 0 discriminator 1 8397 0022 0223 movs r3, #2 8398 .loc 1 4449 5 8399 0024 36E0 b .L406 8400 .L405: 8401 .loc 1 4449 5 discriminator 2 8402 0026 7B68 ldr r3, [r7, #4] 8403 0028 0122 movs r2, #1 8404 002a 83F84020 strb r2, [r3, #64] 4450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 4452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 8405 .loc 1 4452 13 is_stmt 1 8406 002e 7B68 ldr r3, [r7, #4] 8407 0030 93F84130 ldrb r3, [r3, #65] 8408 0034 DBB2 uxtb r3, r3 8409 .loc 1 4452 8 8410 0036 212B cmp r3, #33 8411 0038 07D1 bne .L407 4453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 8412 .loc 1 4454 7 8413 003a 0121 movs r1, #1 8414 003c 7868 ldr r0, [r7, #4] 8415 003e FFF7FEFF bl I2C_Disable_IRQ 4455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 8416 .loc 1 4455 27 8417 0042 7B68 ldr r3, [r7, #4] 8418 0044 1122 movs r2, #17 8419 0046 1A63 str r2, [r3, #48] 8420 0048 0CE0 b .L408 8421 .L407: 4456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 8422 .loc 1 4457 18 8423 004a 7B68 ldr r3, [r7, #4] 8424 004c 93F84130 ldrb r3, [r3, #65] 8425 0050 DBB2 uxtb r3, r3 8426 .loc 1 4457 13 8427 0052 222B cmp r3, #34 8428 0054 06D1 bne .L408 4458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); ARM GAS /tmp/cc5G5cqz.s page 228 8429 .loc 1 4459 7 8430 0056 0221 movs r1, #2 8431 0058 7868 ldr r0, [r7, #4] 8432 005a FFF7FEFF bl I2C_Disable_IRQ 4460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 8433 .loc 1 4460 27 8434 005e 7B68 ldr r3, [r7, #4] 8435 0060 1222 movs r2, #18 8436 0062 1A63 str r2, [r3, #48] 8437 .L408: 4461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 4465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set State at HAL_I2C_STATE_ABORT */ 4468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_ABORT; 8438 .loc 1 4468 17 8439 0064 7B68 ldr r3, [r7, #4] 8440 0066 6022 movs r2, #96 8441 0068 83F84120 strb r2, [r3, #65] 4469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ 4471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfe 4472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); 8442 .loc 1 4472 5 8443 006c 7988 ldrh r1, [r7, #2] 8444 006e 0B4B ldr r3, .L409 8445 0070 0093 str r3, [sp] 8446 0072 4FF00073 mov r3, #33554432 8447 0076 0122 movs r2, #1 8448 0078 7868 ldr r0, [r7, #4] 8449 007a FFF7FEFF bl I2C_TransferConfig 4473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 8450 .loc 1 4475 5 8451 007e 7B68 ldr r3, [r7, #4] 8452 0080 0022 movs r2, #0 8453 0082 83F84020 strb r2, [r3, #64] 4476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 8454 .loc 1 4480 5 8455 0086 2021 movs r1, #32 8456 0088 7868 ldr r0, [r7, #4] 8457 008a FFF7FEFF bl I2C_Enable_IRQ 4481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8458 .loc 1 4482 12 8459 008e 0023 movs r3, #0 8460 0090 00E0 b .L406 8461 .L404: 4483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 229 4484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong usage of abort function */ 4487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This function should be used only in case of abort monitored by master device */ 4488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8462 .loc 1 4488 12 8463 0092 0123 movs r3, #1 8464 .L406: 4489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8465 .loc 1 4490 1 8466 0094 1846 mov r0, r3 8467 0096 0837 adds r7, r7, #8 8468 .cfi_def_cfa_offset 8 8469 0098 BD46 mov sp, r7 8470 .cfi_def_cfa_register 13 8471 @ sp needed 8472 009a 80BD pop {r7, pc} 8473 .L410: 8474 .align 2 8475 .L409: 8476 009c 00400080 .word -2147467264 8477 .cfi_endproc 8478 .LFE163: 8480 .section .text.HAL_I2C_EV_IRQHandler,"ax",%progbits 8481 .align 1 8482 .global HAL_I2C_EV_IRQHandler 8483 .syntax unified 8484 .thumb 8485 .thumb_func 8487 HAL_I2C_EV_IRQHandler: 8488 .LFB164: 4491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks 4497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 4498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C event interrupt request. 4502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ 4507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8489 .loc 1 4507 1 8490 .cfi_startproc 8491 @ args = 0, pretend = 0, frame = 16 8492 @ frame_needed = 1, uses_anonymous_args = 0 8493 0000 80B5 push {r7, lr} 8494 .cfi_def_cfa_offset 8 8495 .cfi_offset 7, -8 8496 .cfi_offset 14, -4 ARM GAS /tmp/cc5G5cqz.s page 230 8497 0002 84B0 sub sp, sp, #16 8498 .cfi_def_cfa_offset 24 8499 0004 00AF add r7, sp, #0 8500 .cfi_def_cfa_register 7 8501 0006 7860 str r0, [r7, #4] 4508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */ 4509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); 8502 .loc 1 4509 24 8503 0008 7B68 ldr r3, [r7, #4] 8504 000a 1B68 ldr r3, [r3] 8505 .loc 1 4509 12 8506 000c 9B69 ldr r3, [r3, #24] 8507 000e FB60 str r3, [r7, #12] 4510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); 8508 .loc 1 4510 24 8509 0010 7B68 ldr r3, [r7, #4] 8510 0012 1B68 ldr r3, [r3] 8511 .loc 1 4510 12 8512 0014 1B68 ldr r3, [r3] 8513 0016 BB60 str r3, [r7, #8] 4511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C events treatment -------------------------------------*/ 4513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferISR != NULL) 8514 .loc 1 4513 11 8515 0018 7B68 ldr r3, [r7, #4] 8516 001a 5B6B ldr r3, [r3, #52] 8517 .loc 1 4513 6 8518 001c 002B cmp r3, #0 8519 001e 05D0 beq .L413 4514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR(hi2c, itflags, itsources); 8520 .loc 1 4515 9 8521 0020 7B68 ldr r3, [r7, #4] 8522 0022 5B6B ldr r3, [r3, #52] 8523 .loc 1 4515 5 8524 0024 BA68 ldr r2, [r7, #8] 8525 0026 F968 ldr r1, [r7, #12] 8526 0028 7868 ldr r0, [r7, #4] 8527 002a 9847 blx r3 8528 .LVL6: 8529 .L413: 4516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8530 .loc 1 4517 1 8531 002c 00BF nop 8532 002e 1037 adds r7, r7, #16 8533 .cfi_def_cfa_offset 8 8534 0030 BD46 mov sp, r7 8535 .cfi_def_cfa_register 13 8536 @ sp needed 8537 0032 80BD pop {r7, pc} 8538 .cfi_endproc 8539 .LFE164: 8541 .section .text.HAL_I2C_ER_IRQHandler,"ax",%progbits 8542 .align 1 8543 .global HAL_I2C_ER_IRQHandler 8544 .syntax unified ARM GAS /tmp/cc5G5cqz.s page 231 8545 .thumb 8546 .thumb_func 8548 HAL_I2C_ER_IRQHandler: 8549 .LFB165: 4518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C error interrupt request. 4521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) 4526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8550 .loc 1 4526 1 8551 .cfi_startproc 8552 @ args = 0, pretend = 0, frame = 24 8553 @ frame_needed = 1, uses_anonymous_args = 0 8554 0000 80B5 push {r7, lr} 8555 .cfi_def_cfa_offset 8 8556 .cfi_offset 7, -8 8557 .cfi_offset 14, -4 8558 0002 86B0 sub sp, sp, #24 8559 .cfi_def_cfa_offset 32 8560 0004 00AF add r7, sp, #0 8561 .cfi_def_cfa_register 7 8562 0006 7860 str r0, [r7, #4] 4527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); 8563 .loc 1 4527 24 8564 0008 7B68 ldr r3, [r7, #4] 8565 000a 1B68 ldr r3, [r3] 8566 .loc 1 4527 12 8567 000c 9B69 ldr r3, [r3, #24] 8568 000e 7B61 str r3, [r7, #20] 4528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); 8569 .loc 1 4528 24 8570 0010 7B68 ldr r3, [r7, #4] 8571 0012 1B68 ldr r3, [r3] 8572 .loc 1 4528 12 8573 0014 1B68 ldr r3, [r3] 8574 0016 3B61 str r3, [r7, #16] 4529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror; 4530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Bus error interrupt occurred ------------------------------------*/ 4532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ 8575 .loc 1 4532 8 8576 0018 7B69 ldr r3, [r7, #20] 8577 001a 1B0A lsrs r3, r3, #8 8578 001c 03F00103 and r3, r3, #1 8579 .loc 1 4532 6 8580 0020 002B cmp r3, #0 8581 0022 10D0 beq .L415 4533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 8582 .loc 1 4533 8 8583 0024 3B69 ldr r3, [r7, #16] 8584 0026 DB09 lsrs r3, r3, #7 8585 0028 03F00103 and r3, r3, #1 4532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) ARM GAS /tmp/cc5G5cqz.s page 232 8586 .loc 1 4532 57 discriminator 1 8587 002c 002B cmp r3, #0 8588 002e 0AD0 beq .L415 4534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; 8589 .loc 1 4535 9 8590 0030 7B68 ldr r3, [r7, #4] 8591 0032 5B6C ldr r3, [r3, #68] 8592 .loc 1 4535 21 8593 0034 43F00102 orr r2, r3, #1 8594 0038 7B68 ldr r3, [r7, #4] 8595 003a 5A64 str r2, [r3, #68] 4536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */ 4538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); 8596 .loc 1 4538 5 8597 003c 7B68 ldr r3, [r7, #4] 8598 003e 1B68 ldr r3, [r3] 8599 0040 4FF48072 mov r2, #256 8600 0044 DA61 str r2, [r3, #28] 8601 .L415: 4539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ 4542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ 8602 .loc 1 4542 8 8603 0046 7B69 ldr r3, [r7, #20] 8604 0048 9B0A lsrs r3, r3, #10 8605 004a 03F00103 and r3, r3, #1 8606 .loc 1 4542 6 8607 004e 002B cmp r3, #0 8608 0050 10D0 beq .L416 4543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 8609 .loc 1 4543 8 8610 0052 3B69 ldr r3, [r7, #16] 8611 0054 DB09 lsrs r3, r3, #7 8612 0056 03F00103 and r3, r3, #1 4542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 8613 .loc 1 4542 56 discriminator 1 8614 005a 002B cmp r3, #0 8615 005c 0AD0 beq .L416 4544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; 8616 .loc 1 4545 9 8617 005e 7B68 ldr r3, [r7, #4] 8618 0060 5B6C ldr r3, [r3, #68] 8619 .loc 1 4545 21 8620 0062 43F00802 orr r2, r3, #8 8621 0066 7B68 ldr r3, [r7, #4] 8622 0068 5A64 str r2, [r3, #68] 4546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */ 4548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); 8623 .loc 1 4548 5 8624 006a 7B68 ldr r3, [r7, #4] 8625 006c 1B68 ldr r3, [r3] 8626 006e 4FF48062 mov r2, #1024 ARM GAS /tmp/cc5G5cqz.s page 233 8627 0072 DA61 str r2, [r3, #28] 8628 .L416: 4549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ 4552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ 8629 .loc 1 4552 8 8630 0074 7B69 ldr r3, [r7, #20] 8631 0076 5B0A lsrs r3, r3, #9 8632 0078 03F00103 and r3, r3, #1 8633 .loc 1 4552 6 8634 007c 002B cmp r3, #0 8635 007e 10D0 beq .L417 4553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 8636 .loc 1 4553 8 8637 0080 3B69 ldr r3, [r7, #16] 8638 0082 DB09 lsrs r3, r3, #7 8639 0084 03F00103 and r3, r3, #1 4552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 8640 .loc 1 4552 57 discriminator 1 8641 0088 002B cmp r3, #0 8642 008a 0AD0 beq .L417 4554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; 8643 .loc 1 4555 9 8644 008c 7B68 ldr r3, [r7, #4] 8645 008e 5B6C ldr r3, [r3, #68] 8646 .loc 1 4555 21 8647 0090 43F00202 orr r2, r3, #2 8648 0094 7B68 ldr r3, [r7, #4] 8649 0096 5A64 str r2, [r3, #68] 4556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */ 4558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); 8650 .loc 1 4558 5 8651 0098 7B68 ldr r3, [r7, #4] 8652 009a 1B68 ldr r3, [r3] 8653 009c 4FF40072 mov r2, #512 8654 00a0 DA61 str r2, [r3, #28] 8655 .L417: 4559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ 4562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; 8656 .loc 1 4562 12 8657 00a2 7B68 ldr r3, [r7, #4] 8658 00a4 5B6C ldr r3, [r3, #68] 8659 00a6 FB60 str r3, [r7, #12] 4563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Error Callback in case of Error detected */ 4565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_ 8660 .loc 1 4565 17 8661 00a8 FB68 ldr r3, [r7, #12] 8662 00aa 03F00B03 and r3, r3, #11 8663 .loc 1 4565 6 8664 00ae 002B cmp r3, #0 8665 00b0 03D0 beq .L419 ARM GAS /tmp/cc5G5cqz.s page 234 4566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, tmperror); 8666 .loc 1 4567 5 8667 00b2 F968 ldr r1, [r7, #12] 8668 00b4 7868 ldr r0, [r7, #4] 8669 00b6 FFF7FEFF bl I2C_ITError 8670 .L419: 4568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8671 .loc 1 4569 1 8672 00ba 00BF nop 8673 00bc 1837 adds r7, r7, #24 8674 .cfi_def_cfa_offset 8 8675 00be BD46 mov sp, r7 8676 .cfi_def_cfa_register 13 8677 @ sp needed 8678 00c0 80BD pop {r7, pc} 8679 .cfi_endproc 8680 .LFE165: 8682 .section .text.HAL_I2C_MasterTxCpltCallback,"ax",%progbits 8683 .align 1 8684 .weak HAL_I2C_MasterTxCpltCallback 8685 .syntax unified 8686 .thumb 8687 .thumb_func 8689 HAL_I2C_MasterTxCpltCallback: 8690 .LFB166: 4570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Tx Transfer completed callback. 4573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) 4578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8691 .loc 1 4578 1 8692 .cfi_startproc 8693 @ args = 0, pretend = 0, frame = 8 8694 @ frame_needed = 1, uses_anonymous_args = 0 8695 @ link register save eliminated. 8696 0000 80B4 push {r7} 8697 .cfi_def_cfa_offset 4 8698 .cfi_offset 7, -4 8699 0002 83B0 sub sp, sp, #12 8700 .cfi_def_cfa_offset 16 8701 0004 00AF add r7, sp, #0 8702 .cfi_def_cfa_register 7 8703 0006 7860 str r0, [r7, #4] 4579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterTxCpltCallback could be implemented in the user file 4584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8704 .loc 1 4585 1 ARM GAS /tmp/cc5G5cqz.s page 235 8705 0008 00BF nop 8706 000a 0C37 adds r7, r7, #12 8707 .cfi_def_cfa_offset 4 8708 000c BD46 mov sp, r7 8709 .cfi_def_cfa_register 13 8710 @ sp needed 8711 000e 5DF8047B ldr r7, [sp], #4 8712 .cfi_restore 7 8713 .cfi_def_cfa_offset 0 8714 0012 7047 bx lr 8715 .cfi_endproc 8716 .LFE166: 8718 .section .text.HAL_I2C_MasterRxCpltCallback,"ax",%progbits 8719 .align 1 8720 .weak HAL_I2C_MasterRxCpltCallback 8721 .syntax unified 8722 .thumb 8723 .thumb_func 8725 HAL_I2C_MasterRxCpltCallback: 8726 .LFB167: 4586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Rx Transfer completed callback. 4589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) 4594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8727 .loc 1 4594 1 8728 .cfi_startproc 8729 @ args = 0, pretend = 0, frame = 8 8730 @ frame_needed = 1, uses_anonymous_args = 0 8731 @ link register save eliminated. 8732 0000 80B4 push {r7} 8733 .cfi_def_cfa_offset 4 8734 .cfi_offset 7, -4 8735 0002 83B0 sub sp, sp, #12 8736 .cfi_def_cfa_offset 16 8737 0004 00AF add r7, sp, #0 8738 .cfi_def_cfa_register 7 8739 0006 7860 str r0, [r7, #4] 4595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterRxCpltCallback could be implemented in the user file 4600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8740 .loc 1 4601 1 8741 0008 00BF nop 8742 000a 0C37 adds r7, r7, #12 8743 .cfi_def_cfa_offset 4 8744 000c BD46 mov sp, r7 8745 .cfi_def_cfa_register 13 8746 @ sp needed 8747 000e 5DF8047B ldr r7, [sp], #4 ARM GAS /tmp/cc5G5cqz.s page 236 8748 .cfi_restore 7 8749 .cfi_def_cfa_offset 0 8750 0012 7047 bx lr 8751 .cfi_endproc 8752 .LFE167: 8754 .section .text.HAL_I2C_SlaveTxCpltCallback,"ax",%progbits 8755 .align 1 8756 .weak HAL_I2C_SlaveTxCpltCallback 8757 .syntax unified 8758 .thumb 8759 .thumb_func 8761 HAL_I2C_SlaveTxCpltCallback: 8762 .LFB168: 4602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @brief Slave Tx Transfer completed callback. 4604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) 4609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8763 .loc 1 4609 1 8764 .cfi_startproc 8765 @ args = 0, pretend = 0, frame = 8 8766 @ frame_needed = 1, uses_anonymous_args = 0 8767 @ link register save eliminated. 8768 0000 80B4 push {r7} 8769 .cfi_def_cfa_offset 4 8770 .cfi_offset 7, -4 8771 0002 83B0 sub sp, sp, #12 8772 .cfi_def_cfa_offset 16 8773 0004 00AF add r7, sp, #0 8774 .cfi_def_cfa_register 7 8775 0006 7860 str r0, [r7, #4] 4610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file 4615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8776 .loc 1 4616 1 8777 0008 00BF nop 8778 000a 0C37 adds r7, r7, #12 8779 .cfi_def_cfa_offset 4 8780 000c BD46 mov sp, r7 8781 .cfi_def_cfa_register 13 8782 @ sp needed 8783 000e 5DF8047B ldr r7, [sp], #4 8784 .cfi_restore 7 8785 .cfi_def_cfa_offset 0 8786 0012 7047 bx lr 8787 .cfi_endproc 8788 .LFE168: 8790 .section .text.HAL_I2C_SlaveRxCpltCallback,"ax",%progbits 8791 .align 1 8792 .weak HAL_I2C_SlaveRxCpltCallback ARM GAS /tmp/cc5G5cqz.s page 237 8793 .syntax unified 8794 .thumb 8795 .thumb_func 8797 HAL_I2C_SlaveRxCpltCallback: 8798 .LFB169: 4617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Rx Transfer completed callback. 4620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) 4625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8799 .loc 1 4625 1 8800 .cfi_startproc 8801 @ args = 0, pretend = 0, frame = 8 8802 @ frame_needed = 1, uses_anonymous_args = 0 8803 @ link register save eliminated. 8804 0000 80B4 push {r7} 8805 .cfi_def_cfa_offset 4 8806 .cfi_offset 7, -4 8807 0002 83B0 sub sp, sp, #12 8808 .cfi_def_cfa_offset 16 8809 0004 00AF add r7, sp, #0 8810 .cfi_def_cfa_register 7 8811 0006 7860 str r0, [r7, #4] 4626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file 4631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8812 .loc 1 4632 1 8813 0008 00BF nop 8814 000a 0C37 adds r7, r7, #12 8815 .cfi_def_cfa_offset 4 8816 000c BD46 mov sp, r7 8817 .cfi_def_cfa_register 13 8818 @ sp needed 8819 000e 5DF8047B ldr r7, [sp], #4 8820 .cfi_restore 7 8821 .cfi_def_cfa_offset 0 8822 0012 7047 bx lr 8823 .cfi_endproc 8824 .LFE169: 8826 .section .text.HAL_I2C_AddrCallback,"ax",%progbits 8827 .align 1 8828 .weak HAL_I2C_AddrCallback 8829 .syntax unified 8830 .thumb 8831 .thumb_func 8833 HAL_I2C_AddrCallback: 8834 .LFB170: 4633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** ARM GAS /tmp/cc5G5cqz.s page 238 4635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Address Match callback. 4636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFE 4639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param AddrMatchCode Address Match Code 4640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM 4643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8835 .loc 1 4643 1 8836 .cfi_startproc 8837 @ args = 0, pretend = 0, frame = 8 8838 @ frame_needed = 1, uses_anonymous_args = 0 8839 @ link register save eliminated. 8840 0000 80B4 push {r7} 8841 .cfi_def_cfa_offset 4 8842 .cfi_offset 7, -4 8843 0002 83B0 sub sp, sp, #12 8844 .cfi_def_cfa_offset 16 8845 0004 00AF add r7, sp, #0 8846 .cfi_def_cfa_register 7 8847 0006 7860 str r0, [r7, #4] 8848 0008 0B46 mov r3, r1 8849 000a FB70 strb r3, [r7, #3] 8850 000c 1346 mov r3, r2 @ movhi 8851 000e 3B80 strh r3, [r7] @ movhi 4644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(TransferDirection); 4647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(AddrMatchCode); 4648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AddrCallback() could be implemented in the user file 4651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8852 .loc 1 4652 1 8853 0010 00BF nop 8854 0012 0C37 adds r7, r7, #12 8855 .cfi_def_cfa_offset 4 8856 0014 BD46 mov sp, r7 8857 .cfi_def_cfa_register 13 8858 @ sp needed 8859 0016 5DF8047B ldr r7, [sp], #4 8860 .cfi_restore 7 8861 .cfi_def_cfa_offset 0 8862 001a 7047 bx lr 8863 .cfi_endproc 8864 .LFE170: 8866 .section .text.HAL_I2C_ListenCpltCallback,"ax",%progbits 8867 .align 1 8868 .weak HAL_I2C_ListenCpltCallback 8869 .syntax unified 8870 .thumb 8871 .thumb_func 8873 HAL_I2C_ListenCpltCallback: 8874 .LFB171: 4653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 239 4654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Listen Complete callback. 4656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) 4661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8875 .loc 1 4661 1 8876 .cfi_startproc 8877 @ args = 0, pretend = 0, frame = 8 8878 @ frame_needed = 1, uses_anonymous_args = 0 8879 @ link register save eliminated. 8880 0000 80B4 push {r7} 8881 .cfi_def_cfa_offset 4 8882 .cfi_offset 7, -4 8883 0002 83B0 sub sp, sp, #12 8884 .cfi_def_cfa_offset 16 8885 0004 00AF add r7, sp, #0 8886 .cfi_def_cfa_register 7 8887 0006 7860 str r0, [r7, #4] 4662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ListenCpltCallback() could be implemented in the user file 4667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8888 .loc 1 4668 1 8889 0008 00BF nop 8890 000a 0C37 adds r7, r7, #12 8891 .cfi_def_cfa_offset 4 8892 000c BD46 mov sp, r7 8893 .cfi_def_cfa_register 13 8894 @ sp needed 8895 000e 5DF8047B ldr r7, [sp], #4 8896 .cfi_restore 7 8897 .cfi_def_cfa_offset 0 8898 0012 7047 bx lr 8899 .cfi_endproc 8900 .LFE171: 8902 .section .text.HAL_I2C_MemTxCpltCallback,"ax",%progbits 8903 .align 1 8904 .weak HAL_I2C_MemTxCpltCallback 8905 .syntax unified 8906 .thumb 8907 .thumb_func 8909 HAL_I2C_MemTxCpltCallback: 8910 .LFB172: 4669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Tx Transfer completed callback. 4672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) ARM GAS /tmp/cc5G5cqz.s page 240 4677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8911 .loc 1 4677 1 8912 .cfi_startproc 8913 @ args = 0, pretend = 0, frame = 8 8914 @ frame_needed = 1, uses_anonymous_args = 0 8915 @ link register save eliminated. 8916 0000 80B4 push {r7} 8917 .cfi_def_cfa_offset 4 8918 .cfi_offset 7, -4 8919 0002 83B0 sub sp, sp, #12 8920 .cfi_def_cfa_offset 16 8921 0004 00AF add r7, sp, #0 8922 .cfi_def_cfa_register 7 8923 0006 7860 str r0, [r7, #4] 4678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemTxCpltCallback could be implemented in the user file 4683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8924 .loc 1 4684 1 8925 0008 00BF nop 8926 000a 0C37 adds r7, r7, #12 8927 .cfi_def_cfa_offset 4 8928 000c BD46 mov sp, r7 8929 .cfi_def_cfa_register 13 8930 @ sp needed 8931 000e 5DF8047B ldr r7, [sp], #4 8932 .cfi_restore 7 8933 .cfi_def_cfa_offset 0 8934 0012 7047 bx lr 8935 .cfi_endproc 8936 .LFE172: 8938 .section .text.HAL_I2C_MemRxCpltCallback,"ax",%progbits 8939 .align 1 8940 .weak HAL_I2C_MemRxCpltCallback 8941 .syntax unified 8942 .thumb 8943 .thumb_func 8945 HAL_I2C_MemRxCpltCallback: 8946 .LFB173: 4685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Rx Transfer completed callback. 4688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) 4693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8947 .loc 1 4693 1 8948 .cfi_startproc 8949 @ args = 0, pretend = 0, frame = 8 8950 @ frame_needed = 1, uses_anonymous_args = 0 8951 @ link register save eliminated. 8952 0000 80B4 push {r7} ARM GAS /tmp/cc5G5cqz.s page 241 8953 .cfi_def_cfa_offset 4 8954 .cfi_offset 7, -4 8955 0002 83B0 sub sp, sp, #12 8956 .cfi_def_cfa_offset 16 8957 0004 00AF add r7, sp, #0 8958 .cfi_def_cfa_register 7 8959 0006 7860 str r0, [r7, #4] 4694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemRxCpltCallback could be implemented in the user file 4699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8960 .loc 1 4700 1 8961 0008 00BF nop 8962 000a 0C37 adds r7, r7, #12 8963 .cfi_def_cfa_offset 4 8964 000c BD46 mov sp, r7 8965 .cfi_def_cfa_register 13 8966 @ sp needed 8967 000e 5DF8047B ldr r7, [sp], #4 8968 .cfi_restore 7 8969 .cfi_def_cfa_offset 0 8970 0012 7047 bx lr 8971 .cfi_endproc 8972 .LFE173: 8974 .section .text.HAL_I2C_ErrorCallback,"ax",%progbits 8975 .align 1 8976 .weak HAL_I2C_ErrorCallback 8977 .syntax unified 8978 .thumb 8979 .thumb_func 8981 HAL_I2C_ErrorCallback: 8982 .LFB174: 4701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C error callback. 4704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) 4709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8983 .loc 1 4709 1 8984 .cfi_startproc 8985 @ args = 0, pretend = 0, frame = 8 8986 @ frame_needed = 1, uses_anonymous_args = 0 8987 @ link register save eliminated. 8988 0000 80B4 push {r7} 8989 .cfi_def_cfa_offset 4 8990 .cfi_offset 7, -4 8991 0002 83B0 sub sp, sp, #12 8992 .cfi_def_cfa_offset 16 8993 0004 00AF add r7, sp, #0 8994 .cfi_def_cfa_register 7 8995 0006 7860 str r0, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 242 4710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ErrorCallback could be implemented in the user file 4715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8996 .loc 1 4716 1 8997 0008 00BF nop 8998 000a 0C37 adds r7, r7, #12 8999 .cfi_def_cfa_offset 4 9000 000c BD46 mov sp, r7 9001 .cfi_def_cfa_register 13 9002 @ sp needed 9003 000e 5DF8047B ldr r7, [sp], #4 9004 .cfi_restore 7 9005 .cfi_def_cfa_offset 0 9006 0012 7047 bx lr 9007 .cfi_endproc 9008 .LFE174: 9010 .section .text.HAL_I2C_AbortCpltCallback,"ax",%progbits 9011 .align 1 9012 .weak HAL_I2C_AbortCpltCallback 9013 .syntax unified 9014 .thumb 9015 .thumb_func 9017 HAL_I2C_AbortCpltCallback: 9018 .LFB175: 4717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C abort callback. 4720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) 4725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9019 .loc 1 4725 1 9020 .cfi_startproc 9021 @ args = 0, pretend = 0, frame = 8 9022 @ frame_needed = 1, uses_anonymous_args = 0 9023 @ link register save eliminated. 9024 0000 80B4 push {r7} 9025 .cfi_def_cfa_offset 4 9026 .cfi_offset 7, -4 9027 0002 83B0 sub sp, sp, #12 9028 .cfi_def_cfa_offset 16 9029 0004 00AF add r7, sp, #0 9030 .cfi_def_cfa_register 7 9031 0006 7860 str r0, [r7, #4] 4726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AbortCpltCallback could be implemented in the user file 4731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 243 9032 .loc 1 4732 1 9033 0008 00BF nop 9034 000a 0C37 adds r7, r7, #12 9035 .cfi_def_cfa_offset 4 9036 000c BD46 mov sp, r7 9037 .cfi_def_cfa_register 13 9038 @ sp needed 9039 000e 5DF8047B ldr r7, [sp], #4 9040 .cfi_restore 7 9041 .cfi_def_cfa_offset 0 9042 0012 7047 bx lr 9043 .cfi_endproc 9044 .LFE175: 9046 .section .text.HAL_I2C_GetState,"ax",%progbits 9047 .align 1 9048 .global HAL_I2C_GetState 9049 .syntax unified 9050 .thumb 9051 .thumb_func 9053 HAL_I2C_GetState: 9054 .LFB176: 4733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions 4739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Peripheral State, Mode and Error functions 4740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 4741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 4742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 4743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### Peripheral State, Mode and Error functions ##### 4744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 4745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 4746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection permit to get in run-time the status of the peripheral 4747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and the data flow. 4748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 4750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 4751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C handle state. 4755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL state 4758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) 4760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9055 .loc 1 4760 1 9056 .cfi_startproc 9057 @ args = 0, pretend = 0, frame = 8 9058 @ frame_needed = 1, uses_anonymous_args = 0 9059 @ link register save eliminated. 9060 0000 80B4 push {r7} 9061 .cfi_def_cfa_offset 4 9062 .cfi_offset 7, -4 ARM GAS /tmp/cc5G5cqz.s page 244 9063 0002 83B0 sub sp, sp, #12 9064 .cfi_def_cfa_offset 16 9065 0004 00AF add r7, sp, #0 9066 .cfi_def_cfa_register 7 9067 0006 7860 str r0, [r7, #4] 4761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return I2C handle state */ 4762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->State; 9068 .loc 1 4762 14 9069 0008 7B68 ldr r3, [r7, #4] 9070 000a 93F84130 ldrb r3, [r3, #65] 9071 000e DBB2 uxtb r3, r3 4763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9072 .loc 1 4763 1 9073 0010 1846 mov r0, r3 9074 0012 0C37 adds r7, r7, #12 9075 .cfi_def_cfa_offset 4 9076 0014 BD46 mov sp, r7 9077 .cfi_def_cfa_register 13 9078 @ sp needed 9079 0016 5DF8047B ldr r7, [sp], #4 9080 .cfi_restore 7 9081 .cfi_def_cfa_offset 0 9082 001a 7047 bx lr 9083 .cfi_endproc 9084 .LFE176: 9086 .section .text.HAL_I2C_GetMode,"ax",%progbits 9087 .align 1 9088 .global HAL_I2C_GetMode 9089 .syntax unified 9090 .thumb 9091 .thumb_func 9093 HAL_I2C_GetMode: 9094 .LFB177: 4764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Returns the I2C Master, Slave, Memory or no mode. 4767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for I2C module 4769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL mode 4770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) 4772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9095 .loc 1 4772 1 9096 .cfi_startproc 9097 @ args = 0, pretend = 0, frame = 8 9098 @ frame_needed = 1, uses_anonymous_args = 0 9099 @ link register save eliminated. 9100 0000 80B4 push {r7} 9101 .cfi_def_cfa_offset 4 9102 .cfi_offset 7, -4 9103 0002 83B0 sub sp, sp, #12 9104 .cfi_def_cfa_offset 16 9105 0004 00AF add r7, sp, #0 9106 .cfi_def_cfa_register 7 9107 0006 7860 str r0, [r7, #4] 4773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->Mode; 9108 .loc 1 4773 14 ARM GAS /tmp/cc5G5cqz.s page 245 9109 0008 7B68 ldr r3, [r7, #4] 9110 000a 93F84230 ldrb r3, [r3, #66] 9111 000e DBB2 uxtb r3, r3 4774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9112 .loc 1 4774 1 9113 0010 1846 mov r0, r3 9114 0012 0C37 adds r7, r7, #12 9115 .cfi_def_cfa_offset 4 9116 0014 BD46 mov sp, r7 9117 .cfi_def_cfa_register 13 9118 @ sp needed 9119 0016 5DF8047B ldr r7, [sp], #4 9120 .cfi_restore 7 9121 .cfi_def_cfa_offset 0 9122 001a 7047 bx lr 9123 .cfi_endproc 9124 .LFE177: 9126 .section .text.HAL_I2C_GetError,"ax",%progbits 9127 .align 1 9128 .global HAL_I2C_GetError 9129 .syntax unified 9130 .thumb 9131 .thumb_func 9133 HAL_I2C_GetError: 9134 .LFB178: 4775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C error code. 4778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval I2C Error Code 4781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) 4783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9135 .loc 1 4783 1 9136 .cfi_startproc 9137 @ args = 0, pretend = 0, frame = 8 9138 @ frame_needed = 1, uses_anonymous_args = 0 9139 @ link register save eliminated. 9140 0000 80B4 push {r7} 9141 .cfi_def_cfa_offset 4 9142 .cfi_offset 7, -4 9143 0002 83B0 sub sp, sp, #12 9144 .cfi_def_cfa_offset 16 9145 0004 00AF add r7, sp, #0 9146 .cfi_def_cfa_register 7 9147 0006 7860 str r0, [r7, #4] 4784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->ErrorCode; 9148 .loc 1 4784 14 9149 0008 7B68 ldr r3, [r7, #4] 9150 000a 5B6C ldr r3, [r3, #68] 4785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9151 .loc 1 4785 1 9152 000c 1846 mov r0, r3 9153 000e 0C37 adds r7, r7, #12 9154 .cfi_def_cfa_offset 4 9155 0010 BD46 mov sp, r7 ARM GAS /tmp/cc5G5cqz.s page 246 9156 .cfi_def_cfa_register 13 9157 @ sp needed 9158 0012 5DF8047B ldr r7, [sp], #4 9159 .cfi_restore 7 9160 .cfi_def_cfa_offset 0 9161 0016 7047 bx lr 9162 .cfi_endproc 9163 .LFE178: 9165 .section .text.I2C_Master_ISR_IT,"ax",%progbits 9166 .align 1 9167 .syntax unified 9168 .thumb 9169 .thumb_func 9171 I2C_Master_ISR_IT: 9172 .LFB179: 4786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup I2C_Private_Functions 4796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 4797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. 4801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 4804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 4805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 4808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 4809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9173 .loc 1 4809 1 9174 .cfi_startproc 9175 @ args = 0, pretend = 0, frame = 24 9176 @ frame_needed = 1, uses_anonymous_args = 0 9177 0000 80B5 push {r7, lr} 9178 .cfi_def_cfa_offset 8 9179 .cfi_offset 7, -8 9180 .cfi_offset 14, -4 9181 0002 88B0 sub sp, sp, #32 9182 .cfi_def_cfa_offset 40 9183 0004 02AF add r7, sp, #8 9184 .cfi_def_cfa 7, 32 9185 0006 F860 str r0, [r7, #12] 9186 0008 B960 str r1, [r7, #8] 9187 000a 7A60 str r2, [r7, #4] 4810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress; 4811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 9188 .loc 1 4811 12 ARM GAS /tmp/cc5G5cqz.s page 247 9189 000c BB68 ldr r3, [r7, #8] 9190 000e 7B61 str r3, [r7, #20] 4812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 9191 .loc 1 4814 3 9192 0010 FB68 ldr r3, [r7, #12] 9193 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 9194 0016 012B cmp r3, #1 9195 0018 01D1 bne .L437 9196 .loc 1 4814 3 is_stmt 0 discriminator 1 9197 001a 0223 movs r3, #2 9198 .loc 1 4814 3 9199 001c 14E1 b .L438 9200 .L437: 9201 .loc 1 4814 3 discriminator 2 9202 001e FB68 ldr r3, [r7, #12] 9203 0020 0122 movs r2, #1 9204 0022 83F84020 strb r2, [r3, #64] 4815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 9205 .loc 1 4816 8 is_stmt 1 9206 0026 7B69 ldr r3, [r7, #20] 9207 0028 1B09 lsrs r3, r3, #4 9208 002a 03F00103 and r3, r3, #1 9209 .loc 1 4816 6 9210 002e 002B cmp r3, #0 9211 0030 13D0 beq .L439 4817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 9212 .loc 1 4817 8 9213 0032 7B68 ldr r3, [r7, #4] 9214 0034 1B09 lsrs r3, r3, #4 9215 0036 03F00103 and r3, r3, #1 4816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 9216 .loc 1 4816 58 discriminator 1 9217 003a 002B cmp r3, #0 9218 003c 0DD0 beq .L439 4818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 4820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 9219 .loc 1 4820 5 9220 003e FB68 ldr r3, [r7, #12] 9221 0040 1B68 ldr r3, [r3] 9222 0042 1022 movs r2, #16 9223 0044 DA61 str r2, [r3, #28] 4821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 4823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 4824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 4825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 9224 .loc 1 4825 9 9225 0046 FB68 ldr r3, [r7, #12] 9226 0048 5B6C ldr r3, [r3, #68] 9227 .loc 1 4825 21 9228 004a 43F00402 orr r2, r3, #4 9229 004e FB68 ldr r3, [r7, #12] 9230 0050 5A64 str r2, [r3, #68] ARM GAS /tmp/cc5G5cqz.s page 248 4826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 4828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 9231 .loc 1 4828 5 9232 0052 F868 ldr r0, [r7, #12] 9233 0054 FFF7FEFF bl I2C_Flush_TXDR 9234 0058 E1E0 b .L440 9235 .L439: 4829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ 9236 .loc 1 4830 13 9237 005a 7B69 ldr r3, [r7, #20] 9238 005c 9B08 lsrs r3, r3, #2 9239 005e 03F00103 and r3, r3, #1 9240 .loc 1 4830 11 9241 0062 002B cmp r3, #0 9242 0064 23D0 beq .L441 4831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 9243 .loc 1 4831 13 9244 0066 7B68 ldr r3, [r7, #4] 9245 0068 9B08 lsrs r3, r3, #2 9246 006a 03F00103 and r3, r3, #1 4830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 9247 .loc 1 4830 65 discriminator 1 9248 006e 002B cmp r3, #0 9249 0070 1DD0 beq .L441 4832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 4834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 9250 .loc 1 4834 16 9251 0072 7B69 ldr r3, [r7, #20] 9252 0074 23F00403 bic r3, r3, #4 9253 0078 7B61 str r3, [r7, #20] 4835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 4837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 9254 .loc 1 4837 36 9255 007a FB68 ldr r3, [r7, #12] 9256 007c 1B68 ldr r3, [r3] 9257 .loc 1 4837 46 9258 007e 5A6A ldr r2, [r3, #36] 9259 .loc 1 4837 10 9260 0080 FB68 ldr r3, [r7, #12] 9261 0082 5B6A ldr r3, [r3, #36] 9262 .loc 1 4837 23 9263 0084 D2B2 uxtb r2, r2 9264 .loc 1 4837 21 9265 0086 1A70 strb r2, [r3] 4838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 4840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 9266 .loc 1 4840 9 9267 0088 FB68 ldr r3, [r7, #12] 9268 008a 5B6A ldr r3, [r3, #36] 9269 .loc 1 4840 19 9270 008c 5A1C adds r2, r3, #1 9271 008e FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 249 9272 0090 5A62 str r2, [r3, #36] 4841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 9273 .loc 1 4842 9 9274 0092 FB68 ldr r3, [r7, #12] 9275 0094 1B8D ldrh r3, [r3, #40] 9276 .loc 1 4842 19 9277 0096 013B subs r3, r3, #1 9278 0098 9AB2 uxth r2, r3 9279 009a FB68 ldr r3, [r7, #12] 9280 009c 1A85 strh r2, [r3, #40] @ movhi 4843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 9281 .loc 1 4843 9 9282 009e FB68 ldr r3, [r7, #12] 9283 00a0 5B8D ldrh r3, [r3, #42] @ movhi 9284 00a2 9BB2 uxth r3, r3 9285 .loc 1 4843 20 9286 00a4 013B subs r3, r3, #1 9287 00a6 9AB2 uxth r2, r3 9288 00a8 FB68 ldr r3, [r7, #12] 9289 00aa 5A85 strh r2, [r3, #42] @ movhi 9290 00ac B7E0 b .L440 9291 .L441: 4844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 9292 .loc 1 4845 13 9293 00ae 7B69 ldr r3, [r7, #20] 9294 00b0 5B08 lsrs r3, r3, #1 9295 00b2 03F00103 and r3, r3, #1 9296 .loc 1 4845 11 9297 00b6 002B cmp r3, #0 9298 00b8 1ED0 beq .L442 4846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 9299 .loc 1 4846 13 9300 00ba 7B68 ldr r3, [r7, #4] 9301 00bc 5B08 lsrs r3, r3, #1 9302 00be 03F00103 and r3, r3, #1 4845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 9303 .loc 1 4845 65 discriminator 1 9304 00c2 002B cmp r3, #0 9305 00c4 18D0 beq .L442 4847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 4849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 9306 .loc 1 4849 33 9307 00c6 FB68 ldr r3, [r7, #12] 9308 00c8 5B6A ldr r3, [r3, #36] 9309 .loc 1 4849 28 9310 00ca 1A78 ldrb r2, [r3] @ zero_extendqisi2 9311 .loc 1 4849 9 9312 00cc FB68 ldr r3, [r7, #12] 9313 00ce 1B68 ldr r3, [r3] 9314 .loc 1 4849 26 9315 00d0 9A62 str r2, [r3, #40] 4850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 4852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; ARM GAS /tmp/cc5G5cqz.s page 250 9316 .loc 1 4852 9 9317 00d2 FB68 ldr r3, [r7, #12] 9318 00d4 5B6A ldr r3, [r3, #36] 9319 .loc 1 4852 19 9320 00d6 5A1C adds r2, r3, #1 9321 00d8 FB68 ldr r3, [r7, #12] 9322 00da 5A62 str r2, [r3, #36] 4853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 9323 .loc 1 4854 9 9324 00dc FB68 ldr r3, [r7, #12] 9325 00de 1B8D ldrh r3, [r3, #40] 9326 .loc 1 4854 19 9327 00e0 013B subs r3, r3, #1 9328 00e2 9AB2 uxth r2, r3 9329 00e4 FB68 ldr r3, [r7, #12] 9330 00e6 1A85 strh r2, [r3, #40] @ movhi 4855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 9331 .loc 1 4855 9 9332 00e8 FB68 ldr r3, [r7, #12] 9333 00ea 5B8D ldrh r3, [r3, #42] @ movhi 9334 00ec 9BB2 uxth r3, r3 9335 .loc 1 4855 20 9336 00ee 013B subs r3, r3, #1 9337 00f0 9AB2 uxth r2, r3 9338 00f2 FB68 ldr r3, [r7, #12] 9339 00f4 5A85 strh r2, [r3, #42] @ movhi 9340 00f6 92E0 b .L440 9341 .L442: 4856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ 9342 .loc 1 4857 13 9343 00f8 7B69 ldr r3, [r7, #20] 9344 00fa DB09 lsrs r3, r3, #7 9345 00fc 03F00103 and r3, r3, #1 9346 .loc 1 4857 11 9347 0100 002B cmp r3, #0 9348 0102 5DD0 beq .L443 4858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9349 .loc 1 4858 13 9350 0104 7B68 ldr r3, [r7, #4] 9351 0106 9B09 lsrs r3, r3, #6 9352 0108 03F00103 and r3, r3, #1 4857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9353 .loc 1 4857 64 discriminator 1 9354 010c 002B cmp r3, #0 9355 010e 57D0 beq .L443 4859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 9356 .loc 1 4860 14 9357 0110 FB68 ldr r3, [r7, #12] 9358 0112 5B8D ldrh r3, [r3, #42] @ movhi 9359 0114 9BB2 uxth r3, r3 9360 .loc 1 4860 8 9361 0116 002B cmp r3, #0 9362 0118 40D0 beq .L444 9363 .loc 1 4860 41 discriminator 1 ARM GAS /tmp/cc5G5cqz.s page 251 9364 011a FB68 ldr r3, [r7, #12] 9365 011c 1B8D ldrh r3, [r3, #40] 9366 .loc 1 4860 33 discriminator 1 9367 011e 002B cmp r3, #0 9368 0120 3CD1 bne .L444 4861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); 9369 .loc 1 4862 35 9370 0122 FB68 ldr r3, [r7, #12] 9371 0124 1B68 ldr r3, [r3] 9372 .loc 1 4862 45 9373 0126 5B68 ldr r3, [r3, #4] 9374 .loc 1 4862 20 9375 0128 9BB2 uxth r3, r3 9376 .loc 1 4862 18 9377 012a C3F30903 ubfx r3, r3, #0, #10 9378 012e 7B82 strh r3, [r7, #18] @ movhi 4863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 9379 .loc 1 4864 15 9380 0130 FB68 ldr r3, [r7, #12] 9381 0132 5B8D ldrh r3, [r3, #42] @ movhi 9382 0134 9BB2 uxth r3, r3 9383 .loc 1 4864 10 9384 0136 FF2B cmp r3, #255 9385 0138 0ED9 bls .L445 4865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 9386 .loc 1 4866 24 9387 013a FB68 ldr r3, [r7, #12] 9388 013c FF22 movs r2, #255 9389 013e 1A85 strh r2, [r3, #40] @ movhi 4867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_START 9390 .loc 1 4867 59 9391 0140 FB68 ldr r3, [r7, #12] 9392 0142 1B8D ldrh r3, [r3, #40] 9393 .loc 1 4867 9 9394 0144 DAB2 uxtb r2, r3 9395 0146 798A ldrh r1, [r7, #18] 9396 0148 0023 movs r3, #0 9397 014a 0093 str r3, [sp] 9398 014c 4FF08073 mov r3, #16777216 9399 0150 F868 ldr r0, [r7, #12] 9400 0152 FFF7FEFF bl I2C_TransferConfig 4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9401 .loc 1 4864 10 9402 0156 32E0 b .L448 9403 .L445: 4868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 9404 .loc 1 4871 30 9405 0158 FB68 ldr r3, [r7, #12] 9406 015a 5B8D ldrh r3, [r3, #42] @ movhi 9407 015c 9AB2 uxth r2, r3 9408 .loc 1 4871 24 ARM GAS /tmp/cc5G5cqz.s page 252 9409 015e FB68 ldr r3, [r7, #12] 9410 0160 1A85 strh r2, [r3, #40] @ movhi 4872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 9411 .loc 1 4872 17 9412 0162 FB68 ldr r3, [r7, #12] 9413 0164 DB6A ldr r3, [r3, #44] 9414 .loc 1 4872 12 9415 0166 13F5803F cmn r3, #65536 9416 016a 0BD0 beq .L447 4873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, 9417 .loc 1 4874 61 9418 016c FB68 ldr r3, [r7, #12] 9419 016e 1B8D ldrh r3, [r3, #40] 9420 .loc 1 4874 11 9421 0170 DAB2 uxtb r2, r3 4875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); 9422 .loc 1 4875 34 9423 0172 FB68 ldr r3, [r7, #12] 9424 0174 DB6A ldr r3, [r3, #44] 4874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); 9425 .loc 1 4874 11 9426 0176 798A ldrh r1, [r7, #18] 9427 0178 0020 movs r0, #0 9428 017a 0090 str r0, [sp] 9429 017c F868 ldr r0, [r7, #12] 9430 017e FFF7FEFF bl I2C_TransferConfig 4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9431 .loc 1 4864 10 9432 0182 1CE0 b .L448 9433 .L447: 4876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, 9434 .loc 1 4879 61 9435 0184 FB68 ldr r3, [r7, #12] 9436 0186 1B8D ldrh r3, [r3, #40] 9437 .loc 1 4879 11 9438 0188 DAB2 uxtb r2, r3 9439 018a 798A ldrh r1, [r7, #18] 9440 018c 0023 movs r3, #0 9441 018e 0093 str r3, [sp] 9442 0190 4FF00073 mov r3, #33554432 9443 0194 F868 ldr r0, [r7, #12] 9444 0196 FFF7FEFF bl I2C_TransferConfig 4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9445 .loc 1 4864 10 9446 019a 10E0 b .L448 9447 .L444: 4880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 4881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ ARM GAS /tmp/cc5G5cqz.s page 253 4887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 9448 .loc 1 4887 11 9449 019c FB68 ldr r3, [r7, #12] 9450 019e 1B68 ldr r3, [r3] 9451 01a0 5B68 ldr r3, [r3, #4] 9452 01a2 03F00073 and r3, r3, #33554432 9453 .loc 1 4887 10 9454 01a6 B3F1007F cmp r3, #33554432 9455 01aa 03D0 beq .L449 4888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 4890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 9456 .loc 1 4890 9 9457 01ac F868 ldr r0, [r7, #12] 9458 01ae FFF7FEFF bl I2C_ITMasterSeqCplt 4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9459 .loc 1 4860 8 9460 01b2 34E0 b .L440 9461 .L449: 4891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 4895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 4896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 9462 .loc 1 4896 9 9463 01b4 4021 movs r1, #64 9464 01b6 F868 ldr r0, [r7, #12] 9465 01b8 FFF7FEFF bl I2C_ITError 4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9466 .loc 1 4860 8 9467 01bc 2FE0 b .L440 9468 .L448: 9469 01be 2EE0 b .L440 9470 .L443: 4897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ 9471 .loc 1 4900 13 9472 01c0 7B69 ldr r3, [r7, #20] 9473 01c2 9B09 lsrs r3, r3, #6 9474 01c4 03F00103 and r3, r3, #1 9475 .loc 1 4900 11 9476 01c8 002B cmp r3, #0 9477 01ca 28D0 beq .L440 4901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9478 .loc 1 4901 13 9479 01cc 7B68 ldr r3, [r7, #4] 9480 01ce 9B09 lsrs r3, r3, #6 9481 01d0 03F00103 and r3, r3, #1 4900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9482 .loc 1 4900 63 discriminator 1 9483 01d4 002B cmp r3, #0 9484 01d6 22D0 beq .L440 4902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) ARM GAS /tmp/cc5G5cqz.s page 254 9485 .loc 1 4903 13 9486 01d8 FB68 ldr r3, [r7, #12] 9487 01da 5B8D ldrh r3, [r3, #42] @ movhi 9488 01dc 9BB2 uxth r3, r3 9489 .loc 1 4903 8 9490 01de 002B cmp r3, #0 9491 01e0 19D1 bne .L450 4904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 9492 .loc 1 4905 11 9493 01e2 FB68 ldr r3, [r7, #12] 9494 01e4 1B68 ldr r3, [r3] 9495 01e6 5B68 ldr r3, [r3, #4] 9496 01e8 03F00073 and r3, r3, #33554432 9497 .loc 1 4905 10 9498 01ec B3F1007F cmp r3, #33554432 9499 01f0 15D0 beq .L440 4906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ 4908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) 9500 .loc 1 4908 17 9501 01f2 FB68 ldr r3, [r7, #12] 9502 01f4 DB6A ldr r3, [r3, #44] 9503 .loc 1 4908 12 9504 01f6 13F5803F cmn r3, #65536 9505 01fa 08D1 bne .L451 4909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 4911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 9506 .loc 1 4911 15 9507 01fc FB68 ldr r3, [r7, #12] 9508 01fe 1B68 ldr r3, [r3] 9509 .loc 1 4911 25 9510 0200 5A68 ldr r2, [r3, #4] 9511 .loc 1 4911 15 9512 0202 FB68 ldr r3, [r7, #12] 9513 0204 1B68 ldr r3, [r3] 9514 .loc 1 4911 31 9515 0206 42F48042 orr r2, r2, #16384 9516 020a 5A60 str r2, [r3, #4] 9517 020c 07E0 b .L440 9518 .L451: 4912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 4916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 9519 .loc 1 4916 11 9520 020e F868 ldr r0, [r7, #12] 9521 0210 FFF7FEFF bl I2C_ITMasterSeqCplt 9522 0214 03E0 b .L440 9523 .L450: 4917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 255 4922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ 4923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 4924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 9524 .loc 1 4924 7 9525 0216 4021 movs r1, #64 9526 0218 F868 ldr r0, [r7, #12] 9527 021a FFF7FEFF bl I2C_ITError 9528 .L440: 4925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 4930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 9529 .loc 1 4932 8 9530 021e 7B69 ldr r3, [r7, #20] 9531 0220 5B09 lsrs r3, r3, #5 9532 0222 03F00103 and r3, r3, #1 9533 .loc 1 4932 6 9534 0226 002B cmp r3, #0 9535 0228 09D0 beq .L452 4933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 9536 .loc 1 4933 8 9537 022a 7B68 ldr r3, [r7, #4] 9538 022c 5B09 lsrs r3, r3, #5 9539 022e 03F00103 and r3, r3, #1 4932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 9540 .loc 1 4932 61 discriminator 1 9541 0232 002B cmp r3, #0 9542 0234 03D0 beq .L452 4934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 4936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); 9543 .loc 1 4936 5 9544 0236 7969 ldr r1, [r7, #20] 9545 0238 F868 ldr r0, [r7, #12] 9546 023a FFF7FEFF bl I2C_ITMasterCplt 9547 .L452: 4937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 9548 .loc 1 4940 3 9549 023e FB68 ldr r3, [r7, #12] 9550 0240 0022 movs r2, #0 9551 0242 83F84020 strb r2, [r3, #64] 4941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9552 .loc 1 4942 10 9553 0246 0023 movs r3, #0 9554 .L438: 4943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9555 .loc 1 4943 1 9556 0248 1846 mov r0, r3 9557 024a 1837 adds r7, r7, #24 ARM GAS /tmp/cc5G5cqz.s page 256 9558 .cfi_def_cfa_offset 8 9559 024c BD46 mov sp, r7 9560 .cfi_def_cfa_register 13 9561 @ sp needed 9562 024e 80BD pop {r7, pc} 9563 .cfi_endproc 9564 .LFE179: 9566 .section .text.I2C_Mem_ISR_IT,"ax",%progbits 9567 .align 1 9568 .syntax unified 9569 .thumb 9570 .thumb_func 9572 I2C_Mem_ISR_IT: 9573 .LFB180: 4944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt. 4947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 4950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 4951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 4954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 4955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9574 .loc 1 4955 1 9575 .cfi_startproc 9576 @ args = 0, pretend = 0, frame = 24 9577 @ frame_needed = 1, uses_anonymous_args = 0 9578 0000 80B5 push {r7, lr} 9579 .cfi_def_cfa_offset 8 9580 .cfi_offset 7, -8 9581 .cfi_offset 14, -4 9582 0002 88B0 sub sp, sp, #32 9583 .cfi_def_cfa_offset 40 9584 0004 02AF add r7, sp, #8 9585 .cfi_def_cfa 7, 32 9586 0006 F860 str r0, [r7, #12] 9587 0008 B960 str r1, [r7, #8] 9588 000a 7A60 str r2, [r7, #4] 4956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; 9589 .loc 1 4956 12 9590 000c 8F4B ldr r3, .L470 9591 000e 7B61 str r3, [r7, #20] 4957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 9592 .loc 1 4957 12 9593 0010 BB68 ldr r3, [r7, #8] 9594 0012 3B61 str r3, [r7, #16] 4958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 9595 .loc 1 4960 3 9596 0014 FB68 ldr r3, [r7, #12] 9597 0016 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 9598 001a 012B cmp r3, #1 9599 001c 01D1 bne .L454 ARM GAS /tmp/cc5G5cqz.s page 257 9600 .loc 1 4960 3 is_stmt 0 discriminator 1 9601 001e 0223 movs r3, #2 9602 .loc 1 4960 3 9603 0020 10E1 b .L455 9604 .L454: 9605 .loc 1 4960 3 discriminator 2 9606 0022 FB68 ldr r3, [r7, #12] 9607 0024 0122 movs r2, #1 9608 0026 83F84020 strb r2, [r3, #64] 4961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 9609 .loc 1 4962 8 is_stmt 1 9610 002a 3B69 ldr r3, [r7, #16] 9611 002c 1B09 lsrs r3, r3, #4 9612 002e 03F00103 and r3, r3, #1 9613 .loc 1 4962 6 9614 0032 002B cmp r3, #0 9615 0034 13D0 beq .L456 4963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 9616 .loc 1 4963 8 9617 0036 7B68 ldr r3, [r7, #4] 9618 0038 1B09 lsrs r3, r3, #4 9619 003a 03F00103 and r3, r3, #1 4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 9620 .loc 1 4962 58 discriminator 1 9621 003e 002B cmp r3, #0 9622 0040 0DD0 beq .L456 4964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 4966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 9623 .loc 1 4966 5 9624 0042 FB68 ldr r3, [r7, #12] 9625 0044 1B68 ldr r3, [r3] 9626 0046 1022 movs r2, #16 9627 0048 DA61 str r2, [r3, #28] 4967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 4969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 4970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 4971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 9628 .loc 1 4971 9 9629 004a FB68 ldr r3, [r7, #12] 9630 004c 5B6C ldr r3, [r3, #68] 9631 .loc 1 4971 21 9632 004e 43F00402 orr r2, r3, #4 9633 0052 FB68 ldr r3, [r7, #12] 9634 0054 5A64 str r2, [r3, #68] 4972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 4974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 9635 .loc 1 4974 5 9636 0056 F868 ldr r0, [r7, #12] 9637 0058 FFF7FEFF bl I2C_Flush_TXDR 9638 005c DDE0 b .L457 9639 .L456: 4975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ ARM GAS /tmp/cc5G5cqz.s page 258 9640 .loc 1 4976 13 9641 005e 3B69 ldr r3, [r7, #16] 9642 0060 9B08 lsrs r3, r3, #2 9643 0062 03F00103 and r3, r3, #1 9644 .loc 1 4976 11 9645 0066 002B cmp r3, #0 9646 0068 23D0 beq .L458 4977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 9647 .loc 1 4977 13 9648 006a 7B68 ldr r3, [r7, #4] 9649 006c 9B08 lsrs r3, r3, #2 9650 006e 03F00103 and r3, r3, #1 4976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 9651 .loc 1 4976 65 discriminator 1 9652 0072 002B cmp r3, #0 9653 0074 1DD0 beq .L458 4978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 4980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 9654 .loc 1 4980 16 9655 0076 3B69 ldr r3, [r7, #16] 9656 0078 23F00403 bic r3, r3, #4 9657 007c 3B61 str r3, [r7, #16] 4981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 4983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 9658 .loc 1 4983 36 9659 007e FB68 ldr r3, [r7, #12] 9660 0080 1B68 ldr r3, [r3] 9661 .loc 1 4983 46 9662 0082 5A6A ldr r2, [r3, #36] 9663 .loc 1 4983 10 9664 0084 FB68 ldr r3, [r7, #12] 9665 0086 5B6A ldr r3, [r3, #36] 9666 .loc 1 4983 23 9667 0088 D2B2 uxtb r2, r2 9668 .loc 1 4983 21 9669 008a 1A70 strb r2, [r3] 4984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 4986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 9670 .loc 1 4986 9 9671 008c FB68 ldr r3, [r7, #12] 9672 008e 5B6A ldr r3, [r3, #36] 9673 .loc 1 4986 19 9674 0090 5A1C adds r2, r3, #1 9675 0092 FB68 ldr r3, [r7, #12] 9676 0094 5A62 str r2, [r3, #36] 4987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 9677 .loc 1 4988 9 9678 0096 FB68 ldr r3, [r7, #12] 9679 0098 1B8D ldrh r3, [r3, #40] 9680 .loc 1 4988 19 9681 009a 013B subs r3, r3, #1 9682 009c 9AB2 uxth r2, r3 9683 009e FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 259 9684 00a0 1A85 strh r2, [r3, #40] @ movhi 4989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 9685 .loc 1 4989 9 9686 00a2 FB68 ldr r3, [r7, #12] 9687 00a4 5B8D ldrh r3, [r3, #42] @ movhi 9688 00a6 9BB2 uxth r3, r3 9689 .loc 1 4989 20 9690 00a8 013B subs r3, r3, #1 9691 00aa 9AB2 uxth r2, r3 9692 00ac FB68 ldr r3, [r7, #12] 9693 00ae 5A85 strh r2, [r3, #42] @ movhi 9694 00b0 B3E0 b .L457 9695 .L458: 4990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 9696 .loc 1 4991 13 9697 00b2 3B69 ldr r3, [r7, #16] 9698 00b4 5B08 lsrs r3, r3, #1 9699 00b6 03F00103 and r3, r3, #1 9700 .loc 1 4991 11 9701 00ba 002B cmp r3, #0 9702 00bc 2DD0 beq .L459 4992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 9703 .loc 1 4992 13 9704 00be 7B68 ldr r3, [r7, #4] 9705 00c0 5B08 lsrs r3, r3, #1 9706 00c2 03F00103 and r3, r3, #1 4991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 9707 .loc 1 4991 65 discriminator 1 9708 00c6 002B cmp r3, #0 9709 00c8 27D0 beq .L459 4993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Memaddress == 0xFFFFFFFFU) 9710 .loc 1 4994 13 9711 00ca FB68 ldr r3, [r7, #12] 9712 00cc 1B6D ldr r3, [r3, #80] 9713 .loc 1 4994 8 9714 00ce B3F1FF3F cmp r3, #-1 9715 00d2 18D1 bne .L460 4995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 9716 .loc 1 4997 35 9717 00d4 FB68 ldr r3, [r7, #12] 9718 00d6 5B6A ldr r3, [r3, #36] 9719 .loc 1 4997 30 9720 00d8 1A78 ldrb r2, [r3] @ zero_extendqisi2 9721 .loc 1 4997 11 9722 00da FB68 ldr r3, [r7, #12] 9723 00dc 1B68 ldr r3, [r3] 9724 .loc 1 4997 28 9725 00de 9A62 str r2, [r3, #40] 4998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 9726 .loc 1 5000 11 9727 00e0 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 260 9728 00e2 5B6A ldr r3, [r3, #36] 9729 .loc 1 5000 21 9730 00e4 5A1C adds r2, r3, #1 9731 00e6 FB68 ldr r3, [r7, #12] 9732 00e8 5A62 str r2, [r3, #36] 5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 9733 .loc 1 5002 11 9734 00ea FB68 ldr r3, [r7, #12] 9735 00ec 1B8D ldrh r3, [r3, #40] 9736 .loc 1 5002 21 9737 00ee 013B subs r3, r3, #1 9738 00f0 9AB2 uxth r2, r3 9739 00f2 FB68 ldr r3, [r7, #12] 9740 00f4 1A85 strh r2, [r3, #40] @ movhi 5003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 9741 .loc 1 5003 11 9742 00f6 FB68 ldr r3, [r7, #12] 9743 00f8 5B8D ldrh r3, [r3, #42] @ movhi 9744 00fa 9BB2 uxth r3, r3 9745 .loc 1 5003 22 9746 00fc 013B subs r3, r3, #1 9747 00fe 9AB2 uxth r2, r3 9748 0100 FB68 ldr r3, [r7, #12] 9749 0102 5A85 strh r2, [r3, #42] @ movhi 4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9750 .loc 1 4994 8 9751 0104 89E0 b .L457 9752 .L460: 5004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */ 5008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; 9753 .loc 1 5008 11 9754 0106 FB68 ldr r3, [r7, #12] 9755 0108 1B68 ldr r3, [r3] 9756 .loc 1 5008 34 9757 010a FA68 ldr r2, [r7, #12] 9758 010c 126D ldr r2, [r2, #80] 9759 .loc 1 5008 28 9760 010e 9A62 str r2, [r3, #40] 5009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 5011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 9761 .loc 1 5011 24 9762 0110 FB68 ldr r3, [r7, #12] 9763 0112 4FF0FF32 mov r2, #-1 9764 0116 1A65 str r2, [r3, #80] 4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9765 .loc 1 4994 8 9766 0118 7FE0 b .L457 9767 .L459: 5012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ 9768 .loc 1 5014 13 ARM GAS /tmp/cc5G5cqz.s page 261 9769 011a 3B69 ldr r3, [r7, #16] 9770 011c DB09 lsrs r3, r3, #7 9771 011e 03F00103 and r3, r3, #1 9772 .loc 1 5014 11 9773 0122 002B cmp r3, #0 9774 0124 3DD0 beq .L462 5015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9775 .loc 1 5015 13 9776 0126 7B68 ldr r3, [r7, #4] 9777 0128 9B09 lsrs r3, r3, #6 9778 012a 03F00103 and r3, r3, #1 5014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9779 .loc 1 5014 64 discriminator 1 9780 012e 002B cmp r3, #0 9781 0130 37D0 beq .L462 5016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 9782 .loc 1 5017 14 9783 0132 FB68 ldr r3, [r7, #12] 9784 0134 5B8D ldrh r3, [r3, #42] @ movhi 9785 0136 9BB2 uxth r3, r3 9786 .loc 1 5017 8 9787 0138 002B cmp r3, #0 9788 013a 2CD0 beq .L463 9789 .loc 1 5017 41 discriminator 1 9790 013c FB68 ldr r3, [r7, #12] 9791 013e 1B8D ldrh r3, [r3, #40] 9792 .loc 1 5017 33 discriminator 1 9793 0140 002B cmp r3, #0 9794 0142 28D1 bne .L463 5018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 9795 .loc 1 5019 15 9796 0144 FB68 ldr r3, [r7, #12] 9797 0146 5B8D ldrh r3, [r3, #42] @ movhi 9798 0148 9BB2 uxth r3, r3 9799 .loc 1 5019 10 9800 014a FF2B cmp r3, #255 9801 014c 10D9 bls .L464 5020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 9802 .loc 1 5021 24 9803 014e FB68 ldr r3, [r7, #12] 9804 0150 FF22 movs r2, #255 9805 0152 1A85 strh r2, [r3, #40] @ movhi 5022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 9806 .loc 1 5022 48 9807 0154 FB68 ldr r3, [r7, #12] 9808 0156 DB6C ldr r3, [r3, #76] 9809 .loc 1 5022 9 9810 0158 99B2 uxth r1, r3 9811 .loc 1 5022 75 9812 015a FB68 ldr r3, [r7, #12] 9813 015c 1B8D ldrh r3, [r3, #40] 9814 .loc 1 5022 9 9815 015e DAB2 uxtb r2, r3 9816 0160 0023 movs r3, #0 ARM GAS /tmp/cc5G5cqz.s page 262 9817 0162 0093 str r3, [sp] 9818 0164 4FF08073 mov r3, #16777216 9819 0168 F868 ldr r0, [r7, #12] 9820 016a FFF7FEFF bl I2C_TransferConfig 5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9821 .loc 1 5019 10 9822 016e 17E0 b .L466 9823 .L464: 5023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); 5024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 9824 .loc 1 5027 30 9825 0170 FB68 ldr r3, [r7, #12] 9826 0172 5B8D ldrh r3, [r3, #42] @ movhi 9827 0174 9AB2 uxth r2, r3 9828 .loc 1 5027 24 9829 0176 FB68 ldr r3, [r7, #12] 9830 0178 1A85 strh r2, [r3, #40] @ movhi 5028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 9831 .loc 1 5028 48 9832 017a FB68 ldr r3, [r7, #12] 9833 017c DB6C ldr r3, [r3, #76] 9834 .loc 1 5028 9 9835 017e 99B2 uxth r1, r3 9836 .loc 1 5028 75 9837 0180 FB68 ldr r3, [r7, #12] 9838 0182 1B8D ldrh r3, [r3, #40] 9839 .loc 1 5028 9 9840 0184 DAB2 uxtb r2, r3 9841 0186 0023 movs r3, #0 9842 0188 0093 str r3, [sp] 9843 018a 4FF00073 mov r3, #33554432 9844 018e F868 ldr r0, [r7, #12] 9845 0190 FFF7FEFF bl I2C_TransferConfig 5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9846 .loc 1 5019 10 9847 0194 04E0 b .L466 9848 .L463: 5029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 5030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 9849 .loc 1 5036 7 9850 0196 4021 movs r1, #64 9851 0198 F868 ldr r0, [r7, #12] 9852 019a FFF7FEFF bl I2C_ITError 5017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9853 .loc 1 5017 8 9854 019e 3CE0 b .L457 9855 .L466: 9856 01a0 3BE0 b .L457 ARM GAS /tmp/cc5G5cqz.s page 263 9857 .L462: 5037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ 9858 .loc 1 5039 13 9859 01a2 3B69 ldr r3, [r7, #16] 9860 01a4 9B09 lsrs r3, r3, #6 9861 01a6 03F00103 and r3, r3, #1 9862 .loc 1 5039 11 9863 01aa 002B cmp r3, #0 9864 01ac 35D0 beq .L457 5040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9865 .loc 1 5040 13 9866 01ae 7B68 ldr r3, [r7, #4] 9867 01b0 9B09 lsrs r3, r3, #6 9868 01b2 03F00103 and r3, r3, #1 5039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 9869 .loc 1 5039 63 discriminator 1 9870 01b6 002B cmp r3, #0 9871 01b8 2FD0 beq .L457 5041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 9872 .loc 1 5042 13 9873 01ba FB68 ldr r3, [r7, #12] 9874 01bc 93F84130 ldrb r3, [r3, #65] 9875 01c0 DBB2 uxtb r3, r3 9876 .loc 1 5042 8 9877 01c2 222B cmp r3, #34 9878 01c4 01D1 bne .L467 5043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; 9879 .loc 1 5044 17 9880 01c6 224B ldr r3, .L470+4 9881 01c8 7B61 str r3, [r7, #20] 9882 .L467: 5045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 9883 .loc 1 5047 13 9884 01ca FB68 ldr r3, [r7, #12] 9885 01cc 5B8D ldrh r3, [r3, #42] @ movhi 9886 01ce 9BB2 uxth r3, r3 9887 .loc 1 5047 8 9888 01d0 FF2B cmp r3, #255 9889 01d2 10D9 bls .L468 5048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 9890 .loc 1 5049 22 9891 01d4 FB68 ldr r3, [r7, #12] 9892 01d6 FF22 movs r2, #255 9893 01d8 1A85 strh r2, [r3, #40] @ movhi 5050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 5052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 9894 .loc 1 5052 46 9895 01da FB68 ldr r3, [r7, #12] 9896 01dc DB6C ldr r3, [r3, #76] ARM GAS /tmp/cc5G5cqz.s page 264 9897 .loc 1 5052 7 9898 01de 99B2 uxth r1, r3 9899 .loc 1 5052 73 9900 01e0 FB68 ldr r3, [r7, #12] 9901 01e2 1B8D ldrh r3, [r3, #40] 9902 .loc 1 5052 7 9903 01e4 DAB2 uxtb r2, r3 9904 01e6 7B69 ldr r3, [r7, #20] 9905 01e8 0093 str r3, [sp] 9906 01ea 4FF08073 mov r3, #16777216 9907 01ee F868 ldr r0, [r7, #12] 9908 01f0 FFF7FEFF bl I2C_TransferConfig 9909 01f4 11E0 b .L457 9910 .L468: 5053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); 5054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 9911 .loc 1 5057 28 9912 01f6 FB68 ldr r3, [r7, #12] 9913 01f8 5B8D ldrh r3, [r3, #42] @ movhi 9914 01fa 9AB2 uxth r2, r3 9915 .loc 1 5057 22 9916 01fc FB68 ldr r3, [r7, #12] 9917 01fe 1A85 strh r2, [r3, #40] @ movhi 5058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ 5060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 9918 .loc 1 5060 46 9919 0200 FB68 ldr r3, [r7, #12] 9920 0202 DB6C ldr r3, [r3, #76] 9921 .loc 1 5060 7 9922 0204 99B2 uxth r1, r3 9923 .loc 1 5060 73 9924 0206 FB68 ldr r3, [r7, #12] 9925 0208 1B8D ldrh r3, [r3, #40] 9926 .loc 1 5060 7 9927 020a DAB2 uxtb r2, r3 9928 020c 7B69 ldr r3, [r7, #20] 9929 020e 0093 str r3, [sp] 9930 0210 4FF00073 mov r3, #33554432 9931 0214 F868 ldr r0, [r7, #12] 9932 0216 FFF7FEFF bl I2C_TransferConfig 9933 .L457: 5061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); 5062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 9934 .loc 1 5069 8 9935 021a 3B69 ldr r3, [r7, #16] 9936 021c 5B09 lsrs r3, r3, #5 ARM GAS /tmp/cc5G5cqz.s page 265 9937 021e 03F00103 and r3, r3, #1 9938 .loc 1 5069 6 9939 0222 002B cmp r3, #0 9940 0224 09D0 beq .L469 5070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 9941 .loc 1 5070 8 9942 0226 7B68 ldr r3, [r7, #4] 9943 0228 5B09 lsrs r3, r3, #5 9944 022a 03F00103 and r3, r3, #1 5069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 9945 .loc 1 5069 61 discriminator 1 9946 022e 002B cmp r3, #0 9947 0230 03D0 beq .L469 5071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); 9948 .loc 1 5073 5 9949 0232 3969 ldr r1, [r7, #16] 9950 0234 F868 ldr r0, [r7, #12] 9951 0236 FFF7FEFF bl I2C_ITMasterCplt 9952 .L469: 5074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 9953 .loc 1 5077 3 9954 023a FB68 ldr r3, [r7, #12] 9955 023c 0022 movs r2, #0 9956 023e 83F84020 strb r2, [r3, #64] 5078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9957 .loc 1 5079 10 9958 0242 0023 movs r3, #0 9959 .L455: 5080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9960 .loc 1 5080 1 9961 0244 1846 mov r0, r3 9962 0246 1837 adds r7, r7, #24 9963 .cfi_def_cfa_offset 8 9964 0248 BD46 mov sp, r7 9965 .cfi_def_cfa_register 13 9966 @ sp needed 9967 024a 80BD pop {r7, pc} 9968 .L471: 9969 .align 2 9970 .L470: 9971 024c 00200080 .word -2147475456 9972 0250 00240080 .word -2147474432 9973 .cfi_endproc 9974 .LFE180: 9976 .section .text.I2C_Slave_ISR_IT,"ax",%progbits 9977 .align 1 9978 .syntax unified 9979 .thumb 9980 .thumb_func 9982 I2C_Slave_ISR_IT: 9983 .LFB181: ARM GAS /tmp/cc5G5cqz.s page 266 5081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. 5084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9984 .loc 1 5092 1 9985 .cfi_startproc 9986 @ args = 0, pretend = 0, frame = 24 9987 @ frame_needed = 1, uses_anonymous_args = 0 9988 0000 80B5 push {r7, lr} 9989 .cfi_def_cfa_offset 8 9990 .cfi_offset 7, -8 9991 .cfi_offset 14, -4 9992 0002 86B0 sub sp, sp, #24 9993 .cfi_def_cfa_offset 32 9994 0004 00AF add r7, sp, #0 9995 .cfi_def_cfa_register 7 9996 0006 F860 str r0, [r7, #12] 9997 0008 B960 str r1, [r7, #8] 9998 000a 7A60 str r2, [r7, #4] 5093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 9999 .loc 1 5093 12 10000 000c FB68 ldr r3, [r7, #12] 10001 000e DB6A ldr r3, [r3, #44] 10002 0010 7B61 str r3, [r7, #20] 5094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 10003 .loc 1 5094 12 10004 0012 BB68 ldr r3, [r7, #8] 10005 0014 3B61 str r3, [r7, #16] 5095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */ 5097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 10006 .loc 1 5097 3 10007 0016 FB68 ldr r3, [r7, #12] 10008 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 10009 001c 012B cmp r3, #1 10010 001e 01D1 bne .L473 10011 .loc 1 5097 3 is_stmt 0 discriminator 1 10012 0020 0223 movs r3, #2 10013 .loc 1 5097 3 10014 0022 ECE0 b .L474 10015 .L473: 10016 .loc 1 5097 3 discriminator 2 10017 0024 FB68 ldr r3, [r7, #12] 10018 0026 0122 movs r2, #1 10019 0028 83F84020 strb r2, [r3, #64] 5098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */ 5100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 10020 .loc 1 5100 8 is_stmt 1 ARM GAS /tmp/cc5G5cqz.s page 267 10021 002c 3B69 ldr r3, [r7, #16] 10022 002e 5B09 lsrs r3, r3, #5 10023 0030 03F00103 and r3, r3, #1 10024 .loc 1 5100 6 10025 0034 002B cmp r3, #0 10026 0036 09D0 beq .L475 5101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10027 .loc 1 5101 8 10028 0038 7B68 ldr r3, [r7, #4] 10029 003a 5B09 lsrs r3, r3, #5 10030 003c 03F00103 and r3, r3, #1 5100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10031 .loc 1 5100 61 discriminator 1 10032 0040 002B cmp r3, #0 10033 0042 03D0 beq .L475 5102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */ 5104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, tmpITFlags); 10034 .loc 1 5104 5 10035 0044 3969 ldr r1, [r7, #16] 10036 0046 F868 ldr r0, [r7, #12] 10037 0048 FFF7FEFF bl I2C_ITSlaveCplt 10038 .L475: 5105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 10039 .loc 1 5107 8 10040 004c 3B69 ldr r3, [r7, #16] 10041 004e 1B09 lsrs r3, r3, #4 10042 0050 03F00103 and r3, r3, #1 10043 .loc 1 5107 6 10044 0054 002B cmp r3, #0 10045 0056 4DD0 beq .L476 5108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10046 .loc 1 5108 8 10047 0058 7B68 ldr r3, [r7, #4] 10048 005a 1B09 lsrs r3, r3, #4 10049 005c 03F00103 and r3, r3, #1 5107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10050 .loc 1 5107 58 discriminator 1 10051 0060 002B cmp r3, #0 10052 0062 47D0 beq .L476 5109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 5111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ 5112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0*/ 5113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */ 5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 10053 .loc 1 5114 13 10054 0064 FB68 ldr r3, [r7, #12] 10055 0066 5B8D ldrh r3, [r3, #42] @ movhi 10056 0068 9BB2 uxth r3, r3 10057 .loc 1 5114 8 10058 006a 002B cmp r3, #0 10059 006c 28D1 bne .L477 5115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) ARM GAS /tmp/cc5G5cqz.s page 268 10060 .loc 1 5116 16 10061 006e FB68 ldr r3, [r7, #12] 10062 0070 93F84130 ldrb r3, [r3, #65] 10063 0074 DBB2 uxtb r3, r3 10064 .loc 1 5116 10 10065 0076 282B cmp r3, #40 10066 0078 08D1 bne .L478 10067 .loc 1 5116 49 discriminator 1 10068 007a 7B69 ldr r3, [r7, #20] 10069 007c B3F1007F cmp r3, #33554432 10070 0080 04D1 bne .L478 5117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for 5118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ 5119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 5121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); 10071 .loc 1 5121 9 10072 0082 3969 ldr r1, [r7, #16] 10073 0084 F868 ldr r0, [r7, #12] 10074 0086 FFF7FEFF bl I2C_ITListenCplt 10075 008a 32E0 b .L481 10076 .L478: 5122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME) 10077 .loc 1 5123 21 10078 008c FB68 ldr r3, [r7, #12] 10079 008e 93F84130 ldrb r3, [r3, #65] 10080 0092 DBB2 uxtb r3, r3 10081 .loc 1 5123 15 10082 0094 292B cmp r3, #41 10083 0096 0ED1 bne .L480 10084 .loc 1 5123 62 discriminator 1 10085 0098 7B69 ldr r3, [r7, #20] 10086 009a 13F5803F cmn r3, #65536 10087 009e 0AD0 beq .L480 5124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10088 .loc 1 5126 9 10089 00a0 FB68 ldr r3, [r7, #12] 10090 00a2 1B68 ldr r3, [r3] 10091 00a4 1022 movs r2, #16 10092 00a6 DA61 str r2, [r3, #28] 5127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 10093 .loc 1 5129 9 10094 00a8 F868 ldr r0, [r7, #12] 10095 00aa FFF7FEFF bl I2C_Flush_TXDR 5130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 10096 .loc 1 5133 9 10097 00ae F868 ldr r0, [r7, #12] 10098 00b0 FFF7FEFF bl I2C_ITSlaveSeqCplt 10099 00b4 1DE0 b .L481 ARM GAS /tmp/cc5G5cqz.s page 269 10100 .L480: 5134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10101 .loc 1 5138 9 10102 00b6 FB68 ldr r3, [r7, #12] 10103 00b8 1B68 ldr r3, [r3] 10104 00ba 1022 movs r2, #16 10105 00bc DA61 str r2, [r3, #28] 5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10106 .loc 1 5114 8 10107 00be 96E0 b .L490 10108 .L477: 5139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ 5144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10109 .loc 1 5145 7 10110 00c0 FB68 ldr r3, [r7, #12] 10111 00c2 1B68 ldr r3, [r3] 10112 00c4 1022 movs r2, #16 10113 00c6 DA61 str r2, [r3, #28] 5146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 5148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 10114 .loc 1 5148 11 10115 00c8 FB68 ldr r3, [r7, #12] 10116 00ca 5B6C ldr r3, [r3, #68] 10117 .loc 1 5148 23 10118 00cc 43F00402 orr r2, r3, #4 10119 00d0 FB68 ldr r3, [r7, #12] 10120 00d2 5A64 str r2, [r3, #68] 5149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) 10121 .loc 1 5150 10 10122 00d4 7B69 ldr r3, [r7, #20] 10123 00d6 002B cmp r3, #0 10124 00d8 04D0 beq .L482 10125 .loc 1 5150 43 discriminator 1 10126 00da 7B69 ldr r3, [r7, #20] 10127 00dc B3F1807F cmp r3, #16777216 10128 00e0 40F08580 bne .L490 10129 .L482: 5151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 10130 .loc 1 5153 31 10131 00e4 FB68 ldr r3, [r7, #12] 10132 00e6 5B6C ldr r3, [r3, #68] 10133 .loc 1 5153 9 10134 00e8 1946 mov r1, r3 10135 00ea F868 ldr r0, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 270 10136 00ec FFF7FEFF bl I2C_ITError 5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10137 .loc 1 5114 8 10138 00f0 7DE0 b .L490 10139 .L481: 10140 00f2 7CE0 b .L490 10141 .L476: 5154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ 10142 .loc 1 5157 13 10143 00f4 3B69 ldr r3, [r7, #16] 10144 00f6 9B08 lsrs r3, r3, #2 10145 00f8 03F00103 and r3, r3, #1 10146 .loc 1 5157 11 10147 00fc 002B cmp r3, #0 10148 00fe 30D0 beq .L484 5158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 10149 .loc 1 5158 13 10150 0100 7B68 ldr r3, [r7, #4] 10151 0102 9B08 lsrs r3, r3, #2 10152 0104 03F00103 and r3, r3, #1 5157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 10153 .loc 1 5157 65 discriminator 1 10154 0108 002B cmp r3, #0 10155 010a 2AD0 beq .L484 5159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U) 10156 .loc 1 5160 13 10157 010c FB68 ldr r3, [r7, #12] 10158 010e 5B8D ldrh r3, [r3, #42] @ movhi 10159 0110 9BB2 uxth r3, r3 10160 .loc 1 5160 8 10161 0112 002B cmp r3, #0 10162 0114 18D0 beq .L485 5161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 5163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 10163 .loc 1 5163 38 10164 0116 FB68 ldr r3, [r7, #12] 10165 0118 1B68 ldr r3, [r3] 10166 .loc 1 5163 48 10167 011a 5A6A ldr r2, [r3, #36] 10168 .loc 1 5163 12 10169 011c FB68 ldr r3, [r7, #12] 10170 011e 5B6A ldr r3, [r3, #36] 10171 .loc 1 5163 25 10172 0120 D2B2 uxtb r2, r2 10173 .loc 1 5163 23 10174 0122 1A70 strb r2, [r3] 5164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10175 .loc 1 5166 11 10176 0124 FB68 ldr r3, [r7, #12] 10177 0126 5B6A ldr r3, [r3, #36] ARM GAS /tmp/cc5G5cqz.s page 271 10178 .loc 1 5166 21 10179 0128 5A1C adds r2, r3, #1 10180 012a FB68 ldr r3, [r7, #12] 10181 012c 5A62 str r2, [r3, #36] 5167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10182 .loc 1 5168 11 10183 012e FB68 ldr r3, [r7, #12] 10184 0130 1B8D ldrh r3, [r3, #40] 10185 .loc 1 5168 21 10186 0132 013B subs r3, r3, #1 10187 0134 9AB2 uxth r2, r3 10188 0136 FB68 ldr r3, [r7, #12] 10189 0138 1A85 strh r2, [r3, #40] @ movhi 5169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10190 .loc 1 5169 11 10191 013a FB68 ldr r3, [r7, #12] 10192 013c 5B8D ldrh r3, [r3, #42] @ movhi 10193 013e 9BB2 uxth r3, r3 10194 .loc 1 5169 22 10195 0140 013B subs r3, r3, #1 10196 0142 9AB2 uxth r2, r3 10197 0144 FB68 ldr r3, [r7, #12] 10198 0146 5A85 strh r2, [r3, #42] @ movhi 10199 .L485: 5170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount == 0U) && \ 10200 .loc 1 5172 14 10201 0148 FB68 ldr r3, [r7, #12] 10202 014a 5B8D ldrh r3, [r3, #42] @ movhi 10203 014c 9BB2 uxth r3, r3 10204 .loc 1 5172 8 10205 014e 002B cmp r3, #0 10206 0150 4FD1 bne .L491 10207 .loc 1 5172 33 discriminator 1 10208 0152 7B69 ldr r3, [r7, #20] 10209 0154 13F5803F cmn r3, #65536 10210 0158 4BD0 beq .L491 5173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 5174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 10211 .loc 1 5176 7 10212 015a F868 ldr r0, [r7, #12] 10213 015c FFF7FEFF bl I2C_ITSlaveSeqCplt 5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 10214 .loc 1 5172 8 10215 0160 47E0 b .L491 10216 .L484: 5177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ 10217 .loc 1 5179 13 10218 0162 3B69 ldr r3, [r7, #16] 10219 0164 DB08 lsrs r3, r3, #3 10220 0166 03F00103 and r3, r3, #1 ARM GAS /tmp/cc5G5cqz.s page 272 10221 .loc 1 5179 11 10222 016a 002B cmp r3, #0 10223 016c 0AD0 beq .L487 5180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 10224 .loc 1 5180 13 10225 016e 7B68 ldr r3, [r7, #4] 10226 0170 DB08 lsrs r3, r3, #3 10227 0172 03F00103 and r3, r3, #1 5179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 10228 .loc 1 5179 65 discriminator 1 10229 0176 002B cmp r3, #0 10230 0178 04D0 beq .L487 5181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, tmpITFlags); 10231 .loc 1 5182 5 10232 017a 3969 ldr r1, [r7, #16] 10233 017c F868 ldr r0, [r7, #12] 10234 017e FFF7FEFF bl I2C_ITAddrCplt 10235 0182 37E0 b .L483 10236 .L487: 5183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 10237 .loc 1 5184 13 10238 0184 3B69 ldr r3, [r7, #16] 10239 0186 5B08 lsrs r3, r3, #1 10240 0188 03F00103 and r3, r3, #1 10241 .loc 1 5184 11 10242 018c 002B cmp r3, #0 10243 018e 31D0 beq .L483 5185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10244 .loc 1 5185 13 10245 0190 7B68 ldr r3, [r7, #4] 10246 0192 5B08 lsrs r3, r3, #1 10247 0194 03F00103 and r3, r3, #1 5184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10248 .loc 1 5184 65 discriminator 1 10249 0198 002B cmp r3, #0 10250 019a 2BD0 beq .L483 5186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR only if XferCount not reach "0" */ 5188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* A TXIS flag can be set, during STOP treatment */ 5189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if all Data have already been sent */ 5190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ 5191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U) 10251 .loc 1 5191 13 10252 019c FB68 ldr r3, [r7, #12] 10253 019e 5B8D ldrh r3, [r3, #42] @ movhi 10254 01a0 9BB2 uxth r3, r3 10255 .loc 1 5191 8 10256 01a2 002B cmp r3, #0 10257 01a4 18D0 beq .L488 5192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 5194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 10258 .loc 1 5194 35 10259 01a6 FB68 ldr r3, [r7, #12] 10260 01a8 5B6A ldr r3, [r3, #36] ARM GAS /tmp/cc5G5cqz.s page 273 10261 .loc 1 5194 30 10262 01aa 1A78 ldrb r2, [r3] @ zero_extendqisi2 10263 .loc 1 5194 11 10264 01ac FB68 ldr r3, [r7, #12] 10265 01ae 1B68 ldr r3, [r3] 10266 .loc 1 5194 28 10267 01b0 9A62 str r2, [r3, #40] 5195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10268 .loc 1 5197 11 10269 01b2 FB68 ldr r3, [r7, #12] 10270 01b4 5B6A ldr r3, [r3, #36] 10271 .loc 1 5197 21 10272 01b6 5A1C adds r2, r3, #1 10273 01b8 FB68 ldr r3, [r7, #12] 10274 01ba 5A62 str r2, [r3, #36] 5198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10275 .loc 1 5199 11 10276 01bc FB68 ldr r3, [r7, #12] 10277 01be 5B8D ldrh r3, [r3, #42] @ movhi 10278 01c0 9BB2 uxth r3, r3 10279 .loc 1 5199 22 10280 01c2 013B subs r3, r3, #1 10281 01c4 9AB2 uxth r2, r3 10282 01c6 FB68 ldr r3, [r7, #12] 10283 01c8 5A85 strh r2, [r3, #42] @ movhi 5200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10284 .loc 1 5200 11 10285 01ca FB68 ldr r3, [r7, #12] 10286 01cc 1B8D ldrh r3, [r3, #40] 10287 .loc 1 5200 21 10288 01ce 013B subs r3, r3, #1 10289 01d0 9AB2 uxth r2, r3 10290 01d2 FB68 ldr r3, [r7, #12] 10291 01d4 1A85 strh r2, [r3, #40] @ movhi 10292 01d6 0DE0 b .L483 10293 .L488: 5201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) 10294 .loc 1 5204 10 10295 01d8 7B69 ldr r3, [r7, #20] 10296 01da B3F1807F cmp r3, #16777216 10297 01de 02D0 beq .L489 10298 .loc 1 5204 42 discriminator 1 10299 01e0 7B69 ldr r3, [r7, #20] 10300 01e2 002B cmp r3, #0 10301 01e4 06D1 bne .L483 10302 .L489: 5205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 10303 .loc 1 5208 9 ARM GAS /tmp/cc5G5cqz.s page 274 10304 01e6 F868 ldr r0, [r7, #12] 10305 01e8 FFF7FEFF bl I2C_ITSlaveSeqCplt 10306 01ec 02E0 b .L483 10307 .L490: 5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10308 .loc 1 5114 8 10309 01ee 00BF nop 10310 01f0 00E0 b .L483 10311 .L491: 5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 10312 .loc 1 5172 8 10313 01f2 00BF nop 10314 .L483: 5209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 10315 .loc 1 5218 3 10316 01f4 FB68 ldr r3, [r7, #12] 10317 01f6 0022 movs r2, #0 10318 01f8 83F84020 strb r2, [r3, #64] 5219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 10319 .loc 1 5220 10 10320 01fc 0023 movs r3, #0 10321 .L474: 5221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10322 .loc 1 5221 1 10323 01fe 1846 mov r0, r3 10324 0200 1837 adds r7, r7, #24 10325 .cfi_def_cfa_offset 8 10326 0202 BD46 mov sp, r7 10327 .cfi_def_cfa_register 13 10328 @ sp needed 10329 0204 80BD pop {r7, pc} 10330 .cfi_endproc 10331 .LFE181: 10333 .section .text.I2C_Master_ISR_DMA,"ax",%progbits 10334 .align 1 10335 .syntax unified 10336 .thumb 10337 .thumb_func 10339 I2C_Master_ISR_DMA: 10340 .LFB182: 5222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. 5225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. ARM GAS /tmp/cc5G5cqz.s page 275 5229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10341 .loc 1 5233 1 10342 .cfi_startproc 10343 @ args = 0, pretend = 0, frame = 24 10344 @ frame_needed = 1, uses_anonymous_args = 0 10345 0000 80B5 push {r7, lr} 10346 .cfi_def_cfa_offset 8 10347 .cfi_offset 7, -8 10348 .cfi_offset 14, -4 10349 0002 88B0 sub sp, sp, #32 10350 .cfi_def_cfa_offset 40 10351 0004 02AF add r7, sp, #8 10352 .cfi_def_cfa 7, 32 10353 0006 F860 str r0, [r7, #12] 10354 0008 B960 str r1, [r7, #8] 10355 000a 7A60 str r2, [r7, #4] 5234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress; 5235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 5236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 5238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 10356 .loc 1 5238 3 10357 000c FB68 ldr r3, [r7, #12] 10358 000e 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 10359 0012 012B cmp r3, #1 10360 0014 01D1 bne .L493 10361 .loc 1 5238 3 is_stmt 0 discriminator 1 10362 0016 0223 movs r3, #2 10363 .loc 1 5238 3 10364 0018 E1E0 b .L494 10365 .L493: 10366 .loc 1 5238 3 discriminator 2 10367 001a FB68 ldr r3, [r7, #12] 10368 001c 0122 movs r2, #1 10369 001e 83F84020 strb r2, [r3, #64] 5239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 10370 .loc 1 5240 8 is_stmt 1 10371 0022 BB68 ldr r3, [r7, #8] 10372 0024 1B09 lsrs r3, r3, #4 10373 0026 03F00103 and r3, r3, #1 10374 .loc 1 5240 6 10375 002a 002B cmp r3, #0 10376 002c 17D0 beq .L495 5241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10377 .loc 1 5241 8 10378 002e 7B68 ldr r3, [r7, #4] 10379 0030 1B09 lsrs r3, r3, #4 10380 0032 03F00103 and r3, r3, #1 5240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10381 .loc 1 5240 55 discriminator 1 10382 0036 002B cmp r3, #0 10383 0038 11D0 beq .L495 ARM GAS /tmp/cc5G5cqz.s page 276 5242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10384 .loc 1 5244 5 10385 003a FB68 ldr r3, [r7, #12] 10386 003c 1B68 ldr r3, [r3] 10387 003e 1022 movs r2, #16 10388 0040 DA61 str r2, [r3, #28] 5245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 5247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 10389 .loc 1 5247 9 10390 0042 FB68 ldr r3, [r7, #12] 10391 0044 5B6C ldr r3, [r3, #68] 10392 .loc 1 5247 21 10393 0046 43F00402 orr r2, r3, #4 10394 004a FB68 ldr r3, [r7, #12] 10395 004c 5A64 str r2, [r3, #68] 5248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 5250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ 5251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 5252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 10396 .loc 1 5252 5 10397 004e 2021 movs r1, #32 10398 0050 F868 ldr r0, [r7, #12] 10399 0052 FFF7FEFF bl I2C_Enable_IRQ 5253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 10400 .loc 1 5255 5 10401 0056 F868 ldr r0, [r7, #12] 10402 0058 FFF7FEFF bl I2C_Flush_TXDR 10403 005c BAE0 b .L496 10404 .L495: 5256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ 10405 .loc 1 5257 13 10406 005e BB68 ldr r3, [r7, #8] 10407 0060 DB09 lsrs r3, r3, #7 10408 0062 03F00103 and r3, r3, #1 10409 .loc 1 5257 11 10410 0066 002B cmp r3, #0 10411 0068 72D0 beq .L497 5258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10412 .loc 1 5258 13 10413 006a 7B68 ldr r3, [r7, #4] 10414 006c 9B09 lsrs r3, r3, #6 10415 006e 03F00103 and r3, r3, #1 5257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10416 .loc 1 5257 61 discriminator 1 10417 0072 002B cmp r3, #0 10418 0074 6CD0 beq .L497 5259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC interrupt */ 5261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); 10419 .loc 1 5261 5 ARM GAS /tmp/cc5G5cqz.s page 277 10420 0076 FB68 ldr r3, [r7, #12] 10421 0078 1B68 ldr r3, [r3] 10422 007a 1A68 ldr r2, [r3] 10423 007c FB68 ldr r3, [r7, #12] 10424 007e 1B68 ldr r3, [r3] 10425 0080 22F04002 bic r2, r2, #64 10426 0084 1A60 str r2, [r3] 5262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 10427 .loc 1 5263 13 10428 0086 FB68 ldr r3, [r7, #12] 10429 0088 5B8D ldrh r3, [r3, #42] @ movhi 10430 008a 9BB2 uxth r3, r3 10431 .loc 1 5263 8 10432 008c 002B cmp r3, #0 10433 008e 4ED0 beq .L498 5264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Recover Slave address */ 5266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); 10434 .loc 1 5266 35 10435 0090 FB68 ldr r3, [r7, #12] 10436 0092 1B68 ldr r3, [r3] 10437 .loc 1 5266 45 10438 0094 5B68 ldr r3, [r3, #4] 10439 .loc 1 5266 20 10440 0096 9BB2 uxth r3, r3 10441 .loc 1 5266 18 10442 0098 C3F30903 ubfx r3, r3, #0, #10 10443 009c 7B82 strh r3, [r7, #18] @ movhi 5267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ 5269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 10444 .loc 1 5269 15 10445 009e FB68 ldr r3, [r7, #12] 10446 00a0 5B8D ldrh r3, [r3, #42] @ movhi 10447 00a2 9BB2 uxth r3, r3 10448 .loc 1 5269 10 10449 00a4 FF2B cmp r3, #255 10450 00a6 06D9 bls .L499 5270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 10451 .loc 1 5271 24 10452 00a8 FB68 ldr r3, [r7, #12] 10453 00aa FF22 movs r2, #255 10454 00ac 1A85 strh r2, [r3, #40] @ movhi 5272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 10455 .loc 1 5272 18 10456 00ae 4FF08073 mov r3, #16777216 10457 00b2 7B61 str r3, [r7, #20] 10458 00b4 10E0 b .L500 10459 .L499: 5273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 10460 .loc 1 5276 30 10461 00b6 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 278 10462 00b8 5B8D ldrh r3, [r3, #42] @ movhi 10463 00ba 9AB2 uxth r2, r3 10464 .loc 1 5276 24 10465 00bc FB68 ldr r3, [r7, #12] 10466 00be 1A85 strh r2, [r3, #40] @ movhi 5277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 10467 .loc 1 5277 17 10468 00c0 FB68 ldr r3, [r7, #12] 10469 00c2 DB6A ldr r3, [r3, #44] 10470 .loc 1 5277 12 10471 00c4 13F5803F cmn r3, #65536 10472 00c8 03D0 beq .L501 5278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 10473 .loc 1 5279 20 10474 00ca FB68 ldr r3, [r7, #12] 10475 00cc DB6A ldr r3, [r3, #44] 10476 00ce 7B61 str r3, [r7, #20] 10477 00d0 02E0 b .L500 10478 .L501: 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 10479 .loc 1 5283 20 10480 00d2 4FF00073 mov r3, #33554432 10481 00d6 7B61 str r3, [r7, #20] 10482 .L500: 5284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the new XferSize in Nbytes register */ 5288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); 10483 .loc 1 5288 57 10484 00d8 FB68 ldr r3, [r7, #12] 10485 00da 1B8D ldrh r3, [r3, #40] 10486 .loc 1 5288 7 10487 00dc DAB2 uxtb r2, r3 10488 00de 798A ldrh r1, [r7, #18] 10489 00e0 0023 movs r3, #0 10490 00e2 0093 str r3, [sp] 10491 00e4 7B69 ldr r3, [r7, #20] 10492 00e6 F868 ldr r0, [r7, #12] 10493 00e8 FFF7FEFF bl I2C_TransferConfig 5289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 10494 .loc 1 5291 11 10495 00ec FB68 ldr r3, [r7, #12] 10496 00ee 5B8D ldrh r3, [r3, #42] @ movhi 10497 00f0 9AB2 uxth r2, r3 10498 .loc 1 5291 30 10499 00f2 FB68 ldr r3, [r7, #12] 10500 00f4 1B8D ldrh r3, [r3, #40] 10501 .loc 1 5291 23 10502 00f6 D31A subs r3, r2, r3 10503 00f8 9AB2 uxth r2, r3 ARM GAS /tmp/cc5G5cqz.s page 279 10504 00fa FB68 ldr r3, [r7, #12] 10505 00fc 5A85 strh r2, [r3, #42] @ movhi 5292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 10506 .loc 1 5294 15 10507 00fe FB68 ldr r3, [r7, #12] 10508 0100 93F84130 ldrb r3, [r3, #65] 10509 0104 DBB2 uxtb r3, r3 10510 .loc 1 5294 10 10511 0106 222B cmp r3, #34 10512 0108 08D1 bne .L502 5295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 10513 .loc 1 5296 13 10514 010a FB68 ldr r3, [r7, #12] 10515 010c 1B68 ldr r3, [r3] 10516 .loc 1 5296 23 10517 010e 1A68 ldr r2, [r3] 10518 .loc 1 5296 13 10519 0110 FB68 ldr r3, [r7, #12] 10520 0112 1B68 ldr r3, [r3] 10521 .loc 1 5296 29 10522 0114 42F40042 orr r2, r2, #32768 10523 0118 1A60 str r2, [r3] 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10524 .loc 1 5263 8 10525 011a 5BE0 b .L496 10526 .L502: 5297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 10527 .loc 1 5300 13 10528 011c FB68 ldr r3, [r7, #12] 10529 011e 1B68 ldr r3, [r3] 10530 .loc 1 5300 23 10531 0120 1A68 ldr r2, [r3] 10532 .loc 1 5300 13 10533 0122 FB68 ldr r3, [r7, #12] 10534 0124 1B68 ldr r3, [r3] 10535 .loc 1 5300 29 10536 0126 42F48042 orr r2, r2, #16384 10537 012a 1A60 str r2, [r3] 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10538 .loc 1 5263 8 10539 012c 52E0 b .L496 10540 .L498: 5301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ 5306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 10541 .loc 1 5306 11 10542 012e FB68 ldr r3, [r7, #12] 10543 0130 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 280 10544 0132 5B68 ldr r3, [r3, #4] 10545 0134 03F00073 and r3, r3, #33554432 10546 .loc 1 5306 10 10547 0138 B3F1007F cmp r3, #33554432 10548 013c 03D0 beq .L504 5307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 10549 .loc 1 5309 9 10550 013e F868 ldr r0, [r7, #12] 10551 0140 FFF7FEFF bl I2C_ITMasterSeqCplt 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10552 .loc 1 5263 8 10553 0144 46E0 b .L496 10554 .L504: 5310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 10555 .loc 1 5315 9 10556 0146 4021 movs r1, #64 10557 0148 F868 ldr r0, [r7, #12] 10558 014a FFF7FEFF bl I2C_ITError 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10559 .loc 1 5263 8 10560 014e 41E0 b .L496 10561 .L497: 5316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ 10562 .loc 1 5319 13 10563 0150 BB68 ldr r3, [r7, #8] 10564 0152 9B09 lsrs r3, r3, #6 10565 0154 03F00103 and r3, r3, #1 10566 .loc 1 5319 11 10567 0158 002B cmp r3, #0 10568 015a 29D0 beq .L505 5320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10569 .loc 1 5320 13 10570 015c 7B68 ldr r3, [r7, #4] 10571 015e 9B09 lsrs r3, r3, #6 10572 0160 03F00103 and r3, r3, #1 5319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10573 .loc 1 5319 60 discriminator 1 10574 0164 002B cmp r3, #0 10575 0166 23D0 beq .L505 5321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 10576 .loc 1 5322 13 10577 0168 FB68 ldr r3, [r7, #12] 10578 016a 5B8D ldrh r3, [r3, #42] @ movhi 10579 016c 9BB2 uxth r3, r3 10580 .loc 1 5322 8 10581 016e 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 281 10582 0170 19D1 bne .L506 5323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 10583 .loc 1 5324 11 10584 0172 FB68 ldr r3, [r7, #12] 10585 0174 1B68 ldr r3, [r3] 10586 0176 5B68 ldr r3, [r3, #4] 10587 0178 03F00073 and r3, r3, #33554432 10588 .loc 1 5324 10 10589 017c B3F1007F cmp r3, #33554432 10590 0180 27D0 beq .L509 5325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ 5327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) 10591 .loc 1 5327 17 10592 0182 FB68 ldr r3, [r7, #12] 10593 0184 DB6A ldr r3, [r3, #44] 10594 .loc 1 5327 12 10595 0186 13F5803F cmn r3, #65536 10596 018a 08D1 bne .L508 5328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 5330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 10597 .loc 1 5330 15 10598 018c FB68 ldr r3, [r7, #12] 10599 018e 1B68 ldr r3, [r3] 10600 .loc 1 5330 25 10601 0190 5A68 ldr r2, [r3, #4] 10602 .loc 1 5330 15 10603 0192 FB68 ldr r3, [r7, #12] 10604 0194 1B68 ldr r3, [r3] 10605 .loc 1 5330 31 10606 0196 42F48042 orr r2, r2, #16384 10607 019a 5A60 str r2, [r3, #4] 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10608 .loc 1 5322 8 10609 019c 19E0 b .L509 10610 .L508: 5331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 10611 .loc 1 5335 11 10612 019e F868 ldr r0, [r7, #12] 10613 01a0 FFF7FEFF bl I2C_ITMasterSeqCplt 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10614 .loc 1 5322 8 10615 01a4 15E0 b .L509 10616 .L506: 5336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ 5342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ ARM GAS /tmp/cc5G5cqz.s page 282 5343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 10617 .loc 1 5343 7 10618 01a6 4021 movs r1, #64 10619 01a8 F868 ldr r0, [r7, #12] 10620 01aa FFF7FEFF bl I2C_ITError 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10621 .loc 1 5322 8 10622 01ae 10E0 b .L509 10623 .L505: 5344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 10624 .loc 1 5346 13 10625 01b0 BB68 ldr r3, [r7, #8] 10626 01b2 5B09 lsrs r3, r3, #5 10627 01b4 03F00103 and r3, r3, #1 10628 .loc 1 5346 11 10629 01b8 002B cmp r3, #0 10630 01ba 0BD0 beq .L496 5347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10631 .loc 1 5347 13 10632 01bc 7B68 ldr r3, [r7, #4] 10633 01be 5B09 lsrs r3, r3, #5 10634 01c0 03F00103 and r3, r3, #1 5346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10635 .loc 1 5346 63 discriminator 1 10636 01c4 002B cmp r3, #0 10637 01c6 05D0 beq .L496 5348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); 10638 .loc 1 5350 5 10639 01c8 B968 ldr r1, [r7, #8] 10640 01ca F868 ldr r0, [r7, #12] 10641 01cc FFF7FEFF bl I2C_ITMasterCplt 10642 01d0 00E0 b .L496 10643 .L509: 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10644 .loc 1 5322 8 10645 01d2 00BF nop 10646 .L496: 5351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 10647 .loc 1 5358 3 10648 01d4 FB68 ldr r3, [r7, #12] 10649 01d6 0022 movs r2, #0 10650 01d8 83F84020 strb r2, [r3, #64] 5359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 10651 .loc 1 5360 10 10652 01dc 0023 movs r3, #0 ARM GAS /tmp/cc5G5cqz.s page 283 10653 .L494: 5361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10654 .loc 1 5361 1 10655 01de 1846 mov r0, r3 10656 01e0 1837 adds r7, r7, #24 10657 .cfi_def_cfa_offset 8 10658 01e2 BD46 mov sp, r7 10659 .cfi_def_cfa_register 13 10660 @ sp needed 10661 01e4 80BD pop {r7, pc} 10662 .cfi_endproc 10663 .LFE182: 10665 .section .text.I2C_Mem_ISR_DMA,"ax",%progbits 10666 .align 1 10667 .syntax unified 10668 .thumb 10669 .thumb_func 10671 I2C_Mem_ISR_DMA: 10672 .LFB183: 5362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA. 5365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10673 .loc 1 5373 1 10674 .cfi_startproc 10675 @ args = 0, pretend = 0, frame = 24 10676 @ frame_needed = 1, uses_anonymous_args = 0 10677 0000 80B5 push {r7, lr} 10678 .cfi_def_cfa_offset 8 10679 .cfi_offset 7, -8 10680 .cfi_offset 14, -4 10681 0002 88B0 sub sp, sp, #32 10682 .cfi_def_cfa_offset 40 10683 0004 02AF add r7, sp, #8 10684 .cfi_def_cfa 7, 32 10685 0006 F860 str r0, [r7, #12] 10686 0008 B960 str r1, [r7, #8] 10687 000a 7A60 str r2, [r7, #4] 5374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; 10688 .loc 1 5374 12 10689 000c 8C4B ldr r3, .L528 10690 000e 7B61 str r3, [r7, #20] 5375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 5377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 10691 .loc 1 5377 3 10692 0010 FB68 ldr r3, [r7, #12] 10693 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 10694 0016 012B cmp r3, #1 ARM GAS /tmp/cc5G5cqz.s page 284 10695 0018 01D1 bne .L511 10696 .loc 1 5377 3 is_stmt 0 discriminator 1 10697 001a 0223 movs r3, #2 10698 .loc 1 5377 3 10699 001c 0CE1 b .L512 10700 .L511: 10701 .loc 1 5377 3 discriminator 2 10702 001e FB68 ldr r3, [r7, #12] 10703 0020 0122 movs r2, #1 10704 0022 83F84020 strb r2, [r3, #64] 5378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 10705 .loc 1 5379 8 is_stmt 1 10706 0026 BB68 ldr r3, [r7, #8] 10707 0028 1B09 lsrs r3, r3, #4 10708 002a 03F00103 and r3, r3, #1 10709 .loc 1 5379 6 10710 002e 002B cmp r3, #0 10711 0030 17D0 beq .L513 5380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10712 .loc 1 5380 8 10713 0032 7B68 ldr r3, [r7, #4] 10714 0034 1B09 lsrs r3, r3, #4 10715 0036 03F00103 and r3, r3, #1 5379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10716 .loc 1 5379 55 discriminator 1 10717 003a 002B cmp r3, #0 10718 003c 11D0 beq .L513 5381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10719 .loc 1 5383 5 10720 003e FB68 ldr r3, [r7, #12] 10721 0040 1B68 ldr r3, [r3] 10722 0042 1022 movs r2, #16 10723 0044 DA61 str r2, [r3, #28] 5384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 5386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 10724 .loc 1 5386 9 10725 0046 FB68 ldr r3, [r7, #12] 10726 0048 5B6C ldr r3, [r3, #68] 10727 .loc 1 5386 21 10728 004a 43F00402 orr r2, r3, #4 10729 004e FB68 ldr r3, [r7, #12] 10730 0050 5A64 str r2, [r3, #68] 5387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 5389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ 5390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 5391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 10731 .loc 1 5391 5 10732 0052 2021 movs r1, #32 10733 0054 F868 ldr r0, [r7, #12] 10734 0056 FFF7FEFF bl I2C_Enable_IRQ 5392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ ARM GAS /tmp/cc5G5cqz.s page 285 5394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 10735 .loc 1 5394 5 10736 005a F868 ldr r0, [r7, #12] 10737 005c FFF7FEFF bl I2C_Flush_TXDR 10738 0060 E5E0 b .L514 10739 .L513: 5395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ 10740 .loc 1 5396 13 10741 0062 BB68 ldr r3, [r7, #8] 10742 0064 5B08 lsrs r3, r3, #1 10743 0066 03F00103 and r3, r3, #1 10744 .loc 1 5396 11 10745 006a 002B cmp r3, #0 10746 006c 0FD0 beq .L515 5397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10747 .loc 1 5397 13 10748 006e 7B68 ldr r3, [r7, #4] 10749 0070 5B08 lsrs r3, r3, #1 10750 0072 03F00103 and r3, r3, #1 5396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10751 .loc 1 5396 62 discriminator 1 10752 0076 002B cmp r3, #0 10753 0078 09D0 beq .L515 5398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */ 5400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; 10754 .loc 1 5400 9 10755 007a FB68 ldr r3, [r7, #12] 10756 007c 1B68 ldr r3, [r3] 10757 .loc 1 5400 32 10758 007e FA68 ldr r2, [r7, #12] 10759 0080 126D ldr r2, [r2, #80] 10760 .loc 1 5400 26 10761 0082 9A62 str r2, [r3, #40] 5401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 5403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 10762 .loc 1 5403 22 10763 0084 FB68 ldr r3, [r7, #12] 10764 0086 4FF0FF32 mov r2, #-1 10765 008a 1A65 str r2, [r3, #80] 10766 008c CFE0 b .L514 10767 .L515: 5404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ 10768 .loc 1 5405 13 10769 008e BB68 ldr r3, [r7, #8] 10770 0090 DB09 lsrs r3, r3, #7 10771 0092 03F00103 and r3, r3, #1 10772 .loc 1 5405 11 10773 0096 002B cmp r3, #0 10774 0098 5CD0 beq .L516 5406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10775 .loc 1 5406 13 10776 009a 7B68 ldr r3, [r7, #4] 10777 009c 9B09 lsrs r3, r3, #6 ARM GAS /tmp/cc5G5cqz.s page 286 10778 009e 03F00103 and r3, r3, #1 5405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10779 .loc 1 5405 61 discriminator 1 10780 00a2 002B cmp r3, #0 10781 00a4 56D0 beq .L516 5407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable only Error interrupt */ 5409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 10782 .loc 1 5409 5 10783 00a6 1021 movs r1, #16 10784 00a8 F868 ldr r0, [r7, #12] 10785 00aa FFF7FEFF bl I2C_Enable_IRQ 5410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 10786 .loc 1 5411 13 10787 00ae FB68 ldr r3, [r7, #12] 10788 00b0 5B8D ldrh r3, [r3, #42] @ movhi 10789 00b2 9BB2 uxth r3, r3 10790 .loc 1 5411 8 10791 00b4 002B cmp r3, #0 10792 00b6 48D0 beq .L517 5412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ 5414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 10793 .loc 1 5414 15 10794 00b8 FB68 ldr r3, [r7, #12] 10795 00ba 5B8D ldrh r3, [r3, #42] @ movhi 10796 00bc 9BB2 uxth r3, r3 10797 .loc 1 5414 10 10798 00be FF2B cmp r3, #255 10799 00c0 10D9 bls .L518 5415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 10800 .loc 1 5416 24 10801 00c2 FB68 ldr r3, [r7, #12] 10802 00c4 FF22 movs r2, #255 10803 00c6 1A85 strh r2, [r3, #40] @ movhi 5417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 10804 .loc 1 5417 48 10805 00c8 FB68 ldr r3, [r7, #12] 10806 00ca DB6C ldr r3, [r3, #76] 10807 .loc 1 5417 9 10808 00cc 99B2 uxth r1, r3 10809 .loc 1 5417 75 10810 00ce FB68 ldr r3, [r7, #12] 10811 00d0 1B8D ldrh r3, [r3, #40] 10812 .loc 1 5417 9 10813 00d2 DAB2 uxtb r2, r3 10814 00d4 0023 movs r3, #0 10815 00d6 0093 str r3, [sp] 10816 00d8 4FF08073 mov r3, #16777216 10817 00dc F868 ldr r0, [r7, #12] 10818 00de FFF7FEFF bl I2C_TransferConfig 10819 00e2 11E0 b .L519 10820 .L518: 5418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); 5419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 287 5420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 10821 .loc 1 5422 30 10822 00e4 FB68 ldr r3, [r7, #12] 10823 00e6 5B8D ldrh r3, [r3, #42] @ movhi 10824 00e8 9AB2 uxth r2, r3 10825 .loc 1 5422 24 10826 00ea FB68 ldr r3, [r7, #12] 10827 00ec 1A85 strh r2, [r3, #40] @ movhi 5423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 10828 .loc 1 5423 48 10829 00ee FB68 ldr r3, [r7, #12] 10830 00f0 DB6C ldr r3, [r3, #76] 10831 .loc 1 5423 9 10832 00f2 99B2 uxth r1, r3 10833 .loc 1 5423 75 10834 00f4 FB68 ldr r3, [r7, #12] 10835 00f6 1B8D ldrh r3, [r3, #40] 10836 .loc 1 5423 9 10837 00f8 DAB2 uxtb r2, r3 10838 00fa 0023 movs r3, #0 10839 00fc 0093 str r3, [sp] 10840 00fe 4FF00073 mov r3, #33554432 10841 0102 F868 ldr r0, [r7, #12] 10842 0104 FFF7FEFF bl I2C_TransferConfig 10843 .L519: 5424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 5425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 10844 .loc 1 5428 11 10845 0108 FB68 ldr r3, [r7, #12] 10846 010a 5B8D ldrh r3, [r3, #42] @ movhi 10847 010c 9AB2 uxth r2, r3 10848 .loc 1 5428 30 10849 010e FB68 ldr r3, [r7, #12] 10850 0110 1B8D ldrh r3, [r3, #40] 10851 .loc 1 5428 23 10852 0112 D31A subs r3, r2, r3 10853 0114 9AB2 uxth r2, r3 10854 0116 FB68 ldr r3, [r7, #12] 10855 0118 5A85 strh r2, [r3, #42] @ movhi 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 10856 .loc 1 5431 15 10857 011a FB68 ldr r3, [r7, #12] 10858 011c 93F84130 ldrb r3, [r3, #65] 10859 0120 DBB2 uxtb r3, r3 10860 .loc 1 5431 10 10861 0122 222B cmp r3, #34 10862 0124 08D1 bne .L520 5432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 10863 .loc 1 5433 13 ARM GAS /tmp/cc5G5cqz.s page 288 10864 0126 FB68 ldr r3, [r7, #12] 10865 0128 1B68 ldr r3, [r3] 10866 .loc 1 5433 23 10867 012a 1A68 ldr r2, [r3] 10868 .loc 1 5433 13 10869 012c FB68 ldr r3, [r7, #12] 10870 012e 1B68 ldr r3, [r3] 10871 .loc 1 5433 29 10872 0130 42F40042 orr r2, r2, #32768 10873 0134 1A60 str r2, [r3] 5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10874 .loc 1 5411 8 10875 0136 7AE0 b .L514 10876 .L520: 5434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 10877 .loc 1 5437 13 10878 0138 FB68 ldr r3, [r7, #12] 10879 013a 1B68 ldr r3, [r3] 10880 .loc 1 5437 23 10881 013c 1A68 ldr r2, [r3] 10882 .loc 1 5437 13 10883 013e FB68 ldr r3, [r7, #12] 10884 0140 1B68 ldr r3, [r3] 10885 .loc 1 5437 29 10886 0142 42F48042 orr r2, r2, #16384 10887 0146 1A60 str r2, [r3] 5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10888 .loc 1 5411 8 10889 0148 71E0 b .L514 10890 .L517: 5438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 10891 .loc 1 5444 7 10892 014a 4021 movs r1, #64 10893 014c F868 ldr r0, [r7, #12] 10894 014e FFF7FEFF bl I2C_ITError 5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10895 .loc 1 5411 8 10896 0152 6CE0 b .L514 10897 .L516: 5445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ 10898 .loc 1 5447 13 10899 0154 BB68 ldr r3, [r7, #8] 10900 0156 9B09 lsrs r3, r3, #6 10901 0158 03F00103 and r3, r3, #1 10902 .loc 1 5447 11 10903 015c 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 289 10904 015e 56D0 beq .L522 5448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10905 .loc 1 5448 13 10906 0160 7B68 ldr r3, [r7, #4] 10907 0162 9B09 lsrs r3, r3, #6 10908 0164 03F00103 and r3, r3, #1 5447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10909 .loc 1 5447 60 discriminator 1 10910 0168 002B cmp r3, #0 10911 016a 50D0 beq .L522 5449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 10912 .loc 1 5450 13 10913 016c FB68 ldr r3, [r7, #12] 10914 016e 93F84130 ldrb r3, [r3, #65] 10915 0172 DBB2 uxtb r3, r3 10916 .loc 1 5450 8 10917 0174 222B cmp r3, #34 10918 0176 01D1 bne .L523 5451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; 10919 .loc 1 5452 17 10920 0178 324B ldr r3, .L528+4 10921 017a 7B61 str r3, [r7, #20] 10922 .L523: 5453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 10923 .loc 1 5455 13 10924 017c FB68 ldr r3, [r7, #12] 10925 017e 5B8D ldrh r3, [r3, #42] @ movhi 10926 0180 9BB2 uxth r3, r3 10927 .loc 1 5455 8 10928 0182 FF2B cmp r3, #255 10929 0184 10D9 bls .L524 5456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 10930 .loc 1 5457 22 10931 0186 FB68 ldr r3, [r7, #12] 10932 0188 FF22 movs r2, #255 10933 018a 1A85 strh r2, [r3, #40] @ movhi 5458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 5460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 10934 .loc 1 5460 46 10935 018c FB68 ldr r3, [r7, #12] 10936 018e DB6C ldr r3, [r3, #76] 10937 .loc 1 5460 7 10938 0190 99B2 uxth r1, r3 10939 .loc 1 5460 73 10940 0192 FB68 ldr r3, [r7, #12] 10941 0194 1B8D ldrh r3, [r3, #40] 10942 .loc 1 5460 7 10943 0196 DAB2 uxtb r2, r3 10944 0198 7B69 ldr r3, [r7, #20] 10945 019a 0093 str r3, [sp] 10946 019c 4FF08073 mov r3, #16777216 ARM GAS /tmp/cc5G5cqz.s page 290 10947 01a0 F868 ldr r0, [r7, #12] 10948 01a2 FFF7FEFF bl I2C_TransferConfig 10949 01a6 11E0 b .L525 10950 .L524: 5461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); 5462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 10951 .loc 1 5465 28 10952 01a8 FB68 ldr r3, [r7, #12] 10953 01aa 5B8D ldrh r3, [r3, #42] @ movhi 10954 01ac 9AB2 uxth r2, r3 10955 .loc 1 5465 22 10956 01ae FB68 ldr r3, [r7, #12] 10957 01b0 1A85 strh r2, [r3, #40] @ movhi 5466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ 5468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 10958 .loc 1 5468 46 10959 01b2 FB68 ldr r3, [r7, #12] 10960 01b4 DB6C ldr r3, [r3, #76] 10961 .loc 1 5468 7 10962 01b6 99B2 uxth r1, r3 10963 .loc 1 5468 73 10964 01b8 FB68 ldr r3, [r7, #12] 10965 01ba 1B8D ldrh r3, [r3, #40] 10966 .loc 1 5468 7 10967 01bc DAB2 uxtb r2, r3 10968 01be 7B69 ldr r3, [r7, #20] 10969 01c0 0093 str r3, [sp] 10970 01c2 4FF00073 mov r3, #33554432 10971 01c6 F868 ldr r0, [r7, #12] 10972 01c8 FFF7FEFF bl I2C_TransferConfig 10973 .L525: 5469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); 5470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 10974 .loc 1 5473 9 10975 01cc FB68 ldr r3, [r7, #12] 10976 01ce 5B8D ldrh r3, [r3, #42] @ movhi 10977 01d0 9AB2 uxth r2, r3 10978 .loc 1 5473 28 10979 01d2 FB68 ldr r3, [r7, #12] 10980 01d4 1B8D ldrh r3, [r3, #40] 10981 .loc 1 5473 21 10982 01d6 D31A subs r3, r2, r3 10983 01d8 9AB2 uxth r2, r3 10984 01da FB68 ldr r3, [r7, #12] 10985 01dc 5A85 strh r2, [r3, #42] @ movhi 5474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 10986 .loc 1 5476 13 10987 01de FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 291 10988 01e0 93F84130 ldrb r3, [r3, #65] 10989 01e4 DBB2 uxtb r3, r3 10990 .loc 1 5476 8 10991 01e6 222B cmp r3, #34 10992 01e8 08D1 bne .L526 5477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 10993 .loc 1 5478 11 10994 01ea FB68 ldr r3, [r7, #12] 10995 01ec 1B68 ldr r3, [r3] 10996 .loc 1 5478 21 10997 01ee 1A68 ldr r2, [r3] 10998 .loc 1 5478 11 10999 01f0 FB68 ldr r3, [r7, #12] 11000 01f2 1B68 ldr r3, [r3] 11001 .loc 1 5478 27 11002 01f4 42F40042 orr r2, r2, #32768 11003 01f8 1A60 str r2, [r3] 5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11004 .loc 1 5476 8 11005 01fa 18E0 b .L514 11006 .L526: 5479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 11007 .loc 1 5482 11 11008 01fc FB68 ldr r3, [r7, #12] 11009 01fe 1B68 ldr r3, [r3] 11010 .loc 1 5482 21 11011 0200 1A68 ldr r2, [r3] 11012 .loc 1 5482 11 11013 0202 FB68 ldr r3, [r7, #12] 11014 0204 1B68 ldr r3, [r3] 11015 .loc 1 5482 27 11016 0206 42F48042 orr r2, r2, #16384 11017 020a 1A60 str r2, [r3] 5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11018 .loc 1 5476 8 11019 020c 0FE0 b .L514 11020 .L522: 5483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 11021 .loc 1 5485 13 11022 020e BB68 ldr r3, [r7, #8] 11023 0210 5B09 lsrs r3, r3, #5 11024 0212 03F00103 and r3, r3, #1 11025 .loc 1 5485 11 11026 0216 002B cmp r3, #0 11027 0218 09D0 beq .L514 5486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11028 .loc 1 5486 13 11029 021a 7B68 ldr r3, [r7, #4] 11030 021c 5B09 lsrs r3, r3, #5 11031 021e 03F00103 and r3, r3, #1 5485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) ARM GAS /tmp/cc5G5cqz.s page 292 11032 .loc 1 5485 63 discriminator 1 11033 0222 002B cmp r3, #0 11034 0224 03D0 beq .L514 5487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); 11035 .loc 1 5489 5 11036 0226 B968 ldr r1, [r7, #8] 11037 0228 F868 ldr r0, [r7, #12] 11038 022a FFF7FEFF bl I2C_ITMasterCplt 11039 .L514: 5490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11040 .loc 1 5497 3 11041 022e FB68 ldr r3, [r7, #12] 11042 0230 0022 movs r2, #0 11043 0232 83F84020 strb r2, [r3, #64] 5498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11044 .loc 1 5499 10 11045 0236 0023 movs r3, #0 11046 .L512: 5500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11047 .loc 1 5500 1 11048 0238 1846 mov r0, r3 11049 023a 1837 adds r7, r7, #24 11050 .cfi_def_cfa_offset 8 11051 023c BD46 mov sp, r7 11052 .cfi_def_cfa_register 13 11053 @ sp needed 11054 023e 80BD pop {r7, pc} 11055 .L529: 11056 .align 2 11057 .L528: 11058 0240 00200080 .word -2147475456 11059 0244 00240080 .word -2147474432 11060 .cfi_endproc 11061 .LFE183: 11063 .section .text.I2C_Slave_ISR_DMA,"ax",%progbits 11064 .align 1 11065 .syntax unified 11066 .thumb 11067 .thumb_func 11069 I2C_Slave_ISR_DMA: 11070 .LFB184: 5501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. 5504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. ARM GAS /tmp/cc5G5cqz.s page 293 5507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11071 .loc 1 5512 1 11072 .cfi_startproc 11073 @ args = 0, pretend = 0, frame = 32 11074 @ frame_needed = 1, uses_anonymous_args = 0 11075 0000 80B5 push {r7, lr} 11076 .cfi_def_cfa_offset 8 11077 .cfi_offset 7, -8 11078 .cfi_offset 14, -4 11079 0002 88B0 sub sp, sp, #32 11080 .cfi_def_cfa_offset 40 11081 0004 00AF add r7, sp, #0 11082 .cfi_def_cfa_register 7 11083 0006 F860 str r0, [r7, #12] 11084 0008 B960 str r1, [r7, #8] 11085 000a 7A60 str r2, [r7, #4] 5513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 11086 .loc 1 5513 12 11087 000c FB68 ldr r3, [r7, #12] 11088 000e DB6A ldr r3, [r3, #44] 11089 0010 BB61 str r3, [r7, #24] 5514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t treatdmanack = 0U; 11090 .loc 1 5514 12 11091 0012 0023 movs r3, #0 11092 0014 FB61 str r3, [r7, #28] 5515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; 5516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */ 5518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 11093 .loc 1 5518 3 11094 0016 FB68 ldr r3, [r7, #12] 11095 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 11096 001c 012B cmp r3, #1 11097 001e 01D1 bne .L531 11098 .loc 1 5518 3 is_stmt 0 discriminator 1 11099 0020 0223 movs r3, #2 11100 .loc 1 5518 3 11101 0022 C9E0 b .L532 11102 .L531: 11103 .loc 1 5518 3 discriminator 2 11104 0024 FB68 ldr r3, [r7, #12] 11105 0026 0122 movs r2, #1 11106 0028 83F84020 strb r2, [r3, #64] 5519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */ 5521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 11107 .loc 1 5521 8 is_stmt 1 11108 002c BB68 ldr r3, [r7, #8] 11109 002e 5B09 lsrs r3, r3, #5 11110 0030 03F00103 and r3, r3, #1 11111 .loc 1 5521 6 11112 0034 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 294 11113 0036 09D0 beq .L533 5522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11114 .loc 1 5522 8 11115 0038 7B68 ldr r3, [r7, #4] 11116 003a 5B09 lsrs r3, r3, #5 11117 003c 03F00103 and r3, r3, #1 5521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11118 .loc 1 5521 58 discriminator 1 11119 0040 002B cmp r3, #0 11120 0042 03D0 beq .L533 5523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */ 5525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, ITFlags); 11121 .loc 1 5525 5 11122 0044 B968 ldr r1, [r7, #8] 11123 0046 F868 ldr r0, [r7, #12] 11124 0048 FFF7FEFF bl I2C_ITSlaveCplt 11125 .L533: 5526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 11126 .loc 1 5528 8 11127 004c BB68 ldr r3, [r7, #8] 11128 004e 1B09 lsrs r3, r3, #4 11129 0050 03F00103 and r3, r3, #1 11130 .loc 1 5528 6 11131 0054 002B cmp r3, #0 11132 0056 00F09A80 beq .L534 5529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11133 .loc 1 5529 8 11134 005a 7B68 ldr r3, [r7, #4] 11135 005c 1B09 lsrs r3, r3, #4 11136 005e 03F00103 and r3, r3, #1 5528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11137 .loc 1 5528 55 discriminator 1 11138 0062 002B cmp r3, #0 11139 0064 00F09380 beq .L534 5530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 5532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ 5533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0 */ 5534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */ 5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || 11140 .loc 1 5535 10 11141 0068 7B68 ldr r3, [r7, #4] 11142 006a 9B0B lsrs r3, r3, #14 11143 006c 03F00103 and r3, r3, #1 11144 .loc 1 5535 8 11145 0070 002B cmp r3, #0 11146 0072 05D1 bne .L535 5536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 11147 .loc 1 5536 10 11148 0074 7B68 ldr r3, [r7, #4] 11149 0076 DB0B lsrs r3, r3, #15 11150 0078 03F00103 and r3, r3, #1 5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 11151 .loc 1 5535 68 discriminator 1 ARM GAS /tmp/cc5G5cqz.s page 295 11152 007c 002B cmp r3, #0 11153 007e 7FD0 beq .L536 11154 .L535: 5537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmarx, for MISRA compliance */ 5539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 11155 .loc 1 5539 15 11156 0080 FB68 ldr r3, [r7, #12] 11157 0082 DB6B ldr r3, [r3, #60] 11158 .loc 1 5539 10 11159 0084 002B cmp r3, #0 11160 0086 0DD0 beq .L537 5540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) 11161 .loc 1 5541 13 11162 0088 7B68 ldr r3, [r7, #4] 11163 008a DB0B lsrs r3, r3, #15 11164 008c 03F00103 and r3, r3, #1 11165 .loc 1 5541 12 11166 0090 002B cmp r3, #0 11167 0092 07D0 beq .L537 5542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) 11168 .loc 1 5543 15 11169 0094 FB68 ldr r3, [r7, #12] 11170 0096 DB6B ldr r3, [r3, #60] 11171 0098 1B68 ldr r3, [r3] 11172 009a 5B68 ldr r3, [r3, #4] 11173 .loc 1 5543 14 11174 009c 002B cmp r3, #0 11175 009e 01D1 bne .L537 5544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U; 11176 .loc 1 5545 26 11177 00a0 0123 movs r3, #1 11178 00a2 FB61 str r3, [r7, #28] 11179 .L537: 5546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmatx, for MISRA compliance */ 5551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 11180 .loc 1 5551 15 11181 00a4 FB68 ldr r3, [r7, #12] 11182 00a6 9B6B ldr r3, [r3, #56] 11183 .loc 1 5551 10 11184 00a8 002B cmp r3, #0 11185 00aa 0DD0 beq .L538 5552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) 11186 .loc 1 5553 13 11187 00ac 7B68 ldr r3, [r7, #4] 11188 00ae 9B0B lsrs r3, r3, #14 11189 00b0 03F00103 and r3, r3, #1 11190 .loc 1 5553 12 11191 00b4 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 296 11192 00b6 07D0 beq .L538 5554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) 11193 .loc 1 5555 15 11194 00b8 FB68 ldr r3, [r7, #12] 11195 00ba 9B6B ldr r3, [r3, #56] 11196 00bc 1B68 ldr r3, [r3] 11197 00be 5B68 ldr r3, [r3, #4] 11198 .loc 1 5555 14 11199 00c0 002B cmp r3, #0 11200 00c2 01D1 bne .L538 5556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U; 11201 .loc 1 5557 26 11202 00c4 0123 movs r3, #1 11203 00c6 FB61 str r3, [r7, #28] 11204 .L538: 5558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (treatdmanack == 1U) 11205 .loc 1 5562 10 11206 00c8 FB69 ldr r3, [r7, #28] 11207 00ca 012B cmp r3, #1 11208 00cc 28D1 bne .L539 5563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) 11209 .loc 1 5564 18 11210 00ce FB68 ldr r3, [r7, #12] 11211 00d0 93F84130 ldrb r3, [r3, #65] 11212 00d4 DBB2 uxtb r3, r3 11213 .loc 1 5564 12 11214 00d6 282B cmp r3, #40 11215 00d8 08D1 bne .L540 11216 .loc 1 5564 51 discriminator 1 11217 00da BB69 ldr r3, [r7, #24] 11218 00dc B3F1007F cmp r3, #33554432 11219 00e0 04D1 bne .L540 5565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for 5566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ 5567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 5569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, ITFlags); 11220 .loc 1 5569 11 11221 00e2 B968 ldr r1, [r7, #8] 11222 00e4 F868 ldr r0, [r7, #12] 11223 00e6 FFF7FEFF bl I2C_ITListenCplt 11224 00ea 48E0 b .L543 11225 .L540: 5570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAM 11226 .loc 1 5571 23 11227 00ec FB68 ldr r3, [r7, #12] 11228 00ee 93F84130 ldrb r3, [r3, #65] 11229 00f2 DBB2 uxtb r3, r3 11230 .loc 1 5571 17 ARM GAS /tmp/cc5G5cqz.s page 297 11231 00f4 292B cmp r3, #41 11232 00f6 0ED1 bne .L542 11233 .loc 1 5571 64 discriminator 1 11234 00f8 BB69 ldr r3, [r7, #24] 11235 00fa 13F5803F cmn r3, #65536 11236 00fe 0AD0 beq .L542 5572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11237 .loc 1 5574 11 11238 0100 FB68 ldr r3, [r7, #12] 11239 0102 1B68 ldr r3, [r3] 11240 0104 1022 movs r2, #16 11241 0106 DA61 str r2, [r3, #28] 5575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 11242 .loc 1 5577 11 11243 0108 F868 ldr r0, [r7, #12] 11244 010a FFF7FEFF bl I2C_Flush_TXDR 5578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 11245 .loc 1 5581 11 11246 010e F868 ldr r0, [r7, #12] 11247 0110 FFF7FEFF bl I2C_ITSlaveSeqCplt 11248 0114 33E0 b .L543 11249 .L542: 5582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11250 .loc 1 5586 11 11251 0116 FB68 ldr r3, [r7, #12] 11252 0118 1B68 ldr r3, [r3] 11253 011a 1022 movs r2, #16 11254 011c DA61 str r2, [r3, #28] 5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11255 .loc 1 5562 10 11256 011e 34E0 b .L551 11257 .L539: 5587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ 5592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11258 .loc 1 5593 9 11259 0120 FB68 ldr r3, [r7, #12] 11260 0122 1B68 ldr r3, [r3] 11261 0124 1022 movs r2, #16 11262 0126 DA61 str r2, [r3, #28] 5594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ ARM GAS /tmp/cc5G5cqz.s page 298 5596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 11263 .loc 1 5596 13 11264 0128 FB68 ldr r3, [r7, #12] 11265 012a 5B6C ldr r3, [r3, #68] 11266 .loc 1 5596 25 11267 012c 43F00402 orr r2, r3, #4 11268 0130 FB68 ldr r3, [r7, #12] 11269 0132 5A64 str r2, [r3, #68] 5597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ 5599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpstate = hi2c->State; 11270 .loc 1 5599 18 11271 0134 FB68 ldr r3, [r7, #12] 11272 0136 93F84130 ldrb r3, [r3, #65] 11273 013a FB75 strb r3, [r7, #23] 5600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) 11274 .loc 1 5601 12 11275 013c BB69 ldr r3, [r7, #24] 11276 013e 002B cmp r3, #0 11277 0140 03D0 beq .L544 11278 .loc 1 5601 45 discriminator 1 11279 0142 BB69 ldr r3, [r7, #24] 11280 0144 B3F1807F cmp r3, #16777216 11281 0148 1FD1 bne .L551 11282 .L544: 5602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) 11283 .loc 1 5603 14 11284 014a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 11285 014c 212B cmp r3, #33 11286 014e 02D0 beq .L545 11287 .loc 1 5603 51 discriminator 1 11288 0150 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 11289 0152 292B cmp r3, #41 11290 0154 03D1 bne .L546 11291 .L545: 5604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 11292 .loc 1 5605 33 11293 0156 FB68 ldr r3, [r7, #12] 11294 0158 2122 movs r2, #33 11295 015a 1A63 str r2, [r3, #48] 11296 015c 08E0 b .L547 11297 .L546: 5606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN 11298 .loc 1 5607 19 11299 015e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 11300 0160 222B cmp r3, #34 11301 0162 02D0 beq .L548 11302 .loc 1 5607 56 discriminator 1 11303 0164 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 11304 0166 2A2B cmp r3, #42 11305 0168 02D1 bne .L547 11306 .L548: 5608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 299 5609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 11307 .loc 1 5609 33 11308 016a FB68 ldr r3, [r7, #12] 11309 016c 2222 movs r2, #34 11310 016e 1A63 str r2, [r3, #48] 11311 .L547: 5610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 5614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 11312 .loc 1 5617 33 11313 0170 FB68 ldr r3, [r7, #12] 11314 0172 5B6C ldr r3, [r3, #68] 11315 .loc 1 5617 11 11316 0174 1946 mov r1, r3 11317 0176 F868 ldr r0, [r7, #12] 11318 0178 FFF7FEFF bl I2C_ITError 5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11319 .loc 1 5562 10 11320 017c 05E0 b .L551 11321 .L543: 11322 017e 04E0 b .L551 11323 .L536: 5618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Only Clear NACK Flag, no DMA treatment is pending */ 5624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11324 .loc 1 5624 7 11325 0180 FB68 ldr r3, [r7, #12] 11326 0182 1B68 ldr r3, [r3] 11327 0184 1022 movs r2, #16 11328 0186 DA61 str r2, [r3, #28] 5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 11329 .loc 1 5535 8 11330 0188 11E0 b .L550 11331 .L551: 5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11332 .loc 1 5562 10 11333 018a 00BF nop 5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 11334 .loc 1 5535 8 11335 018c 0FE0 b .L550 11336 .L534: 5625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ 11337 .loc 1 5627 13 11338 018e BB68 ldr r3, [r7, #8] 11339 0190 DB08 lsrs r3, r3, #3 11340 0192 03F00103 and r3, r3, #1 ARM GAS /tmp/cc5G5cqz.s page 300 11341 .loc 1 5627 11 11342 0196 002B cmp r3, #0 11343 0198 09D0 beq .L550 5628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 11344 .loc 1 5628 13 11345 019a 7B68 ldr r3, [r7, #4] 11346 019c DB08 lsrs r3, r3, #3 11347 019e 03F00103 and r3, r3, #1 5627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 11348 .loc 1 5627 62 discriminator 1 11349 01a2 002B cmp r3, #0 11350 01a4 03D0 beq .L550 5629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, ITFlags); 11351 .loc 1 5630 5 11352 01a6 B968 ldr r1, [r7, #8] 11353 01a8 F868 ldr r0, [r7, #12] 11354 01aa FFF7FEFF bl I2C_ITAddrCplt 11355 .L550: 5631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11356 .loc 1 5638 3 11357 01ae FB68 ldr r3, [r7, #12] 11358 01b0 0022 movs r2, #0 11359 01b2 83F84020 strb r2, [r3, #64] 5639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11360 .loc 1 5640 10 11361 01b6 0023 movs r3, #0 11362 .L532: 5641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11363 .loc 1 5641 1 11364 01b8 1846 mov r0, r3 11365 01ba 2037 adds r7, r7, #32 11366 .cfi_def_cfa_offset 8 11367 01bc BD46 mov sp, r7 11368 .cfi_def_cfa_register 13 11369 @ sp needed 11370 01be 80BD pop {r7, pc} 11371 .cfi_endproc 11372 .LFE184: 11374 .section .text.I2C_RequestMemoryWrite,"ax",%progbits 11375 .align 1 11376 .syntax unified 11377 .thumb 11378 .thumb_func 11380 I2C_RequestMemoryWrite: 11381 .LFB185: 5642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for write reques ARM GAS /tmp/cc5G5cqz.s page 301 5645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 5648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 5649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 5650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 5651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 5652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 5653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 5656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t 5657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 5658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11382 .loc 1 5658 1 11383 .cfi_startproc 11384 @ args = 8, pretend = 0, frame = 16 11385 @ frame_needed = 1, uses_anonymous_args = 0 11386 0000 80B5 push {r7, lr} 11387 .cfi_def_cfa_offset 8 11388 .cfi_offset 7, -8 11389 .cfi_offset 14, -4 11390 0002 86B0 sub sp, sp, #24 11391 .cfi_def_cfa_offset 32 11392 0004 02AF add r7, sp, #8 11393 .cfi_def_cfa 7, 24 11394 0006 F860 str r0, [r7, #12] 11395 0008 0846 mov r0, r1 11396 000a 1146 mov r1, r2 11397 000c 1A46 mov r2, r3 11398 000e 0346 mov r3, r0 @ movhi 11399 0010 7B81 strh r3, [r7, #10] @ movhi 11400 0012 0B46 mov r3, r1 @ movhi 11401 0014 3B81 strh r3, [r7, #8] @ movhi 11402 0016 1346 mov r3, r2 @ movhi 11403 0018 FB80 strh r3, [r7, #6] @ movhi 5659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI 11404 .loc 1 5659 3 11405 001a FB88 ldrh r3, [r7, #6] @ movhi 11406 001c DAB2 uxtb r2, r3 11407 001e 7989 ldrh r1, [r7, #10] 11408 0020 204B ldr r3, .L559 11409 0022 0093 str r3, [sp] 11410 0024 4FF08073 mov r3, #16777216 11411 0028 F868 ldr r0, [r7, #12] 11412 002a FFF7FEFF bl I2C_TransferConfig 5660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 11413 .loc 1 5662 7 11414 002e FA69 ldr r2, [r7, #28] 11415 0030 B969 ldr r1, [r7, #24] 11416 0032 F868 ldr r0, [r7, #12] 11417 0034 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 11418 0038 0346 mov r3, r0 11419 .loc 1 5662 6 discriminator 1 11420 003a 002B cmp r3, #0 ARM GAS /tmp/cc5G5cqz.s page 302 11421 003c 01D0 beq .L553 5663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11422 .loc 1 5664 12 11423 003e 0123 movs r3, #1 11424 0040 2CE0 b .L554 11425 .L553: 5665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 5668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 11426 .loc 1 5668 6 11427 0042 FB88 ldrh r3, [r7, #6] 11428 0044 012B cmp r3, #1 11429 0046 05D1 bne .L555 5669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */ 5671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 11430 .loc 1 5671 28 11431 0048 3B89 ldrh r3, [r7, #8] @ movhi 11432 004a DAB2 uxtb r2, r3 11433 .loc 1 5671 9 11434 004c FB68 ldr r3, [r7, #12] 11435 004e 1B68 ldr r3, [r3] 11436 .loc 1 5671 26 11437 0050 9A62 str r2, [r3, #40] 11438 0052 15E0 b .L556 11439 .L555: 5672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 5674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */ 5677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 11440 .loc 1 5677 28 11441 0054 3B89 ldrh r3, [r7, #8] 11442 0056 1B0A lsrs r3, r3, #8 11443 0058 9BB2 uxth r3, r3 11444 005a DAB2 uxtb r2, r3 11445 .loc 1 5677 9 11446 005c FB68 ldr r3, [r7, #12] 11447 005e 1B68 ldr r3, [r3] 11448 .loc 1 5677 26 11449 0060 9A62 str r2, [r3, #40] 5678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 11450 .loc 1 5680 9 11451 0062 FA69 ldr r2, [r7, #28] 11452 0064 B969 ldr r1, [r7, #24] 11453 0066 F868 ldr r0, [r7, #12] 11454 0068 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 11455 006c 0346 mov r3, r0 11456 .loc 1 5680 8 discriminator 1 11457 006e 002B cmp r3, #0 11458 0070 01D0 beq .L557 5681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 303 5682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11459 .loc 1 5682 14 11460 0072 0123 movs r3, #1 11461 0074 12E0 b .L554 11462 .L557: 5683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */ 5686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 11463 .loc 1 5686 28 11464 0076 3B89 ldrh r3, [r7, #8] @ movhi 11465 0078 DAB2 uxtb r2, r3 11466 .loc 1 5686 9 11467 007a FB68 ldr r3, [r7, #12] 11468 007c 1B68 ldr r3, [r3] 11469 .loc 1 5686 26 11470 007e 9A62 str r2, [r3, #40] 11471 .L556: 5687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 5690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) 11472 .loc 1 5690 7 11473 0080 FB69 ldr r3, [r7, #28] 11474 0082 0093 str r3, [sp] 11475 0084 BB69 ldr r3, [r7, #24] 11476 0086 0022 movs r2, #0 11477 0088 8021 movs r1, #128 11478 008a F868 ldr r0, [r7, #12] 11479 008c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 11480 0090 0346 mov r3, r0 11481 .loc 1 5690 6 discriminator 1 11482 0092 002B cmp r3, #0 11483 0094 01D0 beq .L558 5691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11484 .loc 1 5692 12 11485 0096 0123 movs r3, #1 11486 0098 00E0 b .L554 11487 .L558: 5693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11488 .loc 1 5695 10 11489 009a 0023 movs r3, #0 11490 .L554: 5696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11491 .loc 1 5696 1 11492 009c 1846 mov r0, r3 11493 009e 1037 adds r7, r7, #16 11494 .cfi_def_cfa_offset 8 11495 00a0 BD46 mov sp, r7 11496 .cfi_def_cfa_register 13 11497 @ sp needed 11498 00a2 80BD pop {r7, pc} 11499 .L560: 11500 .align 2 ARM GAS /tmp/cc5G5cqz.s page 304 11501 .L559: 11502 00a4 00200080 .word -2147475456 11503 .cfi_endproc 11504 .LFE185: 11506 .section .text.I2C_RequestMemoryRead,"ax",%progbits 11507 .align 1 11508 .syntax unified 11509 .thumb 11510 .thumb_func 11512 I2C_RequestMemoryRead: 11513 .LFB186: 5697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for read request 5700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 5703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 5704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 5705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 5706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 5707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 5708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 5711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T 5712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 5713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11514 .loc 1 5713 1 11515 .cfi_startproc 11516 @ args = 8, pretend = 0, frame = 16 11517 @ frame_needed = 1, uses_anonymous_args = 0 11518 0000 80B5 push {r7, lr} 11519 .cfi_def_cfa_offset 8 11520 .cfi_offset 7, -8 11521 .cfi_offset 14, -4 11522 0002 86B0 sub sp, sp, #24 11523 .cfi_def_cfa_offset 32 11524 0004 02AF add r7, sp, #8 11525 .cfi_def_cfa 7, 24 11526 0006 F860 str r0, [r7, #12] 11527 0008 0846 mov r0, r1 11528 000a 1146 mov r1, r2 11529 000c 1A46 mov r2, r3 11530 000e 0346 mov r3, r0 @ movhi 11531 0010 7B81 strh r3, [r7, #10] @ movhi 11532 0012 0B46 mov r3, r1 @ movhi 11533 0014 3B81 strh r3, [r7, #8] @ movhi 11534 0016 1346 mov r3, r2 @ movhi 11535 0018 FB80 strh r3, [r7, #6] @ movhi 5714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR 11536 .loc 1 5714 3 11537 001a FB88 ldrh r3, [r7, #6] @ movhi 11538 001c DAB2 uxtb r2, r3 11539 001e 7989 ldrh r1, [r7, #10] 11540 0020 204B ldr r3, .L568 11541 0022 0093 str r3, [sp] ARM GAS /tmp/cc5G5cqz.s page 305 11542 0024 0023 movs r3, #0 11543 0026 F868 ldr r0, [r7, #12] 11544 0028 FFF7FEFF bl I2C_TransferConfig 5715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 11545 .loc 1 5717 7 11546 002c FA69 ldr r2, [r7, #28] 11547 002e B969 ldr r1, [r7, #24] 11548 0030 F868 ldr r0, [r7, #12] 11549 0032 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 11550 0036 0346 mov r3, r0 11551 .loc 1 5717 6 discriminator 1 11552 0038 002B cmp r3, #0 11553 003a 01D0 beq .L562 5718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11554 .loc 1 5719 12 11555 003c 0123 movs r3, #1 11556 003e 2CE0 b .L563 11557 .L562: 5720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 5723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 11558 .loc 1 5723 6 11559 0040 FB88 ldrh r3, [r7, #6] 11560 0042 012B cmp r3, #1 11561 0044 05D1 bne .L564 5724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */ 5726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 11562 .loc 1 5726 28 11563 0046 3B89 ldrh r3, [r7, #8] @ movhi 11564 0048 DAB2 uxtb r2, r3 11565 .loc 1 5726 9 11566 004a FB68 ldr r3, [r7, #12] 11567 004c 1B68 ldr r3, [r3] 11568 .loc 1 5726 26 11569 004e 9A62 str r2, [r3, #40] 11570 0050 15E0 b .L565 11571 .L564: 5727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 5729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */ 5732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 11572 .loc 1 5732 28 11573 0052 3B89 ldrh r3, [r7, #8] 11574 0054 1B0A lsrs r3, r3, #8 11575 0056 9BB2 uxth r3, r3 11576 0058 DAB2 uxtb r2, r3 11577 .loc 1 5732 9 11578 005a FB68 ldr r3, [r7, #12] 11579 005c 1B68 ldr r3, [r3] 11580 .loc 1 5732 26 ARM GAS /tmp/cc5G5cqz.s page 306 11581 005e 9A62 str r2, [r3, #40] 5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 11582 .loc 1 5735 9 11583 0060 FA69 ldr r2, [r7, #28] 11584 0062 B969 ldr r1, [r7, #24] 11585 0064 F868 ldr r0, [r7, #12] 11586 0066 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 11587 006a 0346 mov r3, r0 11588 .loc 1 5735 8 discriminator 1 11589 006c 002B cmp r3, #0 11590 006e 01D0 beq .L566 5736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11591 .loc 1 5737 14 11592 0070 0123 movs r3, #1 11593 0072 12E0 b .L563 11594 .L566: 5738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */ 5741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 11595 .loc 1 5741 28 11596 0074 3B89 ldrh r3, [r7, #8] @ movhi 11597 0076 DAB2 uxtb r2, r3 11598 .loc 1 5741 9 11599 0078 FB68 ldr r3, [r7, #12] 11600 007a 1B68 ldr r3, [r3] 11601 .loc 1 5741 26 11602 007c 9A62 str r2, [r3, #40] 11603 .L565: 5742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TC flag is set */ 5745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) 11604 .loc 1 5745 7 11605 007e FB69 ldr r3, [r7, #28] 11606 0080 0093 str r3, [sp] 11607 0082 BB69 ldr r3, [r7, #24] 11608 0084 0022 movs r2, #0 11609 0086 4021 movs r1, #64 11610 0088 F868 ldr r0, [r7, #12] 11611 008a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 11612 008e 0346 mov r3, r0 11613 .loc 1 5745 6 discriminator 1 11614 0090 002B cmp r3, #0 11615 0092 01D0 beq .L567 5746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 11616 .loc 1 5747 12 11617 0094 0123 movs r3, #1 11618 0096 00E0 b .L563 11619 .L567: 5748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; ARM GAS /tmp/cc5G5cqz.s page 307 11620 .loc 1 5750 10 11621 0098 0023 movs r3, #0 11622 .L563: 5751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11623 .loc 1 5751 1 11624 009a 1846 mov r0, r3 11625 009c 1037 adds r7, r7, #16 11626 .cfi_def_cfa_offset 8 11627 009e BD46 mov sp, r7 11628 .cfi_def_cfa_register 13 11629 @ sp needed 11630 00a0 80BD pop {r7, pc} 11631 .L569: 11632 00a2 00BF .align 2 11633 .L568: 11634 00a4 00200080 .word -2147475456 11635 .cfi_endproc 11636 .LFE186: 11638 .section .text.I2C_ITAddrCplt,"ax",%progbits 11639 .align 1 11640 .syntax unified 11641 .thumb 11642 .thumb_func 11644 I2C_ITAddrCplt: 11645 .LFB187: 5752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Address complete process callback. 5755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 5756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 5758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11646 .loc 1 5760 1 11647 .cfi_startproc 11648 @ args = 0, pretend = 0, frame = 16 11649 @ frame_needed = 1, uses_anonymous_args = 0 11650 0000 80B5 push {r7, lr} 11651 .cfi_def_cfa_offset 8 11652 .cfi_offset 7, -8 11653 .cfi_offset 14, -4 11654 0002 84B0 sub sp, sp, #16 11655 .cfi_def_cfa_offset 24 11656 0004 00AF add r7, sp, #0 11657 .cfi_def_cfa_register 7 11658 0006 7860 str r0, [r7, #4] 11659 0008 3960 str r1, [r7] 5761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint8_t transferdirection; 5762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t slaveaddrcode; 5763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd1code; 5764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd2code; 5765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 5767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(ITFlags); 5768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of Listen state, need to inform upper layer of address match code event */ ARM GAS /tmp/cc5G5cqz.s page 308 5770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) 11660 .loc 1 5770 22 11661 000a 7B68 ldr r3, [r7, #4] 11662 000c 93F84130 ldrb r3, [r3, #65] 11663 0010 DBB2 uxtb r3, r3 11664 .loc 1 5770 30 11665 0012 03F02803 and r3, r3, #40 11666 .loc 1 5770 6 11667 0016 282B cmp r3, #40 11668 0018 6AD1 bne .L571 5771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transferdirection = I2C_GET_DIR(hi2c); 11669 .loc 1 5772 25 11670 001a 7B68 ldr r3, [r7, #4] 11671 001c 1B68 ldr r3, [r3] 11672 001e 9B69 ldr r3, [r3, #24] 11673 0020 1B0C lsrs r3, r3, #16 11674 0022 DBB2 uxtb r3, r3 11675 .loc 1 5772 23 11676 0024 03F00103 and r3, r3, #1 11677 0028 FB73 strb r3, [r7, #15] 5773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); 11678 .loc 1 5773 25 11679 002a 7B68 ldr r3, [r7, #4] 11680 002c 1B68 ldr r3, [r3] 11681 002e 9B69 ldr r3, [r3, #24] 11682 0030 1B0C lsrs r3, r3, #16 11683 0032 9BB2 uxth r3, r3 11684 .loc 1 5773 23 11685 0034 03F0FE03 and r3, r3, #254 11686 0038 BB81 strh r3, [r7, #12] @ movhi 5774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); 11687 .loc 1 5774 25 11688 003a 7B68 ldr r3, [r7, #4] 11689 003c 1B68 ldr r3, [r3] 11690 003e 9B68 ldr r3, [r3, #8] 11691 0040 9BB2 uxth r3, r3 11692 .loc 1 5774 23 11693 0042 C3F30903 ubfx r3, r3, #0, #10 11694 0046 7B81 strh r3, [r7, #10] @ movhi 5775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); 11695 .loc 1 5775 25 11696 0048 7B68 ldr r3, [r7, #4] 11697 004a 1B68 ldr r3, [r3] 11698 004c DB68 ldr r3, [r3, #12] 11699 004e 9BB2 uxth r3, r3 11700 .loc 1 5775 23 11701 0050 03F0FE03 and r3, r3, #254 11702 0054 3B81 strh r3, [r7, #8] @ movhi 5776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bits addressing mode is selected */ 5778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) 11703 .loc 1 5778 19 11704 0056 7B68 ldr r3, [r7, #4] 11705 0058 DB68 ldr r3, [r3, #12] 11706 .loc 1 5778 8 11707 005a 022B cmp r3, #2 ARM GAS /tmp/cc5G5cqz.s page 309 11708 005c 38D1 bne .L572 5779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) 11709 .loc 1 5780 44 11710 005e 7B89 ldrh r3, [r7, #10] 11711 0060 DB09 lsrs r3, r3, #7 11712 0062 9AB2 uxth r2, r3 11713 0064 BB89 ldrh r3, [r7, #12] @ movhi 11714 0066 5340 eors r3, r3, r2 11715 0068 9BB2 uxth r3, r3 11716 006a 03F00603 and r3, r3, #6 11717 .loc 1 5780 10 11718 006e 002B cmp r3, #0 11719 0070 1CD1 bne .L573 5781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = ownadd1code; 11720 .loc 1 5782 23 11721 0072 7B89 ldrh r3, [r7, #10] @ movhi 11722 0074 BB81 strh r3, [r7, #12] @ movhi 5783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount++; 11723 .loc 1 5783 13 11724 0076 7B68 ldr r3, [r7, #4] 11725 0078 9B6C ldr r3, [r3, #72] 11726 .loc 1 5783 29 11727 007a 5A1C adds r2, r3, #1 11728 007c 7B68 ldr r3, [r7, #4] 11729 007e 9A64 str r2, [r3, #72] 5784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) 11730 .loc 1 5784 17 11731 0080 7B68 ldr r3, [r7, #4] 11732 0082 9B6C ldr r3, [r3, #72] 11733 .loc 1 5784 12 11734 0084 022B cmp r3, #2 11735 0086 3BD1 bne .L575 5785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Address Event counter */ 5787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount = 0U; 11736 .loc 1 5787 32 11737 0088 7B68 ldr r3, [r7, #4] 11738 008a 0022 movs r2, #0 11739 008c 9A64 str r2, [r3, #72] 5788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 5790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 11740 .loc 1 5790 11 11741 008e 7B68 ldr r3, [r7, #4] 11742 0090 1B68 ldr r3, [r3] 11743 0092 0822 movs r2, #8 11744 0094 DA61 str r2, [r3, #28] 5791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11745 .loc 1 5793 11 11746 0096 7B68 ldr r3, [r7, #4] 11747 0098 0022 movs r2, #0 11748 009a 83F84020 strb r2, [r3, #64] 5794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 310 5795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 5796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 5798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 11749 .loc 1 5799 11 11750 009e BA89 ldrh r2, [r7, #12] 11751 00a0 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 11752 00a2 1946 mov r1, r3 11753 00a4 7868 ldr r0, [r7, #4] 11754 00a6 FFF7FEFF bl HAL_I2C_AddrCallback 5800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = ownadd2code; 5806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */ 5808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 5809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 5814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 5816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 5818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else 7 bits addressing mode is selected */ 5822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */ 5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 5826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 5831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 5833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 5835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Else clear address flag only */ 5839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 5842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 5843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS /tmp/cc5G5cqz.s page 311 5846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11755 .loc 1 5847 1 11756 00aa 29E0 b .L575 11757 .L573: 5805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11758 .loc 1 5805 23 11759 00ac 3B89 ldrh r3, [r7, #8] @ movhi 11760 00ae BB81 strh r3, [r7, #12] @ movhi 5808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11761 .loc 1 5808 9 11762 00b0 4FF40041 mov r1, #32768 11763 00b4 7868 ldr r0, [r7, #4] 11764 00b6 FFF7FEFF bl I2C_Disable_IRQ 5811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11765 .loc 1 5811 9 11766 00ba 7B68 ldr r3, [r7, #4] 11767 00bc 0022 movs r2, #0 11768 00be 83F84020 strb r2, [r3, #64] 5817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 11769 .loc 1 5817 9 11770 00c2 BA89 ldrh r2, [r7, #12] 11771 00c4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 11772 00c6 1946 mov r1, r3 11773 00c8 7868 ldr r0, [r7, #4] 11774 00ca FFF7FEFF bl HAL_I2C_AddrCallback 11775 .loc 1 5847 1 11776 00ce 17E0 b .L575 11777 .L572: 5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11778 .loc 1 5825 7 11779 00d0 4FF40041 mov r1, #32768 11780 00d4 7868 ldr r0, [r7, #4] 11781 00d6 FFF7FEFF bl I2C_Disable_IRQ 5828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11782 .loc 1 5828 7 11783 00da 7B68 ldr r3, [r7, #4] 11784 00dc 0022 movs r2, #0 11785 00de 83F84020 strb r2, [r3, #64] 5834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 11786 .loc 1 5834 7 11787 00e2 BA89 ldrh r2, [r7, #12] 11788 00e4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 11789 00e6 1946 mov r1, r3 11790 00e8 7868 ldr r0, [r7, #4] 11791 00ea FFF7FEFF bl HAL_I2C_AddrCallback 11792 .loc 1 5847 1 11793 00ee 07E0 b .L575 11794 .L571: 5842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11795 .loc 1 5842 5 11796 00f0 7B68 ldr r3, [r7, #4] 11797 00f2 1B68 ldr r3, [r3] 11798 00f4 0822 movs r2, #8 11799 00f6 DA61 str r2, [r3, #28] 5845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11800 .loc 1 5845 5 ARM GAS /tmp/cc5G5cqz.s page 312 11801 00f8 7B68 ldr r3, [r7, #4] 11802 00fa 0022 movs r2, #0 11803 00fc 83F84020 strb r2, [r3, #64] 11804 .L575: 11805 .loc 1 5847 1 11806 0100 00BF nop 11807 0102 1037 adds r7, r7, #16 11808 .cfi_def_cfa_offset 8 11809 0104 BD46 mov sp, r7 11810 .cfi_def_cfa_register 13 11811 @ sp needed 11812 0106 80BD pop {r7, pc} 11813 .cfi_endproc 11814 .LFE187: 11816 .section .text.I2C_ITMasterSeqCplt,"ax",%progbits 11817 .align 1 11818 .syntax unified 11819 .thumb 11820 .thumb_func 11822 I2C_ITMasterSeqCplt: 11823 .LFB188: 5848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master sequential complete process. 5851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 5852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 5853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) 5855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11824 .loc 1 5855 1 11825 .cfi_startproc 11826 @ args = 0, pretend = 0, frame = 8 11827 @ frame_needed = 1, uses_anonymous_args = 0 11828 0000 80B5 push {r7, lr} 11829 .cfi_def_cfa_offset 8 11830 .cfi_offset 7, -8 11831 .cfi_offset 14, -4 11832 0002 82B0 sub sp, sp, #8 11833 .cfi_def_cfa_offset 16 11834 0004 00AF add r7, sp, #0 11835 .cfi_def_cfa_register 7 11836 0006 7860 str r0, [r7, #4] 5856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */ 5857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 11837 .loc 1 5857 14 11838 0008 7B68 ldr r3, [r7, #4] 11839 000a 0022 movs r2, #0 11840 000c 83F84220 strb r2, [r3, #66] 5858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No Generate Stop, to permit restart mode */ 5860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ 5861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 11841 .loc 1 5861 11 11842 0010 7B68 ldr r3, [r7, #4] 11843 0012 93F84130 ldrb r3, [r3, #65] 11844 0016 DBB2 uxtb r3, r3 11845 .loc 1 5861 6 ARM GAS /tmp/cc5G5cqz.s page 313 11846 0018 212B cmp r3, #33 11847 001a 15D1 bne .L577 5862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 11848 .loc 1 5863 25 11849 001c 7B68 ldr r3, [r7, #4] 11850 001e 2022 movs r2, #32 11851 0020 83F84120 strb r2, [r3, #65] 5864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 11852 .loc 1 5864 25 11853 0024 7B68 ldr r3, [r7, #4] 11854 0026 1122 movs r2, #17 11855 0028 1A63 str r2, [r3, #48] 5865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 11856 .loc 1 5865 25 11857 002a 7B68 ldr r3, [r7, #4] 11858 002c 0022 movs r2, #0 11859 002e 5A63 str r2, [r3, #52] 5866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 5868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 11860 .loc 1 5868 5 11861 0030 0121 movs r1, #1 11862 0032 7868 ldr r0, [r7, #4] 11863 0034 FFF7FEFF bl I2C_Disable_IRQ 5869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11864 .loc 1 5871 5 11865 0038 7B68 ldr r3, [r7, #4] 11866 003a 0022 movs r2, #0 11867 003c 83F84020 strb r2, [r3, #64] 5872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); 5876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); 11868 .loc 1 5877 5 11869 0040 7868 ldr r0, [r7, #4] 11870 0042 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback 5878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ 5881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 5884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 5885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 5886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 5888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 5889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ ARM GAS /tmp/cc5G5cqz.s page 314 5894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); 5896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); 5898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11871 .loc 1 5900 1 11872 0046 14E0 b .L579 11873 .L577: 5883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 11874 .loc 1 5883 25 11875 0048 7B68 ldr r3, [r7, #4] 11876 004a 2022 movs r2, #32 11877 004c 83F84120 strb r2, [r3, #65] 5884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 11878 .loc 1 5884 25 11879 0050 7B68 ldr r3, [r7, #4] 11880 0052 1222 movs r2, #18 11881 0054 1A63 str r2, [r3, #48] 5885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11882 .loc 1 5885 25 11883 0056 7B68 ldr r3, [r7, #4] 11884 0058 0022 movs r2, #0 11885 005a 5A63 str r2, [r3, #52] 5888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11886 .loc 1 5888 5 11887 005c 0221 movs r1, #2 11888 005e 7868 ldr r0, [r7, #4] 11889 0060 FFF7FEFF bl I2C_Disable_IRQ 5891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 11890 .loc 1 5891 5 11891 0064 7B68 ldr r3, [r7, #4] 11892 0066 0022 movs r2, #0 11893 0068 83F84020 strb r2, [r3, #64] 5897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 11894 .loc 1 5897 5 11895 006c 7868 ldr r0, [r7, #4] 11896 006e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback 11897 .L579: 11898 .loc 1 5900 1 11899 0072 00BF nop 11900 0074 0837 adds r7, r7, #8 11901 .cfi_def_cfa_offset 8 11902 0076 BD46 mov sp, r7 11903 .cfi_def_cfa_register 13 11904 @ sp needed 11905 0078 80BD pop {r7, pc} 11906 .cfi_endproc 11907 .LFE188: 11909 .section .text.I2C_ITSlaveSeqCplt,"ax",%progbits 11910 .align 1 11911 .syntax unified 11912 .thumb 11913 .thumb_func 11915 I2C_ITSlaveSeqCplt: 11916 .LFB189: ARM GAS /tmp/cc5G5cqz.s page 315 5901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave sequential complete process. 5904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 5905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 5906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) 5908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11917 .loc 1 5908 1 11918 .cfi_startproc 11919 @ args = 0, pretend = 0, frame = 16 11920 @ frame_needed = 1, uses_anonymous_args = 0 11921 0000 80B5 push {r7, lr} 11922 .cfi_def_cfa_offset 8 11923 .cfi_offset 7, -8 11924 .cfi_offset 14, -4 11925 0002 84B0 sub sp, sp, #16 11926 .cfi_def_cfa_offset 24 11927 0004 00AF add r7, sp, #0 11928 .cfi_def_cfa_register 7 11929 0006 7860 str r0, [r7, #4] 5909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); 11930 .loc 1 5909 26 11931 0008 7B68 ldr r3, [r7, #4] 11932 000a 1B68 ldr r3, [r3] 11933 .loc 1 5909 12 11934 000c 1B68 ldr r3, [r3] 11935 000e FB60 str r3, [r7, #12] 5910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */ 5912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 11936 .loc 1 5912 14 11937 0010 7B68 ldr r3, [r7, #4] 11938 0012 0022 movs r2, #0 11939 0014 83F84220 strb r2, [r3, #66] 5913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ 5915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) 11940 .loc 1 5915 7 11941 0018 FB68 ldr r3, [r7, #12] 11942 001a 9B0B lsrs r3, r3, #14 11943 001c 03F00103 and r3, r3, #1 11944 .loc 1 5915 6 11945 0020 002B cmp r3, #0 11946 0022 08D0 beq .L581 5916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 5918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 11947 .loc 1 5918 9 11948 0024 7B68 ldr r3, [r7, #4] 11949 0026 1B68 ldr r3, [r3] 11950 .loc 1 5918 19 11951 0028 1A68 ldr r2, [r3] 11952 .loc 1 5918 9 11953 002a 7B68 ldr r3, [r7, #4] 11954 002c 1B68 ldr r3, [r3] 11955 .loc 1 5918 25 ARM GAS /tmp/cc5G5cqz.s page 316 11956 002e 22F48042 bic r2, r2, #16384 11957 0032 1A60 str r2, [r3] 11958 0034 0DE0 b .L582 11959 .L581: 5919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) 11960 .loc 1 5920 12 11961 0036 FB68 ldr r3, [r7, #12] 11962 0038 DB0B lsrs r3, r3, #15 11963 003a 03F00103 and r3, r3, #1 11964 .loc 1 5920 11 11965 003e 002B cmp r3, #0 11966 0040 07D0 beq .L582 5921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 5923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 11967 .loc 1 5923 9 11968 0042 7B68 ldr r3, [r7, #4] 11969 0044 1B68 ldr r3, [r3] 11970 .loc 1 5923 19 11971 0046 1A68 ldr r2, [r3] 11972 .loc 1 5923 9 11973 0048 7B68 ldr r3, [r7, #4] 11974 004a 1B68 ldr r3, [r3] 11975 .loc 1 5923 25 11976 004c 22F40042 bic r2, r2, #32768 11977 0050 1A60 str r2, [r3] 11978 .L582: 5924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 5928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 11979 .loc 1 5930 11 11980 0052 7B68 ldr r3, [r7, #4] 11981 0054 93F84130 ldrb r3, [r3, #65] 11982 0058 DBB2 uxtb r3, r3 11983 .loc 1 5930 6 11984 005a 292B cmp r3, #41 11985 005c 12D1 bne .L583 5931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ 5933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 11986 .loc 1 5933 25 11987 005e 7B68 ldr r3, [r7, #4] 11988 0060 2822 movs r2, #40 11989 0062 83F84120 strb r2, [r3, #65] 5934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 11990 .loc 1 5934 25 11991 0066 7B68 ldr r3, [r7, #4] 11992 0068 2122 movs r2, #33 11993 006a 1A63 str r2, [r3, #48] 5935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 5937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); ARM GAS /tmp/cc5G5cqz.s page 317 11994 .loc 1 5937 5 11995 006c 0121 movs r1, #1 11996 006e 7868 ldr r0, [r7, #4] 11997 0070 FFF7FEFF bl I2C_Disable_IRQ 5938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11998 .loc 1 5940 5 11999 0074 7B68 ldr r3, [r7, #4] 12000 0076 0022 movs r2, #0 12001 0078 83F84020 strb r2, [r3, #64] 5941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); 5945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); 12002 .loc 1 5946 5 12003 007c 7868 ldr r0, [r7, #4] 12004 007e FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback 5947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 5951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ 5953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 5954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 5955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 5957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 5958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); 5965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); 5967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12005 .loc 1 5973 1 12006 0082 17E0 b .L585 12007 .L583: 5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12008 .loc 1 5950 16 12009 0084 7B68 ldr r3, [r7, #4] 12010 0086 93F84130 ldrb r3, [r3, #65] 12011 008a DBB2 uxtb r3, r3 5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12012 .loc 1 5950 11 ARM GAS /tmp/cc5G5cqz.s page 318 12013 008c 2A2B cmp r3, #42 12014 008e 11D1 bne .L585 5953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 12015 .loc 1 5953 25 12016 0090 7B68 ldr r3, [r7, #4] 12017 0092 2822 movs r2, #40 12018 0094 83F84120 strb r2, [r3, #65] 5954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12019 .loc 1 5954 25 12020 0098 7B68 ldr r3, [r7, #4] 12021 009a 2222 movs r2, #34 12022 009c 1A63 str r2, [r3, #48] 5957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12023 .loc 1 5957 5 12024 009e 0221 movs r1, #2 12025 00a0 7868 ldr r0, [r7, #4] 12026 00a2 FFF7FEFF bl I2C_Disable_IRQ 5960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12027 .loc 1 5960 5 12028 00a6 7B68 ldr r3, [r7, #4] 12029 00a8 0022 movs r2, #0 12030 00aa 83F84020 strb r2, [r3, #64] 5966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12031 .loc 1 5966 5 12032 00ae 7868 ldr r0, [r7, #4] 12033 00b0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback 12034 .L585: 12035 .loc 1 5973 1 12036 00b4 00BF nop 12037 00b6 1037 adds r7, r7, #16 12038 .cfi_def_cfa_offset 8 12039 00b8 BD46 mov sp, r7 12040 .cfi_def_cfa_register 13 12041 @ sp needed 12042 00ba 80BD pop {r7, pc} 12043 .cfi_endproc 12044 .LFE189: 12046 .section .text.I2C_ITMasterCplt,"ax",%progbits 12047 .align 1 12048 .syntax unified 12049 .thumb 12050 .thumb_func 12052 I2C_ITMasterCplt: 12053 .LFB190: 5974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master complete process. 5977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 5978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 5980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 5982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12054 .loc 1 5982 1 12055 .cfi_startproc 12056 @ args = 0, pretend = 0, frame = 24 12057 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS /tmp/cc5G5cqz.s page 319 12058 0000 80B5 push {r7, lr} 12059 .cfi_def_cfa_offset 8 12060 .cfi_offset 7, -8 12061 .cfi_offset 14, -4 12062 0002 86B0 sub sp, sp, #24 12063 .cfi_def_cfa_offset 32 12064 0004 00AF add r7, sp, #0 12065 .cfi_def_cfa_register 7 12066 0006 7860 str r0, [r7, #4] 12067 0008 3960 str r1, [r7] 5983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror; 5984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 12068 .loc 1 5984 12 12069 000a 3B68 ldr r3, [r7] 12070 000c 7B61 str r3, [r7, #20] 5985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t tmpreg; 5986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 5988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 12071 .loc 1 5988 3 12072 000e 7B68 ldr r3, [r7, #4] 12073 0010 1B68 ldr r3, [r3] 12074 0012 2022 movs r2, #32 12075 0014 DA61 str r2, [r3, #28] 5989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 5991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 12076 .loc 1 5991 11 12077 0016 7B68 ldr r3, [r7, #4] 12078 0018 93F84130 ldrb r3, [r3, #65] 12079 001c DBB2 uxtb r3, r3 12080 .loc 1 5991 6 12081 001e 212B cmp r3, #33 12082 0020 07D1 bne .L587 5992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 12083 .loc 1 5993 5 12084 0022 0121 movs r1, #1 12085 0024 7868 ldr r0, [r7, #4] 12086 0026 FFF7FEFF bl I2C_Disable_IRQ 5994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 12087 .loc 1 5994 25 12088 002a 7B68 ldr r3, [r7, #4] 12089 002c 1122 movs r2, #17 12090 002e 1A63 str r2, [r3, #48] 12091 0030 0CE0 b .L588 12092 .L587: 5995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 12093 .loc 1 5996 16 12094 0032 7B68 ldr r3, [r7, #4] 12095 0034 93F84130 ldrb r3, [r3, #65] 12096 0038 DBB2 uxtb r3, r3 12097 .loc 1 5996 11 12098 003a 222B cmp r3, #34 12099 003c 06D1 bne .L588 5997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 320 5998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 12100 .loc 1 5998 5 12101 003e 0221 movs r1, #2 12102 0040 7868 ldr r0, [r7, #4] 12103 0042 FFF7FEFF bl I2C_Disable_IRQ 5999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 12104 .loc 1 5999 25 12105 0046 7B68 ldr r3, [r7, #4] 12106 0048 1222 movs r2, #18 12107 004a 1A63 str r2, [r3, #48] 12108 .L588: 6000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 6007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 12109 .loc 1 6007 3 12110 004c 7B68 ldr r3, [r7, #4] 12111 004e 1B68 ldr r3, [r3] 12112 0050 5968 ldr r1, [r3, #4] 12113 0052 7B68 ldr r3, [r7, #4] 12114 0054 1A68 ldr r2, [r3] 12115 0056 4D4B ldr r3, .L598 12116 0058 0B40 ands r3, r3, r1 12117 005a 5360 str r3, [r2, #4] 6008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 12118 .loc 1 6010 23 12119 005c 7B68 ldr r3, [r7, #4] 12120 005e 0022 movs r2, #0 12121 0060 5A63 str r2, [r3, #52] 6011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 12122 .loc 1 6011 23 12123 0062 7B68 ldr r3, [r7, #4] 12124 0064 4A4A ldr r2, .L598+4 12125 0066 DA62 str r2, [r3, #44] 6012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) 12126 .loc 1 6013 7 12127 0068 7B69 ldr r3, [r7, #20] 12128 006a 1B09 lsrs r3, r3, #4 12129 006c 03F00103 and r3, r3, #1 12130 .loc 1 6013 6 12131 0070 002B cmp r3, #0 12132 0072 09D0 beq .L589 6014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12133 .loc 1 6016 5 12134 0074 7B68 ldr r3, [r7, #4] 12135 0076 1B68 ldr r3, [r3] 12136 0078 1022 movs r2, #16 12137 007a DA61 str r2, [r3, #28] ARM GAS /tmp/cc5G5cqz.s page 321 6017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set acknowledge error code */ 6019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 12138 .loc 1 6019 9 12139 007c 7B68 ldr r3, [r7, #4] 12140 007e 5B6C ldr r3, [r3, #68] 12141 .loc 1 6019 21 12142 0080 43F00402 orr r2, r3, #4 12143 0084 7B68 ldr r3, [r7, #4] 12144 0086 5A64 str r2, [r3, #68] 12145 .L589: 6020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Fetch Last receive data if any */ 6023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) 12146 .loc 1 6023 12 12147 0088 7B68 ldr r3, [r7, #4] 12148 008a 93F84130 ldrb r3, [r3, #65] 12149 008e DBB2 uxtb r3, r3 12150 .loc 1 6023 6 12151 0090 602B cmp r3, #96 12152 0092 0BD1 bne .L590 12153 .loc 1 6023 48 discriminator 1 12154 0094 7B69 ldr r3, [r7, #20] 12155 0096 9B08 lsrs r3, r3, #2 12156 0098 03F00103 and r3, r3, #1 12157 .loc 1 6023 44 discriminator 1 12158 009c 002B cmp r3, #0 12159 009e 05D0 beq .L590 6024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpreg = (uint8_t)hi2c->Instance->RXDR; 12160 .loc 1 6026 27 12161 00a0 7B68 ldr r3, [r7, #4] 12162 00a2 1B68 ldr r3, [r3] 12163 .loc 1 6026 37 12164 00a4 5B6A ldr r3, [r3, #36] 12165 .loc 1 6026 14 12166 00a6 DBB2 uxtb r3, r3 12167 .loc 1 6026 12 12168 00a8 FB60 str r3, [r7, #12] 6027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(tmpreg); 12169 .loc 1 6027 5 12170 00aa FB68 ldr r3, [r7, #12] 12171 .L590: 6028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 12172 .loc 1 6031 3 12173 00ac 7868 ldr r0, [r7, #4] 12174 00ae FFF7FEFF bl I2C_Flush_TXDR 6032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ 6034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; 12175 .loc 1 6034 12 12176 00b2 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 322 12177 00b4 5B6C ldr r3, [r3, #68] 12178 00b6 3B61 str r3, [r7, #16] 6035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) 12179 .loc 1 6037 12 12180 00b8 7B68 ldr r3, [r7, #4] 12181 00ba 93F84130 ldrb r3, [r3, #65] 12182 00be DBB2 uxtb r3, r3 12183 .loc 1 6037 6 12184 00c0 602B cmp r3, #96 12185 00c2 02D0 beq .L591 12186 .loc 1 6037 44 discriminator 1 12187 00c4 3B69 ldr r3, [r7, #16] 12188 00c6 002B cmp r3, #0 12189 00c8 06D0 beq .L592 12190 .L591: 6038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 12191 .loc 1 6040 27 12192 00ca 7B68 ldr r3, [r7, #4] 12193 00cc 5B6C ldr r3, [r3, #68] 12194 .loc 1 6040 5 12195 00ce 1946 mov r1, r3 12196 00d0 7868 ldr r0, [r7, #4] 12197 00d2 FFF7FEFF bl I2C_ITError 6041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ 6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 6044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) 6049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback(hi2c); 6058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemTxCpltCallback(hi2c); 6060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) ARM GAS /tmp/cc5G5cqz.s page 323 6071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); 6072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); 6074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ 6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 6079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) 6084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback(hi2c); 6093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemRxCpltCallback(hi2c); 6095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); 6107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); 6109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 6115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12198 .loc 1 6116 1 12199 00d6 54E0 b .L597 12200 .L592: 6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12201 .loc 1 6043 16 12202 00d8 7B68 ldr r3, [r7, #4] 12203 00da 93F84130 ldrb r3, [r3, #65] 12204 00de DBB2 uxtb r3, r3 6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12205 .loc 1 6043 11 12206 00e0 212B cmp r3, #33 ARM GAS /tmp/cc5G5cqz.s page 324 12207 00e2 24D1 bne .L594 6045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12208 .loc 1 6045 17 12209 00e4 7B68 ldr r3, [r7, #4] 12210 00e6 2022 movs r2, #32 12211 00e8 83F84120 strb r2, [r3, #65] 6046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12212 .loc 1 6046 25 12213 00ec 7B68 ldr r3, [r7, #4] 12214 00ee 0022 movs r2, #0 12215 00f0 1A63 str r2, [r3, #48] 6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12216 .loc 1 6048 13 12217 00f2 7B68 ldr r3, [r7, #4] 12218 00f4 93F84230 ldrb r3, [r3, #66] 12219 00f8 DBB2 uxtb r3, r3 6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12220 .loc 1 6048 8 12221 00fa 402B cmp r3, #64 12222 00fc 0BD1 bne .L595 6050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12223 .loc 1 6050 18 12224 00fe 7B68 ldr r3, [r7, #4] 12225 0100 0022 movs r2, #0 12226 0102 83F84220 strb r2, [r3, #66] 6053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12227 .loc 1 6053 7 12228 0106 7B68 ldr r3, [r7, #4] 12229 0108 0022 movs r2, #0 12230 010a 83F84020 strb r2, [r3, #64] 6059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12231 .loc 1 6059 7 12232 010e 7868 ldr r0, [r7, #4] 12233 0110 FFF7FEFF bl HAL_I2C_MemTxCpltCallback 12234 .loc 1 6116 1 12235 0114 35E0 b .L597 12236 .L595: 6064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12237 .loc 1 6064 18 12238 0116 7B68 ldr r3, [r7, #4] 12239 0118 0022 movs r2, #0 12240 011a 83F84220 strb r2, [r3, #66] 6067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12241 .loc 1 6067 7 12242 011e 7B68 ldr r3, [r7, #4] 12243 0120 0022 movs r2, #0 12244 0122 83F84020 strb r2, [r3, #64] 6073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12245 .loc 1 6073 7 12246 0126 7868 ldr r0, [r7, #4] 12247 0128 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback 12248 .loc 1 6116 1 12249 012c 29E0 b .L597 12250 .L594: 6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12251 .loc 1 6078 16 12252 012e 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 325 12253 0130 93F84130 ldrb r3, [r3, #65] 12254 0134 DBB2 uxtb r3, r3 6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12255 .loc 1 6078 11 12256 0136 222B cmp r3, #34 12257 0138 23D1 bne .L597 6080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12258 .loc 1 6080 17 12259 013a 7B68 ldr r3, [r7, #4] 12260 013c 2022 movs r2, #32 12261 013e 83F84120 strb r2, [r3, #65] 6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12262 .loc 1 6081 25 12263 0142 7B68 ldr r3, [r7, #4] 12264 0144 0022 movs r2, #0 12265 0146 1A63 str r2, [r3, #48] 6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12266 .loc 1 6083 13 12267 0148 7B68 ldr r3, [r7, #4] 12268 014a 93F84230 ldrb r3, [r3, #66] 12269 014e DBB2 uxtb r3, r3 6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12270 .loc 1 6083 8 12271 0150 402B cmp r3, #64 12272 0152 0BD1 bne .L596 6085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12273 .loc 1 6085 18 12274 0154 7B68 ldr r3, [r7, #4] 12275 0156 0022 movs r2, #0 12276 0158 83F84220 strb r2, [r3, #66] 6088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12277 .loc 1 6088 7 12278 015c 7B68 ldr r3, [r7, #4] 12279 015e 0022 movs r2, #0 12280 0160 83F84020 strb r2, [r3, #64] 6094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12281 .loc 1 6094 7 12282 0164 7868 ldr r0, [r7, #4] 12283 0166 FFF7FEFF bl HAL_I2C_MemRxCpltCallback 12284 .loc 1 6116 1 12285 016a 0AE0 b .L597 12286 .L596: 6099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12287 .loc 1 6099 18 12288 016c 7B68 ldr r3, [r7, #4] 12289 016e 0022 movs r2, #0 12290 0170 83F84220 strb r2, [r3, #66] 6102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12291 .loc 1 6102 7 12292 0174 7B68 ldr r3, [r7, #4] 12293 0176 0022 movs r2, #0 12294 0178 83F84020 strb r2, [r3, #64] 6108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12295 .loc 1 6108 7 12296 017c 7868 ldr r0, [r7, #4] 12297 017e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback 12298 .L597: ARM GAS /tmp/cc5G5cqz.s page 326 12299 .loc 1 6116 1 12300 0182 00BF nop 12301 0184 1837 adds r7, r7, #24 12302 .cfi_def_cfa_offset 8 12303 0186 BD46 mov sp, r7 12304 .cfi_def_cfa_register 13 12305 @ sp needed 12306 0188 80BD pop {r7, pc} 12307 .L599: 12308 018a 00BF .align 2 12309 .L598: 12310 018c 00E800FE .word -33495040 12311 0190 0000FFFF .word -65536 12312 .cfi_endproc 12313 .LFE190: 12315 .section .text.I2C_ITSlaveCplt,"ax",%progbits 12316 .align 1 12317 .syntax unified 12318 .thumb 12319 .thumb_func 12321 I2C_ITSlaveCplt: 12322 .LFB191: 6117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave complete process. 6120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 6122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 6125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12323 .loc 1 6125 1 12324 .cfi_startproc 12325 @ args = 0, pretend = 0, frame = 24 12326 @ frame_needed = 1, uses_anonymous_args = 0 12327 0000 80B5 push {r7, lr} 12328 .cfi_def_cfa_offset 8 12329 .cfi_offset 7, -8 12330 .cfi_offset 14, -4 12331 0002 86B0 sub sp, sp, #24 12332 .cfi_def_cfa_offset 32 12333 0004 00AF add r7, sp, #0 12334 .cfi_def_cfa_register 7 12335 0006 7860 str r0, [r7, #4] 12336 0008 3960 str r1, [r7] 6126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); 12337 .loc 1 6126 26 12338 000a 7B68 ldr r3, [r7, #4] 12339 000c 1B68 ldr r3, [r3] 12340 .loc 1 6126 12 12341 000e 1B68 ldr r3, [r3] 12342 0010 3B61 str r3, [r7, #16] 6127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 12343 .loc 1 6127 12 12344 0012 3B68 ldr r3, [r7] 12345 0014 7B61 str r3, [r7, #20] 6128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; ARM GAS /tmp/cc5G5cqz.s page 327 12346 .loc 1 6128 24 12347 0016 7B68 ldr r3, [r7, #4] 12348 0018 93F84130 ldrb r3, [r3, #65] 12349 001c FB73 strb r3, [r7, #15] 6129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 12350 .loc 1 6131 3 12351 001e 7B68 ldr r3, [r7, #4] 12352 0020 1B68 ldr r3, [r3] 12353 0022 2022 movs r2, #32 12354 0024 DA61 str r2, [r3, #28] 6132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 6134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) 12355 .loc 1 6134 6 12356 0026 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12357 0028 212B cmp r3, #33 12358 002a 02D0 beq .L601 12359 .loc 1 6134 43 discriminator 1 12360 002c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12361 002e 292B cmp r3, #41 12362 0030 08D1 bne .L602 12363 .L601: 6135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); 12364 .loc 1 6136 5 12365 0032 48F20101 movw r1, #32769 12366 0036 7868 ldr r0, [r7, #4] 12367 0038 FFF7FEFF bl I2C_Disable_IRQ 6137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 12368 .loc 1 6137 25 12369 003c 7B68 ldr r3, [r7, #4] 12370 003e 2122 movs r2, #33 12371 0040 1A63 str r2, [r3, #48] 12372 0042 0DE0 b .L603 12373 .L602: 6138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) 12374 .loc 1 6139 11 12375 0044 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12376 0046 222B cmp r3, #34 12377 0048 02D0 beq .L604 12378 .loc 1 6139 48 discriminator 1 12379 004a FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12380 004c 2A2B cmp r3, #42 12381 004e 07D1 bne .L603 12382 .L604: 6140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 12383 .loc 1 6141 5 12384 0050 48F20201 movw r1, #32770 12385 0054 7868 ldr r0, [r7, #4] 12386 0056 FFF7FEFF bl I2C_Disable_IRQ 6142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 12387 .loc 1 6142 25 12388 005a 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 328 12389 005c 2222 movs r2, #34 12390 005e 1A63 str r2, [r3, #48] 12391 .L603: 6143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 6150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 12392 .loc 1 6150 7 12393 0060 7B68 ldr r3, [r7, #4] 12394 0062 1B68 ldr r3, [r3] 12395 .loc 1 6150 17 12396 0064 5A68 ldr r2, [r3, #4] 12397 .loc 1 6150 7 12398 0066 7B68 ldr r3, [r7, #4] 12399 0068 1B68 ldr r3, [r3] 12400 .loc 1 6150 23 12401 006a 42F40042 orr r2, r2, #32768 12402 006e 5A60 str r2, [r3, #4] 6151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 6153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 12403 .loc 1 6153 3 12404 0070 7B68 ldr r3, [r7, #4] 12405 0072 1B68 ldr r3, [r3] 12406 0074 5968 ldr r1, [r3, #4] 12407 0076 7B68 ldr r3, [r7, #4] 12408 0078 1A68 ldr r2, [r3] 12409 007a 644B ldr r3, .L614 12410 007c 0B40 ands r3, r3, r1 12411 007e 5360 str r3, [r2, #4] 6154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 12412 .loc 1 6156 3 12413 0080 7868 ldr r0, [r7, #4] 12414 0082 FFF7FEFF bl I2C_Flush_TXDR 6157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ 6159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) 12415 .loc 1 6159 7 12416 0086 3B69 ldr r3, [r7, #16] 12417 0088 9B0B lsrs r3, r3, #14 12418 008a 03F00103 and r3, r3, #1 12419 .loc 1 6159 6 12420 008e 002B cmp r3, #0 12421 0090 13D0 beq .L605 6160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 12422 .loc 1 6162 9 12423 0092 7B68 ldr r3, [r7, #4] 12424 0094 1B68 ldr r3, [r3] 12425 .loc 1 6162 19 ARM GAS /tmp/cc5G5cqz.s page 329 12426 0096 1A68 ldr r2, [r3] 12427 .loc 1 6162 9 12428 0098 7B68 ldr r3, [r7, #4] 12429 009a 1B68 ldr r3, [r3] 12430 .loc 1 6162 25 12431 009c 22F48042 bic r2, r2, #16384 12432 00a0 1A60 str r2, [r3] 6163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 12433 .loc 1 6164 13 12434 00a2 7B68 ldr r3, [r7, #4] 12435 00a4 9B6B ldr r3, [r3, #56] 12436 .loc 1 6164 8 12437 00a6 002B cmp r3, #0 12438 00a8 20D0 beq .L606 6165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); 12439 .loc 1 6166 35 12440 00aa 7B68 ldr r3, [r7, #4] 12441 00ac 9B6B ldr r3, [r3, #56] 12442 00ae 1B68 ldr r3, [r3] 12443 00b0 5B68 ldr r3, [r3, #4] 12444 .loc 1 6166 25 12445 00b2 9AB2 uxth r2, r3 12446 .loc 1 6166 23 12447 00b4 7B68 ldr r3, [r7, #4] 12448 00b6 5A85 strh r2, [r3, #42] @ movhi 12449 00b8 18E0 b .L606 12450 .L605: 6167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) 12451 .loc 1 6169 12 12452 00ba 3B69 ldr r3, [r7, #16] 12453 00bc DB0B lsrs r3, r3, #15 12454 00be 03F00103 and r3, r3, #1 12455 .loc 1 6169 11 12456 00c2 002B cmp r3, #0 12457 00c4 12D0 beq .L606 6170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 12458 .loc 1 6172 9 12459 00c6 7B68 ldr r3, [r7, #4] 12460 00c8 1B68 ldr r3, [r3] 12461 .loc 1 6172 19 12462 00ca 1A68 ldr r2, [r3] 12463 .loc 1 6172 9 12464 00cc 7B68 ldr r3, [r7, #4] 12465 00ce 1B68 ldr r3, [r3] 12466 .loc 1 6172 25 12467 00d0 22F40042 bic r2, r2, #32768 12468 00d4 1A60 str r2, [r3] 6173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 12469 .loc 1 6174 13 12470 00d6 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 330 12471 00d8 DB6B ldr r3, [r3, #60] 12472 .loc 1 6174 8 12473 00da 002B cmp r3, #0 12474 00dc 06D0 beq .L606 6175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); 12475 .loc 1 6176 35 12476 00de 7B68 ldr r3, [r7, #4] 12477 00e0 DB6B ldr r3, [r3, #60] 12478 00e2 1B68 ldr r3, [r3] 12479 00e4 5B68 ldr r3, [r3, #4] 12480 .loc 1 6176 25 12481 00e6 9AB2 uxth r2, r3 12482 .loc 1 6176 23 12483 00e8 7B68 ldr r3, [r7, #4] 12484 00ea 5A85 strh r2, [r3, #42] @ movhi 12485 .L606: 6177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 6185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) 12486 .loc 1 6185 7 12487 00ec 7B69 ldr r3, [r7, #20] 12488 00ee 9B08 lsrs r3, r3, #2 12489 00f0 03F00103 and r3, r3, #1 12490 .loc 1 6185 6 12491 00f4 002B cmp r3, #0 12492 00f6 20D0 beq .L607 6186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 6188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 12493 .loc 1 6188 16 12494 00f8 7B69 ldr r3, [r7, #20] 12495 00fa 23F00403 bic r3, r3, #4 12496 00fe 7B61 str r3, [r7, #20] 6189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 12497 .loc 1 6191 36 12498 0100 7B68 ldr r3, [r7, #4] 12499 0102 1B68 ldr r3, [r3] 12500 .loc 1 6191 46 12501 0104 5A6A ldr r2, [r3, #36] 12502 .loc 1 6191 10 12503 0106 7B68 ldr r3, [r7, #4] 12504 0108 5B6A ldr r3, [r3, #36] 12505 .loc 1 6191 23 12506 010a D2B2 uxtb r2, r2 12507 .loc 1 6191 21 12508 010c 1A70 strb r2, [r3] 6192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ ARM GAS /tmp/cc5G5cqz.s page 331 6194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 12509 .loc 1 6194 9 12510 010e 7B68 ldr r3, [r7, #4] 12511 0110 5B6A ldr r3, [r3, #36] 12512 .loc 1 6194 19 12513 0112 5A1C adds r2, r3, #1 12514 0114 7B68 ldr r3, [r7, #4] 12515 0116 5A62 str r2, [r3, #36] 6195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) 12516 .loc 1 6196 14 12517 0118 7B68 ldr r3, [r7, #4] 12518 011a 1B8D ldrh r3, [r3, #40] 12519 .loc 1 6196 8 12520 011c 002B cmp r3, #0 12521 011e 0CD0 beq .L607 6197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 12522 .loc 1 6198 11 12523 0120 7B68 ldr r3, [r7, #4] 12524 0122 1B8D ldrh r3, [r3, #40] 12525 .loc 1 6198 21 12526 0124 013B subs r3, r3, #1 12527 0126 9AB2 uxth r2, r3 12528 0128 7B68 ldr r3, [r7, #4] 12529 012a 1A85 strh r2, [r3, #40] @ movhi 6199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 12530 .loc 1 6199 11 12531 012c 7B68 ldr r3, [r7, #4] 12532 012e 5B8D ldrh r3, [r3, #42] @ movhi 12533 0130 9BB2 uxth r3, r3 12534 .loc 1 6199 22 12535 0132 013B subs r3, r3, #1 12536 0134 9AB2 uxth r2, r3 12537 0136 7B68 ldr r3, [r7, #4] 12538 0138 5A85 strh r2, [r3, #42] @ movhi 12539 .L607: 6200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* All data are not transferred, so set error code accordingly */ 6204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 12540 .loc 1 6204 11 12541 013a 7B68 ldr r3, [r7, #4] 12542 013c 5B8D ldrh r3, [r3, #42] @ movhi 12543 013e 9BB2 uxth r3, r3 12544 .loc 1 6204 6 12545 0140 002B cmp r3, #0 12546 0142 05D0 beq .L608 6205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 6207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 12547 .loc 1 6207 9 12548 0144 7B68 ldr r3, [r7, #4] 12549 0146 5B6C ldr r3, [r3, #68] 12550 .loc 1 6207 21 12551 0148 43F00402 orr r2, r3, #4 ARM GAS /tmp/cc5G5cqz.s page 332 12552 014c 7B68 ldr r3, [r7, #4] 12553 014e 5A64 str r2, [r3, #68] 12554 .L608: 6208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 12555 .loc 1 6210 14 12556 0150 7B68 ldr r3, [r7, #4] 12557 0152 0022 movs r2, #0 12558 0154 83F84220 strb r2, [r3, #66] 6211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 12559 .loc 1 6211 17 12560 0158 7B68 ldr r3, [r7, #4] 12561 015a 0022 movs r2, #0 12562 015c 5A63 str r2, [r3, #52] 6212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) 12563 .loc 1 6213 11 12564 015e 7B68 ldr r3, [r7, #4] 12565 0160 5B6C ldr r3, [r3, #68] 12566 .loc 1 6213 6 12567 0162 002B cmp r3, #0 12568 0164 10D0 beq .L609 6214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 12569 .loc 1 6216 27 12570 0166 7B68 ldr r3, [r7, #4] 12571 0168 5B6C ldr r3, [r3, #68] 12572 .loc 1 6216 5 12573 016a 1946 mov r1, r3 12574 016c 7868 ldr r0, [r7, #4] 12575 016e FFF7FEFF bl I2C_ITError 6217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) 12576 .loc 1 6219 13 12577 0172 7B68 ldr r3, [r7, #4] 12578 0174 93F84130 ldrb r3, [r3, #65] 12579 0178 DBB2 uxtb r3, r3 12580 .loc 1 6219 8 12581 017a 282B cmp r3, #40 12582 017c 41D1 bne .L613 6220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 6222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); 12583 .loc 1 6222 7 12584 017e 7969 ldr r1, [r7, #20] 12585 0180 7868 ldr r0, [r7, #4] 12586 0182 FFF7FEFF bl I2C_ITListenCplt 6223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 6226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ 6228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 6229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 333 6230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 6231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); 6240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); 6242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 6246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); 6256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); 6258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); 6271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); 6273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12587 .loc 1 6275 1 12588 0186 3CE0 b .L613 12589 .L609: 6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12590 .loc 1 6225 16 12591 0188 7B68 ldr r3, [r7, #4] 12592 018a DB6A ldr r3, [r3, #44] 6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12593 .loc 1 6225 11 12594 018c 13F5803F cmn r3, #65536 12595 0190 14D0 beq .L611 ARM GAS /tmp/cc5G5cqz.s page 334 6228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12596 .loc 1 6228 5 12597 0192 7868 ldr r0, [r7, #4] 12598 0194 FFF7FEFF bl I2C_ITSlaveSeqCplt 6230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 12599 .loc 1 6230 23 12600 0198 7B68 ldr r3, [r7, #4] 12601 019a 1D4A ldr r2, .L614+4 12602 019c DA62 str r2, [r3, #44] 6231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12603 .loc 1 6231 17 12604 019e 7B68 ldr r3, [r7, #4] 12605 01a0 2022 movs r2, #32 12606 01a2 83F84120 strb r2, [r3, #65] 6232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12607 .loc 1 6232 25 12608 01a6 7B68 ldr r3, [r7, #4] 12609 01a8 0022 movs r2, #0 12610 01aa 1A63 str r2, [r3, #48] 6235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12611 .loc 1 6235 5 12612 01ac 7B68 ldr r3, [r7, #4] 12613 01ae 0022 movs r2, #0 12614 01b0 83F84020 strb r2, [r3, #64] 6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12615 .loc 1 6241 5 12616 01b4 7868 ldr r0, [r7, #4] 12617 01b6 FFF7FEFF bl HAL_I2C_ListenCpltCallback 12618 .loc 1 6275 1 12619 01ba 22E0 b .L613 12620 .L611: 6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12621 .loc 1 6245 16 12622 01bc 7B68 ldr r3, [r7, #4] 12623 01be 93F84130 ldrb r3, [r3, #65] 12624 01c2 DBB2 uxtb r3, r3 6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12625 .loc 1 6245 11 12626 01c4 222B cmp r3, #34 12627 01c6 0ED1 bne .L612 6247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12628 .loc 1 6247 17 12629 01c8 7B68 ldr r3, [r7, #4] 12630 01ca 2022 movs r2, #32 12631 01cc 83F84120 strb r2, [r3, #65] 6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12632 .loc 1 6248 25 12633 01d0 7B68 ldr r3, [r7, #4] 12634 01d2 0022 movs r2, #0 12635 01d4 1A63 str r2, [r3, #48] 6251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12636 .loc 1 6251 5 12637 01d6 7B68 ldr r3, [r7, #4] 12638 01d8 0022 movs r2, #0 12639 01da 83F84020 strb r2, [r3, #64] 6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12640 .loc 1 6257 5 ARM GAS /tmp/cc5G5cqz.s page 335 12641 01de 7868 ldr r0, [r7, #4] 12642 01e0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback 12643 .loc 1 6275 1 12644 01e4 0DE0 b .L613 12645 .L612: 6262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12646 .loc 1 6262 17 12647 01e6 7B68 ldr r3, [r7, #4] 12648 01e8 2022 movs r2, #32 12649 01ea 83F84120 strb r2, [r3, #65] 6263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12650 .loc 1 6263 25 12651 01ee 7B68 ldr r3, [r7, #4] 12652 01f0 0022 movs r2, #0 12653 01f2 1A63 str r2, [r3, #48] 6266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 12654 .loc 1 6266 5 12655 01f4 7B68 ldr r3, [r7, #4] 12656 01f6 0022 movs r2, #0 12657 01f8 83F84020 strb r2, [r3, #64] 6272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 12658 .loc 1 6272 5 12659 01fc 7868 ldr r0, [r7, #4] 12660 01fe FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback 12661 .L613: 12662 .loc 1 6275 1 12663 0202 00BF nop 12664 0204 1837 adds r7, r7, #24 12665 .cfi_def_cfa_offset 8 12666 0206 BD46 mov sp, r7 12667 .cfi_def_cfa_register 13 12668 @ sp needed 12669 0208 80BD pop {r7, pc} 12670 .L615: 12671 020a 00BF .align 2 12672 .L614: 12673 020c 00E800FE .word -33495040 12674 0210 0000FFFF .word -65536 12675 .cfi_endproc 12676 .LFE191: 12678 .section .text.I2C_ITListenCplt,"ax",%progbits 12679 .align 1 12680 .syntax unified 12681 .thumb 12682 .thumb_func 12684 I2C_ITListenCplt: 12685 .LFB192: 6276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Listen complete process. 6279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 6281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 6284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12686 .loc 1 6284 1 ARM GAS /tmp/cc5G5cqz.s page 336 12687 .cfi_startproc 12688 @ args = 0, pretend = 0, frame = 8 12689 @ frame_needed = 1, uses_anonymous_args = 0 12690 0000 80B5 push {r7, lr} 12691 .cfi_def_cfa_offset 8 12692 .cfi_offset 7, -8 12693 .cfi_offset 14, -4 12694 0002 82B0 sub sp, sp, #8 12695 .cfi_def_cfa_offset 16 12696 0004 00AF add r7, sp, #0 12697 .cfi_def_cfa_register 7 12698 0006 7860 str r0, [r7, #4] 12699 0008 3960 str r1, [r7] 6285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 12700 .loc 1 6286 21 12701 000a 7B68 ldr r3, [r7, #4] 12702 000c 264A ldr r2, .L618 12703 000e DA62 str r2, [r3, #44] 6287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 12704 .loc 1 6287 23 12705 0010 7B68 ldr r3, [r7, #4] 12706 0012 0022 movs r2, #0 12707 0014 1A63 str r2, [r3, #48] 6288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 12708 .loc 1 6288 15 12709 0016 7B68 ldr r3, [r7, #4] 12710 0018 2022 movs r2, #32 12711 001a 83F84120 strb r2, [r3, #65] 6289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 12712 .loc 1 6289 14 12713 001e 7B68 ldr r3, [r7, #4] 12714 0020 0022 movs r2, #0 12715 0022 83F84220 strb r2, [r3, #66] 6290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 12716 .loc 1 6290 17 12717 0026 7B68 ldr r3, [r7, #4] 12718 0028 0022 movs r2, #0 12719 002a 5A63 str r2, [r3, #52] 6291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 6293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) 12720 .loc 1 6293 7 12721 002c 3B68 ldr r3, [r7] 12722 002e 9B08 lsrs r3, r3, #2 12723 0030 03F00103 and r3, r3, #1 12724 .loc 1 6293 6 12725 0034 002B cmp r3, #0 12726 0036 22D0 beq .L617 6294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 12727 .loc 1 6296 36 12728 0038 7B68 ldr r3, [r7, #4] 12729 003a 1B68 ldr r3, [r3] 12730 .loc 1 6296 46 12731 003c 5A6A ldr r2, [r3, #36] ARM GAS /tmp/cc5G5cqz.s page 337 12732 .loc 1 6296 10 12733 003e 7B68 ldr r3, [r7, #4] 12734 0040 5B6A ldr r3, [r3, #36] 12735 .loc 1 6296 23 12736 0042 D2B2 uxtb r2, r2 12737 .loc 1 6296 21 12738 0044 1A70 strb r2, [r3] 6297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 6299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 12739 .loc 1 6299 9 12740 0046 7B68 ldr r3, [r7, #4] 12741 0048 5B6A ldr r3, [r3, #36] 12742 .loc 1 6299 19 12743 004a 5A1C adds r2, r3, #1 12744 004c 7B68 ldr r3, [r7, #4] 12745 004e 5A62 str r2, [r3, #36] 6300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) 12746 .loc 1 6301 14 12747 0050 7B68 ldr r3, [r7, #4] 12748 0052 1B8D ldrh r3, [r3, #40] 12749 .loc 1 6301 8 12750 0054 002B cmp r3, #0 12751 0056 12D0 beq .L617 6302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 12752 .loc 1 6303 11 12753 0058 7B68 ldr r3, [r7, #4] 12754 005a 1B8D ldrh r3, [r3, #40] 12755 .loc 1 6303 21 12756 005c 013B subs r3, r3, #1 12757 005e 9AB2 uxth r2, r3 12758 0060 7B68 ldr r3, [r7, #4] 12759 0062 1A85 strh r2, [r3, #40] @ movhi 6304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 12760 .loc 1 6304 11 12761 0064 7B68 ldr r3, [r7, #4] 12762 0066 5B8D ldrh r3, [r3, #42] @ movhi 12763 0068 9BB2 uxth r3, r3 12764 .loc 1 6304 22 12765 006a 013B subs r3, r3, #1 12766 006c 9AB2 uxth r2, r3 12767 006e 7B68 ldr r3, [r7, #4] 12768 0070 5A85 strh r2, [r3, #42] @ movhi 6305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 6307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 12769 .loc 1 6307 11 12770 0072 7B68 ldr r3, [r7, #4] 12771 0074 5B6C ldr r3, [r3, #68] 12772 .loc 1 6307 23 12773 0076 43F00402 orr r2, r3, #4 12774 007a 7B68 ldr r3, [r7, #4] 12775 007c 5A64 str r2, [r3, #68] 12776 .L617: 6308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 338 6309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all Interrupts*/ 6312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); 12777 .loc 1 6312 3 12778 007e 48F20301 movw r1, #32771 12779 0082 7868 ldr r0, [r7, #4] 12780 0084 FFF7FEFF bl I2C_Disable_IRQ 6313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12781 .loc 1 6315 3 12782 0088 7B68 ldr r3, [r7, #4] 12783 008a 1B68 ldr r3, [r3] 12784 008c 1022 movs r2, #16 12785 008e DA61 str r2, [r3, #28] 6316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 12786 .loc 1 6318 3 12787 0090 7B68 ldr r3, [r7, #4] 12788 0092 0022 movs r2, #0 12789 0094 83F84020 strb r2, [r3, #64] 6319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); 6323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); 12790 .loc 1 6324 3 12791 0098 7868 ldr r0, [r7, #4] 12792 009a FFF7FEFF bl HAL_I2C_ListenCpltCallback 6325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12793 .loc 1 6326 1 12794 009e 00BF nop 12795 00a0 0837 adds r7, r7, #8 12796 .cfi_def_cfa_offset 8 12797 00a2 BD46 mov sp, r7 12798 .cfi_def_cfa_register 13 12799 @ sp needed 12800 00a4 80BD pop {r7, pc} 12801 .L619: 12802 00a6 00BF .align 2 12803 .L618: 12804 00a8 0000FFFF .word -65536 12805 .cfi_endproc 12806 .LFE192: 12808 .section .text.I2C_ITError,"ax",%progbits 12809 .align 1 12810 .syntax unified 12811 .thumb 12812 .thumb_func 12814 I2C_ITError: 12815 .LFB193: 6327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** ARM GAS /tmp/cc5G5cqz.s page 339 6329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C interrupts error process. 6330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ErrorCode Error code to handle. 6332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) 6335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12816 .loc 1 6335 1 12817 .cfi_startproc 12818 @ args = 0, pretend = 0, frame = 16 12819 @ frame_needed = 1, uses_anonymous_args = 0 12820 0000 80B5 push {r7, lr} 12821 .cfi_def_cfa_offset 8 12822 .cfi_offset 7, -8 12823 .cfi_offset 14, -4 12824 0002 84B0 sub sp, sp, #16 12825 .cfi_def_cfa_offset 24 12826 0004 00AF add r7, sp, #0 12827 .cfi_def_cfa_register 7 12828 0006 7860 str r0, [r7, #4] 12829 0008 3960 str r1, [r7] 6336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; 12830 .loc 1 6336 24 12831 000a 7B68 ldr r3, [r7, #4] 12832 000c 93F84130 ldrb r3, [r3, #65] 12833 0010 FB73 strb r3, [r7, #15] 6337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmppreviousstate; 6339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 12834 .loc 1 6341 23 12835 0012 7B68 ldr r3, [r7, #4] 12836 0014 0022 movs r2, #0 12837 0016 83F84220 strb r2, [r3, #66] 6342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 12838 .loc 1 6342 23 12839 001a 7B68 ldr r3, [r7, #4] 12840 001c 6D4A ldr r2, .L640 12841 001e DA62 str r2, [r3, #44] 6343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = 0U; 12842 .loc 1 6343 23 12843 0020 7B68 ldr r3, [r7, #4] 12844 0022 0022 movs r2, #0 12845 0024 5A85 strh r2, [r3, #42] @ movhi 6344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set new error code */ 6346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= ErrorCode; 12846 .loc 1 6346 7 12847 0026 7B68 ldr r3, [r7, #4] 12848 0028 5A6C ldr r2, [r3, #68] 12849 .loc 1 6346 19 12850 002a 3B68 ldr r3, [r7] 12851 002c 1A43 orrs r2, r2, r3 12852 002e 7B68 ldr r3, [r7, #4] 12853 0030 5A64 str r2, [r3, #68] 6347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 340 6348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 6349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_LISTEN) || 12854 .loc 1 6349 6 12855 0032 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12856 0034 282B cmp r3, #40 12857 0036 05D0 beq .L621 12858 .loc 1 6349 50 discriminator 1 12859 0038 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12860 003a 292B cmp r3, #41 12861 003c 02D0 beq .L621 6350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || 12862 .loc 1 6350 50 12863 003e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 12864 0040 2A2B cmp r3, #42 12865 0042 0BD1 bne .L622 12866 .L621: 6351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) 6352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts, except interrupts related to LISTEN state */ 6354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); 12867 .loc 1 6354 5 12868 0044 0321 movs r1, #3 12869 0046 7868 ldr r0, [r7, #4] 12870 0048 FFF7FEFF bl I2C_Disable_IRQ 6355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* keep HAL_I2C_STATE_LISTEN if set */ 6357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 12871 .loc 1 6357 25 12872 004c 7B68 ldr r3, [r7, #4] 12873 004e 2822 movs r2, #40 12874 0050 83F84120 strb r2, [r3, #65] 6358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 12875 .loc 1 6358 25 12876 0054 7B68 ldr r3, [r7, #4] 12877 0056 604A ldr r2, .L640+4 12878 0058 5A63 str r2, [r3, #52] 12879 005a 30E0 b .L623 12880 .L622: 6359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts */ 6363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); 12881 .loc 1 6363 5 12882 005c 48F20301 movw r1, #32771 12883 0060 7868 ldr r0, [r7, #4] 12884 0062 FFF7FEFF bl I2C_Disable_IRQ 6364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 12885 .loc 1 6366 5 12886 0066 7868 ldr r0, [r7, #4] 12887 0068 FFF7FEFF bl I2C_Flush_TXDR 6367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If state is an abort treatment on going, don't change state */ 6369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This change will be do later */ 6370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State != HAL_I2C_STATE_ABORT) ARM GAS /tmp/cc5G5cqz.s page 341 12888 .loc 1 6370 13 12889 006c 7B68 ldr r3, [r7, #4] 12890 006e 93F84130 ldrb r3, [r3, #65] 12891 0072 DBB2 uxtb r3, r3 12892 .loc 1 6370 8 12893 0074 602B cmp r3, #96 12894 0076 1FD0 beq .L624 6371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set HAL_I2C_STATE_READY */ 6373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 12895 .loc 1 6373 27 12896 0078 7B68 ldr r3, [r7, #4] 12897 007a 2022 movs r2, #32 12898 007c 83F84120 strb r2, [r3, #65] 6374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a STOPF is detected */ 6376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) 12899 .loc 1 6376 11 12900 0080 7B68 ldr r3, [r7, #4] 12901 0082 1B68 ldr r3, [r3] 12902 0084 9B69 ldr r3, [r3, #24] 12903 0086 03F02003 and r3, r3, #32 12904 .loc 1 6376 10 12905 008a 202B cmp r3, #32 12906 008c 14D1 bne .L624 6377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) 12907 .loc 1 6378 13 12908 008e 7B68 ldr r3, [r7, #4] 12909 0090 1B68 ldr r3, [r3] 12910 0092 9B69 ldr r3, [r3, #24] 12911 0094 03F01003 and r3, r3, #16 12912 .loc 1 6378 12 12913 0098 102B cmp r3, #16 12914 009a 09D1 bne .L625 6379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12915 .loc 1 6380 11 12916 009c 7B68 ldr r3, [r7, #4] 12917 009e 1B68 ldr r3, [r3] 12918 00a0 1022 movs r2, #16 12919 00a2 DA61 str r2, [r3, #28] 6381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 12920 .loc 1 6381 15 12921 00a4 7B68 ldr r3, [r7, #4] 12922 00a6 5B6C ldr r3, [r3, #68] 12923 .loc 1 6381 27 12924 00a8 43F00402 orr r2, r3, #4 12925 00ac 7B68 ldr r3, [r7, #4] 12926 00ae 5A64 str r2, [r3, #68] 12927 .L625: 6382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 12928 .loc 1 6385 9 12929 00b0 7B68 ldr r3, [r7, #4] ARM GAS /tmp/cc5G5cqz.s page 342 12930 00b2 1B68 ldr r3, [r3] 12931 00b4 2022 movs r2, #32 12932 00b6 DA61 str r2, [r3, #28] 12933 .L624: 6386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 12934 .loc 1 6389 25 12935 00b8 7B68 ldr r3, [r7, #4] 12936 00ba 0022 movs r2, #0 12937 00bc 5A63 str r2, [r3, #52] 12938 .L623: 6390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX transfer if any */ 6393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmppreviousstate = hi2c->PreviousState; 12939 .loc 1 6393 20 12940 00be 7B68 ldr r3, [r7, #4] 12941 00c0 1B6B ldr r3, [r3, #48] 12942 00c2 BB60 str r3, [r7, #8] 6394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ 12943 .loc 1 6395 12 12944 00c4 7B68 ldr r3, [r7, #4] 12945 00c6 9B6B ldr r3, [r3, #56] 12946 .loc 1 6395 6 12947 00c8 002B cmp r3, #0 12948 00ca 39D0 beq .L626 12949 .loc 1 6395 30 discriminator 1 12950 00cc BB68 ldr r3, [r7, #8] 12951 00ce 112B cmp r3, #17 12952 00d0 02D0 beq .L627 12953 .loc 1 6395 81 discriminator 2 12954 00d2 BB68 ldr r3, [r7, #8] 12955 00d4 212B cmp r3, #33 12956 00d6 33D1 bne .L626 12957 .L627: 6396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) 6397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 12958 .loc 1 6398 14 12959 00d8 7B68 ldr r3, [r7, #4] 12960 00da 1B68 ldr r3, [r3] 12961 .loc 1 6398 24 12962 00dc 1B68 ldr r3, [r3] 12963 .loc 1 6398 30 12964 00de 03F48043 and r3, r3, #16384 12965 .loc 1 6398 8 12966 00e2 B3F5804F cmp r3, #16384 12967 00e6 07D1 bne .L628 6399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 12968 .loc 1 6400 11 12969 00e8 7B68 ldr r3, [r7, #4] 12970 00ea 1B68 ldr r3, [r3] 12971 .loc 1 6400 21 ARM GAS /tmp/cc5G5cqz.s page 343 12972 00ec 1A68 ldr r2, [r3] 12973 .loc 1 6400 11 12974 00ee 7B68 ldr r3, [r7, #4] 12975 00f0 1B68 ldr r3, [r3] 12976 .loc 1 6400 27 12977 00f2 22F48042 bic r2, r2, #16384 12978 00f6 1A60 str r2, [r3] 12979 .L628: 6401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) 12980 .loc 1 6403 9 12981 00f8 7B68 ldr r3, [r7, #4] 12982 00fa 9B6B ldr r3, [r3, #56] 12983 00fc 1846 mov r0, r3 12984 00fe FFF7FEFF bl HAL_DMA_GetState 12985 0102 0346 mov r3, r0 12986 .loc 1 6403 8 discriminator 1 12987 0104 012B cmp r3, #1 12988 0106 17D0 beq .L629 6404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 6406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 6407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 12989 .loc 1 6407 11 12990 0108 7B68 ldr r3, [r7, #4] 12991 010a 9B6B ldr r3, [r3, #56] 12992 .loc 1 6407 39 12993 010c 334A ldr r2, .L640+8 12994 010e 5A63 str r2, [r3, #52] 6408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 12995 .loc 1 6410 7 12996 0110 7B68 ldr r3, [r7, #4] 12997 0112 0022 movs r2, #0 12998 0114 83F84020 strb r2, [r3, #64] 6411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 6413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 12999 .loc 1 6413 11 13000 0118 7B68 ldr r3, [r7, #4] 13001 011a 9B6B ldr r3, [r3, #56] 13002 011c 1846 mov r0, r3 13003 011e FFF7FEFF bl HAL_DMA_Abort_IT 13004 0122 0346 mov r3, r0 13005 .loc 1 6413 10 discriminator 1 13006 0124 002B cmp r3, #0 13007 0126 4DD0 beq .L637 6414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 6416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 13008 .loc 1 6416 13 13009 0128 7B68 ldr r3, [r7, #4] 13010 012a 9B6B ldr r3, [r3, #56] 13011 .loc 1 6416 21 13012 012c 5B6B ldr r3, [r3, #52] ARM GAS /tmp/cc5G5cqz.s page 344 13013 .loc 1 6416 45 13014 012e 7A68 ldr r2, [r7, #4] 13015 0130 926B ldr r2, [r2, #56] 13016 .loc 1 6416 9 13017 0132 1046 mov r0, r2 13018 0134 9847 blx r3 13019 .LVL7: 6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13020 .loc 1 6403 8 13021 0136 45E0 b .L637 13022 .L629: 6417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 13023 .loc 1 6421 7 13024 0138 7868 ldr r0, [r7, #4] 13025 013a FFF7FEFF bl I2C_TreatErrorCallback 6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13026 .loc 1 6403 8 13027 013e 41E0 b .L637 13028 .L626: 6422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX transfer if any */ 6425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ 13029 .loc 1 6425 17 13030 0140 7B68 ldr r3, [r7, #4] 13031 0142 DB6B ldr r3, [r3, #60] 13032 .loc 1 6425 11 13033 0144 002B cmp r3, #0 13034 0146 39D0 beq .L632 13035 .loc 1 6425 35 discriminator 1 13036 0148 BB68 ldr r3, [r7, #8] 13037 014a 122B cmp r3, #18 13038 014c 02D0 beq .L633 13039 .loc 1 6425 86 discriminator 2 13040 014e BB68 ldr r3, [r7, #8] 13041 0150 222B cmp r3, #34 13042 0152 33D1 bne .L632 13043 .L633: 6426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) 6427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 13044 .loc 1 6428 14 13045 0154 7B68 ldr r3, [r7, #4] 13046 0156 1B68 ldr r3, [r3] 13047 .loc 1 6428 24 13048 0158 1B68 ldr r3, [r3] 13049 .loc 1 6428 30 13050 015a 03F40043 and r3, r3, #32768 13051 .loc 1 6428 8 13052 015e B3F5004F cmp r3, #32768 13053 0162 07D1 bne .L634 6429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; ARM GAS /tmp/cc5G5cqz.s page 345 13054 .loc 1 6430 11 13055 0164 7B68 ldr r3, [r7, #4] 13056 0166 1B68 ldr r3, [r3] 13057 .loc 1 6430 21 13058 0168 1A68 ldr r2, [r3] 13059 .loc 1 6430 11 13060 016a 7B68 ldr r3, [r7, #4] 13061 016c 1B68 ldr r3, [r3] 13062 .loc 1 6430 27 13063 016e 22F40042 bic r2, r2, #32768 13064 0172 1A60 str r2, [r3] 13065 .L634: 6431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) 13066 .loc 1 6433 9 13067 0174 7B68 ldr r3, [r7, #4] 13068 0176 DB6B ldr r3, [r3, #60] 13069 0178 1846 mov r0, r3 13070 017a FFF7FEFF bl HAL_DMA_GetState 13071 017e 0346 mov r3, r0 13072 .loc 1 6433 8 discriminator 1 13073 0180 012B cmp r3, #1 13074 0182 17D0 beq .L635 6434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 6436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 6437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 13075 .loc 1 6437 11 13076 0184 7B68 ldr r3, [r7, #4] 13077 0186 DB6B ldr r3, [r3, #60] 13078 .loc 1 6437 39 13079 0188 144A ldr r2, .L640+8 13080 018a 5A63 str r2, [r3, #52] 6438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13081 .loc 1 6440 7 13082 018c 7B68 ldr r3, [r7, #4] 13083 018e 0022 movs r2, #0 13084 0190 83F84020 strb r2, [r3, #64] 6441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 6443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 13085 .loc 1 6443 11 13086 0194 7B68 ldr r3, [r7, #4] 13087 0196 DB6B ldr r3, [r3, #60] 13088 0198 1846 mov r0, r3 13089 019a FFF7FEFF bl HAL_DMA_Abort_IT 13090 019e 0346 mov r3, r0 13091 .loc 1 6443 10 discriminator 1 13092 01a0 002B cmp r3, #0 13093 01a2 11D0 beq .L638 6444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ 6446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 13094 .loc 1 6446 13 ARM GAS /tmp/cc5G5cqz.s page 346 13095 01a4 7B68 ldr r3, [r7, #4] 13096 01a6 DB6B ldr r3, [r3, #60] 13097 .loc 1 6446 21 13098 01a8 5B6B ldr r3, [r3, #52] 13099 .loc 1 6446 45 13100 01aa 7A68 ldr r2, [r7, #4] 13101 01ac D26B ldr r2, [r2, #60] 13102 .loc 1 6446 9 13103 01ae 1046 mov r0, r2 13104 01b0 9847 blx r3 13105 .LVL8: 6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13106 .loc 1 6433 8 13107 01b2 09E0 b .L638 13108 .L635: 6447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 13109 .loc 1 6451 7 13110 01b4 7868 ldr r0, [r7, #4] 13111 01b6 FFF7FEFF bl I2C_TreatErrorCallback 6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13112 .loc 1 6433 8 13113 01ba 05E0 b .L638 13114 .L632: 6452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 13115 .loc 1 6456 5 13116 01bc 7868 ldr r0, [r7, #4] 13117 01be FFF7FEFF bl I2C_TreatErrorCallback 6457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13118 .loc 1 6458 1 13119 01c2 02E0 b .L639 13120 .L637: 6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13121 .loc 1 6403 8 13122 01c4 00BF nop 13123 01c6 00E0 b .L639 13124 .L638: 6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13125 .loc 1 6433 8 13126 01c8 00BF nop 13127 .L639: 13128 .loc 1 6458 1 13129 01ca 00BF nop 13130 01cc 1037 adds r7, r7, #16 13131 .cfi_def_cfa_offset 8 13132 01ce BD46 mov sp, r7 13133 .cfi_def_cfa_register 13 13134 @ sp needed 13135 01d0 80BD pop {r7, pc} ARM GAS /tmp/cc5G5cqz.s page 347 13136 .L641: 13137 01d2 00BF .align 2 13138 .L640: 13139 01d4 0000FFFF .word -65536 13140 01d8 00000000 .word I2C_Slave_ISR_IT 13141 01dc 00000000 .word I2C_DMAAbort 13142 .cfi_endproc 13143 .LFE193: 13145 .section .text.I2C_TreatErrorCallback,"ax",%progbits 13146 .align 1 13147 .syntax unified 13148 .thumb 13149 .thumb_func 13151 I2C_TreatErrorCallback: 13152 .LFB194: 6459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Error callback treatment. 6462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) 6466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13153 .loc 1 6466 1 13154 .cfi_startproc 13155 @ args = 0, pretend = 0, frame = 8 13156 @ frame_needed = 1, uses_anonymous_args = 0 13157 0000 80B5 push {r7, lr} 13158 .cfi_def_cfa_offset 8 13159 .cfi_offset 7, -8 13160 .cfi_offset 14, -4 13161 0002 82B0 sub sp, sp, #8 13162 .cfi_def_cfa_offset 16 13163 0004 00AF add r7, sp, #0 13164 .cfi_def_cfa_register 7 13165 0006 7860 str r0, [r7, #4] 6467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT) 13166 .loc 1 6467 11 13167 0008 7B68 ldr r3, [r7, #4] 13168 000a 93F84130 ldrb r3, [r3, #65] 13169 000e DBB2 uxtb r3, r3 13170 .loc 1 6467 6 13171 0010 602B cmp r3, #96 13172 0012 0ED1 bne .L643 6468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 13173 .loc 1 6469 17 13174 0014 7B68 ldr r3, [r7, #4] 13175 0016 2022 movs r2, #32 13176 0018 83F84120 strb r2, [r3, #65] 6470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 13177 .loc 1 6470 25 13178 001c 7B68 ldr r3, [r7, #4] 13179 001e 0022 movs r2, #0 13180 0020 1A63 str r2, [r3, #48] 6471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ ARM GAS /tmp/cc5G5cqz.s page 348 6473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13181 .loc 1 6473 5 13182 0022 7B68 ldr r3, [r7, #4] 13183 0024 0022 movs r2, #0 13184 0026 83F84020 strb r2, [r3, #64] 6474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback(hi2c); 6478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AbortCpltCallback(hi2c); 13185 .loc 1 6479 5 13186 002a 7868 ldr r0, [r7, #4] 13187 002c FFF7FEFF bl HAL_I2C_AbortCpltCallback 6480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback(hi2c); 6492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ErrorCallback(hi2c); 6494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13188 .loc 1 6496 1 13189 0030 09E0 b .L645 13190 .L643: 6484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13191 .loc 1 6484 25 13192 0032 7B68 ldr r3, [r7, #4] 13193 0034 0022 movs r2, #0 13194 0036 1A63 str r2, [r3, #48] 6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13195 .loc 1 6487 5 13196 0038 7B68 ldr r3, [r7, #4] 13197 003a 0022 movs r2, #0 13198 003c 83F84020 strb r2, [r3, #64] 6493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13199 .loc 1 6493 5 13200 0040 7868 ldr r0, [r7, #4] 13201 0042 FFF7FEFF bl HAL_I2C_ErrorCallback 13202 .L645: 13203 .loc 1 6496 1 13204 0046 00BF nop 13205 0048 0837 adds r7, r7, #8 13206 .cfi_def_cfa_offset 8 13207 004a BD46 mov sp, r7 13208 .cfi_def_cfa_register 13 13209 @ sp needed 13210 004c 80BD pop {r7, pc} ARM GAS /tmp/cc5G5cqz.s page 349 13211 .cfi_endproc 13212 .LFE194: 13214 .section .text.I2C_Flush_TXDR,"ax",%progbits 13215 .align 1 13216 .syntax unified 13217 .thumb 13218 .thumb_func 13220 I2C_Flush_TXDR: 13221 .LFB195: 6497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Tx data register flush process. 6500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) 6504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13222 .loc 1 6504 1 13223 .cfi_startproc 13224 @ args = 0, pretend = 0, frame = 8 13225 @ frame_needed = 1, uses_anonymous_args = 0 13226 @ link register save eliminated. 13227 0000 80B4 push {r7} 13228 .cfi_def_cfa_offset 4 13229 .cfi_offset 7, -4 13230 0002 83B0 sub sp, sp, #12 13231 .cfi_def_cfa_offset 16 13232 0004 00AF add r7, sp, #0 13233 .cfi_def_cfa_register 7 13234 0006 7860 str r0, [r7, #4] 6505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a pending TXIS flag is set */ 6506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write a dummy data in TXDR to clear it */ 6507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) 13235 .loc 1 6507 7 13236 0008 7B68 ldr r3, [r7, #4] 13237 000a 1B68 ldr r3, [r3] 13238 000c 9B69 ldr r3, [r3, #24] 13239 000e 03F00203 and r3, r3, #2 13240 .loc 1 6507 6 13241 0012 022B cmp r3, #2 13242 0014 03D1 bne .L647 6508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = 0x00U; 13243 .loc 1 6509 9 13244 0016 7B68 ldr r3, [r7, #4] 13245 0018 1B68 ldr r3, [r3] 13246 .loc 1 6509 26 13247 001a 0022 movs r2, #0 13248 001c 9A62 str r2, [r3, #40] 13249 .L647: 6510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register if not empty */ 6513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) 13250 .loc 1 6513 7 13251 001e 7B68 ldr r3, [r7, #4] 13252 0020 1B68 ldr r3, [r3] ARM GAS /tmp/cc5G5cqz.s page 350 13253 0022 9B69 ldr r3, [r3, #24] 13254 0024 03F00103 and r3, r3, #1 13255 .loc 1 6513 6 13256 0028 012B cmp r3, #1 13257 002a 07D0 beq .L649 6514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); 13258 .loc 1 6515 5 13259 002c 7B68 ldr r3, [r7, #4] 13260 002e 1B68 ldr r3, [r3] 13261 0030 9A69 ldr r2, [r3, #24] 13262 0032 7B68 ldr r3, [r7, #4] 13263 0034 1B68 ldr r3, [r3] 13264 0036 42F00102 orr r2, r2, #1 13265 003a 9A61 str r2, [r3, #24] 13266 .L649: 6516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13267 .loc 1 6517 1 13268 003c 00BF nop 13269 003e 0C37 adds r7, r7, #12 13270 .cfi_def_cfa_offset 4 13271 0040 BD46 mov sp, r7 13272 .cfi_def_cfa_register 13 13273 @ sp needed 13274 0042 5DF8047B ldr r7, [sp], #4 13275 .cfi_restore 7 13276 .cfi_def_cfa_offset 0 13277 0046 7047 bx lr 13278 .cfi_endproc 13279 .LFE195: 13281 .section .text.I2C_DMAMasterTransmitCplt,"ax",%progbits 13282 .align 1 13283 .syntax unified 13284 .thumb 13285 .thumb_func 13287 I2C_DMAMasterTransmitCplt: 13288 .LFB196: 6518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master transmit process complete callback. 6521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) 6525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13289 .loc 1 6525 1 13290 .cfi_startproc 13291 @ args = 0, pretend = 0, frame = 16 13292 @ frame_needed = 1, uses_anonymous_args = 0 13293 0000 80B5 push {r7, lr} 13294 .cfi_def_cfa_offset 8 13295 .cfi_offset 7, -8 13296 .cfi_offset 14, -4 13297 0002 84B0 sub sp, sp, #16 13298 .cfi_def_cfa_offset 24 13299 0004 00AF add r7, sp, #0 ARM GAS /tmp/cc5G5cqz.s page 351 13300 .cfi_def_cfa_register 7 13301 0006 7860 str r0, [r7, #4] 6526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13302 .loc 1 6527 22 13303 0008 7B68 ldr r3, [r7, #4] 13304 000a 5B6A ldr r3, [r3, #36] 13305 000c FB60 str r3, [r7, #12] 6528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 13306 .loc 1 6530 7 13307 000e FB68 ldr r3, [r7, #12] 13308 0010 1B68 ldr r3, [r3] 13309 .loc 1 6530 17 13310 0012 1A68 ldr r2, [r3] 13311 .loc 1 6530 7 13312 0014 FB68 ldr r3, [r7, #12] 13313 0016 1B68 ldr r3, [r3] 13314 .loc 1 6530 23 13315 0018 22F48042 bic r2, r2, #16384 13316 001c 1A60 str r2, [r3] 6531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ 6533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 13317 .loc 1 6533 11 13318 001e FB68 ldr r3, [r7, #12] 13319 0020 5B8D ldrh r3, [r3, #42] @ movhi 13320 0022 9BB2 uxth r3, r3 13321 .loc 1 6533 6 13322 0024 002B cmp r3, #0 13323 0026 04D1 bne .L651 6534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */ 6536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 13324 .loc 1 6536 5 13325 0028 2021 movs r1, #32 13326 002a F868 ldr r0, [r7, #12] 13327 002c FFF7FEFF bl I2C_Enable_IRQ 6537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ 6539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */ 6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; 6543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */ 6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ ARM GAS /tmp/cc5G5cqz.s page 352 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 6556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 6557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 6560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 6564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); 6565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13328 .loc 1 6567 1 13329 0030 2DE0 b .L656 13330 .L651: 6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13331 .loc 1 6542 9 13332 0032 FB68 ldr r3, [r7, #12] 13333 0034 5B6A ldr r3, [r3, #36] 6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13334 .loc 1 6542 27 13335 0036 FA68 ldr r2, [r7, #12] 13336 0038 128D ldrh r2, [r2, #40] 6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13337 .loc 1 6542 20 13338 003a 1A44 add r2, r2, r3 13339 003c FB68 ldr r3, [r7, #12] 13340 003e 5A62 str r2, [r3, #36] 6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13341 .loc 1 6545 13 13342 0040 FB68 ldr r3, [r7, #12] 13343 0042 5B8D ldrh r3, [r3, #42] @ movhi 13344 0044 9BB2 uxth r3, r3 6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13345 .loc 1 6545 8 13346 0046 FF2B cmp r3, #255 13347 0048 03D9 bls .L653 6547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13348 .loc 1 6547 22 13349 004a FB68 ldr r3, [r7, #12] 13350 004c FF22 movs r2, #255 13351 004e 1A85 strh r2, [r3, #40] @ movhi 13352 0050 04E0 b .L654 13353 .L653: 6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13354 .loc 1 6551 28 13355 0052 FB68 ldr r3, [r7, #12] 13356 0054 5B8D ldrh r3, [r3, #42] @ movhi 13357 0056 9AB2 uxth r2, r3 6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13358 .loc 1 6551 22 13359 0058 FB68 ldr r3, [r7, #12] 13360 005a 1A85 strh r2, [r3, #40] @ movhi 13361 .L654: 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13362 .loc 1 6555 9 ARM GAS /tmp/cc5G5cqz.s page 353 13363 005c FB68 ldr r3, [r7, #12] 13364 005e 986B ldr r0, [r3, #56] 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13365 .loc 1 6555 54 13366 0060 FB68 ldr r3, [r7, #12] 13367 0062 5B6A ldr r3, [r3, #36] 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13368 .loc 1 6555 9 13369 0064 1946 mov r1, r3 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13370 .loc 1 6555 81 13371 0066 FB68 ldr r3, [r7, #12] 13372 0068 1B68 ldr r3, [r3] 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13373 .loc 1 6555 76 13374 006a 2833 adds r3, r3, #40 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13375 .loc 1 6555 9 13376 006c 1A46 mov r2, r3 6556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13377 .loc 1 6556 30 13378 006e FB68 ldr r3, [r7, #12] 13379 0070 1B8D ldrh r3, [r3, #40] 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13380 .loc 1 6555 9 13381 0072 FFF7FEFF bl HAL_DMA_Start_IT 13382 0076 0346 mov r3, r0 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13383 .loc 1 6555 8 discriminator 1 13384 0078 002B cmp r3, #0 13385 007a 04D0 beq .L655 6559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13386 .loc 1 6559 7 13387 007c 1021 movs r1, #16 13388 007e F868 ldr r0, [r7, #12] 13389 0080 FFF7FEFF bl I2C_ITError 13390 .loc 1 6567 1 13391 0084 03E0 b .L656 13392 .L655: 6564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13393 .loc 1 6564 7 13394 0086 4021 movs r1, #64 13395 0088 F868 ldr r0, [r7, #12] 13396 008a FFF7FEFF bl I2C_Enable_IRQ 13397 .L656: 13398 .loc 1 6567 1 13399 008e 00BF nop 13400 0090 1037 adds r7, r7, #16 13401 .cfi_def_cfa_offset 8 13402 0092 BD46 mov sp, r7 13403 .cfi_def_cfa_register 13 13404 @ sp needed 13405 0094 80BD pop {r7, pc} 13406 .cfi_endproc 13407 .LFE196: 13409 .section .text.I2C_DMASlaveTransmitCplt,"ax",%progbits 13410 .align 1 ARM GAS /tmp/cc5G5cqz.s page 354 13411 .syntax unified 13412 .thumb 13413 .thumb_func 13415 I2C_DMASlaveTransmitCplt: 13416 .LFB197: 6568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave transmit process complete callback. 6572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) 6576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13417 .loc 1 6576 1 13418 .cfi_startproc 13419 @ args = 0, pretend = 0, frame = 16 13420 @ frame_needed = 1, uses_anonymous_args = 0 13421 0000 80B5 push {r7, lr} 13422 .cfi_def_cfa_offset 8 13423 .cfi_offset 7, -8 13424 .cfi_offset 14, -4 13425 0002 84B0 sub sp, sp, #16 13426 .cfi_def_cfa_offset 24 13427 0004 00AF add r7, sp, #0 13428 .cfi_def_cfa_register 7 13429 0006 7860 str r0, [r7, #4] 6577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13430 .loc 1 6578 22 13431 0008 7B68 ldr r3, [r7, #4] 13432 000a 5B6A ldr r3, [r3, #36] 13433 000c FB60 str r3, [r7, #12] 6579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 13434 .loc 1 6579 12 13435 000e FB68 ldr r3, [r7, #12] 13436 0010 DB6A ldr r3, [r3, #44] 13437 0012 BB60 str r3, [r7, #8] 6580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) 13438 .loc 1 6581 6 13439 0014 BB68 ldr r3, [r7, #8] 13440 0016 B3F1807F cmp r3, #16777216 13441 001a 02D0 beq .L658 13442 .loc 1 6581 38 discriminator 1 13443 001c BB68 ldr r3, [r7, #8] 13444 001e 002B cmp r3, #0 13445 0020 0AD1 bne .L660 13446 .L658: 6582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 13447 .loc 1 6584 9 13448 0022 FB68 ldr r3, [r7, #12] 13449 0024 1B68 ldr r3, [r3] 13450 .loc 1 6584 19 13451 0026 1A68 ldr r2, [r3] ARM GAS /tmp/cc5G5cqz.s page 355 13452 .loc 1 6584 9 13453 0028 FB68 ldr r3, [r7, #12] 13454 002a 1B68 ldr r3, [r3] 13455 .loc 1 6584 25 13456 002c 22F48042 bic r2, r2, #16384 13457 0030 1A60 str r2, [r3] 6585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 6587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 6588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 13458 .loc 1 6588 5 13459 0032 F868 ldr r0, [r7, #12] 13460 0034 FFF7FEFF bl I2C_ITSlaveSeqCplt 13461 .L660: 6589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ 6593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */ 6594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ 6595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13462 .loc 1 6596 1 13463 0038 00BF nop 13464 003a 1037 adds r7, r7, #16 13465 .cfi_def_cfa_offset 8 13466 003c BD46 mov sp, r7 13467 .cfi_def_cfa_register 13 13468 @ sp needed 13469 003e 80BD pop {r7, pc} 13470 .cfi_endproc 13471 .LFE197: 13473 .section .text.I2C_DMAMasterReceiveCplt,"ax",%progbits 13474 .align 1 13475 .syntax unified 13476 .thumb 13477 .thumb_func 13479 I2C_DMAMasterReceiveCplt: 13480 .LFB198: 6597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master receive process complete callback. 6601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) 6605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13481 .loc 1 6605 1 13482 .cfi_startproc 13483 @ args = 0, pretend = 0, frame = 16 13484 @ frame_needed = 1, uses_anonymous_args = 0 13485 0000 80B5 push {r7, lr} 13486 .cfi_def_cfa_offset 8 13487 .cfi_offset 7, -8 13488 .cfi_offset 14, -4 13489 0002 84B0 sub sp, sp, #16 ARM GAS /tmp/cc5G5cqz.s page 356 13490 .cfi_def_cfa_offset 24 13491 0004 00AF add r7, sp, #0 13492 .cfi_def_cfa_register 7 13493 0006 7860 str r0, [r7, #4] 6606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13494 .loc 1 6607 22 13495 0008 7B68 ldr r3, [r7, #4] 13496 000a 5B6A ldr r3, [r3, #36] 13497 000c FB60 str r3, [r7, #12] 6608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 13498 .loc 1 6610 7 13499 000e FB68 ldr r3, [r7, #12] 13500 0010 1B68 ldr r3, [r3] 13501 .loc 1 6610 17 13502 0012 1A68 ldr r2, [r3] 13503 .loc 1 6610 7 13504 0014 FB68 ldr r3, [r7, #12] 13505 0016 1B68 ldr r3, [r3] 13506 .loc 1 6610 23 13507 0018 22F40042 bic r2, r2, #32768 13508 001c 1A60 str r2, [r3] 6611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ 6613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 13509 .loc 1 6613 11 13510 001e FB68 ldr r3, [r7, #12] 13511 0020 5B8D ldrh r3, [r3, #42] @ movhi 13512 0022 9BB2 uxth r3, r3 13513 .loc 1 6613 6 13514 0024 002B cmp r3, #0 13515 0026 04D1 bne .L662 6614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */ 6616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 13516 .loc 1 6616 5 13517 0028 2021 movs r1, #32 13518 002a F868 ldr r0, [r7, #12] 13519 002c FFF7FEFF bl I2C_Enable_IRQ 6617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ 6619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */ 6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; 6623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */ 6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 357 6633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, 6636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 6637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 6640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 6644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); 6645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13520 .loc 1 6647 1 13521 0030 2DE0 b .L667 13522 .L662: 6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13523 .loc 1 6622 9 13524 0032 FB68 ldr r3, [r7, #12] 13525 0034 5B6A ldr r3, [r3, #36] 6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13526 .loc 1 6622 27 13527 0036 FA68 ldr r2, [r7, #12] 13528 0038 128D ldrh r2, [r2, #40] 6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13529 .loc 1 6622 20 13530 003a 1A44 add r2, r2, r3 13531 003c FB68 ldr r3, [r7, #12] 13532 003e 5A62 str r2, [r3, #36] 6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13533 .loc 1 6625 13 13534 0040 FB68 ldr r3, [r7, #12] 13535 0042 5B8D ldrh r3, [r3, #42] @ movhi 13536 0044 9BB2 uxth r3, r3 6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13537 .loc 1 6625 8 13538 0046 FF2B cmp r3, #255 13539 0048 03D9 bls .L664 6627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13540 .loc 1 6627 22 13541 004a FB68 ldr r3, [r7, #12] 13542 004c FF22 movs r2, #255 13543 004e 1A85 strh r2, [r3, #40] @ movhi 13544 0050 04E0 b .L665 13545 .L664: 6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13546 .loc 1 6631 28 13547 0052 FB68 ldr r3, [r7, #12] 13548 0054 5B8D ldrh r3, [r3, #42] @ movhi 13549 0056 9AB2 uxth r2, r3 6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13550 .loc 1 6631 22 13551 0058 FB68 ldr r3, [r7, #12] 13552 005a 1A85 strh r2, [r3, #40] @ movhi 13553 .L665: ARM GAS /tmp/cc5G5cqz.s page 358 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13554 .loc 1 6635 9 13555 005c FB68 ldr r3, [r7, #12] 13556 005e D86B ldr r0, [r3, #60] 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13557 .loc 1 6635 55 13558 0060 FB68 ldr r3, [r7, #12] 13559 0062 1B68 ldr r3, [r3] 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13560 .loc 1 6635 50 13561 0064 2433 adds r3, r3, #36 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13562 .loc 1 6635 9 13563 0066 1946 mov r1, r3 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13564 .loc 1 6635 87 13565 0068 FB68 ldr r3, [r7, #12] 13566 006a 5B6A ldr r3, [r3, #36] 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13567 .loc 1 6635 9 13568 006c 1A46 mov r2, r3 6636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13569 .loc 1 6636 30 13570 006e FB68 ldr r3, [r7, #12] 13571 0070 1B8D ldrh r3, [r3, #40] 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13572 .loc 1 6635 9 13573 0072 FFF7FEFF bl HAL_DMA_Start_IT 13574 0076 0346 mov r3, r0 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 13575 .loc 1 6635 8 discriminator 1 13576 0078 002B cmp r3, #0 13577 007a 04D0 beq .L666 6639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13578 .loc 1 6639 7 13579 007c 1021 movs r1, #16 13580 007e F868 ldr r0, [r7, #12] 13581 0080 FFF7FEFF bl I2C_ITError 13582 .loc 1 6647 1 13583 0084 03E0 b .L667 13584 .L666: 6644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13585 .loc 1 6644 7 13586 0086 4021 movs r1, #64 13587 0088 F868 ldr r0, [r7, #12] 13588 008a FFF7FEFF bl I2C_Enable_IRQ 13589 .L667: 13590 .loc 1 6647 1 13591 008e 00BF nop 13592 0090 1037 adds r7, r7, #16 13593 .cfi_def_cfa_offset 8 13594 0092 BD46 mov sp, r7 13595 .cfi_def_cfa_register 13 13596 @ sp needed 13597 0094 80BD pop {r7, pc} 13598 .cfi_endproc 13599 .LFE198: ARM GAS /tmp/cc5G5cqz.s page 359 13601 .section .text.I2C_DMASlaveReceiveCplt,"ax",%progbits 13602 .align 1 13603 .syntax unified 13604 .thumb 13605 .thumb_func 13607 I2C_DMASlaveReceiveCplt: 13608 .LFB199: 6648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave receive process complete callback. 6652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) 6656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13609 .loc 1 6656 1 13610 .cfi_startproc 13611 @ args = 0, pretend = 0, frame = 16 13612 @ frame_needed = 1, uses_anonymous_args = 0 13613 0000 80B5 push {r7, lr} 13614 .cfi_def_cfa_offset 8 13615 .cfi_offset 7, -8 13616 .cfi_offset 14, -4 13617 0002 84B0 sub sp, sp, #16 13618 .cfi_def_cfa_offset 24 13619 0004 00AF add r7, sp, #0 13620 .cfi_def_cfa_register 7 13621 0006 7860 str r0, [r7, #4] 6657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13622 .loc 1 6658 22 13623 0008 7B68 ldr r3, [r7, #4] 13624 000a 5B6A ldr r3, [r3, #36] 13625 000c FB60 str r3, [r7, #12] 6659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 13626 .loc 1 6659 12 13627 000e FB68 ldr r3, [r7, #12] 13628 0010 DB6A ldr r3, [r3, #44] 13629 0012 BB60 str r3, [r7, #8] 6660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ 13630 .loc 1 6661 8 13631 0014 FB68 ldr r3, [r7, #12] 13632 0016 DB6B ldr r3, [r3, #60] 13633 0018 1B68 ldr r3, [r3] 13634 001a 5B68 ldr r3, [r3, #4] 13635 .loc 1 6661 6 13636 001c 002B cmp r3, #0 13637 001e 0ED1 bne .L670 13638 .loc 1 6661 53 discriminator 1 13639 0020 BB68 ldr r3, [r7, #8] 13640 0022 13F5803F cmn r3, #65536 13641 0026 0AD0 beq .L670 6662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 6663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ ARM GAS /tmp/cc5G5cqz.s page 360 6665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 13642 .loc 1 6665 9 13643 0028 FB68 ldr r3, [r7, #12] 13644 002a 1B68 ldr r3, [r3] 13645 .loc 1 6665 19 13646 002c 1A68 ldr r2, [r3] 13647 .loc 1 6665 9 13648 002e FB68 ldr r3, [r7, #12] 13649 0030 1B68 ldr r3, [r3] 13650 .loc 1 6665 25 13651 0032 22F40042 bic r2, r2, #32768 13652 0036 1A60 str r2, [r3] 6666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 6668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 13653 .loc 1 6668 5 13654 0038 F868 ldr r0, [r7, #12] 13655 003a FFF7FEFF bl I2C_ITSlaveSeqCplt 13656 .L670: 6669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ 6673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */ 6674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ 6675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13657 .loc 1 6676 1 13658 003e 00BF nop 13659 0040 1037 adds r7, r7, #16 13660 .cfi_def_cfa_offset 8 13661 0042 BD46 mov sp, r7 13662 .cfi_def_cfa_register 13 13663 @ sp needed 13664 0044 80BD pop {r7, pc} 13665 .cfi_endproc 13666 .LFE199: 13668 .section .text.I2C_DMAError,"ax",%progbits 13669 .align 1 13670 .syntax unified 13671 .thumb 13672 .thumb_func 13674 I2C_DMAError: 13675 .LFB200: 6677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication error callback. 6681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma) 6685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13676 .loc 1 6685 1 13677 .cfi_startproc 13678 @ args = 0, pretend = 0, frame = 16 13679 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS /tmp/cc5G5cqz.s page 361 13680 0000 80B5 push {r7, lr} 13681 .cfi_def_cfa_offset 8 13682 .cfi_offset 7, -8 13683 .cfi_offset 14, -4 13684 0002 84B0 sub sp, sp, #16 13685 .cfi_def_cfa_offset 24 13686 0004 00AF add r7, sp, #0 13687 .cfi_def_cfa_register 7 13688 0006 7860 str r0, [r7, #4] 6686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13689 .loc 1 6687 22 13690 0008 7B68 ldr r3, [r7, #4] 13691 000a 5B6A ldr r3, [r3, #36] 13692 000c FB60 str r3, [r7, #12] 6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Acknowledge */ 6690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 13693 .loc 1 6690 7 13694 000e FB68 ldr r3, [r7, #12] 13695 0010 1B68 ldr r3, [r3] 13696 .loc 1 6690 17 13697 0012 5A68 ldr r2, [r3, #4] 13698 .loc 1 6690 7 13699 0014 FB68 ldr r3, [r7, #12] 13700 0016 1B68 ldr r3, [r3] 13701 .loc 1 6690 23 13702 0018 42F40042 orr r2, r2, #32768 13703 001c 5A60 str r2, [r3, #4] 6691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 13704 .loc 1 6693 3 13705 001e 1021 movs r1, #16 13706 0020 F868 ldr r0, [r7, #12] 13707 0022 FFF7FEFF bl I2C_ITError 6694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13708 .loc 1 6694 1 13709 0026 00BF nop 13710 0028 1037 adds r7, r7, #16 13711 .cfi_def_cfa_offset 8 13712 002a BD46 mov sp, r7 13713 .cfi_def_cfa_register 13 13714 @ sp needed 13715 002c 80BD pop {r7, pc} 13716 .cfi_endproc 13717 .LFE200: 13719 .section .text.I2C_DMAAbort,"ax",%progbits 13720 .align 1 13721 .syntax unified 13722 .thumb 13723 .thumb_func 13725 I2C_DMAAbort: 13726 .LFB201: 6695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** ARM GAS /tmp/cc5G5cqz.s page 362 6698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication abort callback 6699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * (To be called at end of DMA Abort procedure). 6700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle. 6701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) 6704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13727 .loc 1 6704 1 13728 .cfi_startproc 13729 @ args = 0, pretend = 0, frame = 16 13730 @ frame_needed = 1, uses_anonymous_args = 0 13731 0000 80B5 push {r7, lr} 13732 .cfi_def_cfa_offset 8 13733 .cfi_offset 7, -8 13734 .cfi_offset 14, -4 13735 0002 84B0 sub sp, sp, #16 13736 .cfi_def_cfa_offset 24 13737 0004 00AF add r7, sp, #0 13738 .cfi_def_cfa_register 7 13739 0006 7860 str r0, [r7, #4] 6705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 13740 .loc 1 6706 22 13741 0008 7B68 ldr r3, [r7, #4] 13742 000a 5B6A ldr r3, [r3, #36] 13743 000c FB60 str r3, [r7, #12] 6707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset AbortCpltCallback */ 6709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 13744 .loc 1 6709 11 13745 000e FB68 ldr r3, [r7, #12] 13746 0010 9B6B ldr r3, [r3, #56] 13747 .loc 1 6709 6 13748 0012 002B cmp r3, #0 13749 0014 03D0 beq .L673 6710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 13750 .loc 1 6711 9 13751 0016 FB68 ldr r3, [r7, #12] 13752 0018 9B6B ldr r3, [r3, #56] 13753 .loc 1 6711 37 13754 001a 0022 movs r2, #0 13755 001c 5A63 str r2, [r3, #52] 13756 .L673: 6712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 13757 .loc 1 6713 11 13758 001e FB68 ldr r3, [r7, #12] 13759 0020 DB6B ldr r3, [r3, #60] 13760 .loc 1 6713 6 13761 0022 002B cmp r3, #0 13762 0024 03D0 beq .L674 6714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 13763 .loc 1 6715 9 13764 0026 FB68 ldr r3, [r7, #12] 13765 0028 DB6B ldr r3, [r3, #60] ARM GAS /tmp/cc5G5cqz.s page 363 13766 .loc 1 6715 37 13767 002a 0022 movs r2, #0 13768 002c 5A63 str r2, [r3, #52] 13769 .L674: 6716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 13770 .loc 1 6718 3 13771 002e F868 ldr r0, [r7, #12] 13772 0030 FFF7FEFF bl I2C_TreatErrorCallback 6719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13773 .loc 1 6719 1 13774 0034 00BF nop 13775 0036 1037 adds r7, r7, #16 13776 .cfi_def_cfa_offset 8 13777 0038 BD46 mov sp, r7 13778 .cfi_def_cfa_register 13 13779 @ sp needed 13780 003a 80BD pop {r7, pc} 13781 .cfi_endproc 13782 .LFE201: 13784 .section .text.I2C_WaitOnFlagUntilTimeout,"ax",%progbits 13785 .align 1 13786 .syntax unified 13787 .thumb 13788 .thumb_func 13790 I2C_WaitOnFlagUntilTimeout: 13791 .LFB202: 6720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout. It waits 6724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * until a flag is no longer in the specified status. 6725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 6727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Flag Specifies the I2C flag to check. 6728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Status The actual Flag status (SET or RESET). 6729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta 6734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart) 6735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13792 .loc 1 6735 1 13793 .cfi_startproc 13794 @ args = 4, pretend = 0, frame = 16 13795 @ frame_needed = 1, uses_anonymous_args = 0 13796 0000 80B5 push {r7, lr} 13797 .cfi_def_cfa_offset 8 13798 .cfi_offset 7, -8 13799 .cfi_offset 14, -4 13800 0002 84B0 sub sp, sp, #16 13801 .cfi_def_cfa_offset 24 13802 0004 00AF add r7, sp, #0 13803 .cfi_def_cfa_register 7 13804 0006 F860 str r0, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 364 13805 0008 B960 str r1, [r7, #8] 13806 000a 3B60 str r3, [r7] 13807 000c 1346 mov r3, r2 13808 000e FB71 strb r3, [r7, #7] 6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) 13809 .loc 1 6736 9 13810 0010 31E0 b .L677 13811 .L681: 6737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 13812 .loc 1 6739 8 13813 0012 3B68 ldr r3, [r7] 13814 0014 B3F1FF3F cmp r3, #-1 13815 0018 2DD0 beq .L677 6740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 13816 .loc 1 6741 13 13817 001a FFF7FEFF bl HAL_GetTick 13818 001e 0246 mov r2, r0 13819 .loc 1 6741 27 discriminator 1 13820 0020 BB69 ldr r3, [r7, #24] 13821 0022 D31A subs r3, r2, r3 13822 .loc 1 6741 10 discriminator 1 13823 0024 3A68 ldr r2, [r7] 13824 0026 9A42 cmp r2, r3 13825 0028 02D3 bcc .L678 13826 .loc 1 6741 51 discriminator 1 13827 002a 3B68 ldr r3, [r7] 13828 002c 002B cmp r3, #0 13829 002e 22D1 bne .L677 13830 .L678: 6742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) 13831 .loc 1 6743 14 13832 0030 FB68 ldr r3, [r7, #12] 13833 0032 1B68 ldr r3, [r3] 13834 0034 9A69 ldr r2, [r3, #24] 13835 0036 BB68 ldr r3, [r7, #8] 13836 0038 1340 ands r3, r3, r2 13837 003a BA68 ldr r2, [r7, #8] 13838 003c 9A42 cmp r2, r3 13839 003e 0CBF ite eq 13840 0040 0123 moveq r3, #1 13841 0042 0023 movne r3, #0 13842 0044 DBB2 uxtb r3, r3 13843 0046 1A46 mov r2, r3 13844 .loc 1 6743 45 13845 0048 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 13846 .loc 1 6743 12 13847 004a 9A42 cmp r2, r3 13848 004c 13D1 bne .L677 6744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 13849 .loc 1 6745 15 13850 004e FB68 ldr r3, [r7, #12] 13851 0050 5B6C ldr r3, [r3, #68] ARM GAS /tmp/cc5G5cqz.s page 365 13852 .loc 1 6745 27 13853 0052 43F02002 orr r2, r3, #32 13854 0056 FB68 ldr r3, [r7, #12] 13855 0058 5A64 str r2, [r3, #68] 6746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 13856 .loc 1 6746 23 13857 005a FB68 ldr r3, [r7, #12] 13858 005c 2022 movs r2, #32 13859 005e 83F84120 strb r2, [r3, #65] 6747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 13860 .loc 1 6747 22 13861 0062 FB68 ldr r3, [r7, #12] 13862 0064 0022 movs r2, #0 13863 0066 83F84220 strb r2, [r3, #66] 6748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13864 .loc 1 6750 11 13865 006a FB68 ldr r3, [r7, #12] 13866 006c 0022 movs r2, #0 13867 006e 83F84020 strb r2, [r3, #64] 6751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 13868 .loc 1 6751 18 13869 0072 0123 movs r3, #1 13870 0074 0FE0 b .L680 13871 .L677: 6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13872 .loc 1 6736 10 13873 0076 FB68 ldr r3, [r7, #12] 13874 0078 1B68 ldr r3, [r3] 13875 007a 9A69 ldr r2, [r3, #24] 13876 007c BB68 ldr r3, [r7, #8] 13877 007e 1340 ands r3, r3, r2 13878 0080 BA68 ldr r2, [r7, #8] 13879 0082 9A42 cmp r2, r3 13880 0084 0CBF ite eq 13881 0086 0123 moveq r3, #1 13882 0088 0023 movne r3, #0 13883 008a DBB2 uxtb r3, r3 13884 008c 1A46 mov r2, r3 6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13885 .loc 1 6736 41 13886 008e FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 13887 0090 9A42 cmp r2, r3 13888 0092 BED0 beq .L681 6752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 13889 .loc 1 6756 10 13890 0094 0023 movs r3, #0 13891 .L680: 6757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13892 .loc 1 6757 1 13893 0096 1846 mov r0, r3 13894 0098 1037 adds r7, r7, #16 ARM GAS /tmp/cc5G5cqz.s page 366 13895 .cfi_def_cfa_offset 8 13896 009a BD46 mov sp, r7 13897 .cfi_def_cfa_register 13 13898 @ sp needed 13899 009c 80BD pop {r7, pc} 13900 .cfi_endproc 13901 .LFE202: 13903 .section .text.I2C_WaitOnTXISFlagUntilTimeout,"ax",%progbits 13904 .align 1 13905 .syntax unified 13906 .thumb 13907 .thumb_func 13909 I2C_WaitOnTXISFlagUntilTimeout: 13910 .LFB203: 6758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. 6761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 6763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 6768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 6769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13911 .loc 1 6769 1 13912 .cfi_startproc 13913 @ args = 0, pretend = 0, frame = 16 13914 @ frame_needed = 1, uses_anonymous_args = 0 13915 0000 80B5 push {r7, lr} 13916 .cfi_def_cfa_offset 8 13917 .cfi_offset 7, -8 13918 .cfi_offset 14, -4 13919 0002 84B0 sub sp, sp, #16 13920 .cfi_def_cfa_offset 24 13921 0004 00AF add r7, sp, #0 13922 .cfi_def_cfa_register 7 13923 0006 F860 str r0, [r7, #12] 13924 0008 B960 str r1, [r7, #8] 13925 000a 7A60 str r2, [r7, #4] 6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) 13926 .loc 1 6770 9 13927 000c 33E0 b .L686 13928 .L689: 6771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 6773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 13929 .loc 1 6773 9 13930 000e 7A68 ldr r2, [r7, #4] 13931 0010 B968 ldr r1, [r7, #8] 13932 0012 F868 ldr r0, [r7, #12] 13933 0014 FFF7FEFF bl I2C_IsErrorOccurred 13934 0018 0346 mov r3, r0 13935 .loc 1 6773 8 discriminator 1 13936 001a 002B cmp r3, #0 13937 001c 01D0 beq .L684 ARM GAS /tmp/cc5G5cqz.s page 367 6774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 13938 .loc 1 6775 14 13939 001e 0123 movs r3, #1 13940 0020 31E0 b .L685 13941 .L684: 6776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 13942 .loc 1 6779 8 13943 0022 BB68 ldr r3, [r7, #8] 13944 0024 B3F1FF3F cmp r3, #-1 13945 0028 25D0 beq .L686 6780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 13946 .loc 1 6781 13 13947 002a FFF7FEFF bl HAL_GetTick 13948 002e 0246 mov r2, r0 13949 .loc 1 6781 27 discriminator 1 13950 0030 7B68 ldr r3, [r7, #4] 13951 0032 D31A subs r3, r2, r3 13952 .loc 1 6781 10 discriminator 1 13953 0034 BA68 ldr r2, [r7, #8] 13954 0036 9A42 cmp r2, r3 13955 0038 02D3 bcc .L687 13956 .loc 1 6781 51 discriminator 1 13957 003a BB68 ldr r3, [r7, #8] 13958 003c 002B cmp r3, #0 13959 003e 1AD1 bne .L686 13960 .L687: 6782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) 13961 .loc 1 6783 14 13962 0040 FB68 ldr r3, [r7, #12] 13963 0042 1B68 ldr r3, [r3] 13964 0044 9B69 ldr r3, [r3, #24] 13965 0046 03F00203 and r3, r3, #2 13966 .loc 1 6783 12 13967 004a 022B cmp r3, #2 13968 004c 13D0 beq .L686 6784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 13969 .loc 1 6785 15 13970 004e FB68 ldr r3, [r7, #12] 13971 0050 5B6C ldr r3, [r3, #68] 13972 .loc 1 6785 27 13973 0052 43F02002 orr r2, r3, #32 13974 0056 FB68 ldr r3, [r7, #12] 13975 0058 5A64 str r2, [r3, #68] 6786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 13976 .loc 1 6786 23 13977 005a FB68 ldr r3, [r7, #12] 13978 005c 2022 movs r2, #32 13979 005e 83F84120 strb r2, [r3, #65] 6787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 13980 .loc 1 6787 22 ARM GAS /tmp/cc5G5cqz.s page 368 13981 0062 FB68 ldr r3, [r7, #12] 13982 0064 0022 movs r2, #0 13983 0066 83F84220 strb r2, [r3, #66] 6788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13984 .loc 1 6790 11 13985 006a FB68 ldr r3, [r7, #12] 13986 006c 0022 movs r2, #0 13987 006e 83F84020 strb r2, [r3, #64] 6791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 13988 .loc 1 6792 18 13989 0072 0123 movs r3, #1 13990 0074 07E0 b .L685 13991 .L686: 6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13992 .loc 1 6770 10 13993 0076 FB68 ldr r3, [r7, #12] 13994 0078 1B68 ldr r3, [r3] 13995 007a 9B69 ldr r3, [r3, #24] 13996 007c 03F00203 and r3, r3, #2 6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13997 .loc 1 6770 50 13998 0080 022B cmp r3, #2 13999 0082 C4D1 bne .L689 6793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 14000 .loc 1 6797 10 14001 0084 0023 movs r3, #0 14002 .L685: 6798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14003 .loc 1 6798 1 14004 0086 1846 mov r0, r3 14005 0088 1037 adds r7, r7, #16 14006 .cfi_def_cfa_offset 8 14007 008a BD46 mov sp, r7 14008 .cfi_def_cfa_register 13 14009 @ sp needed 14010 008c 80BD pop {r7, pc} 14011 .cfi_endproc 14012 .LFE203: 14014 .section .text.I2C_WaitOnSTOPFlagUntilTimeout,"ax",%progbits 14015 .align 1 14016 .syntax unified 14017 .thumb 14018 .thumb_func 14020 I2C_WaitOnSTOPFlagUntilTimeout: 14021 .LFB204: 6799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. 6802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. ARM GAS /tmp/cc5G5cqz.s page 369 6804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 6809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14022 .loc 1 6810 1 14023 .cfi_startproc 14024 @ args = 0, pretend = 0, frame = 16 14025 @ frame_needed = 1, uses_anonymous_args = 0 14026 0000 80B5 push {r7, lr} 14027 .cfi_def_cfa_offset 8 14028 .cfi_offset 7, -8 14029 .cfi_offset 14, -4 14030 0002 84B0 sub sp, sp, #16 14031 .cfi_def_cfa_offset 24 14032 0004 00AF add r7, sp, #0 14033 .cfi_def_cfa_register 7 14034 0006 F860 str r0, [r7, #12] 14035 0008 B960 str r1, [r7, #8] 14036 000a 7A60 str r2, [r7, #4] 6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) 14037 .loc 1 6811 9 14038 000c 2FE0 b .L691 14039 .L696: 6812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 6814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 14040 .loc 1 6814 9 14041 000e 7A68 ldr r2, [r7, #4] 14042 0010 B968 ldr r1, [r7, #8] 14043 0012 F868 ldr r0, [r7, #12] 14044 0014 FFF7FEFF bl I2C_IsErrorOccurred 14045 0018 0346 mov r3, r0 14046 .loc 1 6814 8 discriminator 1 14047 001a 002B cmp r3, #0 14048 001c 01D0 beq .L692 6815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 14049 .loc 1 6816 14 14050 001e 0123 movs r3, #1 14051 0020 2DE0 b .L693 14052 .L692: 6817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 14053 .loc 1 6820 11 14054 0022 FFF7FEFF bl HAL_GetTick 14055 0026 0246 mov r2, r0 14056 .loc 1 6820 25 discriminator 1 14057 0028 7B68 ldr r3, [r7, #4] 14058 002a D31A subs r3, r2, r3 14059 .loc 1 6820 8 discriminator 1 14060 002c BA68 ldr r2, [r7, #8] 14061 002e 9A42 cmp r2, r3 ARM GAS /tmp/cc5G5cqz.s page 370 14062 0030 02D3 bcc .L694 14063 .loc 1 6820 49 discriminator 1 14064 0032 BB68 ldr r3, [r7, #8] 14065 0034 002B cmp r3, #0 14066 0036 1AD1 bne .L691 14067 .L694: 6821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) 14068 .loc 1 6822 12 14069 0038 FB68 ldr r3, [r7, #12] 14070 003a 1B68 ldr r3, [r3] 14071 003c 9B69 ldr r3, [r3, #24] 14072 003e 03F02003 and r3, r3, #32 14073 .loc 1 6822 10 14074 0042 202B cmp r3, #32 14075 0044 13D0 beq .L691 6823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 14076 .loc 1 6824 13 14077 0046 FB68 ldr r3, [r7, #12] 14078 0048 5B6C ldr r3, [r3, #68] 14079 .loc 1 6824 25 14080 004a 43F02002 orr r2, r3, #32 14081 004e FB68 ldr r3, [r7, #12] 14082 0050 5A64 str r2, [r3, #68] 6825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14083 .loc 1 6825 21 14084 0052 FB68 ldr r3, [r7, #12] 14085 0054 2022 movs r2, #32 14086 0056 83F84120 strb r2, [r3, #65] 6826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 14087 .loc 1 6826 20 14088 005a FB68 ldr r3, [r7, #12] 14089 005c 0022 movs r2, #0 14090 005e 83F84220 strb r2, [r3, #66] 6827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14091 .loc 1 6829 9 14092 0062 FB68 ldr r3, [r7, #12] 14093 0064 0022 movs r2, #0 14094 0066 83F84020 strb r2, [r3, #64] 6830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 14095 .loc 1 6831 16 14096 006a 0123 movs r3, #1 14097 006c 07E0 b .L693 14098 .L691: 6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14099 .loc 1 6811 10 14100 006e FB68 ldr r3, [r7, #12] 14101 0070 1B68 ldr r3, [r3] 14102 0072 9B69 ldr r3, [r3, #24] 14103 0074 03F02003 and r3, r3, #32 6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14104 .loc 1 6811 51 14105 0078 202B cmp r3, #32 ARM GAS /tmp/cc5G5cqz.s page 371 14106 007a C8D1 bne .L696 6832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 14107 .loc 1 6835 10 14108 007c 0023 movs r3, #0 14109 .L693: 6836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14110 .loc 1 6836 1 14111 007e 1846 mov r0, r3 14112 0080 1037 adds r7, r7, #16 14113 .cfi_def_cfa_offset 8 14114 0082 BD46 mov sp, r7 14115 .cfi_def_cfa_register 13 14116 @ sp needed 14117 0084 80BD pop {r7, pc} 14118 .cfi_endproc 14119 .LFE204: 14121 .section .text.I2C_WaitOnRXNEFlagUntilTimeout,"ax",%progbits 14122 .align 1 14123 .syntax unified 14124 .thumb 14125 .thumb_func 14127 I2C_WaitOnRXNEFlagUntilTimeout: 14128 .LFB205: 6837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. 6840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 6842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 6847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 6848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14129 .loc 1 6848 1 14130 .cfi_startproc 14131 @ args = 0, pretend = 0, frame = 16 14132 @ frame_needed = 1, uses_anonymous_args = 0 14133 0000 80B5 push {r7, lr} 14134 .cfi_def_cfa_offset 8 14135 .cfi_offset 7, -8 14136 .cfi_offset 14, -4 14137 0002 84B0 sub sp, sp, #16 14138 .cfi_def_cfa_offset 24 14139 0004 00AF add r7, sp, #0 14140 .cfi_def_cfa_register 7 14141 0006 F860 str r0, [r7, #12] 14142 0008 B960 str r1, [r7, #8] 14143 000a 7A60 str r2, [r7, #4] 6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) 14144 .loc 1 6849 9 14145 000c 6BE0 b .L698 14146 .L707: ARM GAS /tmp/cc5G5cqz.s page 372 6850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 6852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 14147 .loc 1 6852 9 14148 000e 7A68 ldr r2, [r7, #4] 14149 0010 B968 ldr r1, [r7, #8] 14150 0012 F868 ldr r0, [r7, #12] 14151 0014 FFF7FEFF bl I2C_IsErrorOccurred 14152 0018 0346 mov r3, r0 14153 .loc 1 6852 8 discriminator 1 14154 001a 002B cmp r3, #0 14155 001c 01D0 beq .L699 6853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 14156 .loc 1 6854 14 14157 001e 0123 movs r3, #1 14158 0020 69E0 b .L700 14159 .L699: 6855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a STOPF is detected */ 6858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) 14160 .loc 1 6858 9 14161 0022 FB68 ldr r3, [r7, #12] 14162 0024 1B68 ldr r3, [r3] 14163 0026 9B69 ldr r3, [r3, #24] 14164 0028 03F02003 and r3, r3, #32 14165 .loc 1 6858 8 14166 002c 202B cmp r3, #32 14167 002e 38D1 bne .L701 6859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an RXNE is pending */ 6861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 6862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) 14168 .loc 1 6862 12 14169 0030 FB68 ldr r3, [r7, #12] 14170 0032 1B68 ldr r3, [r3] 14171 0034 9B69 ldr r3, [r3, #24] 14172 0036 03F00403 and r3, r3, #4 14173 .loc 1 6862 10 14174 003a 042B cmp r3, #4 14175 003c 05D1 bne .L702 14176 .loc 1 6862 68 discriminator 1 14177 003e FB68 ldr r3, [r7, #12] 14178 0040 1B8D ldrh r3, [r3, #40] 14179 .loc 1 6862 60 discriminator 1 14180 0042 002B cmp r3, #0 14181 0044 01D0 beq .L702 6863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return HAL_OK */ 6865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The Reading of data from RXDR will be done in caller function */ 6866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 14182 .loc 1 6866 16 14183 0046 0023 movs r3, #0 14184 0048 55E0 b .L700 14185 .L702: 6867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 373 6868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) 14186 .loc 1 6870 13 14187 004a FB68 ldr r3, [r7, #12] 14188 004c 1B68 ldr r3, [r3] 14189 004e 9B69 ldr r3, [r3, #24] 14190 0050 03F01003 and r3, r3, #16 14191 .loc 1 6870 12 14192 0054 102B cmp r3, #16 14193 0056 07D1 bne .L703 6871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 14194 .loc 1 6872 11 14195 0058 FB68 ldr r3, [r7, #12] 14196 005a 1B68 ldr r3, [r3] 14197 005c 1022 movs r2, #16 14198 005e DA61 str r2, [r3, #28] 6873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_AF; 14199 .loc 1 6873 27 14200 0060 FB68 ldr r3, [r7, #12] 14201 0062 0422 movs r2, #4 14202 0064 5A64 str r2, [r3, #68] 14203 0066 02E0 b .L704 14204 .L703: 6874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 14205 .loc 1 6877 27 14206 0068 FB68 ldr r3, [r7, #12] 14207 006a 0022 movs r2, #0 14208 006c 5A64 str r2, [r3, #68] 14209 .L704: 6878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 14210 .loc 1 6881 9 14211 006e FB68 ldr r3, [r7, #12] 14212 0070 1B68 ldr r3, [r3] 14213 0072 2022 movs r2, #32 14214 0074 DA61 str r2, [r3, #28] 6882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 6884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 14215 .loc 1 6884 9 14216 0076 FB68 ldr r3, [r7, #12] 14217 0078 1B68 ldr r3, [r3] 14218 007a 5968 ldr r1, [r3, #4] 14219 007c FB68 ldr r3, [r7, #12] 14220 007e 1A68 ldr r2, [r3] 14221 0080 1F4B ldr r3, .L708 14222 0082 0B40 ands r3, r3, r1 14223 0084 5360 str r3, [r2, #4] 6885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; ARM GAS /tmp/cc5G5cqz.s page 374 14224 .loc 1 6886 21 14225 0086 FB68 ldr r3, [r7, #12] 14226 0088 2022 movs r2, #32 14227 008a 83F84120 strb r2, [r3, #65] 6887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 14228 .loc 1 6887 20 14229 008e FB68 ldr r3, [r7, #12] 14230 0090 0022 movs r2, #0 14231 0092 83F84220 strb r2, [r3, #66] 6888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14232 .loc 1 6890 9 14233 0096 FB68 ldr r3, [r7, #12] 14234 0098 0022 movs r2, #0 14235 009a 83F84020 strb r2, [r3, #64] 6891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 14236 .loc 1 6892 16 14237 009e 0123 movs r3, #1 14238 00a0 29E0 b .L700 14239 .L701: 6893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 14240 .loc 1 6897 11 14241 00a2 FFF7FEFF bl HAL_GetTick 14242 00a6 0246 mov r2, r0 14243 .loc 1 6897 25 discriminator 1 14244 00a8 7B68 ldr r3, [r7, #4] 14245 00aa D31A subs r3, r2, r3 14246 .loc 1 6897 8 discriminator 1 14247 00ac BA68 ldr r2, [r7, #8] 14248 00ae 9A42 cmp r2, r3 14249 00b0 02D3 bcc .L705 14250 .loc 1 6897 49 discriminator 1 14251 00b2 BB68 ldr r3, [r7, #8] 14252 00b4 002B cmp r3, #0 14253 00b6 16D1 bne .L698 14254 .L705: 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) 14255 .loc 1 6899 12 14256 00b8 FB68 ldr r3, [r7, #12] 14257 00ba 1B68 ldr r3, [r3] 14258 00bc 9B69 ldr r3, [r3, #24] 14259 00be 03F00403 and r3, r3, #4 14260 .loc 1 6899 10 14261 00c2 042B cmp r3, #4 14262 00c4 0FD0 beq .L698 6900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 14263 .loc 1 6901 13 14264 00c6 FB68 ldr r3, [r7, #12] 14265 00c8 5B6C ldr r3, [r3, #68] ARM GAS /tmp/cc5G5cqz.s page 375 14266 .loc 1 6901 25 14267 00ca 43F02002 orr r2, r3, #32 14268 00ce FB68 ldr r3, [r7, #12] 14269 00d0 5A64 str r2, [r3, #68] 6902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14270 .loc 1 6902 21 14271 00d2 FB68 ldr r3, [r7, #12] 14272 00d4 2022 movs r2, #32 14273 00d6 83F84120 strb r2, [r3, #65] 6903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14274 .loc 1 6905 9 14275 00da FB68 ldr r3, [r7, #12] 14276 00dc 0022 movs r2, #0 14277 00de 83F84020 strb r2, [r3, #64] 6906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 14278 .loc 1 6907 16 14279 00e2 0123 movs r3, #1 14280 00e4 07E0 b .L700 14281 .L698: 6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14282 .loc 1 6849 10 14283 00e6 FB68 ldr r3, [r7, #12] 14284 00e8 1B68 ldr r3, [r3] 14285 00ea 9B69 ldr r3, [r3, #24] 14286 00ec 03F00403 and r3, r3, #4 6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14287 .loc 1 6849 50 14288 00f0 042B cmp r3, #4 14289 00f2 8CD1 bne .L707 6908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 14290 .loc 1 6911 10 14291 00f4 0023 movs r3, #0 14292 .L700: 6912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14293 .loc 1 6912 1 14294 00f6 1846 mov r0, r3 14295 00f8 1037 adds r7, r7, #16 14296 .cfi_def_cfa_offset 8 14297 00fa BD46 mov sp, r7 14298 .cfi_def_cfa_register 13 14299 @ sp needed 14300 00fc 80BD pop {r7, pc} 14301 .L709: 14302 00fe 00BF .align 2 14303 .L708: 14304 0100 00E800FE .word -33495040 14305 .cfi_endproc 14306 .LFE205: 14308 .section .text.I2C_IsErrorOccurred,"ax",%progbits 14309 .align 1 14310 .syntax unified ARM GAS /tmp/cc5G5cqz.s page 376 14311 .thumb 14312 .thumb_func 14314 I2C_IsErrorOccurred: 14315 .LFB206: 6913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles errors detection during an I2C Communication. 6916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 6918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti 6923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14316 .loc 1 6923 1 14317 .cfi_startproc 14318 @ args = 0, pretend = 0, frame = 40 14319 @ frame_needed = 1, uses_anonymous_args = 0 14320 0000 80B5 push {r7, lr} 14321 .cfi_def_cfa_offset 8 14322 .cfi_offset 7, -8 14323 .cfi_offset 14, -4 14324 0002 8AB0 sub sp, sp, #40 14325 .cfi_def_cfa_offset 48 14326 0004 00AF add r7, sp, #0 14327 .cfi_def_cfa_register 7 14328 0006 F860 str r0, [r7, #12] 14329 0008 B960 str r1, [r7, #8] 14330 000a 7A60 str r2, [r7, #4] 6924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 14331 .loc 1 6924 21 14332 000c 0023 movs r3, #0 14333 000e 87F82730 strb r3, [r7, #39] 6925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; 14334 .loc 1 6925 27 14335 0012 FB68 ldr r3, [r7, #12] 14336 0014 1B68 ldr r3, [r3] 14337 .loc 1 6925 12 14338 0016 9B69 ldr r3, [r3, #24] 14339 0018 BB61 str r3, [r7, #24] 6926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t error_code = 0; 14340 .loc 1 6926 12 14341 001a 0023 movs r3, #0 14342 001c 3B62 str r3, [r7, #32] 6927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart = Tickstart; 14343 .loc 1 6927 12 14344 001e 7B68 ldr r3, [r7, #4] 14345 0020 FB61 str r3, [r7, #28] 6928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp1; 6929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp2; 6930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) 14346 .loc 1 6931 7 14347 0022 BB69 ldr r3, [r7, #24] 14348 0024 03F01003 and r3, r3, #16 14349 .loc 1 6931 6 ARM GAS /tmp/cc5G5cqz.s page 377 14350 0028 002B cmp r3, #0 14351 002a 68D0 beq .L711 6932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACKF Flag */ 6934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 14352 .loc 1 6934 5 14353 002c FB68 ldr r3, [r7, #12] 14354 002e 1B68 ldr r3, [r3] 14355 0030 1022 movs r2, #16 14356 0032 DA61 str r2, [r3, #28] 6935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP Flag is set or timeout occurred */ 6937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* AutoEnd should be initiate after AF */ 6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) 14357 .loc 1 6938 11 14358 0034 49E0 b .L713 14359 .L720: 6939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 14360 .loc 1 6941 10 14361 0036 BB68 ldr r3, [r7, #8] 14362 0038 B3F1FF3F cmp r3, #-1 14363 003c 45D0 beq .L713 6942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 14364 .loc 1 6943 15 14365 003e FFF7FEFF bl HAL_GetTick 14366 0042 0246 mov r2, r0 14367 .loc 1 6943 29 discriminator 1 14368 0044 FB69 ldr r3, [r7, #28] 14369 0046 D31A subs r3, r2, r3 14370 .loc 1 6943 12 discriminator 1 14371 0048 BA68 ldr r2, [r7, #8] 14372 004a 9A42 cmp r2, r3 14373 004c 02D3 bcc .L714 14374 .loc 1 6943 53 discriminator 1 14375 004e BB68 ldr r3, [r7, #8] 14376 0050 002B cmp r3, #0 14377 0052 3AD1 bne .L713 14378 .L714: 6944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); 14379 .loc 1 6945 33 14380 0054 FB68 ldr r3, [r7, #12] 14381 0056 1B68 ldr r3, [r3] 14382 .loc 1 6945 43 14383 0058 5B68 ldr r3, [r3, #4] 14384 .loc 1 6945 16 14385 005a 03F48043 and r3, r3, #16384 14386 005e 7B61 str r3, [r7, #20] 6946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = hi2c->Mode; 14387 .loc 1 6946 16 14388 0060 FB68 ldr r3, [r7, #12] 14389 0062 93F84230 ldrb r3, [r3, #66] 14390 0066 FB74 strb r3, [r7, #19] 6947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS /tmp/cc5G5cqz.s page 378 6948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of I2C still busy, try to regenerate a STOP manually */ 6949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ 14391 .loc 1 6949 16 14392 0068 FB68 ldr r3, [r7, #12] 14393 006a 1B68 ldr r3, [r3] 14394 006c 9B69 ldr r3, [r3, #24] 14395 006e 03F40043 and r3, r3, #32768 14396 .loc 1 6949 14 14397 0072 B3F5004F cmp r3, #32768 14398 0076 21D1 bne .L717 14399 .loc 1 6949 66 discriminator 1 14400 0078 7B69 ldr r3, [r7, #20] 14401 007a B3F5804F cmp r3, #16384 14402 007e 1DD0 beq .L717 6950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ 14403 .loc 1 6950 38 14404 0080 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 14405 0082 202B cmp r3, #32 14406 0084 1AD0 beq .L717 6951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp2 != HAL_I2C_MODE_SLAVE)) 6952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 6954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 14407 .loc 1 6954 17 14408 0086 FB68 ldr r3, [r7, #12] 14409 0088 1B68 ldr r3, [r3] 14410 .loc 1 6954 27 14411 008a 5A68 ldr r2, [r3, #4] 14412 .loc 1 6954 17 14413 008c FB68 ldr r3, [r7, #12] 14414 008e 1B68 ldr r3, [r3] 14415 .loc 1 6954 33 14416 0090 42F48042 orr r2, r2, #16384 14417 0094 5A60 str r2, [r3, #4] 6955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Tick with new reference */ 6957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 14418 .loc 1 6957 25 14419 0096 FFF7FEFF bl HAL_GetTick 14420 009a F861 str r0, [r7, #28] 6958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) 14421 .loc 1 6960 17 14422 009c 0EE0 b .L717 14423 .L718: 6961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 6963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) 14424 .loc 1 6963 18 14425 009e FFF7FEFF bl HAL_GetTick 14426 00a2 0246 mov r2, r0 14427 .loc 1 6963 32 discriminator 1 14428 00a4 FB69 ldr r3, [r7, #28] 14429 00a6 D31A subs r3, r2, r3 14430 .loc 1 6963 16 discriminator 1 14431 00a8 192B cmp r3, #25 ARM GAS /tmp/cc5G5cqz.s page 379 14432 00aa 07D9 bls .L717 6964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_TIMEOUT; 14433 .loc 1 6965 26 14434 00ac 3B6A ldr r3, [r7, #32] 14435 00ae 43F02003 orr r3, r3, #32 14436 00b2 3B62 str r3, [r7, #32] 6966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 14437 .loc 1 6967 22 14438 00b4 0123 movs r3, #1 14439 00b6 87F82730 strb r3, [r7, #39] 6968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 14440 .loc 1 6969 15 14441 00ba 06E0 b .L713 14442 .L717: 6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14443 .loc 1 6960 18 14444 00bc FB68 ldr r3, [r7, #12] 14445 00be 1B68 ldr r3, [r3] 14446 00c0 9B69 ldr r3, [r3, #24] 14447 00c2 03F02003 and r3, r3, #32 6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14448 .loc 1 6960 59 14449 00c6 202B cmp r3, #32 14450 00c8 E9D1 bne .L718 14451 .L713: 6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14452 .loc 1 6938 13 14453 00ca FB68 ldr r3, [r7, #12] 14454 00cc 1B68 ldr r3, [r3] 14455 00ce 9B69 ldr r3, [r3, #24] 14456 00d0 03F02003 and r3, r3, #32 6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14457 .loc 1 6938 64 14458 00d4 202B cmp r3, #32 14459 00d6 03D0 beq .L719 6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14460 .loc 1 6938 64 is_stmt 0 discriminator 1 14461 00d8 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 14462 00dc 002B cmp r3, #0 14463 00de AAD0 beq .L720 14464 .L719: 6970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case STOP Flag is detected, clear it */ 6977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status == HAL_OK) 14465 .loc 1 6977 8 is_stmt 1 14466 00e0 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 14467 00e4 002B cmp r3, #0 14468 00e6 03D1 bne .L721 6978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 380 6979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 14469 .loc 1 6980 7 14470 00e8 FB68 ldr r3, [r7, #12] 14471 00ea 1B68 ldr r3, [r3] 14472 00ec 2022 movs r2, #32 14473 00ee DA61 str r2, [r3, #28] 14474 .L721: 6981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_AF; 14475 .loc 1 6983 16 14476 00f0 3B6A ldr r3, [r7, #32] 14477 00f2 43F00403 orr r3, r3, #4 14478 00f6 3B62 str r3, [r7, #32] 6984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 14479 .loc 1 6985 12 14480 00f8 0123 movs r3, #1 14481 00fa 87F82730 strb r3, [r7, #39] 14482 .L711: 6986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Refresh Content of Status register */ 6989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** itflag = hi2c->Instance->ISR; 14483 .loc 1 6989 16 14484 00fe FB68 ldr r3, [r7, #12] 14485 0100 1B68 ldr r3, [r3] 14486 .loc 1 6989 10 14487 0102 9B69 ldr r3, [r3, #24] 14488 0104 BB61 str r3, [r7, #24] 6990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Then verify if an additional errors occurs */ 6992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a Bus error occurred */ 6993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) 14489 .loc 1 6993 7 14490 0106 BB69 ldr r3, [r7, #24] 14491 0108 03F48073 and r3, r3, #256 14492 .loc 1 6993 6 14493 010c 002B cmp r3, #0 14494 010e 0BD0 beq .L722 6994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_BERR; 14495 .loc 1 6995 16 14496 0110 3B6A ldr r3, [r7, #32] 14497 0112 43F00103 orr r3, r3, #1 14498 0116 3B62 str r3, [r7, #32] 6996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */ 6998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); 14499 .loc 1 6998 5 14500 0118 FB68 ldr r3, [r7, #12] 14501 011a 1B68 ldr r3, [r3] 14502 011c 4FF48072 mov r2, #256 14503 0120 DA61 str r2, [r3, #28] 6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; ARM GAS /tmp/cc5G5cqz.s page 381 14504 .loc 1 7000 12 14505 0122 0123 movs r3, #1 14506 0124 87F82730 strb r3, [r7, #39] 14507 .L722: 7001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Over-Run/Under-Run error occurred */ 7004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) 14508 .loc 1 7004 7 14509 0128 BB69 ldr r3, [r7, #24] 14510 012a 03F48063 and r3, r3, #1024 14511 .loc 1 7004 6 14512 012e 002B cmp r3, #0 14513 0130 0BD0 beq .L723 7005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_OVR; 14514 .loc 1 7006 16 14515 0132 3B6A ldr r3, [r7, #32] 14516 0134 43F00803 orr r3, r3, #8 14517 0138 3B62 str r3, [r7, #32] 7007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */ 7009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); 14518 .loc 1 7009 5 14519 013a FB68 ldr r3, [r7, #12] 14520 013c 1B68 ldr r3, [r3] 14521 013e 4FF48062 mov r2, #1024 14522 0142 DA61 str r2, [r3, #28] 7010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 14523 .loc 1 7011 12 14524 0144 0123 movs r3, #1 14525 0146 87F82730 strb r3, [r7, #39] 14526 .L723: 7012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Arbitration Loss error occurred */ 7015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) 14527 .loc 1 7015 7 14528 014a BB69 ldr r3, [r7, #24] 14529 014c 03F40073 and r3, r3, #512 14530 .loc 1 7015 6 14531 0150 002B cmp r3, #0 14532 0152 0BD0 beq .L724 7016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_ARLO; 14533 .loc 1 7017 16 14534 0154 3B6A ldr r3, [r7, #32] 14535 0156 43F00203 orr r3, r3, #2 14536 015a 3B62 str r3, [r7, #32] 7018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */ 7020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); 14537 .loc 1 7020 5 14538 015c FB68 ldr r3, [r7, #12] 14539 015e 1B68 ldr r3, [r3] 14540 0160 4FF40072 mov r2, #512 ARM GAS /tmp/cc5G5cqz.s page 382 14541 0164 DA61 str r2, [r3, #28] 7021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 14542 .loc 1 7022 12 14543 0166 0123 movs r3, #1 14544 0168 87F82730 strb r3, [r7, #39] 14545 .L724: 7023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status != HAL_OK) 14546 .loc 1 7025 6 14547 016c 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 14548 0170 002B cmp r3, #0 14549 0172 1CD0 beq .L725 7026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 7028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 14550 .loc 1 7028 5 14551 0174 F868 ldr r0, [r7, #12] 14552 0176 FFF7FEFF bl I2C_Flush_TXDR 7029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 7031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 14553 .loc 1 7031 5 14554 017a FB68 ldr r3, [r7, #12] 14555 017c 1B68 ldr r3, [r3] 14556 017e 5968 ldr r1, [r3, #4] 14557 0180 FB68 ldr r3, [r7, #12] 14558 0182 1A68 ldr r2, [r3] 14559 0184 0D4B ldr r3, .L727 14560 0186 0B40 ands r3, r3, r1 14561 0188 5360 str r3, [r2, #4] 7032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= error_code; 14562 .loc 1 7033 9 14563 018a FB68 ldr r3, [r7, #12] 14564 018c 5A6C ldr r2, [r3, #68] 14565 .loc 1 7033 21 14566 018e 3B6A ldr r3, [r7, #32] 14567 0190 1A43 orrs r2, r2, r3 14568 0192 FB68 ldr r3, [r7, #12] 14569 0194 5A64 str r2, [r3, #68] 7034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14570 .loc 1 7034 17 14571 0196 FB68 ldr r3, [r7, #12] 14572 0198 2022 movs r2, #32 14573 019a 83F84120 strb r2, [r3, #65] 7035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 14574 .loc 1 7035 16 14575 019e FB68 ldr r3, [r7, #12] 14576 01a0 0022 movs r2, #0 14577 01a2 83F84220 strb r2, [r3, #66] 7036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14578 .loc 1 7038 5 14579 01a6 FB68 ldr r3, [r7, #12] ARM GAS /tmp/cc5G5cqz.s page 383 14580 01a8 0022 movs r2, #0 14581 01aa 83F84020 strb r2, [r3, #64] 14582 .L725: 7039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 14583 .loc 1 7041 10 14584 01ae 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 7042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14585 .loc 1 7042 1 14586 01b2 1846 mov r0, r3 14587 01b4 2837 adds r7, r7, #40 14588 .cfi_def_cfa_offset 8 14589 01b6 BD46 mov sp, r7 14590 .cfi_def_cfa_register 13 14591 @ sp needed 14592 01b8 80BD pop {r7, pc} 14593 .L728: 14594 01ba 00BF .align 2 14595 .L727: 14596 01bc 00E800FE .word -33495040 14597 .cfi_endproc 14598 .LFE206: 14600 .section .text.I2C_TransferConfig,"ax",%progbits 14601 .align 1 14602 .syntax unified 14603 .thumb 14604 .thumb_func 14606 I2C_TransferConfig: 14607 .LFB207: 7043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag ar 7046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 7047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Specifies the slave address to be programmed. 7048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Specifies the number of bytes to be programmed. 7049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter must be a value between 0 and 255. 7050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Mode New state of the I2C START condition generation. 7051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 7052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_RELOAD_MODE Enable Reload mode . 7053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. 7054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. 7055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Request New state of the I2C START condition generation. 7056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 7057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. 7058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). 7059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. 7060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. 7061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t 7064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Request) 7065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14608 .loc 1 7065 1 14609 .cfi_startproc 14610 @ args = 4, pretend = 0, frame = 24 14611 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS /tmp/cc5G5cqz.s page 384 14612 @ link register save eliminated. 14613 0000 80B4 push {r7} 14614 .cfi_def_cfa_offset 4 14615 .cfi_offset 7, -4 14616 0002 87B0 sub sp, sp, #28 14617 .cfi_def_cfa_offset 32 14618 0004 00AF add r7, sp, #0 14619 .cfi_def_cfa_register 7 14620 0006 F860 str r0, [r7, #12] 14621 0008 7B60 str r3, [r7, #4] 14622 000a 0B46 mov r3, r1 @ movhi 14623 000c 7B81 strh r3, [r7, #10] @ movhi 14624 000e 1346 mov r3, r2 14625 0010 7B72 strb r3, [r7, #9] 7066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 7067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 7068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_MODE(Mode)); 7069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_REQUEST(Request)); 7070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ 14626 .loc 1 7072 52 14627 0012 7B89 ldrh r3, [r7, #10] 14628 0014 C3F30902 ubfx r2, r3, #0, #10 7073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 14629 .loc 1 7073 32 14630 0018 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2 14631 .loc 1 7073 47 14632 001a 1B04 lsls r3, r3, #16 14633 .loc 1 7073 70 14634 001c 03F47F03 and r3, r3, #16711680 7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 14635 .loc 1 7072 68 14636 0020 1A43 orrs r2, r2, r3 14637 .loc 1 7073 88 14638 0022 7B68 ldr r3, [r7, #4] 14639 0024 1A43 orrs r2, r2, r3 7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 14640 .loc 1 7072 19 14641 0026 3B6A ldr r3, [r7, #32] 14642 0028 1343 orrs r3, r3, r2 7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 14643 .loc 1 7072 12 14644 002a 23F00043 bic r3, r3, #-2147483648 14645 002e 7B61 str r3, [r7, #20] 7074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); 7075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* update CR2 register */ 7077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** MODIFY_REG(hi2c->Instance->CR2, \ 14646 .loc 1 7077 3 14647 0030 FB68 ldr r3, [r7, #12] 14648 0032 1B68 ldr r3, [r3] 14649 0034 5A68 ldr r2, [r3, #4] 14650 0036 3B6A ldr r3, [r7, #32] 14651 0038 5B0D lsrs r3, r3, #21 14652 003a 03F48061 and r1, r3, #1024 14653 003e 084B ldr r3, .L730 ARM GAS /tmp/cc5G5cqz.s page 385 14654 0040 0B43 orrs r3, r3, r1 14655 0042 DB43 mvns r3, r3 14656 0044 02EA0301 and r1, r2, r3 14657 0048 FB68 ldr r3, [r7, #12] 14658 004a 1B68 ldr r3, [r3] 14659 004c 7A69 ldr r2, [r7, #20] 14660 004e 0A43 orrs r2, r2, r1 14661 0050 5A60 str r2, [r3, #4] 7078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ 7079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ 7080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_CR2_START | I2C_CR2_STOP)), tmp); 7081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14662 .loc 1 7081 1 14663 0052 00BF nop 14664 0054 1C37 adds r7, r7, #28 14665 .cfi_def_cfa_offset 4 14666 0056 BD46 mov sp, r7 14667 .cfi_def_cfa_register 13 14668 @ sp needed 14669 0058 5DF8047B ldr r7, [sp], #4 14670 .cfi_restore 7 14671 .cfi_def_cfa_offset 0 14672 005c 7047 bx lr 14673 .L731: 14674 005e 00BF .align 2 14675 .L730: 14676 0060 FF63FF03 .word 67068927 14677 .cfi_endproc 14678 .LFE207: 14680 .section .text.I2C_Enable_IRQ,"ax",%progbits 14681 .align 1 14682 .syntax unified 14683 .thumb 14684 .thumb_func 14686 I2C_Enable_IRQ: 14687 .LFB208: 7082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the enabling of Interrupts. 7085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. 7088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) 7091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14688 .loc 1 7091 1 14689 .cfi_startproc 14690 @ args = 0, pretend = 0, frame = 16 14691 @ frame_needed = 1, uses_anonymous_args = 0 14692 @ link register save eliminated. 14693 0000 80B4 push {r7} 14694 .cfi_def_cfa_offset 4 14695 .cfi_offset 7, -4 14696 0002 85B0 sub sp, sp, #20 14697 .cfi_def_cfa_offset 24 14698 0004 00AF add r7, sp, #0 ARM GAS /tmp/cc5G5cqz.s page 386 14699 .cfi_def_cfa_register 7 14700 0006 7860 str r0, [r7, #4] 14701 0008 0B46 mov r3, r1 14702 000a 7B80 strh r3, [r7, #2] @ movhi 7092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U; 14703 .loc 1 7092 12 14704 000c 0023 movs r3, #0 14705 000e FB60 str r3, [r7, #12] 7093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ 14706 .loc 1 7094 12 14707 0010 7B68 ldr r3, [r7, #4] 14708 0012 5B6B ldr r3, [r3, #52] 14709 .loc 1 7094 6 14710 0014 3B4A ldr r2, .L745 14711 0016 9342 cmp r3, r2 14712 0018 32D0 beq .L733 7095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 14713 .loc 1 7095 12 14714 001a 7B68 ldr r3, [r7, #4] 14715 001c 5B6B ldr r3, [r3, #52] 7094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 14716 .loc 1 7094 45 discriminator 1 14717 001e 3A4A ldr r2, .L745+4 14718 0020 9342 cmp r3, r2 14719 0022 2DD0 beq .L733 7096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Mem_ISR_DMA)) 14720 .loc 1 7096 12 14721 0024 7B68 ldr r3, [r7, #4] 14722 0026 5B6B ldr r3, [r3, #52] 7095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 14723 .loc 1 7095 44 14724 0028 384A ldr r2, .L745+8 14725 002a 9342 cmp r3, r2 14726 002c 28D0 beq .L733 7097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 14727 .loc 1 7098 49 14728 002e B7F90230 ldrsh r3, [r7, #2] 14729 .loc 1 7098 8 14730 0032 002B cmp r3, #0 14731 0034 03DA bge .L734 7099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ 7101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 14732 .loc 1 7101 14 14733 0036 FB68 ldr r3, [r7, #12] 14734 0038 43F0B803 orr r3, r3, #184 14735 003c FB60 str r3, [r7, #12] 14736 .L734: 7102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 14737 .loc 1 7104 27 14738 003e 7B88 ldrh r3, [r7, #2] 14739 0040 03F00103 and r3, r3, #1 14740 .loc 1 7104 8 ARM GAS /tmp/cc5G5cqz.s page 387 14741 0044 002B cmp r3, #0 14742 0046 03D0 beq .L735 7105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ 7107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; 14743 .loc 1 7107 14 14744 0048 FB68 ldr r3, [r7, #12] 14745 004a 43F0F203 orr r3, r3, #242 14746 004e FB60 str r3, [r7, #12] 14747 .L735: 7108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 14748 .loc 1 7110 27 14749 0050 7B88 ldrh r3, [r7, #2] 14750 0052 03F00203 and r3, r3, #2 14751 .loc 1 7110 8 14752 0056 002B cmp r3, #0 14753 0058 03D0 beq .L736 7111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ 7113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; 14754 .loc 1 7113 14 14755 005a FB68 ldr r3, [r7, #12] 14756 005c 43F0F403 orr r3, r3, #244 14757 0060 FB60 str r3, [r7, #12] 14758 .L736: 7114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 14759 .loc 1 7116 8 14760 0062 7B88 ldrh r3, [r7, #2] 14761 0064 102B cmp r3, #16 14762 0066 03D1 bne .L737 7117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 7119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 14763 .loc 1 7119 14 14764 0068 FB68 ldr r3, [r7, #12] 14765 006a 43F09003 orr r3, r3, #144 14766 006e FB60 str r3, [r7, #12] 14767 .L737: 7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) 14768 .loc 1 7122 8 14769 0070 7B88 ldrh r3, [r7, #2] 14770 0072 202B cmp r3, #32 14771 0074 38D1 bne .L739 7123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; 14772 .loc 1 7125 14 14773 0076 FB68 ldr r3, [r7, #12] 14774 0078 43F02003 orr r3, r3, #32 14775 007c FB60 str r3, [r7, #12] 7122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS /tmp/cc5G5cqz.s page 388 14776 .loc 1 7122 8 14777 007e 33E0 b .L739 14778 .L733: 7126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 7130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 14779 .loc 1 7131 49 14780 0080 B7F90230 ldrsh r3, [r7, #2] 14781 .loc 1 7131 8 14782 0084 002B cmp r3, #0 14783 0086 03DA bge .L740 7132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ 7134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 14784 .loc 1 7134 14 14785 0088 FB68 ldr r3, [r7, #12] 14786 008a 43F0B803 orr r3, r3, #184 14787 008e FB60 str r3, [r7, #12] 14788 .L740: 7135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 14789 .loc 1 7137 27 14790 0090 7B88 ldrh r3, [r7, #2] 14791 0092 03F00103 and r3, r3, #1 14792 .loc 1 7137 8 14793 0096 002B cmp r3, #0 14794 0098 03D0 beq .L741 7138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ 7140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; 14795 .loc 1 7140 14 14796 009a FB68 ldr r3, [r7, #12] 14797 009c 43F0F203 orr r3, r3, #242 14798 00a0 FB60 str r3, [r7, #12] 14799 .L741: 7141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 14800 .loc 1 7143 27 14801 00a2 7B88 ldrh r3, [r7, #2] 14802 00a4 03F00203 and r3, r3, #2 14803 .loc 1 7143 8 14804 00a8 002B cmp r3, #0 14805 00aa 03D0 beq .L742 7144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ 7146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; 14806 .loc 1 7146 14 14807 00ac FB68 ldr r3, [r7, #12] 14808 00ae 43F0F403 orr r3, r3, #244 14809 00b2 FB60 str r3, [r7, #12] 14810 .L742: 7147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 389 7148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 14811 .loc 1 7149 8 14812 00b4 7B88 ldrh r3, [r7, #2] 14813 00b6 102B cmp r3, #16 14814 00b8 03D1 bne .L743 7150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 7152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 14815 .loc 1 7152 14 14816 00ba FB68 ldr r3, [r7, #12] 14817 00bc 43F09003 orr r3, r3, #144 14818 00c0 FB60 str r3, [r7, #12] 14819 .L743: 7153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) 14820 .loc 1 7155 8 14821 00c2 7B88 ldrh r3, [r7, #2] 14822 00c4 202B cmp r3, #32 14823 00c6 03D1 bne .L744 7156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); 14824 .loc 1 7158 14 14825 00c8 FB68 ldr r3, [r7, #12] 14826 00ca 43F06003 orr r3, r3, #96 14827 00ce FB60 str r3, [r7, #12] 14828 .L744: 7159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Mem_ISR_DMA) && (InterruptRequest == I2C_XFER_RELOAD_IT)) 14829 .loc 1 7161 14 14830 00d0 7B68 ldr r3, [r7, #4] 14831 00d2 5B6B ldr r3, [r3, #52] 14832 .loc 1 7161 8 14833 00d4 0D4A ldr r2, .L745+8 14834 00d6 9342 cmp r3, r2 14835 00d8 06D0 beq .L739 14836 .loc 1 7161 44 discriminator 1 14837 00da 7B88 ldrh r3, [r7, #2] 14838 00dc 402B cmp r3, #64 14839 00de 03D1 bne .L739 7162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 7164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; 14840 .loc 1 7164 14 14841 00e0 FB68 ldr r3, [r7, #12] 14842 00e2 43F04003 orr r3, r3, #64 14843 00e6 FB60 str r3, [r7, #12] 14844 .L739: 7165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable interrupts only at the end */ 7169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid the risk of I2C interrupt handle execution before */ 7170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all interrupts requested done */ ARM GAS /tmp/cc5G5cqz.s page 390 7171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE_IT(hi2c, tmpisr); 14845 .loc 1 7171 3 14846 00e8 7B68 ldr r3, [r7, #4] 14847 00ea 1B68 ldr r3, [r3] 14848 00ec 1968 ldr r1, [r3] 14849 00ee 7B68 ldr r3, [r7, #4] 14850 00f0 1B68 ldr r3, [r3] 14851 00f2 FA68 ldr r2, [r7, #12] 14852 00f4 0A43 orrs r2, r2, r1 14853 00f6 1A60 str r2, [r3] 7172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14854 .loc 1 7172 1 14855 00f8 00BF nop 14856 00fa 1437 adds r7, r7, #20 14857 .cfi_def_cfa_offset 4 14858 00fc BD46 mov sp, r7 14859 .cfi_def_cfa_register 13 14860 @ sp needed 14861 00fe 5DF8047B ldr r7, [sp], #4 14862 .cfi_restore 7 14863 .cfi_def_cfa_offset 0 14864 0102 7047 bx lr 14865 .L746: 14866 .align 2 14867 .L745: 14868 0104 00000000 .word I2C_Master_ISR_DMA 14869 0108 00000000 .word I2C_Slave_ISR_DMA 14870 010c 00000000 .word I2C_Mem_ISR_DMA 14871 .cfi_endproc 14872 .LFE208: 14874 .section .text.I2C_Disable_IRQ,"ax",%progbits 14875 .align 1 14876 .syntax unified 14877 .thumb 14878 .thumb_func 14880 I2C_Disable_IRQ: 14881 .LFB209: 7173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the disabling of Interrupts. 7176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. 7179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) 7182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14882 .loc 1 7182 1 14883 .cfi_startproc 14884 @ args = 0, pretend = 0, frame = 16 14885 @ frame_needed = 1, uses_anonymous_args = 0 14886 @ link register save eliminated. 14887 0000 80B4 push {r7} 14888 .cfi_def_cfa_offset 4 14889 .cfi_offset 7, -4 14890 0002 85B0 sub sp, sp, #20 14891 .cfi_def_cfa_offset 24 ARM GAS /tmp/cc5G5cqz.s page 391 14892 0004 00AF add r7, sp, #0 14893 .cfi_def_cfa_register 7 14894 0006 7860 str r0, [r7, #4] 14895 0008 0B46 mov r3, r1 14896 000a 7B80 strh r3, [r7, #2] @ movhi 7183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U; 14897 .loc 1 7183 12 14898 000c 0023 movs r3, #0 14899 000e FB60 str r3, [r7, #12] 7184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 14900 .loc 1 7185 25 14901 0010 7B88 ldrh r3, [r7, #2] 14902 0012 03F00103 and r3, r3, #1 14903 .loc 1 7185 6 14904 0016 002B cmp r3, #0 14905 0018 0FD0 beq .L748 7186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and TXI interrupts */ 7188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_TXI; 14906 .loc 1 7188 12 14907 001a FB68 ldr r3, [r7, #12] 14908 001c 43F04203 orr r3, r3, #66 14909 0020 FB60 str r3, [r7, #12] 7189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) 14910 .loc 1 7190 24 14911 0022 7B68 ldr r3, [r7, #4] 14912 0024 93F84130 ldrb r3, [r3, #65] 14913 0028 DBB2 uxtb r3, r3 14914 .loc 1 7190 32 14915 002a 03F02803 and r3, r3, #40 14916 .loc 1 7190 8 14917 002e 282B cmp r3, #40 14918 0030 03D0 beq .L748 7191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ 7193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 14919 .loc 1 7193 14 14920 0032 FB68 ldr r3, [r7, #12] 14921 0034 43F0B003 orr r3, r3, #176 14922 0038 FB60 str r3, [r7, #12] 14923 .L748: 7194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 14924 .loc 1 7197 25 14925 003a 7B88 ldrh r3, [r7, #2] 14926 003c 03F00203 and r3, r3, #2 14927 .loc 1 7197 6 14928 0040 002B cmp r3, #0 14929 0042 0FD0 beq .L749 7198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and RXI interrupts */ 7200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_RXI; 14930 .loc 1 7200 12 ARM GAS /tmp/cc5G5cqz.s page 392 14931 0044 FB68 ldr r3, [r7, #12] 14932 0046 43F04403 orr r3, r3, #68 14933 004a FB60 str r3, [r7, #12] 7201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) 14934 .loc 1 7202 24 14935 004c 7B68 ldr r3, [r7, #4] 14936 004e 93F84130 ldrb r3, [r3, #65] 14937 0052 DBB2 uxtb r3, r3 14938 .loc 1 7202 32 14939 0054 03F02803 and r3, r3, #40 14940 .loc 1 7202 8 14941 0058 282B cmp r3, #40 14942 005a 03D0 beq .L749 7203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ 7205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 14943 .loc 1 7205 14 14944 005c FB68 ldr r3, [r7, #12] 14945 005e 43F0B003 orr r3, r3, #176 14946 0062 FB60 str r3, [r7, #12] 14947 .L749: 7206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 14948 .loc 1 7209 47 14949 0064 B7F90230 ldrsh r3, [r7, #2] 14950 .loc 1 7209 6 14951 0068 002B cmp r3, #0 14952 006a 03DA bge .L750 7210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR, NACK and STOP interrupts */ 7212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 14953 .loc 1 7212 12 14954 006c FB68 ldr r3, [r7, #12] 14955 006e 43F0B803 orr r3, r3, #184 14956 0072 FB60 str r3, [r7, #12] 14957 .L750: 7213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 14958 .loc 1 7215 6 14959 0074 7B88 ldrh r3, [r7, #2] 14960 0076 102B cmp r3, #16 14961 0078 03D1 bne .L751 7216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 7218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 14962 .loc 1 7218 12 14963 007a FB68 ldr r3, [r7, #12] 14964 007c 43F09003 orr r3, r3, #144 14965 0080 FB60 str r3, [r7, #12] 14966 .L751: 7219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) ARM GAS /tmp/cc5G5cqz.s page 393 14967 .loc 1 7221 6 14968 0082 7B88 ldrh r3, [r7, #2] 14969 0084 202B cmp r3, #32 14970 0086 03D1 bne .L752 7222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; 14971 .loc 1 7224 12 14972 0088 FB68 ldr r3, [r7, #12] 14973 008a 43F02003 orr r3, r3, #32 14974 008e FB60 str r3, [r7, #12] 14975 .L752: 7225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT) 14976 .loc 1 7227 6 14977 0090 7B88 ldrh r3, [r7, #2] 14978 0092 402B cmp r3, #64 14979 0094 03D1 bne .L753 7228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 7230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; 14980 .loc 1 7230 12 14981 0096 FB68 ldr r3, [r7, #12] 14982 0098 43F04003 orr r3, r3, #64 14983 009c FB60 str r3, [r7, #12] 14984 .L753: 7231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable interrupts only at the end */ 7234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid a breaking situation like at "t" time */ 7235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all disable interrupts request are not done */ 7236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, tmpisr); 14985 .loc 1 7236 3 14986 009e 7B68 ldr r3, [r7, #4] 14987 00a0 1B68 ldr r3, [r3] 14988 00a2 1968 ldr r1, [r3] 14989 00a4 FB68 ldr r3, [r7, #12] 14990 00a6 DA43 mvns r2, r3 14991 00a8 7B68 ldr r3, [r7, #4] 14992 00aa 1B68 ldr r3, [r3] 14993 00ac 0A40 ands r2, r2, r1 14994 00ae 1A60 str r2, [r3] 7237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14995 .loc 1 7237 1 14996 00b0 00BF nop 14997 00b2 1437 adds r7, r7, #20 14998 .cfi_def_cfa_offset 4 14999 00b4 BD46 mov sp, r7 15000 .cfi_def_cfa_register 13 15001 @ sp needed 15002 00b6 5DF8047B ldr r7, [sp], #4 15003 .cfi_restore 7 15004 .cfi_def_cfa_offset 0 15005 00ba 7047 bx lr 15006 .cfi_endproc 15007 .LFE209: ARM GAS /tmp/cc5G5cqz.s page 394 15009 .section .text.I2C_ConvertOtherXferOptions,"ax",%progbits 15010 .align 1 15011 .syntax unified 15012 .thumb 15013 .thumb_func 15015 I2C_ConvertOtherXferOptions: 15016 .LFB210: 7238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. 7241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 7242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) 7245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15017 .loc 1 7245 1 15018 .cfi_startproc 15019 @ args = 0, pretend = 0, frame = 8 15020 @ frame_needed = 1, uses_anonymous_args = 0 15021 @ link register save eliminated. 15022 0000 80B4 push {r7} 15023 .cfi_def_cfa_offset 4 15024 .cfi_offset 7, -4 15025 0002 83B0 sub sp, sp, #12 15026 .cfi_def_cfa_offset 16 15027 0004 00AF add r7, sp, #0 15028 .cfi_def_cfa_register 7 15029 0006 7860 str r0, [r7, #4] 7246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if user set XferOptions to I2C_OTHER_FRAME */ 7247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ 7248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_FRAME */ 7249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_OTHER_FRAME) 15030 .loc 1 7249 11 15031 0008 7B68 ldr r3, [r7, #4] 15032 000a DB6A ldr r3, [r3, #44] 15033 .loc 1 7249 6 15034 000c AA2B cmp r3, #170 15035 000e 03D1 bne .L755 7250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_FRAME; 15036 .loc 1 7251 23 15037 0010 7B68 ldr r3, [r7, #4] 15038 0012 0022 movs r2, #0 15039 0014 DA62 str r2, [r3, #44] 7252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ 7254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ 7255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* then generate a stop condition at the end of transfer */ 7256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ 7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) 7258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; 7260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 7262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 7264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS /tmp/cc5G5cqz.s page 395 7265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15040 .loc 1 7265 1 15041 0016 08E0 b .L757 15042 .L755: 7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15043 .loc 1 7257 16 15044 0018 7B68 ldr r3, [r7, #4] 15045 001a DB6A ldr r3, [r3, #44] 7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15046 .loc 1 7257 11 15047 001c B3F52A4F cmp r3, #43520 15048 0020 03D1 bne .L757 7259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15049 .loc 1 7259 23 15050 0022 7B68 ldr r3, [r7, #4] 15051 0024 4FF00072 mov r2, #33554432 15052 0028 DA62 str r2, [r3, #44] 15053 .L757: 15054 .loc 1 7265 1 15055 002a 00BF nop 15056 002c 0C37 adds r7, r7, #12 15057 .cfi_def_cfa_offset 4 15058 002e BD46 mov sp, r7 15059 .cfi_def_cfa_register 13 15060 @ sp needed 15061 0030 5DF8047B ldr r7, [sp], #4 15062 .cfi_restore 7 15063 .cfi_def_cfa_offset 0 15064 0034 7047 bx lr 15065 .cfi_endproc 15066 .LFE210: 15068 .text 15069 .Letext0: 15070 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 15071 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 15072 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 15073 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 15074 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 15075 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 15076 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_i2c.h" 15077 .file 9 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h" ARM GAS /tmp/cc5G5cqz.s page 396 DEFINED SYMBOLS *ABS*:00000000 stm32f3xx_hal_i2c.c /tmp/cc5G5cqz.s:21 .text.HAL_I2C_Init:00000000 $t /tmp/cc5G5cqz.s:27 .text.HAL_I2C_Init:00000000 HAL_I2C_Init /tmp/cc5G5cqz.s:320 .text.HAL_I2C_MspInit:00000000 HAL_I2C_MspInit /tmp/cc5G5cqz.s:235 .text.HAL_I2C_DeInit:00000000 $t /tmp/cc5G5cqz.s:241 .text.HAL_I2C_DeInit:00000000 HAL_I2C_DeInit /tmp/cc5G5cqz.s:356 .text.HAL_I2C_MspDeInit:00000000 HAL_I2C_MspDeInit /tmp/cc5G5cqz.s:314 .text.HAL_I2C_MspInit:00000000 $t /tmp/cc5G5cqz.s:350 .text.HAL_I2C_MspDeInit:00000000 $t /tmp/cc5G5cqz.s:386 .text.HAL_I2C_Master_Transmit:00000000 $t /tmp/cc5G5cqz.s:392 .text.HAL_I2C_Master_Transmit:00000000 HAL_I2C_Master_Transmit /tmp/cc5G5cqz.s:13790 .text.I2C_WaitOnFlagUntilTimeout:00000000 I2C_WaitOnFlagUntilTimeout /tmp/cc5G5cqz.s:14606 .text.I2C_TransferConfig:00000000 I2C_TransferConfig /tmp/cc5G5cqz.s:13909 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 I2C_WaitOnTXISFlagUntilTimeout /tmp/cc5G5cqz.s:14020 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 I2C_WaitOnSTOPFlagUntilTimeout /tmp/cc5G5cqz.s:705 .text.HAL_I2C_Master_Transmit:000001e0 $d /tmp/cc5G5cqz.s:711 .text.HAL_I2C_Master_Receive:00000000 $t /tmp/cc5G5cqz.s:717 .text.HAL_I2C_Master_Receive:00000000 HAL_I2C_Master_Receive /tmp/cc5G5cqz.s:14127 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 I2C_WaitOnRXNEFlagUntilTimeout /tmp/cc5G5cqz.s:1032 .text.HAL_I2C_Master_Receive:000001e4 $d /tmp/cc5G5cqz.s:1038 .text.HAL_I2C_Slave_Transmit:00000000 $t /tmp/cc5G5cqz.s:1044 .text.HAL_I2C_Slave_Transmit:00000000 HAL_I2C_Slave_Transmit /tmp/cc5G5cqz.s:13220 .text.I2C_Flush_TXDR:00000000 I2C_Flush_TXDR /tmp/cc5G5cqz.s:1461 .text.HAL_I2C_Slave_Receive:00000000 $t /tmp/cc5G5cqz.s:1467 .text.HAL_I2C_Slave_Receive:00000000 HAL_I2C_Slave_Receive /tmp/cc5G5cqz.s:1839 .text.HAL_I2C_Master_Transmit_IT:00000000 $t /tmp/cc5G5cqz.s:1845 .text.HAL_I2C_Master_Transmit_IT:00000000 HAL_I2C_Master_Transmit_IT /tmp/cc5G5cqz.s:14686 .text.I2C_Enable_IRQ:00000000 I2C_Enable_IRQ /tmp/cc5G5cqz.s:1991 .text.HAL_I2C_Master_Transmit_IT:000000d4 $d /tmp/cc5G5cqz.s:9171 .text.I2C_Master_ISR_IT:00000000 I2C_Master_ISR_IT /tmp/cc5G5cqz.s:1998 .text.HAL_I2C_Master_Receive_IT:00000000 $t /tmp/cc5G5cqz.s:2004 .text.HAL_I2C_Master_Receive_IT:00000000 HAL_I2C_Master_Receive_IT /tmp/cc5G5cqz.s:2150 .text.HAL_I2C_Master_Receive_IT:000000d4 $d /tmp/cc5G5cqz.s:2157 .text.HAL_I2C_Slave_Transmit_IT:00000000 $t /tmp/cc5G5cqz.s:2163 .text.HAL_I2C_Slave_Transmit_IT:00000000 HAL_I2C_Slave_Transmit_IT /tmp/cc5G5cqz.s:2315 .text.HAL_I2C_Slave_Transmit_IT:000000d4 $d /tmp/cc5G5cqz.s:9982 .text.I2C_Slave_ISR_IT:00000000 I2C_Slave_ISR_IT /tmp/cc5G5cqz.s:2321 .text.HAL_I2C_Slave_Receive_IT:00000000 $t /tmp/cc5G5cqz.s:2327 .text.HAL_I2C_Slave_Receive_IT:00000000 HAL_I2C_Slave_Receive_IT /tmp/cc5G5cqz.s:2438 .text.HAL_I2C_Slave_Receive_IT:00000098 $d /tmp/cc5G5cqz.s:2444 .text.HAL_I2C_Master_Transmit_DMA:00000000 $t /tmp/cc5G5cqz.s:2450 .text.HAL_I2C_Master_Transmit_DMA:00000000 HAL_I2C_Master_Transmit_DMA /tmp/cc5G5cqz.s:2751 .text.HAL_I2C_Master_Transmit_DMA:000001c8 $d /tmp/cc5G5cqz.s:10339 .text.I2C_Master_ISR_DMA:00000000 I2C_Master_ISR_DMA /tmp/cc5G5cqz.s:13287 .text.I2C_DMAMasterTransmitCplt:00000000 I2C_DMAMasterTransmitCplt /tmp/cc5G5cqz.s:13674 .text.I2C_DMAError:00000000 I2C_DMAError /tmp/cc5G5cqz.s:2761 .text.HAL_I2C_Master_Receive_DMA:00000000 $t /tmp/cc5G5cqz.s:2767 .text.HAL_I2C_Master_Receive_DMA:00000000 HAL_I2C_Master_Receive_DMA /tmp/cc5G5cqz.s:3068 .text.HAL_I2C_Master_Receive_DMA:000001c8 $d /tmp/cc5G5cqz.s:13479 .text.I2C_DMAMasterReceiveCplt:00000000 I2C_DMAMasterReceiveCplt /tmp/cc5G5cqz.s:3078 .text.HAL_I2C_Slave_Transmit_DMA:00000000 $t /tmp/cc5G5cqz.s:3084 .text.HAL_I2C_Slave_Transmit_DMA:00000000 HAL_I2C_Slave_Transmit_DMA /tmp/cc5G5cqz.s:3397 .text.HAL_I2C_Slave_Transmit_DMA:000001c8 $d /tmp/cc5G5cqz.s:11069 .text.I2C_Slave_ISR_DMA:00000000 I2C_Slave_ISR_DMA /tmp/cc5G5cqz.s:13415 .text.I2C_DMASlaveTransmitCplt:00000000 I2C_DMASlaveTransmitCplt /tmp/cc5G5cqz.s:3405 .text.HAL_I2C_Slave_Receive_DMA:00000000 $t ARM GAS /tmp/cc5G5cqz.s page 397 /tmp/cc5G5cqz.s:3411 .text.HAL_I2C_Slave_Receive_DMA:00000000 HAL_I2C_Slave_Receive_DMA /tmp/cc5G5cqz.s:3650 .text.HAL_I2C_Slave_Receive_DMA:0000015c $d /tmp/cc5G5cqz.s:13607 .text.I2C_DMASlaveReceiveCplt:00000000 I2C_DMASlaveReceiveCplt /tmp/cc5G5cqz.s:3658 .text.HAL_I2C_Mem_Write:00000000 $t /tmp/cc5G5cqz.s:3664 .text.HAL_I2C_Mem_Write:00000000 HAL_I2C_Mem_Write /tmp/cc5G5cqz.s:11380 .text.I2C_RequestMemoryWrite:00000000 I2C_RequestMemoryWrite /tmp/cc5G5cqz.s:4018 .text.HAL_I2C_Mem_Write:00000224 $d /tmp/cc5G5cqz.s:4023 .text.HAL_I2C_Mem_Read:00000000 $t /tmp/cc5G5cqz.s:4029 .text.HAL_I2C_Mem_Read:00000000 HAL_I2C_Mem_Read /tmp/cc5G5cqz.s:11512 .text.I2C_RequestMemoryRead:00000000 I2C_RequestMemoryRead /tmp/cc5G5cqz.s:4388 .text.HAL_I2C_Mem_Read:0000022c $d /tmp/cc5G5cqz.s:4394 .text.HAL_I2C_Mem_Write_IT:00000000 $t /tmp/cc5G5cqz.s:4400 .text.HAL_I2C_Mem_Write_IT:00000000 HAL_I2C_Mem_Write_IT /tmp/cc5G5cqz.s:4577 .text.HAL_I2C_Mem_Write_IT:00000100 $d /tmp/cc5G5cqz.s:9572 .text.I2C_Mem_ISR_IT:00000000 I2C_Mem_ISR_IT /tmp/cc5G5cqz.s:4584 .text.HAL_I2C_Mem_Read_IT:00000000 $t /tmp/cc5G5cqz.s:4590 .text.HAL_I2C_Mem_Read_IT:00000000 HAL_I2C_Mem_Read_IT /tmp/cc5G5cqz.s:4767 .text.HAL_I2C_Mem_Read_IT:00000100 $d /tmp/cc5G5cqz.s:4774 .text.HAL_I2C_Mem_Write_DMA:00000000 $t /tmp/cc5G5cqz.s:4780 .text.HAL_I2C_Mem_Write_DMA:00000000 HAL_I2C_Mem_Write_DMA /tmp/cc5G5cqz.s:5078 .text.HAL_I2C_Mem_Write_DMA:000001b8 $d /tmp/cc5G5cqz.s:10671 .text.I2C_Mem_ISR_DMA:00000000 I2C_Mem_ISR_DMA /tmp/cc5G5cqz.s:5087 .text.HAL_I2C_Mem_Read_DMA:00000000 $t /tmp/cc5G5cqz.s:5093 .text.HAL_I2C_Mem_Read_DMA:00000000 HAL_I2C_Mem_Read_DMA /tmp/cc5G5cqz.s:5391 .text.HAL_I2C_Mem_Read_DMA:000001b8 $d /tmp/cc5G5cqz.s:5400 .text.HAL_I2C_IsDeviceReady:00000000 $t /tmp/cc5G5cqz.s:5406 .text.HAL_I2C_IsDeviceReady:00000000 HAL_I2C_IsDeviceReady /tmp/cc5G5cqz.s:5744 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 $t /tmp/cc5G5cqz.s:5750 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 HAL_I2C_Master_Seq_Transmit_IT /tmp/cc5G5cqz.s:15015 .text.I2C_ConvertOtherXferOptions:00000000 I2C_ConvertOtherXferOptions /tmp/cc5G5cqz.s:5934 .text.HAL_I2C_Master_Seq_Transmit_IT:00000100 $d /tmp/cc5G5cqz.s:5940 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 $t /tmp/cc5G5cqz.s:5946 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 HAL_I2C_Master_Seq_Transmit_DMA /tmp/cc5G5cqz.s:6285 .text.HAL_I2C_Master_Seq_Transmit_DMA:000001f4 $d /tmp/cc5G5cqz.s:6294 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 $t /tmp/cc5G5cqz.s:6300 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 HAL_I2C_Master_Seq_Receive_IT /tmp/cc5G5cqz.s:6484 .text.HAL_I2C_Master_Seq_Receive_IT:00000100 $d /tmp/cc5G5cqz.s:6490 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 $t /tmp/cc5G5cqz.s:6496 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 HAL_I2C_Master_Seq_Receive_DMA /tmp/cc5G5cqz.s:6835 .text.HAL_I2C_Master_Seq_Receive_DMA:000001f4 $d /tmp/cc5G5cqz.s:6844 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 $t /tmp/cc5G5cqz.s:6850 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 HAL_I2C_Slave_Seq_Transmit_IT /tmp/cc5G5cqz.s:14880 .text.I2C_Disable_IRQ:00000000 I2C_Disable_IRQ /tmp/cc5G5cqz.s:7084 .text.HAL_I2C_Slave_Seq_Transmit_IT:0000015c $d /tmp/cc5G5cqz.s:13725 .text.I2C_DMAAbort:00000000 I2C_DMAAbort /tmp/cc5G5cqz.s:7090 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 $t /tmp/cc5G5cqz.s:7096 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 HAL_I2C_Slave_Seq_Transmit_DMA /tmp/cc5G5cqz.s:7522 .text.HAL_I2C_Slave_Seq_Transmit_DMA:0000027c $d /tmp/cc5G5cqz.s:7530 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 $t /tmp/cc5G5cqz.s:7536 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 HAL_I2C_Slave_Seq_Receive_IT /tmp/cc5G5cqz.s:7770 .text.HAL_I2C_Slave_Seq_Receive_IT:0000015c $d /tmp/cc5G5cqz.s:7776 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 $t /tmp/cc5G5cqz.s:7782 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 HAL_I2C_Slave_Seq_Receive_DMA /tmp/cc5G5cqz.s:8208 .text.HAL_I2C_Slave_Seq_Receive_DMA:0000027c $d /tmp/cc5G5cqz.s:8216 .text.HAL_I2C_EnableListen_IT:00000000 $t /tmp/cc5G5cqz.s:8222 .text.HAL_I2C_EnableListen_IT:00000000 HAL_I2C_EnableListen_IT /tmp/cc5G5cqz.s:8274 .text.HAL_I2C_EnableListen_IT:0000003c $d ARM GAS /tmp/cc5G5cqz.s page 398 /tmp/cc5G5cqz.s:8279 .text.HAL_I2C_DisableListen_IT:00000000 $t /tmp/cc5G5cqz.s:8285 .text.HAL_I2C_DisableListen_IT:00000000 HAL_I2C_DisableListen_IT /tmp/cc5G5cqz.s:8361 .text.HAL_I2C_Master_Abort_IT:00000000 $t /tmp/cc5G5cqz.s:8367 .text.HAL_I2C_Master_Abort_IT:00000000 HAL_I2C_Master_Abort_IT /tmp/cc5G5cqz.s:8476 .text.HAL_I2C_Master_Abort_IT:0000009c $d /tmp/cc5G5cqz.s:8481 .text.HAL_I2C_EV_IRQHandler:00000000 $t /tmp/cc5G5cqz.s:8487 .text.HAL_I2C_EV_IRQHandler:00000000 HAL_I2C_EV_IRQHandler /tmp/cc5G5cqz.s:8542 .text.HAL_I2C_ER_IRQHandler:00000000 $t /tmp/cc5G5cqz.s:8548 .text.HAL_I2C_ER_IRQHandler:00000000 HAL_I2C_ER_IRQHandler /tmp/cc5G5cqz.s:12814 .text.I2C_ITError:00000000 I2C_ITError /tmp/cc5G5cqz.s:8683 .text.HAL_I2C_MasterTxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8689 .text.HAL_I2C_MasterTxCpltCallback:00000000 HAL_I2C_MasterTxCpltCallback /tmp/cc5G5cqz.s:8719 .text.HAL_I2C_MasterRxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8725 .text.HAL_I2C_MasterRxCpltCallback:00000000 HAL_I2C_MasterRxCpltCallback /tmp/cc5G5cqz.s:8755 .text.HAL_I2C_SlaveTxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8761 .text.HAL_I2C_SlaveTxCpltCallback:00000000 HAL_I2C_SlaveTxCpltCallback /tmp/cc5G5cqz.s:8791 .text.HAL_I2C_SlaveRxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8797 .text.HAL_I2C_SlaveRxCpltCallback:00000000 HAL_I2C_SlaveRxCpltCallback /tmp/cc5G5cqz.s:8827 .text.HAL_I2C_AddrCallback:00000000 $t /tmp/cc5G5cqz.s:8833 .text.HAL_I2C_AddrCallback:00000000 HAL_I2C_AddrCallback /tmp/cc5G5cqz.s:8867 .text.HAL_I2C_ListenCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8873 .text.HAL_I2C_ListenCpltCallback:00000000 HAL_I2C_ListenCpltCallback /tmp/cc5G5cqz.s:8903 .text.HAL_I2C_MemTxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8909 .text.HAL_I2C_MemTxCpltCallback:00000000 HAL_I2C_MemTxCpltCallback /tmp/cc5G5cqz.s:8939 .text.HAL_I2C_MemRxCpltCallback:00000000 $t /tmp/cc5G5cqz.s:8945 .text.HAL_I2C_MemRxCpltCallback:00000000 HAL_I2C_MemRxCpltCallback /tmp/cc5G5cqz.s:8975 .text.HAL_I2C_ErrorCallback:00000000 $t /tmp/cc5G5cqz.s:8981 .text.HAL_I2C_ErrorCallback:00000000 HAL_I2C_ErrorCallback /tmp/cc5G5cqz.s:9011 .text.HAL_I2C_AbortCpltCallback:00000000 $t /tmp/cc5G5cqz.s:9017 .text.HAL_I2C_AbortCpltCallback:00000000 HAL_I2C_AbortCpltCallback /tmp/cc5G5cqz.s:9047 .text.HAL_I2C_GetState:00000000 $t /tmp/cc5G5cqz.s:9053 .text.HAL_I2C_GetState:00000000 HAL_I2C_GetState /tmp/cc5G5cqz.s:9087 .text.HAL_I2C_GetMode:00000000 $t /tmp/cc5G5cqz.s:9093 .text.HAL_I2C_GetMode:00000000 HAL_I2C_GetMode /tmp/cc5G5cqz.s:9127 .text.HAL_I2C_GetError:00000000 $t /tmp/cc5G5cqz.s:9133 .text.HAL_I2C_GetError:00000000 HAL_I2C_GetError /tmp/cc5G5cqz.s:9166 .text.I2C_Master_ISR_IT:00000000 $t /tmp/cc5G5cqz.s:11822 .text.I2C_ITMasterSeqCplt:00000000 I2C_ITMasterSeqCplt /tmp/cc5G5cqz.s:12052 .text.I2C_ITMasterCplt:00000000 I2C_ITMasterCplt /tmp/cc5G5cqz.s:9567 .text.I2C_Mem_ISR_IT:00000000 $t /tmp/cc5G5cqz.s:9971 .text.I2C_Mem_ISR_IT:0000024c $d /tmp/cc5G5cqz.s:9977 .text.I2C_Slave_ISR_IT:00000000 $t /tmp/cc5G5cqz.s:12321 .text.I2C_ITSlaveCplt:00000000 I2C_ITSlaveCplt /tmp/cc5G5cqz.s:12684 .text.I2C_ITListenCplt:00000000 I2C_ITListenCplt /tmp/cc5G5cqz.s:11915 .text.I2C_ITSlaveSeqCplt:00000000 I2C_ITSlaveSeqCplt /tmp/cc5G5cqz.s:11644 .text.I2C_ITAddrCplt:00000000 I2C_ITAddrCplt /tmp/cc5G5cqz.s:10334 .text.I2C_Master_ISR_DMA:00000000 $t /tmp/cc5G5cqz.s:10666 .text.I2C_Mem_ISR_DMA:00000000 $t /tmp/cc5G5cqz.s:11058 .text.I2C_Mem_ISR_DMA:00000240 $d /tmp/cc5G5cqz.s:11064 .text.I2C_Slave_ISR_DMA:00000000 $t /tmp/cc5G5cqz.s:11375 .text.I2C_RequestMemoryWrite:00000000 $t /tmp/cc5G5cqz.s:11502 .text.I2C_RequestMemoryWrite:000000a4 $d /tmp/cc5G5cqz.s:11507 .text.I2C_RequestMemoryRead:00000000 $t /tmp/cc5G5cqz.s:11634 .text.I2C_RequestMemoryRead:000000a4 $d /tmp/cc5G5cqz.s:11639 .text.I2C_ITAddrCplt:00000000 $t /tmp/cc5G5cqz.s:11817 .text.I2C_ITMasterSeqCplt:00000000 $t /tmp/cc5G5cqz.s:11910 .text.I2C_ITSlaveSeqCplt:00000000 $t ARM GAS /tmp/cc5G5cqz.s page 399 /tmp/cc5G5cqz.s:12047 .text.I2C_ITMasterCplt:00000000 $t /tmp/cc5G5cqz.s:12310 .text.I2C_ITMasterCplt:0000018c $d /tmp/cc5G5cqz.s:12316 .text.I2C_ITSlaveCplt:00000000 $t /tmp/cc5G5cqz.s:12673 .text.I2C_ITSlaveCplt:0000020c $d /tmp/cc5G5cqz.s:12679 .text.I2C_ITListenCplt:00000000 $t /tmp/cc5G5cqz.s:12804 .text.I2C_ITListenCplt:000000a8 $d /tmp/cc5G5cqz.s:12809 .text.I2C_ITError:00000000 $t /tmp/cc5G5cqz.s:13151 .text.I2C_TreatErrorCallback:00000000 I2C_TreatErrorCallback /tmp/cc5G5cqz.s:13139 .text.I2C_ITError:000001d4 $d /tmp/cc5G5cqz.s:13146 .text.I2C_TreatErrorCallback:00000000 $t /tmp/cc5G5cqz.s:13215 .text.I2C_Flush_TXDR:00000000 $t /tmp/cc5G5cqz.s:13282 .text.I2C_DMAMasterTransmitCplt:00000000 $t /tmp/cc5G5cqz.s:13410 .text.I2C_DMASlaveTransmitCplt:00000000 $t /tmp/cc5G5cqz.s:13474 .text.I2C_DMAMasterReceiveCplt:00000000 $t /tmp/cc5G5cqz.s:13602 .text.I2C_DMASlaveReceiveCplt:00000000 $t /tmp/cc5G5cqz.s:13669 .text.I2C_DMAError:00000000 $t /tmp/cc5G5cqz.s:13720 .text.I2C_DMAAbort:00000000 $t /tmp/cc5G5cqz.s:13785 .text.I2C_WaitOnFlagUntilTimeout:00000000 $t /tmp/cc5G5cqz.s:13904 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 $t /tmp/cc5G5cqz.s:14314 .text.I2C_IsErrorOccurred:00000000 I2C_IsErrorOccurred /tmp/cc5G5cqz.s:14015 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 $t /tmp/cc5G5cqz.s:14122 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 $t /tmp/cc5G5cqz.s:14304 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000100 $d /tmp/cc5G5cqz.s:14309 .text.I2C_IsErrorOccurred:00000000 $t /tmp/cc5G5cqz.s:14596 .text.I2C_IsErrorOccurred:000001bc $d /tmp/cc5G5cqz.s:14601 .text.I2C_TransferConfig:00000000 $t /tmp/cc5G5cqz.s:14676 .text.I2C_TransferConfig:00000060 $d /tmp/cc5G5cqz.s:14681 .text.I2C_Enable_IRQ:00000000 $t /tmp/cc5G5cqz.s:14868 .text.I2C_Enable_IRQ:00000104 $d /tmp/cc5G5cqz.s:14875 .text.I2C_Disable_IRQ:00000000 $t /tmp/cc5G5cqz.s:15010 .text.I2C_ConvertOtherXferOptions:00000000 $t UNDEFINED SYMBOLS HAL_GetTick HAL_DMA_Start_IT HAL_DMA_Abort_IT HAL_DMA_GetState