ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.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 .section .rodata 20 .align 2 21 .LC0: 22 0000 44726976 .ascii "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c." 22 6572732F 22 53544D33 22 32463378 22 785F4841 23 0033 6300 .ascii "c\000" 24 .section .text.HAL_I2C_Init,"ax",%progbits 25 .align 1 26 .global HAL_I2C_Init 27 .syntax unified 28 .thumb 29 .thumb_func 31 HAL_I2C_Init: 32 .LFB130: 33 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c" 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 **** * ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 2 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: 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 **** [..] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 3 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() 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 or memory I2C process communication with Interrupt using HAL_I2C_Master_Ab 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 4 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 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 or memory IT or DMA I2C process communication with Interrupt using HAL_I2 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() ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 5 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 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 or memory I2C process communication with Interrupt using HAL_I2C_Master_Ab 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 6 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 **** [..] 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, ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 7 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 **** 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 */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 8 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 */ 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); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 9 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); 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 **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 10 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); 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 **** */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 11 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 **** { 34 .loc 1 536 1 35 .cfi_startproc 36 @ args = 0, pretend = 0, frame = 8 37 @ frame_needed = 1, uses_anonymous_args = 0 38 0000 80B5 push {r7, lr} 39 .LCFI0: 40 .cfi_def_cfa_offset 8 41 .cfi_offset 7, -8 42 .cfi_offset 14, -4 43 0002 82B0 sub sp, sp, #8 44 .LCFI1: 45 .cfi_def_cfa_offset 16 46 0004 00AF add r7, sp, #0 47 .LCFI2: 48 .cfi_def_cfa_register 7 49 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) 50 .loc 1 538 6 51 0008 7B68 ldr r3, [r7, #4] 52 000a 002B cmp r3, #0 53 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; 54 .loc 1 540 12 55 000e 0123 movs r3, #1 56 0010 0BE1 b .L3 57 .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)); 58 .loc 1 544 3 59 0012 7B68 ldr r3, [r7, #4] 60 0014 1B68 ldr r3, [r3] 61 0016 874A ldr r2, .L17 62 0018 9342 cmp r3, r2 63 001a 09D0 beq .L4 64 .loc 1 544 3 is_stmt 0 discriminator 1 65 001c 7B68 ldr r3, [r7, #4] 66 001e 1B68 ldr r3, [r3] 67 0020 854A ldr r2, .L17+4 68 0022 9342 cmp r3, r2 69 0024 04D0 beq .L4 70 .loc 1 544 3 discriminator 2 71 0026 4FF40871 mov r1, #544 72 002a 8448 ldr r0, .L17+8 73 002c FFF7FEFF bl assert_failed 74 .L4: 545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); 75 .loc 1 545 3 is_stmt 1 76 0030 7B68 ldr r3, [r7, #4] 77 0032 9B68 ldr r3, [r3, #8] 78 0034 B3F5806F cmp r3, #1024 79 0038 04D3 bcc .L5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 12 80 .loc 1 545 3 is_stmt 0 discriminator 1 81 003a 40F22121 movw r1, #545 82 003e 7F48 ldr r0, .L17+8 83 0040 FFF7FEFF bl assert_failed 84 .L5: 546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); 85 .loc 1 546 3 is_stmt 1 86 0044 7B68 ldr r3, [r7, #4] 87 0046 DB68 ldr r3, [r3, #12] 88 0048 012B cmp r3, #1 89 004a 08D0 beq .L6 90 .loc 1 546 3 is_stmt 0 discriminator 1 91 004c 7B68 ldr r3, [r7, #4] 92 004e DB68 ldr r3, [r3, #12] 93 0050 022B cmp r3, #2 94 0052 04D0 beq .L6 95 .loc 1 546 3 discriminator 2 96 0054 40F22221 movw r1, #546 97 0058 7848 ldr r0, .L17+8 98 005a FFF7FEFF bl assert_failed 99 .L6: 547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); 100 .loc 1 547 3 is_stmt 1 101 005e 7B68 ldr r3, [r7, #4] 102 0060 1B69 ldr r3, [r3, #16] 103 0062 002B cmp r3, #0 104 0064 09D0 beq .L7 105 .loc 1 547 3 is_stmt 0 discriminator 1 106 0066 7B68 ldr r3, [r7, #4] 107 0068 1B69 ldr r3, [r3, #16] 108 006a B3F5004F cmp r3, #32768 109 006e 04D0 beq .L7 110 .loc 1 547 3 discriminator 2 111 0070 40F22321 movw r1, #547 112 0074 7148 ldr r0, .L17+8 113 0076 FFF7FEFF bl assert_failed 114 .L7: 548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); 115 .loc 1 548 3 is_stmt 1 116 007a 7B68 ldr r3, [r7, #4] 117 007c 5B69 ldr r3, [r3, #20] 118 007e FF2B cmp r3, #255 119 0080 04D9 bls .L8 120 .loc 1 548 3 is_stmt 0 discriminator 1 121 0082 4FF40971 mov r1, #548 122 0086 6D48 ldr r0, .L17+8 123 0088 FFF7FEFF bl assert_failed 124 .L8: 549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); 125 .loc 1 549 3 is_stmt 1 126 008c 7B68 ldr r3, [r7, #4] 127 008e 9B69 ldr r3, [r3, #24] 128 0090 002B cmp r3, #0 129 0092 20D0 beq .L9 130 .loc 1 549 3 is_stmt 0 discriminator 1 131 0094 7B68 ldr r3, [r7, #4] 132 0096 9B69 ldr r3, [r3, #24] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 13 133 0098 012B cmp r3, #1 134 009a 1CD0 beq .L9 135 .loc 1 549 3 discriminator 2 136 009c 7B68 ldr r3, [r7, #4] 137 009e 9B69 ldr r3, [r3, #24] 138 00a0 022B cmp r3, #2 139 00a2 18D0 beq .L9 140 .loc 1 549 3 discriminator 3 141 00a4 7B68 ldr r3, [r7, #4] 142 00a6 9B69 ldr r3, [r3, #24] 143 00a8 032B cmp r3, #3 144 00aa 14D0 beq .L9 145 .loc 1 549 3 discriminator 4 146 00ac 7B68 ldr r3, [r7, #4] 147 00ae 9B69 ldr r3, [r3, #24] 148 00b0 042B cmp r3, #4 149 00b2 10D0 beq .L9 150 .loc 1 549 3 discriminator 5 151 00b4 7B68 ldr r3, [r7, #4] 152 00b6 9B69 ldr r3, [r3, #24] 153 00b8 052B cmp r3, #5 154 00ba 0CD0 beq .L9 155 .loc 1 549 3 discriminator 6 156 00bc 7B68 ldr r3, [r7, #4] 157 00be 9B69 ldr r3, [r3, #24] 158 00c0 062B cmp r3, #6 159 00c2 08D0 beq .L9 160 .loc 1 549 3 discriminator 7 161 00c4 7B68 ldr r3, [r7, #4] 162 00c6 9B69 ldr r3, [r3, #24] 163 00c8 072B cmp r3, #7 164 00ca 04D0 beq .L9 165 .loc 1 549 3 discriminator 8 166 00cc 40F22521 movw r1, #549 167 00d0 5A48 ldr r0, .L17+8 168 00d2 FFF7FEFF bl assert_failed 169 .L9: 550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); 170 .loc 1 550 3 is_stmt 1 171 00d6 7B68 ldr r3, [r7, #4] 172 00d8 DB69 ldr r3, [r3, #28] 173 00da 002B cmp r3, #0 174 00dc 09D0 beq .L10 175 .loc 1 550 3 is_stmt 0 discriminator 1 176 00de 7B68 ldr r3, [r7, #4] 177 00e0 DB69 ldr r3, [r3, #28] 178 00e2 B3F5002F cmp r3, #524288 179 00e6 04D0 beq .L10 180 .loc 1 550 3 discriminator 2 181 00e8 40F22621 movw r1, #550 182 00ec 5348 ldr r0, .L17+8 183 00ee FFF7FEFF bl assert_failed 184 .L10: 551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); 185 .loc 1 551 3 is_stmt 1 186 00f2 7B68 ldr r3, [r7, #4] 187 00f4 1B6A ldr r3, [r3, #32] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 14 188 00f6 002B cmp r3, #0 189 00f8 09D0 beq .L11 190 .loc 1 551 3 is_stmt 0 discriminator 1 191 00fa 7B68 ldr r3, [r7, #4] 192 00fc 1B6A ldr r3, [r3, #32] 193 00fe B3F5003F cmp r3, #131072 194 0102 04D0 beq .L11 195 .loc 1 551 3 discriminator 2 196 0104 40F22721 movw r1, #551 197 0108 4C48 ldr r0, .L17+8 198 010a FFF7FEFF bl assert_failed 199 .L11: 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) 200 .loc 1 553 11 is_stmt 1 201 010e 7B68 ldr r3, [r7, #4] 202 0110 93F84130 ldrb r3, [r3, #65] 203 0114 DBB2 uxtb r3, r3 204 .loc 1 553 6 205 0116 002B cmp r3, #0 206 0118 06D1 bne .L12 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; 207 .loc 1 556 16 208 011a 7B68 ldr r3, [r7, #4] 209 011c 0022 movs r2, #0 210 011e 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 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); 211 .loc 1 580 5 212 0122 7868 ldr r0, [r7, #4] 213 0124 FFF7FEFF bl HAL_I2C_MspInit 214 .L12: 581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 15 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; 215 .loc 1 584 15 216 0128 7B68 ldr r3, [r7, #4] 217 012a 2422 movs r2, #36 218 012c 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); 219 .loc 1 587 3 220 0130 7B68 ldr r3, [r7, #4] 221 0132 1B68 ldr r3, [r3] 222 0134 1A68 ldr r2, [r3] 223 0136 7B68 ldr r3, [r7, #4] 224 0138 1B68 ldr r3, [r3] 225 013a 22F00102 bic r2, r2, #1 226 013e 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; 227 .loc 1 591 39 228 0140 7B68 ldr r3, [r7, #4] 229 0142 5A68 ldr r2, [r3, #4] 230 .loc 1 591 7 231 0144 7B68 ldr r3, [r7, #4] 232 0146 1B68 ldr r3, [r3] 233 .loc 1 591 47 234 0148 22F07062 bic r2, r2, #251658240 235 .loc 1 591 27 236 014c 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; 237 .loc 1 595 7 238 014e 7B68 ldr r3, [r7, #4] 239 0150 1B68 ldr r3, [r3] 240 .loc 1 595 24 241 0152 9A68 ldr r2, [r3, #8] 242 .loc 1 595 7 243 0154 7B68 ldr r3, [r7, #4] 244 0156 1B68 ldr r3, [r3] 245 .loc 1 595 24 246 0158 22F40042 bic r2, r2, #32768 247 015c 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) 248 .loc 1 598 17 249 015e 7B68 ldr r3, [r7, #4] 250 0160 DB68 ldr r3, [r3, #12] 251 .loc 1 598 6 252 0162 012B cmp r3, #1 253 0164 07D1 bne .L13 599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 16 600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); 254 .loc 1 600 56 255 0166 7B68 ldr r3, [r7, #4] 256 0168 9A68 ldr r2, [r3, #8] 257 .loc 1 600 9 258 016a 7B68 ldr r3, [r7, #4] 259 016c 1B68 ldr r3, [r3] 260 .loc 1 600 44 261 016e 42F40042 orr r2, r2, #32768 262 .loc 1 600 26 263 0172 9A60 str r2, [r3, #8] 264 0174 06E0 b .L14 265 .L13: 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); 266 .loc 1 604 75 267 0176 7B68 ldr r3, [r7, #4] 268 0178 9A68 ldr r2, [r3, #8] 269 .loc 1 604 9 270 017a 7B68 ldr r3, [r7, #4] 271 017c 1B68 ldr r3, [r3] 272 .loc 1 604 63 273 017e 42F40442 orr r2, r2, #33792 274 .loc 1 604 26 275 0182 9A60 str r2, [r3, #8] 276 .L14: 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) 277 .loc 1 609 17 278 0184 7B68 ldr r3, [r7, #4] 279 0186 DB68 ldr r3, [r3, #12] 280 .loc 1 609 6 281 0188 022B cmp r3, #2 282 018a 08D1 bne .L15 610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); 283 .loc 1 611 5 284 018c 7B68 ldr r3, [r7, #4] 285 018e 1B68 ldr r3, [r3] 286 0190 5A68 ldr r2, [r3, #4] 287 0192 7B68 ldr r3, [r7, #4] 288 0194 1B68 ldr r3, [r3] 289 0196 42F40062 orr r2, r2, #2048 290 019a 5A60 str r2, [r3, #4] 291 019c 07E0 b .L16 292 .L15: 612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear the I2C ADD10 bit */ 616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); 293 .loc 1 616 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 17 294 019e 7B68 ldr r3, [r7, #4] 295 01a0 1B68 ldr r3, [r3] 296 01a2 5A68 ldr r2, [r3, #4] 297 01a4 7B68 ldr r3, [r7, #4] 298 01a6 1B68 ldr r3, [r3] 299 01a8 22F40062 bic r2, r2, #2048 300 01ac 5A60 str r2, [r3, #4] 301 .L16: 617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ 619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); 302 .loc 1 619 7 303 01ae 7B68 ldr r3, [r7, #4] 304 01b0 1B68 ldr r3, [r3] 305 .loc 1 619 23 306 01b2 5B68 ldr r3, [r3, #4] 307 .loc 1 619 7 308 01b4 7A68 ldr r2, [r7, #4] 309 01b6 1268 ldr r2, [r2] 310 .loc 1 619 23 311 01b8 43F00073 orr r3, r3, #33554432 312 01bc 43F40043 orr r3, r3, #32768 313 01c0 5360 str r3, [r2, #4] 620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ 622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Own Address2 before set the Own Address2 configuration */ 623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; 314 .loc 1 623 7 315 01c2 7B68 ldr r3, [r7, #4] 316 01c4 1B68 ldr r3, [r3] 317 .loc 1 623 24 318 01c6 DA68 ldr r2, [r3, #12] 319 .loc 1 623 7 320 01c8 7B68 ldr r3, [r7, #4] 321 01ca 1B68 ldr r3, [r3] 322 .loc 1 623 24 323 01cc 22F40042 bic r2, r2, #32768 324 01d0 DA60 str r2, [r3, #12] 624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Dual mode and Own Address2 */ 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ 325 .loc 1 626 37 326 01d2 7B68 ldr r3, [r7, #4] 327 01d4 1A69 ldr r2, [r3, #16] 328 .loc 1 626 66 329 01d6 7B68 ldr r3, [r7, #4] 330 01d8 5B69 ldr r3, [r3, #20] 331 .loc 1 626 54 332 01da 42EA0301 orr r1, r2, r3 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 333 .loc 1 627 38 334 01de 7B68 ldr r3, [r7, #4] 335 01e0 9B69 ldr r3, [r3, #24] 336 .loc 1 627 56 337 01e2 1A02 lsls r2, r3, #8 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 338 .loc 1 626 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 18 339 01e4 7B68 ldr r3, [r7, #4] 340 01e6 1B68 ldr r3, [r3] 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 341 .loc 1 626 79 342 01e8 0A43 orrs r2, r2, r1 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); 343 .loc 1 626 24 344 01ea DA60 str r2, [r3, #12] 628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx CR1 Configuration ----------------------*/ 630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Generalcall and NoStretch mode */ 631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); 345 .loc 1 631 36 346 01ec 7B68 ldr r3, [r7, #4] 347 01ee D969 ldr r1, [r3, #28] 348 .loc 1 631 65 349 01f0 7B68 ldr r3, [r7, #4] 350 01f2 1A6A ldr r2, [r3, #32] 351 .loc 1 631 7 352 01f4 7B68 ldr r3, [r7, #4] 353 01f6 1B68 ldr r3, [r3] 354 .loc 1 631 53 355 01f8 0A43 orrs r2, r2, r1 356 .loc 1 631 23 357 01fa 1A60 str r2, [r3] 632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the selected I2C peripheral */ 634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE(hi2c); 358 .loc 1 634 3 359 01fc 7B68 ldr r3, [r7, #4] 360 01fe 1B68 ldr r3, [r3] 361 0200 1A68 ldr r2, [r3] 362 0202 7B68 ldr r3, [r7, #4] 363 0204 1B68 ldr r3, [r3] 364 0206 42F00102 orr r2, r2, #1 365 020a 1A60 str r2, [r3] 635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 366 .loc 1 636 19 367 020c 7B68 ldr r3, [r7, #4] 368 020e 0022 movs r2, #0 369 0210 5A64 str r2, [r3, #68] 637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 370 .loc 1 637 15 371 0212 7B68 ldr r3, [r7, #4] 372 0214 2022 movs r2, #32 373 0216 83F84120 strb r2, [r3, #65] 638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 374 .loc 1 638 23 375 021a 7B68 ldr r3, [r7, #4] 376 021c 0022 movs r2, #0 377 021e 1A63 str r2, [r3, #48] 639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 378 .loc 1 639 14 379 0220 7B68 ldr r3, [r7, #4] 380 0222 0022 movs r2, #0 381 0224 83F84220 strb r2, [r3, #66] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 19 640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 382 .loc 1 641 10 383 0228 0023 movs r3, #0 384 .L3: 642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 385 .loc 1 642 1 386 022a 1846 mov r0, r3 387 022c 0837 adds r7, r7, #8 388 .LCFI3: 389 .cfi_def_cfa_offset 8 390 022e BD46 mov sp, r7 391 .LCFI4: 392 .cfi_def_cfa_register 13 393 @ sp needed 394 0230 80BD pop {r7, pc} 395 .L18: 396 0232 00BF .align 2 397 .L17: 398 0234 00540040 .word 1073763328 399 0238 00580040 .word 1073764352 400 023c 00000000 .word .LC0 401 .cfi_endproc 402 .LFE130: 404 .section .text.HAL_I2C_DeInit,"ax",%progbits 405 .align 1 406 .global HAL_I2C_DeInit 407 .syntax unified 408 .thumb 409 .thumb_func 411 HAL_I2C_DeInit: 412 .LFB131: 643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C peripheral. 646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) 651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 413 .loc 1 651 1 414 .cfi_startproc 415 @ args = 0, pretend = 0, frame = 8 416 @ frame_needed = 1, uses_anonymous_args = 0 417 0000 80B5 push {r7, lr} 418 .LCFI5: 419 .cfi_def_cfa_offset 8 420 .cfi_offset 7, -8 421 .cfi_offset 14, -4 422 0002 82B0 sub sp, sp, #8 423 .LCFI6: 424 .cfi_def_cfa_offset 16 425 0004 00AF add r7, sp, #0 426 .LCFI7: 427 .cfi_def_cfa_register 7 428 0006 7860 str r0, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 20 652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the I2C handle allocation */ 653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c == NULL) 429 .loc 1 653 6 430 0008 7B68 ldr r3, [r7, #4] 431 000a 002B cmp r3, #0 432 000c 01D1 bne .L20 654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 433 .loc 1 655 12 434 000e 0123 movs r3, #1 435 0010 30E0 b .L21 436 .L20: 656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 437 .loc 1 659 3 438 0012 7B68 ldr r3, [r7, #4] 439 0014 1B68 ldr r3, [r3] 440 0016 194A ldr r2, .L23 441 0018 9342 cmp r3, r2 442 001a 09D0 beq .L22 443 .loc 1 659 3 is_stmt 0 discriminator 1 444 001c 7B68 ldr r3, [r7, #4] 445 001e 1B68 ldr r3, [r3] 446 0020 174A ldr r2, .L23+4 447 0022 9342 cmp r3, r2 448 0024 04D0 beq .L22 449 .loc 1 659 3 discriminator 2 450 0026 40F29321 movw r1, #659 451 002a 1648 ldr r0, .L23+8 452 002c FFF7FEFF bl assert_failed 453 .L22: 660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; 454 .loc 1 661 15 is_stmt 1 455 0030 7B68 ldr r3, [r7, #4] 456 0032 2422 movs r2, #36 457 0034 83F84120 strb r2, [r3, #65] 662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the I2C Peripheral Clock */ 664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c); 458 .loc 1 664 3 459 0038 7B68 ldr r3, [r7, #4] 460 003a 1B68 ldr r3, [r3] 461 003c 1A68 ldr r2, [r3] 462 003e 7B68 ldr r3, [r7, #4] 463 0040 1B68 ldr r3, [r3] 464 0042 22F00102 bic r2, r2, #1 465 0046 1A60 str r2, [r3] 665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->MspDeInitCallback == NULL) 668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ 670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 21 672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ 673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback(hi2c); 674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ 676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MspDeInit(hi2c); 466 .loc 1 676 3 467 0048 7868 ldr r0, [r7, #4] 468 004a FFF7FEFF bl HAL_I2C_MspDeInit 677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 469 .loc 1 679 19 470 004e 7B68 ldr r3, [r7, #4] 471 0050 0022 movs r2, #0 472 0052 5A64 str r2, [r3, #68] 680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET; 473 .loc 1 680 15 474 0054 7B68 ldr r3, [r7, #4] 475 0056 0022 movs r2, #0 476 0058 83F84120 strb r2, [r3, #65] 681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 477 .loc 1 681 23 478 005c 7B68 ldr r3, [r7, #4] 479 005e 0022 movs r2, #0 480 0060 1A63 str r2, [r3, #48] 682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 481 .loc 1 682 14 482 0062 7B68 ldr r3, [r7, #4] 483 0064 0022 movs r2, #0 484 0066 83F84220 strb r2, [r3, #66] 683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Release Lock */ 685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 485 .loc 1 685 3 486 006a 7B68 ldr r3, [r7, #4] 487 006c 0022 movs r2, #0 488 006e 83F84020 strb r2, [r3, #64] 686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 489 .loc 1 687 10 490 0072 0023 movs r3, #0 491 .L21: 688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 492 .loc 1 688 1 493 0074 1846 mov r0, r3 494 0076 0837 adds r7, r7, #8 495 .LCFI8: 496 .cfi_def_cfa_offset 8 497 0078 BD46 mov sp, r7 498 .LCFI9: 499 .cfi_def_cfa_register 13 500 @ sp needed 501 007a 80BD pop {r7, pc} 502 .L24: 503 .align 2 504 .L23: 505 007c 00540040 .word 1073763328 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 22 506 0080 00580040 .word 1073764352 507 0084 00000000 .word .LC0 508 .cfi_endproc 509 .LFE131: 511 .section .text.HAL_I2C_MspInit,"ax",%progbits 512 .align 1 513 .weak HAL_I2C_MspInit 514 .syntax unified 515 .thumb 516 .thumb_func 518 HAL_I2C_MspInit: 519 .LFB132: 689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initialize the I2C MSP. 692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) 697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 520 .loc 1 697 1 521 .cfi_startproc 522 @ args = 0, pretend = 0, frame = 8 523 @ frame_needed = 1, uses_anonymous_args = 0 524 @ link register save eliminated. 525 0000 80B4 push {r7} 526 .LCFI10: 527 .cfi_def_cfa_offset 4 528 .cfi_offset 7, -4 529 0002 83B0 sub sp, sp, #12 530 .LCFI11: 531 .cfi_def_cfa_offset 16 532 0004 00AF add r7, sp, #0 533 .LCFI12: 534 .cfi_def_cfa_register 7 535 0006 7860 str r0, [r7, #4] 698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspInit could be implemented in the user file 703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 536 .loc 1 704 1 537 0008 00BF nop 538 000a 0C37 adds r7, r7, #12 539 .LCFI13: 540 .cfi_def_cfa_offset 4 541 000c BD46 mov sp, r7 542 .LCFI14: 543 .cfi_def_cfa_register 13 544 @ sp needed 545 000e 5DF8047B ldr r7, [sp], #4 546 .LCFI15: 547 .cfi_restore 7 548 .cfi_def_cfa_offset 0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 23 549 0012 7047 bx lr 550 .cfi_endproc 551 .LFE132: 553 .section .text.HAL_I2C_MspDeInit,"ax",%progbits 554 .align 1 555 .weak HAL_I2C_MspDeInit 556 .syntax unified 557 .thumb 558 .thumb_func 560 HAL_I2C_MspDeInit: 561 .LFB133: 705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C MSP. 708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) 713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 562 .loc 1 713 1 563 .cfi_startproc 564 @ args = 0, pretend = 0, frame = 8 565 @ frame_needed = 1, uses_anonymous_args = 0 566 @ link register save eliminated. 567 0000 80B4 push {r7} 568 .LCFI16: 569 .cfi_def_cfa_offset 4 570 .cfi_offset 7, -4 571 0002 83B0 sub sp, sp, #12 572 .LCFI17: 573 .cfi_def_cfa_offset 16 574 0004 00AF add r7, sp, #0 575 .LCFI18: 576 .cfi_def_cfa_register 7 577 0006 7860 str r0, [r7, #4] 714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspDeInit could be implemented in the user file 719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 578 .loc 1 720 1 579 0008 00BF nop 580 000a 0C37 adds r7, r7, #12 581 .LCFI19: 582 .cfi_def_cfa_offset 4 583 000c BD46 mov sp, r7 584 .LCFI20: 585 .cfi_def_cfa_register 13 586 @ sp needed 587 000e 5DF8047B ldr r7, [sp], #4 588 .LCFI21: 589 .cfi_restore 7 590 .cfi_def_cfa_offset 0 591 0012 7047 bx lr ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 24 592 .cfi_endproc 593 .LFE133: 595 .section .text.HAL_I2C_Master_Transmit,"ax",%progbits 596 .align 1 597 .global HAL_I2C_Master_Transmit 598 .syntax unified 599 .thumb 600 .thumb_func 602 HAL_I2C_Master_Transmit: 603 .LFB134: 721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register a User I2C Callback 725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak predefined callback 726: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 727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. 728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be registered 731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID 733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID 734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID 735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID 736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID 737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID 738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID 739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID 740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID 741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID 742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID 743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Callback function 744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb 747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** pI2C_CallbackTypeDef pCallback) 748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL) 752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : 764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = pCallback; 765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 25 768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = pCallback; 769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : 772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = pCallback; 773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : 776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = pCallback; 777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : 780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = pCallback; 781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : 784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = pCallback; 785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : 788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = pCallback; 789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : 792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = pCallback; 793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : 796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = pCallback; 797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; 801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; 805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) 817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; 822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 26 825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; 826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Unregister an I2C Callback 851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * I2C callback is redirected to the weak predefined callback 852: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 853: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. 854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be unregistered 857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID 860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID 861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID 862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID 863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID 864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID 865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID 866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID 867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID 868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID 869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID 870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal 873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : 881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallb ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 27 882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : 885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallb 886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : 889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallba 890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : 893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallba 894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : 897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallbac 898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : 901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback 902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : 905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback 906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : 909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback 910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : 913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback 914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit 918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit 922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) 934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID) 936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : 938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 28 939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : 942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit 943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default : 946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register the Slave Address Match I2C Callback 968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback 969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Address Match Callback function 972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC 975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL) 979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = pCallback; 989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 29 996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 1000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief UnRegister the Slave Address Match I2C Callback 1004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined cal 1005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) 1010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 1012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) 1014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ 1016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */ 1020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; 1021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */ 1023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 1024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 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 **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 1030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 1033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions 1036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Data transfers functions 1037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 1038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 1039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 1040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### IO operation functions ##### 1041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 1042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 1043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection provides a set of functions allowing to manage the I2C data 1044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfers. 1045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) There are two modes of transfer: 1047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Blocking mode : The communication is performed in the polling mode. 1048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The status of all data processing is returned by the same function 1049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** after finishing transfer. 1050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) No-Blocking mode : The communication is performed using Interrupts 1051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or DMA. These functions return the status of the transfer startup. 1052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The end of the data processing will be indicated through the ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 30 1053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when 1054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** using DMA mode. 1055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Blocking mode functions are : 1057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit() 1058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive() 1059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit() 1060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive() 1061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write() 1062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read() 1063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_IsDeviceReady() 1064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with Interrupt are : 1066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_IT() 1067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_IT() 1068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_IT() 1069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_IT() 1070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_IT() 1071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_IT() 1072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_IT() 1073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_IT() 1074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_IT() 1075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_IT() 1076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_EnableListen_IT() 1077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_DisableListen_IT() 1078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Abort_IT() 1079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with DMA are : 1081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_DMA() 1082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_DMA() 1083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_DMA() 1084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_DMA() 1085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_DMA() 1086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_DMA() 1087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_DMA() 1088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_DMA() 1089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_DMA() 1090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_DMA() 1091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: 1093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterTxCpltCallback() 1094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterRxCpltCallback() 1095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveTxCpltCallback() 1096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveRxCpltCallback() 1097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemTxCpltCallback() 1098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemRxCpltCallback() 1099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AddrCallback() 1100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ListenCpltCallback() 1101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ErrorCallback() 1102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AbortCpltCallback() 1103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 1105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 1106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in master mode an amount of data in blocking mode. ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 31 1110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD 1120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) 1121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 604 .loc 1 1121 1 605 .cfi_startproc 606 @ args = 4, pretend = 0, frame = 24 607 @ frame_needed = 1, uses_anonymous_args = 0 608 0000 80B5 push {r7, lr} 609 .LCFI22: 610 .cfi_def_cfa_offset 8 611 .cfi_offset 7, -8 612 .cfi_offset 14, -4 613 0002 88B0 sub sp, sp, #32 614 .LCFI23: 615 .cfi_def_cfa_offset 40 616 0004 02AF add r7, sp, #8 617 .LCFI24: 618 .cfi_def_cfa 7, 32 619 0006 F860 str r0, [r7, #12] 620 0008 7A60 str r2, [r7, #4] 621 000a 1A46 mov r2, r3 622 000c 0B46 mov r3, r1 @ movhi 623 000e 7B81 strh r3, [r7, #10] @ movhi 624 0010 1346 mov r3, r2 @ movhi 625 0012 3B81 strh r3, [r7, #8] @ movhi 1122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 626 .loc 1 1125 11 627 0014 FB68 ldr r3, [r7, #12] 628 0016 93F84130 ldrb r3, [r3, #65] 629 001a DBB2 uxtb r3, r3 630 .loc 1 1125 6 631 001c 202B cmp r3, #32 632 001e 40F0FD80 bne .L28 1126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 633 .loc 1 1128 5 634 0022 FB68 ldr r3, [r7, #12] 635 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 636 0028 012B cmp r3, #1 637 002a 01D1 bne .L29 638 .loc 1 1128 5 is_stmt 0 discriminator 1 639 002c 0223 movs r3, #2 640 002e F6E0 b .L30 641 .L29: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 32 642 .loc 1 1128 5 discriminator 2 643 0030 FB68 ldr r3, [r7, #12] 644 0032 0122 movs r2, #1 645 0034 83F84020 strb r2, [r3, #64] 1129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 646 .loc 1 1131 17 is_stmt 1 discriminator 2 647 0038 FFF7FEFF bl HAL_GetTick 648 003c 3861 str r0, [r7, #16] 1132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 649 .loc 1 1133 9 discriminator 2 650 003e 3B69 ldr r3, [r7, #16] 651 0040 0093 str r3, [sp] 652 0042 1923 movs r3, #25 653 0044 0122 movs r2, #1 654 0046 4FF40041 mov r1, #32768 655 004a F868 ldr r0, [r7, #12] 656 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 657 0050 0346 mov r3, r0 658 .loc 1 1133 8 discriminator 2 659 0052 002B cmp r3, #0 660 0054 01D0 beq .L31 1134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 661 .loc 1 1135 14 662 0056 0123 movs r3, #1 663 0058 E1E0 b .L30 664 .L31: 1136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 665 .loc 1 1138 21 666 005a FB68 ldr r3, [r7, #12] 667 005c 2122 movs r2, #33 668 005e 83F84120 strb r2, [r3, #65] 1139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 669 .loc 1 1139 21 670 0062 FB68 ldr r3, [r7, #12] 671 0064 1022 movs r2, #16 672 0066 83F84220 strb r2, [r3, #66] 1140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 673 .loc 1 1140 21 674 006a FB68 ldr r3, [r7, #12] 675 006c 0022 movs r2, #0 676 006e 5A64 str r2, [r3, #68] 1141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 677 .loc 1 1143 21 678 0070 FB68 ldr r3, [r7, #12] 679 0072 7A68 ldr r2, [r7, #4] 680 0074 5A62 str r2, [r3, #36] 1144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 681 .loc 1 1144 21 682 0076 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 33 683 0078 3A89 ldrh r2, [r7, #8] @ movhi 684 007a 5A85 strh r2, [r3, #42] @ movhi 1145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 685 .loc 1 1145 21 686 007c FB68 ldr r3, [r7, #12] 687 007e 0022 movs r2, #0 688 0080 5A63 str r2, [r3, #52] 1146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 689 .loc 1 1147 13 690 0082 FB68 ldr r3, [r7, #12] 691 0084 5B8D ldrh r3, [r3, #42] @ movhi 692 0086 9BB2 uxth r3, r3 693 .loc 1 1147 8 694 0088 FF2B cmp r3, #255 695 008a 06D9 bls .L32 1148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 696 .loc 1 1149 22 697 008c FB68 ldr r3, [r7, #12] 698 008e FF22 movs r2, #255 699 0090 1A85 strh r2, [r3, #40] @ movhi 1150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 700 .loc 1 1150 16 701 0092 4FF08073 mov r3, #16777216 702 0096 7B61 str r3, [r7, #20] 703 0098 07E0 b .L33 704 .L32: 1151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 705 .loc 1 1154 28 706 009a FB68 ldr r3, [r7, #12] 707 009c 5B8D ldrh r3, [r3, #42] @ movhi 708 009e 9AB2 uxth r2, r3 709 .loc 1 1154 22 710 00a0 FB68 ldr r3, [r7, #12] 711 00a2 1A85 strh r2, [r3, #40] @ movhi 1155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 712 .loc 1 1155 16 713 00a4 4FF00073 mov r3, #33554432 714 00a8 7B61 str r3, [r7, #20] 715 .L33: 1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 716 .loc 1 1158 13 717 00aa FB68 ldr r3, [r7, #12] 718 00ac 1B8D ldrh r3, [r3, #40] 719 .loc 1 1158 8 720 00ae 002B cmp r3, #0 721 00b0 24D0 beq .L34 1159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 34 722 .loc 1 1162 35 723 00b2 FB68 ldr r3, [r7, #12] 724 00b4 5B6A ldr r3, [r3, #36] 725 .loc 1 1162 30 726 00b6 1A78 ldrb r2, [r3] @ zero_extendqisi2 727 .loc 1 1162 11 728 00b8 FB68 ldr r3, [r7, #12] 729 00ba 1B68 ldr r3, [r3] 730 .loc 1 1162 28 731 00bc 9A62 str r2, [r3, #40] 1163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 732 .loc 1 1165 11 733 00be FB68 ldr r3, [r7, #12] 734 00c0 5B6A ldr r3, [r3, #36] 735 .loc 1 1165 21 736 00c2 5A1C adds r2, r3, #1 737 00c4 FB68 ldr r3, [r7, #12] 738 00c6 5A62 str r2, [r3, #36] 1166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 739 .loc 1 1167 11 740 00c8 FB68 ldr r3, [r7, #12] 741 00ca 5B8D ldrh r3, [r3, #42] @ movhi 742 00cc 9BB2 uxth r3, r3 743 .loc 1 1167 22 744 00ce 013B subs r3, r3, #1 745 00d0 9AB2 uxth r2, r3 746 00d2 FB68 ldr r3, [r7, #12] 747 00d4 5A85 strh r2, [r3, #42] @ movhi 1168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 748 .loc 1 1168 11 749 00d6 FB68 ldr r3, [r7, #12] 750 00d8 1B8D ldrh r3, [r3, #40] 751 .loc 1 1168 21 752 00da 013B subs r3, r3, #1 753 00dc 9AB2 uxth r2, r3 754 00de FB68 ldr r3, [r7, #12] 755 00e0 1A85 strh r2, [r3, #40] @ movhi 1169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 1172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, 756 .loc 1 1172 58 757 00e2 FB68 ldr r3, [r7, #12] 758 00e4 1B8D ldrh r3, [r3, #40] 759 .loc 1 1172 7 760 00e6 DBB2 uxtb r3, r3 761 00e8 0133 adds r3, r3, #1 762 00ea DAB2 uxtb r2, r3 763 00ec 7989 ldrh r1, [r7, #10] 764 00ee 4E4B ldr r3, .L42 765 00f0 0093 str r3, [sp] 766 00f2 7B69 ldr r3, [r7, #20] 767 00f4 F868 ldr r0, [r7, #12] 768 00f6 FFF7FEFF bl I2C_TransferConfig ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 35 769 00fa 66E0 b .L36 770 .L34: 1173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 1179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, 771 .loc 1 1179 57 772 00fc FB68 ldr r3, [r7, #12] 773 00fe 1B8D ldrh r3, [r3, #40] 774 .loc 1 1179 7 775 0100 DAB2 uxtb r2, r3 776 0102 7989 ldrh r1, [r7, #10] 777 0104 484B ldr r3, .L42 778 0106 0093 str r3, [sp] 779 0108 7B69 ldr r3, [r7, #20] 780 010a F868 ldr r0, [r7, #12] 781 010c FFF7FEFF bl I2C_TransferConfig 1180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 782 .loc 1 1183 11 783 0110 5BE0 b .L36 784 .L40: 1184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 1186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 785 .loc 1 1186 11 786 0112 3A69 ldr r2, [r7, #16] 787 0114 396A ldr r1, [r7, #32] 788 0116 F868 ldr r0, [r7, #12] 789 0118 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 790 011c 0346 mov r3, r0 791 .loc 1 1186 10 792 011e 002B cmp r3, #0 793 0120 01D0 beq .L37 1187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 794 .loc 1 1188 16 795 0122 0123 movs r3, #1 796 0124 7BE0 b .L30 797 .L37: 1189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 798 .loc 1 1191 35 799 0126 FB68 ldr r3, [r7, #12] 800 0128 5B6A ldr r3, [r3, #36] 801 .loc 1 1191 30 802 012a 1A78 ldrb r2, [r3] @ zero_extendqisi2 803 .loc 1 1191 11 804 012c FB68 ldr r3, [r7, #12] 805 012e 1B68 ldr r3, [r3] 806 .loc 1 1191 28 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 36 807 0130 9A62 str r2, [r3, #40] 1192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 808 .loc 1 1194 11 809 0132 FB68 ldr r3, [r7, #12] 810 0134 5B6A ldr r3, [r3, #36] 811 .loc 1 1194 21 812 0136 5A1C adds r2, r3, #1 813 0138 FB68 ldr r3, [r7, #12] 814 013a 5A62 str r2, [r3, #36] 1195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 815 .loc 1 1196 11 816 013c FB68 ldr r3, [r7, #12] 817 013e 5B8D ldrh r3, [r3, #42] @ movhi 818 0140 9BB2 uxth r3, r3 819 .loc 1 1196 22 820 0142 013B subs r3, r3, #1 821 0144 9AB2 uxth r2, r3 822 0146 FB68 ldr r3, [r7, #12] 823 0148 5A85 strh r2, [r3, #42] @ movhi 1197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 824 .loc 1 1197 11 825 014a FB68 ldr r3, [r7, #12] 826 014c 1B8D ldrh r3, [r3, #40] 827 .loc 1 1197 21 828 014e 013B subs r3, r3, #1 829 0150 9AB2 uxth r2, r3 830 0152 FB68 ldr r3, [r7, #12] 831 0154 1A85 strh r2, [r3, #40] @ movhi 1198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 832 .loc 1 1199 16 833 0156 FB68 ldr r3, [r7, #12] 834 0158 5B8D ldrh r3, [r3, #42] @ movhi 835 015a 9BB2 uxth r3, r3 836 .loc 1 1199 10 837 015c 002B cmp r3, #0 838 015e 34D0 beq .L36 839 .loc 1 1199 43 discriminator 1 840 0160 FB68 ldr r3, [r7, #12] 841 0162 1B8D ldrh r3, [r3, #40] 842 .loc 1 1199 35 discriminator 1 843 0164 002B cmp r3, #0 844 0166 30D1 bne .L36 1200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 1202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 845 .loc 1 1202 13 846 0168 3B69 ldr r3, [r7, #16] 847 016a 0093 str r3, [sp] 848 016c 3B6A ldr r3, [r7, #32] 849 016e 0022 movs r2, #0 850 0170 8021 movs r1, #128 851 0172 F868 ldr r0, [r7, #12] 852 0174 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 37 853 0178 0346 mov r3, r0 854 .loc 1 1202 12 855 017a 002B cmp r3, #0 856 017c 01D0 beq .L38 1203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 857 .loc 1 1204 18 858 017e 0123 movs r3, #1 859 0180 4DE0 b .L30 860 .L38: 1205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 861 .loc 1 1207 17 862 0182 FB68 ldr r3, [r7, #12] 863 0184 5B8D ldrh r3, [r3, #42] @ movhi 864 0186 9BB2 uxth r3, r3 865 .loc 1 1207 12 866 0188 FF2B cmp r3, #255 867 018a 0ED9 bls .L39 1208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 868 .loc 1 1209 26 869 018c FB68 ldr r3, [r7, #12] 870 018e FF22 movs r2, #255 871 0190 1A85 strh r2, [r3, #40] @ movhi 1210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 872 .loc 1 1210 61 873 0192 FB68 ldr r3, [r7, #12] 874 0194 1B8D ldrh r3, [r3, #40] 875 .loc 1 1210 11 876 0196 DAB2 uxtb r2, r3 877 0198 7989 ldrh r1, [r7, #10] 878 019a 0023 movs r3, #0 879 019c 0093 str r3, [sp] 880 019e 4FF08073 mov r3, #16777216 881 01a2 F868 ldr r0, [r7, #12] 882 01a4 FFF7FEFF bl I2C_TransferConfig 883 01a8 0FE0 b .L36 884 .L39: 1211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 885 .loc 1 1215 32 886 01aa FB68 ldr r3, [r7, #12] 887 01ac 5B8D ldrh r3, [r3, #42] @ movhi 888 01ae 9AB2 uxth r2, r3 889 .loc 1 1215 26 890 01b0 FB68 ldr r3, [r7, #12] 891 01b2 1A85 strh r2, [r3, #40] @ movhi 1216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 892 .loc 1 1216 61 893 01b4 FB68 ldr r3, [r7, #12] 894 01b6 1B8D ldrh r3, [r3, #40] 895 .loc 1 1216 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 38 896 01b8 DAB2 uxtb r2, r3 897 01ba 7989 ldrh r1, [r7, #10] 898 01bc 0023 movs r3, #0 899 01be 0093 str r3, [sp] 900 01c0 4FF00073 mov r3, #33554432 901 01c4 F868 ldr r0, [r7, #12] 902 01c6 FFF7FEFF bl I2C_TransferConfig 903 .L36: 1183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 904 .loc 1 1183 16 905 01ca FB68 ldr r3, [r7, #12] 906 01cc 5B8D ldrh r3, [r3, #42] @ movhi 907 01ce 9BB2 uxth r3, r3 1183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 908 .loc 1 1183 11 909 01d0 002B cmp r3, #0 910 01d2 9ED1 bne .L40 1217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 1223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */ 1224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 911 .loc 1 1224 9 912 01d4 3A69 ldr r2, [r7, #16] 913 01d6 396A ldr r1, [r7, #32] 914 01d8 F868 ldr r0, [r7, #12] 915 01da FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 916 01de 0346 mov r3, r0 917 .loc 1 1224 8 918 01e0 002B cmp r3, #0 919 01e2 01D0 beq .L41 1225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 920 .loc 1 1226 14 921 01e4 0123 movs r3, #1 922 01e6 1AE0 b .L30 923 .L41: 1227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 1230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 924 .loc 1 1230 5 925 01e8 FB68 ldr r3, [r7, #12] 926 01ea 1B68 ldr r3, [r3] 927 01ec 2022 movs r2, #32 928 01ee DA61 str r2, [r3, #28] 1231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 1233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 929 .loc 1 1233 5 930 01f0 FB68 ldr r3, [r7, #12] 931 01f2 1B68 ldr r3, [r3] 932 01f4 5968 ldr r1, [r3, #4] 933 01f6 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 39 934 01f8 1A68 ldr r2, [r3] 935 01fa 0C4B ldr r3, .L42+4 936 01fc 0B40 ands r3, r3, r1 937 01fe 5360 str r3, [r2, #4] 1234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 938 .loc 1 1235 17 939 0200 FB68 ldr r3, [r7, #12] 940 0202 2022 movs r2, #32 941 0204 83F84120 strb r2, [r3, #65] 1236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 942 .loc 1 1236 17 943 0208 FB68 ldr r3, [r7, #12] 944 020a 0022 movs r2, #0 945 020c 83F84220 strb r2, [r3, #66] 1237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 946 .loc 1 1239 5 947 0210 FB68 ldr r3, [r7, #12] 948 0212 0022 movs r2, #0 949 0214 83F84020 strb r2, [r3, #64] 1240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 950 .loc 1 1241 12 951 0218 0023 movs r3, #0 952 021a 00E0 b .L30 953 .L28: 1242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 954 .loc 1 1245 12 955 021c 0223 movs r3, #2 956 .L30: 1246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 957 .loc 1 1247 1 958 021e 1846 mov r0, r3 959 0220 1837 adds r7, r7, #24 960 .LCFI25: 961 .cfi_def_cfa_offset 8 962 0222 BD46 mov sp, r7 963 .LCFI26: 964 .cfi_def_cfa_register 13 965 @ sp needed 966 0224 80BD pop {r7, pc} 967 .L43: 968 0226 00BF .align 2 969 .L42: 970 0228 00200080 .word -2147475456 971 022c 00E800FE .word -33495040 972 .cfi_endproc 973 .LFE134: 975 .section .text.HAL_I2C_Master_Receive,"ax",%progbits 976 .align 1 977 .global HAL_I2C_Master_Receive ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 40 978 .syntax unified 979 .thumb 980 .thumb_func 982 HAL_I2C_Master_Receive: 983 .LFB135: 1248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receives in master mode an amount of data in blocking mode. 1251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa 1261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) 1262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 984 .loc 1 1262 1 985 .cfi_startproc 986 @ args = 4, pretend = 0, frame = 24 987 @ frame_needed = 1, uses_anonymous_args = 0 988 0000 80B5 push {r7, lr} 989 .LCFI27: 990 .cfi_def_cfa_offset 8 991 .cfi_offset 7, -8 992 .cfi_offset 14, -4 993 0002 88B0 sub sp, sp, #32 994 .LCFI28: 995 .cfi_def_cfa_offset 40 996 0004 02AF add r7, sp, #8 997 .LCFI29: 998 .cfi_def_cfa 7, 32 999 0006 F860 str r0, [r7, #12] 1000 0008 7A60 str r2, [r7, #4] 1001 000a 1A46 mov r2, r3 1002 000c 0B46 mov r3, r1 @ movhi 1003 000e 7B81 strh r3, [r7, #10] @ movhi 1004 0010 1346 mov r3, r2 @ movhi 1005 0012 3B81 strh r3, [r7, #8] @ movhi 1263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1006 .loc 1 1265 11 1007 0014 FB68 ldr r3, [r7, #12] 1008 0016 93F84130 ldrb r3, [r3, #65] 1009 001a DBB2 uxtb r3, r3 1010 .loc 1 1265 6 1011 001c 202B cmp r3, #32 1012 001e 40F0DB80 bne .L45 1266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1013 .loc 1 1268 5 1014 0022 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 41 1015 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1016 0028 012B cmp r3, #1 1017 002a 01D1 bne .L46 1018 .loc 1 1268 5 is_stmt 0 discriminator 1 1019 002c 0223 movs r3, #2 1020 002e D4E0 b .L47 1021 .L46: 1022 .loc 1 1268 5 discriminator 2 1023 0030 FB68 ldr r3, [r7, #12] 1024 0032 0122 movs r2, #1 1025 0034 83F84020 strb r2, [r3, #64] 1269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 1026 .loc 1 1271 17 is_stmt 1 discriminator 2 1027 0038 FFF7FEFF bl HAL_GetTick 1028 003c 7861 str r0, [r7, #20] 1272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 1029 .loc 1 1273 9 discriminator 2 1030 003e 7B69 ldr r3, [r7, #20] 1031 0040 0093 str r3, [sp] 1032 0042 1923 movs r3, #25 1033 0044 0122 movs r2, #1 1034 0046 4FF40041 mov r1, #32768 1035 004a F868 ldr r0, [r7, #12] 1036 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1037 0050 0346 mov r3, r0 1038 .loc 1 1273 8 discriminator 2 1039 0052 002B cmp r3, #0 1040 0054 01D0 beq .L48 1274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1041 .loc 1 1275 14 1042 0056 0123 movs r3, #1 1043 0058 BFE0 b .L47 1044 .L48: 1276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 1045 .loc 1 1278 21 1046 005a FB68 ldr r3, [r7, #12] 1047 005c 2222 movs r2, #34 1048 005e 83F84120 strb r2, [r3, #65] 1279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 1049 .loc 1 1279 21 1050 0062 FB68 ldr r3, [r7, #12] 1051 0064 1022 movs r2, #16 1052 0066 83F84220 strb r2, [r3, #66] 1280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1053 .loc 1 1280 21 1054 006a FB68 ldr r3, [r7, #12] 1055 006c 0022 movs r2, #0 1056 006e 5A64 str r2, [r3, #68] 1281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 42 1057 .loc 1 1283 21 1058 0070 FB68 ldr r3, [r7, #12] 1059 0072 7A68 ldr r2, [r7, #4] 1060 0074 5A62 str r2, [r3, #36] 1284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1061 .loc 1 1284 21 1062 0076 FB68 ldr r3, [r7, #12] 1063 0078 3A89 ldrh r2, [r7, #8] @ movhi 1064 007a 5A85 strh r2, [r3, #42] @ movhi 1285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 1065 .loc 1 1285 21 1066 007c FB68 ldr r3, [r7, #12] 1067 007e 0022 movs r2, #0 1068 0080 5A63 str r2, [r3, #52] 1286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 1289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 1069 .loc 1 1289 13 1070 0082 FB68 ldr r3, [r7, #12] 1071 0084 5B8D ldrh r3, [r3, #42] @ movhi 1072 0086 9BB2 uxth r3, r3 1073 .loc 1 1289 8 1074 0088 FF2B cmp r3, #255 1075 008a 0ED9 bls .L49 1290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 1076 .loc 1 1291 22 1077 008c FB68 ldr r3, [r7, #12] 1078 008e 0122 movs r2, #1 1079 0090 1A85 strh r2, [r3, #40] @ movhi 1292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 1080 .loc 1 1292 57 1081 0092 FB68 ldr r3, [r7, #12] 1082 0094 1B8D ldrh r3, [r3, #40] 1083 .loc 1 1292 7 1084 0096 DAB2 uxtb r2, r3 1085 0098 7989 ldrh r1, [r7, #10] 1086 009a 524B ldr r3, .L57 1087 009c 0093 str r3, [sp] 1088 009e 4FF08073 mov r3, #16777216 1089 00a2 F868 ldr r0, [r7, #12] 1090 00a4 FFF7FEFF bl I2C_TransferConfig 1091 00a8 6DE0 b .L51 1092 .L49: 1293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 1294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 1093 .loc 1 1297 28 1094 00aa FB68 ldr r3, [r7, #12] 1095 00ac 5B8D ldrh r3, [r3, #42] @ movhi 1096 00ae 9AB2 uxth r2, r3 1097 .loc 1 1297 22 1098 00b0 FB68 ldr r3, [r7, #12] 1099 00b2 1A85 strh r2, [r3, #40] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 43 1298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 1100 .loc 1 1298 57 1101 00b4 FB68 ldr r3, [r7, #12] 1102 00b6 1B8D ldrh r3, [r3, #40] 1103 .loc 1 1298 7 1104 00b8 DAB2 uxtb r2, r3 1105 00ba 7989 ldrh r1, [r7, #10] 1106 00bc 494B ldr r3, .L57 1107 00be 0093 str r3, [sp] 1108 00c0 4FF00073 mov r3, #33554432 1109 00c4 F868 ldr r0, [r7, #12] 1110 00c6 FFF7FEFF bl I2C_TransferConfig 1299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 1300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 1111 .loc 1 1302 11 1112 00ca 5CE0 b .L51 1113 .L55: 1303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 1305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1114 .loc 1 1305 11 1115 00cc 7A69 ldr r2, [r7, #20] 1116 00ce 396A ldr r1, [r7, #32] 1117 00d0 F868 ldr r0, [r7, #12] 1118 00d2 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout 1119 00d6 0346 mov r3, r0 1120 .loc 1 1305 10 1121 00d8 002B cmp r3, #0 1122 00da 01D0 beq .L52 1306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1123 .loc 1 1307 16 1124 00dc 0123 movs r3, #1 1125 00de 7CE0 b .L47 1126 .L52: 1308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 1127 .loc 1 1311 38 1128 00e0 FB68 ldr r3, [r7, #12] 1129 00e2 1B68 ldr r3, [r3] 1130 .loc 1 1311 48 1131 00e4 5A6A ldr r2, [r3, #36] 1132 .loc 1 1311 12 1133 00e6 FB68 ldr r3, [r7, #12] 1134 00e8 5B6A ldr r3, [r3, #36] 1135 .loc 1 1311 25 1136 00ea D2B2 uxtb r2, r2 1137 .loc 1 1311 23 1138 00ec 1A70 strb r2, [r3] 1312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1139 .loc 1 1314 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 44 1140 00ee FB68 ldr r3, [r7, #12] 1141 00f0 5B6A ldr r3, [r3, #36] 1142 .loc 1 1314 21 1143 00f2 5A1C adds r2, r3, #1 1144 00f4 FB68 ldr r3, [r7, #12] 1145 00f6 5A62 str r2, [r3, #36] 1315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 1146 .loc 1 1316 11 1147 00f8 FB68 ldr r3, [r7, #12] 1148 00fa 1B8D ldrh r3, [r3, #40] 1149 .loc 1 1316 21 1150 00fc 013B subs r3, r3, #1 1151 00fe 9AB2 uxth r2, r3 1152 0100 FB68 ldr r3, [r7, #12] 1153 0102 1A85 strh r2, [r3, #40] @ movhi 1317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1154 .loc 1 1317 11 1155 0104 FB68 ldr r3, [r7, #12] 1156 0106 5B8D ldrh r3, [r3, #42] @ movhi 1157 0108 9BB2 uxth r3, r3 1158 .loc 1 1317 22 1159 010a 013B subs r3, r3, #1 1160 010c 9AB2 uxth r2, r3 1161 010e FB68 ldr r3, [r7, #12] 1162 0110 5A85 strh r2, [r3, #42] @ movhi 1318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 1163 .loc 1 1319 16 1164 0112 FB68 ldr r3, [r7, #12] 1165 0114 5B8D ldrh r3, [r3, #42] @ movhi 1166 0116 9BB2 uxth r3, r3 1167 .loc 1 1319 10 1168 0118 002B cmp r3, #0 1169 011a 34D0 beq .L51 1170 .loc 1 1319 43 discriminator 1 1171 011c FB68 ldr r3, [r7, #12] 1172 011e 1B8D ldrh r3, [r3, #40] 1173 .loc 1 1319 35 discriminator 1 1174 0120 002B cmp r3, #0 1175 0122 30D1 bne .L51 1320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 1322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 1176 .loc 1 1322 13 1177 0124 7B69 ldr r3, [r7, #20] 1178 0126 0093 str r3, [sp] 1179 0128 3B6A ldr r3, [r7, #32] 1180 012a 0022 movs r2, #0 1181 012c 8021 movs r1, #128 1182 012e F868 ldr r0, [r7, #12] 1183 0130 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1184 0134 0346 mov r3, r0 1185 .loc 1 1322 12 1186 0136 002B cmp r3, #0 1187 0138 01D0 beq .L53 1323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 45 1324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1188 .loc 1 1324 18 1189 013a 0123 movs r3, #1 1190 013c 4DE0 b .L47 1191 .L53: 1325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 1192 .loc 1 1327 17 1193 013e FB68 ldr r3, [r7, #12] 1194 0140 5B8D ldrh r3, [r3, #42] @ movhi 1195 0142 9BB2 uxth r3, r3 1196 .loc 1 1327 12 1197 0144 FF2B cmp r3, #255 1198 0146 0ED9 bls .L54 1328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 1199 .loc 1 1329 26 1200 0148 FB68 ldr r3, [r7, #12] 1201 014a FF22 movs r2, #255 1202 014c 1A85 strh r2, [r3, #40] @ movhi 1330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 1203 .loc 1 1330 61 1204 014e FB68 ldr r3, [r7, #12] 1205 0150 1B8D ldrh r3, [r3, #40] 1206 .loc 1 1330 11 1207 0152 DAB2 uxtb r2, r3 1208 0154 7989 ldrh r1, [r7, #10] 1209 0156 0023 movs r3, #0 1210 0158 0093 str r3, [sp] 1211 015a 4FF08073 mov r3, #16777216 1212 015e F868 ldr r0, [r7, #12] 1213 0160 FFF7FEFF bl I2C_TransferConfig 1214 0164 0FE0 b .L51 1215 .L54: 1331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 1216 .loc 1 1335 32 1217 0166 FB68 ldr r3, [r7, #12] 1218 0168 5B8D ldrh r3, [r3, #42] @ movhi 1219 016a 9AB2 uxth r2, r3 1220 .loc 1 1335 26 1221 016c FB68 ldr r3, [r7, #12] 1222 016e 1A85 strh r2, [r3, #40] @ movhi 1336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 1223 .loc 1 1336 61 1224 0170 FB68 ldr r3, [r7, #12] 1225 0172 1B8D ldrh r3, [r3, #40] 1226 .loc 1 1336 11 1227 0174 DAB2 uxtb r2, r3 1228 0176 7989 ldrh r1, [r7, #10] 1229 0178 0023 movs r3, #0 1230 017a 0093 str r3, [sp] 1231 017c 4FF00073 mov r3, #33554432 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 46 1232 0180 F868 ldr r0, [r7, #12] 1233 0182 FFF7FEFF bl I2C_TransferConfig 1234 .L51: 1302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1235 .loc 1 1302 16 1236 0186 FB68 ldr r3, [r7, #12] 1237 0188 5B8D ldrh r3, [r3, #42] @ movhi 1238 018a 9BB2 uxth r3, r3 1302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1239 .loc 1 1302 11 1240 018c 002B cmp r3, #0 1241 018e 9DD1 bne .L55 1337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 1338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 1343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */ 1344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1242 .loc 1 1344 9 1243 0190 7A69 ldr r2, [r7, #20] 1244 0192 396A ldr r1, [r7, #32] 1245 0194 F868 ldr r0, [r7, #12] 1246 0196 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 1247 019a 0346 mov r3, r0 1248 .loc 1 1344 8 1249 019c 002B cmp r3, #0 1250 019e 01D0 beq .L56 1345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1251 .loc 1 1346 14 1252 01a0 0123 movs r3, #1 1253 01a2 1AE0 b .L47 1254 .L56: 1347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 1350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 1255 .loc 1 1350 5 1256 01a4 FB68 ldr r3, [r7, #12] 1257 01a6 1B68 ldr r3, [r3] 1258 01a8 2022 movs r2, #32 1259 01aa DA61 str r2, [r3, #28] 1351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 1353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 1260 .loc 1 1353 5 1261 01ac FB68 ldr r3, [r7, #12] 1262 01ae 1B68 ldr r3, [r3] 1263 01b0 5968 ldr r1, [r3, #4] 1264 01b2 FB68 ldr r3, [r7, #12] 1265 01b4 1A68 ldr r2, [r3] 1266 01b6 0C4B ldr r3, .L57+4 1267 01b8 0B40 ands r3, r3, r1 1268 01ba 5360 str r3, [r2, #4] 1354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 47 1355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1269 .loc 1 1355 17 1270 01bc FB68 ldr r3, [r7, #12] 1271 01be 2022 movs r2, #32 1272 01c0 83F84120 strb r2, [r3, #65] 1356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1273 .loc 1 1356 17 1274 01c4 FB68 ldr r3, [r7, #12] 1275 01c6 0022 movs r2, #0 1276 01c8 83F84220 strb r2, [r3, #66] 1357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1277 .loc 1 1359 5 1278 01cc FB68 ldr r3, [r7, #12] 1279 01ce 0022 movs r2, #0 1280 01d0 83F84020 strb r2, [r3, #64] 1360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1281 .loc 1 1361 12 1282 01d4 0023 movs r3, #0 1283 01d6 00E0 b .L47 1284 .L45: 1362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1285 .loc 1 1365 12 1286 01d8 0223 movs r3, #2 1287 .L47: 1366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1288 .loc 1 1367 1 1289 01da 1846 mov r0, r3 1290 01dc 1837 adds r7, r7, #24 1291 .LCFI30: 1292 .cfi_def_cfa_offset 8 1293 01de BD46 mov sp, r7 1294 .LCFI31: 1295 .cfi_def_cfa_register 13 1296 @ sp needed 1297 01e0 80BD pop {r7, pc} 1298 .L58: 1299 01e2 00BF .align 2 1300 .L57: 1301 01e4 00240080 .word -2147474432 1302 01e8 00E800FE .word -33495040 1303 .cfi_endproc 1304 .LFE135: 1306 .section .text.HAL_I2C_Slave_Transmit,"ax",%progbits 1307 .align 1 1308 .global HAL_I2C_Slave_Transmit 1309 .syntax unified 1310 .thumb 1311 .thumb_func 1313 HAL_I2C_Slave_Transmit: 1314 .LFB136: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 48 1368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in slave mode an amount of data in blocking mode. 1371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, 1379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 1380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1315 .loc 1 1380 1 1316 .cfi_startproc 1317 @ args = 0, pretend = 0, frame = 24 1318 @ frame_needed = 1, uses_anonymous_args = 0 1319 0000 80B5 push {r7, lr} 1320 .LCFI32: 1321 .cfi_def_cfa_offset 8 1322 .cfi_offset 7, -8 1323 .cfi_offset 14, -4 1324 0002 88B0 sub sp, sp, #32 1325 .LCFI33: 1326 .cfi_def_cfa_offset 40 1327 0004 02AF add r7, sp, #8 1328 .LCFI34: 1329 .cfi_def_cfa 7, 32 1330 0006 F860 str r0, [r7, #12] 1331 0008 B960 str r1, [r7, #8] 1332 000a 3B60 str r3, [r7] 1333 000c 1346 mov r3, r2 @ movhi 1334 000e FB80 strh r3, [r7, #6] @ movhi 1381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t tmpXferCount; 1383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef error; 1384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1335 .loc 1 1385 11 1336 0010 FB68 ldr r3, [r7, #12] 1337 0012 93F84130 ldrb r3, [r3, #65] 1338 0016 DBB2 uxtb r3, r3 1339 .loc 1 1385 6 1340 0018 202B cmp r3, #32 1341 001a 40F03981 bne .L60 1386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 1342 .loc 1 1387 8 1343 001e BB68 ldr r3, [r7, #8] 1344 0020 002B cmp r3, #0 1345 0022 02D0 beq .L61 1346 .loc 1 1387 25 discriminator 1 1347 0024 FB88 ldrh r3, [r7, #6] 1348 0026 002B cmp r3, #0 1349 0028 05D1 bne .L62 1350 .L61: 1388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 49 1389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 1351 .loc 1 1389 23 1352 002a FB68 ldr r3, [r7, #12] 1353 002c 4FF40072 mov r2, #512 1354 0030 5A64 str r2, [r3, #68] 1390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1355 .loc 1 1390 15 1356 0032 0123 movs r3, #1 1357 0034 2DE1 b .L63 1358 .L62: 1391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1359 .loc 1 1393 5 1360 0036 FB68 ldr r3, [r7, #12] 1361 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1362 003c 012B cmp r3, #1 1363 003e 01D1 bne .L64 1364 .loc 1 1393 5 is_stmt 0 discriminator 1 1365 0040 0223 movs r3, #2 1366 0042 26E1 b .L63 1367 .L64: 1368 .loc 1 1393 5 discriminator 2 1369 0044 FB68 ldr r3, [r7, #12] 1370 0046 0122 movs r2, #1 1371 0048 83F84020 strb r2, [r3, #64] 1394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 1372 .loc 1 1396 17 is_stmt 1 discriminator 2 1373 004c FFF7FEFF bl HAL_GetTick 1374 0050 7861 str r0, [r7, #20] 1397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 1375 .loc 1 1398 21 discriminator 2 1376 0052 FB68 ldr r3, [r7, #12] 1377 0054 2122 movs r2, #33 1378 0056 83F84120 strb r2, [r3, #65] 1399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 1379 .loc 1 1399 21 discriminator 2 1380 005a FB68 ldr r3, [r7, #12] 1381 005c 2022 movs r2, #32 1382 005e 83F84220 strb r2, [r3, #66] 1400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1383 .loc 1 1400 21 discriminator 2 1384 0062 FB68 ldr r3, [r7, #12] 1385 0064 0022 movs r2, #0 1386 0066 5A64 str r2, [r3, #68] 1401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 1387 .loc 1 1403 21 discriminator 2 1388 0068 FB68 ldr r3, [r7, #12] 1389 006a BA68 ldr r2, [r7, #8] 1390 006c 5A62 str r2, [r3, #36] 1404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1391 .loc 1 1404 21 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 50 1392 006e FB68 ldr r3, [r7, #12] 1393 0070 FA88 ldrh r2, [r7, #6] @ movhi 1394 0072 5A85 strh r2, [r3, #42] @ movhi 1405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 1395 .loc 1 1405 21 discriminator 2 1396 0074 FB68 ldr r3, [r7, #12] 1397 0076 0022 movs r2, #0 1398 0078 5A63 str r2, [r3, #52] 1406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 1399 .loc 1 1408 9 discriminator 2 1400 007a FB68 ldr r3, [r7, #12] 1401 007c 1B68 ldr r3, [r3] 1402 .loc 1 1408 25 discriminator 2 1403 007e 5A68 ldr r2, [r3, #4] 1404 .loc 1 1408 9 discriminator 2 1405 0080 FB68 ldr r3, [r7, #12] 1406 0082 1B68 ldr r3, [r3] 1407 .loc 1 1408 25 discriminator 2 1408 0084 22F40042 bic r2, r2, #32768 1409 0088 5A60 str r2, [r3, #4] 1409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 1411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 1410 .loc 1 1411 19 discriminator 2 1411 008a FB68 ldr r3, [r7, #12] 1412 008c 1B6A ldr r3, [r3, #32] 1413 .loc 1 1411 8 discriminator 2 1414 008e B3F5003F cmp r3, #131072 1415 0092 11D1 bne .L65 1412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 1416 .loc 1 1415 35 1417 0094 FB68 ldr r3, [r7, #12] 1418 0096 5B6A ldr r3, [r3, #36] 1419 .loc 1 1415 30 1420 0098 1A78 ldrb r2, [r3] @ zero_extendqisi2 1421 .loc 1 1415 11 1422 009a FB68 ldr r3, [r7, #12] 1423 009c 1B68 ldr r3, [r3] 1424 .loc 1 1415 28 1425 009e 9A62 str r2, [r3, #40] 1416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1426 .loc 1 1418 11 1427 00a0 FB68 ldr r3, [r7, #12] 1428 00a2 5B6A ldr r3, [r3, #36] 1429 .loc 1 1418 21 1430 00a4 5A1C adds r2, r3, #1 1431 00a6 FB68 ldr r3, [r7, #12] 1432 00a8 5A62 str r2, [r3, #36] 1419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 51 1433 .loc 1 1420 11 1434 00aa FB68 ldr r3, [r7, #12] 1435 00ac 5B8D ldrh r3, [r3, #42] @ movhi 1436 00ae 9BB2 uxth r3, r3 1437 .loc 1 1420 22 1438 00b0 013B subs r3, r3, #1 1439 00b2 9AB2 uxth r2, r3 1440 00b4 FB68 ldr r3, [r7, #12] 1441 00b6 5A85 strh r2, [r3, #42] @ movhi 1442 .L65: 1421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1443 .loc 1 1424 9 1444 00b8 7B69 ldr r3, [r7, #20] 1445 00ba 0093 str r3, [sp] 1446 00bc 3B68 ldr r3, [r7] 1447 00be 0022 movs r2, #0 1448 00c0 0821 movs r1, #8 1449 00c2 F868 ldr r0, [r7, #12] 1450 00c4 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1451 00c8 0346 mov r3, r0 1452 .loc 1 1424 8 1453 00ca 002B cmp r3, #0 1454 00cc 0CD0 beq .L66 1425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1455 .loc 1 1427 11 1456 00ce FB68 ldr r3, [r7, #12] 1457 00d0 1B68 ldr r3, [r3] 1458 .loc 1 1427 27 1459 00d2 5A68 ldr r2, [r3, #4] 1460 .loc 1 1427 11 1461 00d4 FB68 ldr r3, [r7, #12] 1462 00d6 1B68 ldr r3, [r3] 1463 .loc 1 1427 27 1464 00d8 42F40042 orr r2, r2, #32768 1465 00dc 5A60 str r2, [r3, #4] 1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 1430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 1466 .loc 1 1430 7 1467 00de F868 ldr r0, [r7, #12] 1468 00e0 FFF7FEFF bl I2C_Flush_TXDR 1431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1469 .loc 1 1432 14 1470 00e4 0123 movs r3, #1 1471 00e6 D4E0 b .L63 1472 .L66: 1433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 1436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1473 .loc 1 1436 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 52 1474 00e8 FB68 ldr r3, [r7, #12] 1475 00ea 1B68 ldr r3, [r3] 1476 00ec 0822 movs r2, #8 1477 00ee DA61 str r2, [r3, #28] 1437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bit addressing mode is selected */ 1439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) 1478 .loc 1 1439 19 1479 00f0 FB68 ldr r3, [r7, #12] 1480 00f2 DB68 ldr r3, [r3, #12] 1481 .loc 1 1439 8 1482 00f4 022B cmp r3, #2 1483 00f6 1BD1 bne .L67 1440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1484 .loc 1 1442 11 1485 00f8 7B69 ldr r3, [r7, #20] 1486 00fa 0093 str r3, [sp] 1487 00fc 3B68 ldr r3, [r7] 1488 00fe 0022 movs r2, #0 1489 0100 0821 movs r1, #8 1490 0102 F868 ldr r0, [r7, #12] 1491 0104 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1492 0108 0346 mov r3, r0 1493 .loc 1 1442 10 1494 010a 002B cmp r3, #0 1495 010c 0CD0 beq .L68 1443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1496 .loc 1 1445 13 1497 010e FB68 ldr r3, [r7, #12] 1498 0110 1B68 ldr r3, [r3] 1499 .loc 1 1445 29 1500 0112 5A68 ldr r2, [r3, #4] 1501 .loc 1 1445 13 1502 0114 FB68 ldr r3, [r7, #12] 1503 0116 1B68 ldr r3, [r3] 1504 .loc 1 1445 29 1505 0118 42F40042 orr r2, r2, #32768 1506 011c 5A60 str r2, [r3, #4] 1446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 1448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 1507 .loc 1 1448 9 1508 011e F868 ldr r0, [r7, #12] 1509 0120 FFF7FEFF bl I2C_Flush_TXDR 1449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1510 .loc 1 1450 16 1511 0124 0123 movs r3, #1 1512 0126 B4E0 b .L63 1513 .L68: 1451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 53 1454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1514 .loc 1 1454 7 1515 0128 FB68 ldr r3, [r7, #12] 1516 012a 1B68 ldr r3, [r3] 1517 012c 0822 movs r2, #8 1518 012e DA61 str r2, [r3, #28] 1519 .L67: 1455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is set Transmitter mode */ 1458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) 1520 .loc 1 1458 9 1521 0130 7B69 ldr r3, [r7, #20] 1522 0132 0093 str r3, [sp] 1523 0134 3B68 ldr r3, [r7] 1524 0136 0022 movs r2, #0 1525 0138 4FF48031 mov r1, #65536 1526 013c F868 ldr r0, [r7, #12] 1527 013e FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1528 0142 0346 mov r3, r0 1529 .loc 1 1458 8 1530 0144 002B cmp r3, #0 1531 0146 30D0 beq .L70 1459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1532 .loc 1 1461 11 1533 0148 FB68 ldr r3, [r7, #12] 1534 014a 1B68 ldr r3, [r3] 1535 .loc 1 1461 27 1536 014c 5A68 ldr r2, [r3, #4] 1537 .loc 1 1461 11 1538 014e FB68 ldr r3, [r7, #12] 1539 0150 1B68 ldr r3, [r3] 1540 .loc 1 1461 27 1541 0152 42F40042 orr r2, r2, #32768 1542 0156 5A60 str r2, [r3, #4] 1462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 1464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 1543 .loc 1 1464 7 1544 0158 F868 ldr r0, [r7, #12] 1545 015a FFF7FEFF bl I2C_Flush_TXDR 1465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1546 .loc 1 1466 14 1547 015e 0123 movs r3, #1 1548 0160 97E0 b .L63 1549 .L72: 1467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 1470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 1472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1550 .loc 1 1472 11 1551 0162 7A69 ldr r2, [r7, #20] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 54 1552 0164 3968 ldr r1, [r7] 1553 0166 F868 ldr r0, [r7, #12] 1554 0168 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 1555 016c 0346 mov r3, r0 1556 .loc 1 1472 10 1557 016e 002B cmp r3, #0 1558 0170 09D0 beq .L71 1473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1559 .loc 1 1475 13 1560 0172 FB68 ldr r3, [r7, #12] 1561 0174 1B68 ldr r3, [r3] 1562 .loc 1 1475 29 1563 0176 5A68 ldr r2, [r3, #4] 1564 .loc 1 1475 13 1565 0178 FB68 ldr r3, [r7, #12] 1566 017a 1B68 ldr r3, [r3] 1567 .loc 1 1475 29 1568 017c 42F40042 orr r2, r2, #32768 1569 0180 5A60 str r2, [r3, #4] 1476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1570 .loc 1 1476 16 1571 0182 0123 movs r3, #1 1572 0184 85E0 b .L63 1573 .L71: 1477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 1574 .loc 1 1480 35 1575 0186 FB68 ldr r3, [r7, #12] 1576 0188 5B6A ldr r3, [r3, #36] 1577 .loc 1 1480 30 1578 018a 1A78 ldrb r2, [r3] @ zero_extendqisi2 1579 .loc 1 1480 11 1580 018c FB68 ldr r3, [r7, #12] 1581 018e 1B68 ldr r3, [r3] 1582 .loc 1 1480 28 1583 0190 9A62 str r2, [r3, #40] 1481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1584 .loc 1 1483 11 1585 0192 FB68 ldr r3, [r7, #12] 1586 0194 5B6A ldr r3, [r3, #36] 1587 .loc 1 1483 21 1588 0196 5A1C adds r2, r3, #1 1589 0198 FB68 ldr r3, [r7, #12] 1590 019a 5A62 str r2, [r3, #36] 1484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1591 .loc 1 1485 11 1592 019c FB68 ldr r3, [r7, #12] 1593 019e 5B8D ldrh r3, [r3, #42] @ movhi 1594 01a0 9BB2 uxth r3, r3 1595 .loc 1 1485 22 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 55 1596 01a2 013B subs r3, r3, #1 1597 01a4 9AB2 uxth r2, r3 1598 01a6 FB68 ldr r3, [r7, #12] 1599 01a8 5A85 strh r2, [r3, #42] @ movhi 1600 .L70: 1469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1601 .loc 1 1469 16 1602 01aa FB68 ldr r3, [r7, #12] 1603 01ac 5B8D ldrh r3, [r3, #42] @ movhi 1604 01ae 9BB2 uxth r3, r3 1469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1605 .loc 1 1469 11 1606 01b0 002B cmp r3, #0 1607 01b2 D6D1 bne .L72 1486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until AF flag is set */ 1489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); 1608 .loc 1 1489 13 1609 01b4 7B69 ldr r3, [r7, #20] 1610 01b6 0093 str r3, [sp] 1611 01b8 3B68 ldr r3, [r7] 1612 01ba 0022 movs r2, #0 1613 01bc 1021 movs r1, #16 1614 01be F868 ldr r0, [r7, #12] 1615 01c0 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1616 01c4 0346 mov r3, r0 1617 01c6 FB74 strb r3, [r7, #19] 1490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (error != HAL_OK) 1618 .loc 1 1491 8 1619 01c8 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 1620 01ca 002B cmp r3, #0 1621 01cc 17D0 beq .L73 1492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 1494: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 */ 1495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0 */ 1496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpXferCount = hi2c->XferCount; 1622 .loc 1 1497 20 1623 01ce FB68 ldr r3, [r7, #12] 1624 01d0 5B8D ldrh r3, [r3, #42] @ movhi 1625 01d2 3B82 strh r3, [r7, #16] @ movhi 1498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) 1626 .loc 1 1498 16 1627 01d4 FB68 ldr r3, [r7, #12] 1628 01d6 5B6C ldr r3, [r3, #68] 1629 .loc 1 1498 10 1630 01d8 042B cmp r3, #4 1631 01da 06D1 bne .L74 1632 .loc 1 1498 49 discriminator 1 1633 01dc 3B8A ldrh r3, [r7, #16] 1634 01de 002B cmp r3, #0 1635 01e0 03D1 bne .L74 1499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset ErrorCode to NONE */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 56 1501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1636 .loc 1 1501 25 1637 01e2 FB68 ldr r3, [r7, #12] 1638 01e4 0022 movs r2, #0 1639 01e6 5A64 str r2, [r3, #68] 1640 01e8 26E0 b .L75 1641 .L74: 1502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1642 .loc 1 1506 13 1643 01ea FB68 ldr r3, [r7, #12] 1644 01ec 1B68 ldr r3, [r3] 1645 .loc 1 1506 29 1646 01ee 5A68 ldr r2, [r3, #4] 1647 .loc 1 1506 13 1648 01f0 FB68 ldr r3, [r7, #12] 1649 01f2 1B68 ldr r3, [r3] 1650 .loc 1 1506 29 1651 01f4 42F40042 orr r2, r2, #32768 1652 01f8 5A60 str r2, [r3, #4] 1507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1653 .loc 1 1507 16 1654 01fa 0123 movs r3, #1 1655 01fc 49E0 b .L63 1656 .L73: 1508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 1513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 1657 .loc 1 1513 7 1658 01fe F868 ldr r0, [r7, #12] 1659 0200 FFF7FEFF bl I2C_Flush_TXDR 1514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear AF flag */ 1516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 1660 .loc 1 1516 7 1661 0204 FB68 ldr r3, [r7, #12] 1662 0206 1B68 ldr r3, [r3] 1663 0208 1022 movs r2, #16 1664 020a DA61 str r2, [r3, #28] 1517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP flag is set */ 1519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1665 .loc 1 1519 11 1666 020c 7A69 ldr r2, [r7, #20] 1667 020e 3968 ldr r1, [r7] 1668 0210 F868 ldr r0, [r7, #12] 1669 0212 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 1670 0216 0346 mov r3, r0 1671 .loc 1 1519 10 1672 0218 002B cmp r3, #0 1673 021a 09D0 beq .L76 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 57 1520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1674 .loc 1 1522 13 1675 021c FB68 ldr r3, [r7, #12] 1676 021e 1B68 ldr r3, [r3] 1677 .loc 1 1522 29 1678 0220 5A68 ldr r2, [r3, #4] 1679 .loc 1 1522 13 1680 0222 FB68 ldr r3, [r7, #12] 1681 0224 1B68 ldr r3, [r3] 1682 .loc 1 1522 29 1683 0226 42F40042 orr r2, r2, #32768 1684 022a 5A60 str r2, [r3, #4] 1523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1685 .loc 1 1524 16 1686 022c 0123 movs r3, #1 1687 022e 30E0 b .L63 1688 .L76: 1525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */ 1528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 1689 .loc 1 1528 7 1690 0230 FB68 ldr r3, [r7, #12] 1691 0232 1B68 ldr r3, [r3] 1692 0234 2022 movs r2, #32 1693 0236 DA61 str r2, [r3, #28] 1694 .L75: 1529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ 1532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) 1695 .loc 1 1532 9 1696 0238 7B69 ldr r3, [r7, #20] 1697 023a 0093 str r3, [sp] 1698 023c 3B68 ldr r3, [r7] 1699 023e 0122 movs r2, #1 1700 0240 4FF40041 mov r1, #32768 1701 0244 F868 ldr r0, [r7, #12] 1702 0246 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1703 024a 0346 mov r3, r0 1704 .loc 1 1532 8 1705 024c 002B cmp r3, #0 1706 024e 09D0 beq .L77 1533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1707 .loc 1 1535 11 1708 0250 FB68 ldr r3, [r7, #12] 1709 0252 1B68 ldr r3, [r3] 1710 .loc 1 1535 27 1711 0254 5A68 ldr r2, [r3, #4] 1712 .loc 1 1535 11 1713 0256 FB68 ldr r3, [r7, #12] 1714 0258 1B68 ldr r3, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 58 1715 .loc 1 1535 27 1716 025a 42F40042 orr r2, r2, #32768 1717 025e 5A60 str r2, [r3, #4] 1536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1718 .loc 1 1536 14 1719 0260 0123 movs r3, #1 1720 0262 16E0 b .L63 1721 .L77: 1537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1722 .loc 1 1540 9 1723 0264 FB68 ldr r3, [r7, #12] 1724 0266 1B68 ldr r3, [r3] 1725 .loc 1 1540 25 1726 0268 5A68 ldr r2, [r3, #4] 1727 .loc 1 1540 9 1728 026a FB68 ldr r3, [r7, #12] 1729 026c 1B68 ldr r3, [r3] 1730 .loc 1 1540 25 1731 026e 42F40042 orr r2, r2, #32768 1732 0272 5A60 str r2, [r3, #4] 1541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 1733 .loc 1 1542 17 1734 0274 FB68 ldr r3, [r7, #12] 1735 0276 2022 movs r2, #32 1736 0278 83F84120 strb r2, [r3, #65] 1543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 1737 .loc 1 1543 17 1738 027c FB68 ldr r3, [r7, #12] 1739 027e 0022 movs r2, #0 1740 0280 83F84220 strb r2, [r3, #66] 1544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 1741 .loc 1 1546 5 1742 0284 FB68 ldr r3, [r7, #12] 1743 0286 0022 movs r2, #0 1744 0288 83F84020 strb r2, [r3, #64] 1547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 1745 .loc 1 1548 12 1746 028c 0023 movs r3, #0 1747 028e 00E0 b .L63 1748 .L60: 1549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 1749 .loc 1 1552 12 1750 0290 0223 movs r3, #2 1751 .L63: 1553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1752 .loc 1 1554 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 59 1753 0292 1846 mov r0, r3 1754 0294 1837 adds r7, r7, #24 1755 .LCFI35: 1756 .cfi_def_cfa_offset 8 1757 0296 BD46 mov sp, r7 1758 .LCFI36: 1759 .cfi_def_cfa_register 13 1760 @ sp needed 1761 0298 80BD pop {r7, pc} 1762 .cfi_endproc 1763 .LFE136: 1765 .section .text.HAL_I2C_Slave_Receive,"ax",%progbits 1766 .align 1 1767 .global HAL_I2C_Slave_Receive 1768 .syntax unified 1769 .thumb 1770 .thumb_func 1772 HAL_I2C_Slave_Receive: 1773 .LFB137: 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 **** * @brief Receive in slave mode an amount of data in blocking mode 1558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 1563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, 1566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 1567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1774 .loc 1 1567 1 1775 .cfi_startproc 1776 @ args = 0, pretend = 0, frame = 24 1777 @ frame_needed = 1, uses_anonymous_args = 0 1778 0000 80B5 push {r7, lr} 1779 .LCFI37: 1780 .cfi_def_cfa_offset 8 1781 .cfi_offset 7, -8 1782 .cfi_offset 14, -4 1783 0002 88B0 sub sp, sp, #32 1784 .LCFI38: 1785 .cfi_def_cfa_offset 40 1786 0004 02AF add r7, sp, #8 1787 .LCFI39: 1788 .cfi_def_cfa 7, 32 1789 0006 F860 str r0, [r7, #12] 1790 0008 B960 str r1, [r7, #8] 1791 000a 3B60 str r3, [r7] 1792 000c 1346 mov r3, r2 @ movhi 1793 000e FB80 strh r3, [r7, #6] @ movhi 1568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 1569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 1794 .loc 1 1570 11 1795 0010 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 60 1796 0012 93F84130 ldrb r3, [r3, #65] 1797 0016 DBB2 uxtb r3, r3 1798 .loc 1 1570 6 1799 0018 202B cmp r3, #32 1800 001a 40F0FC80 bne .L79 1571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 1801 .loc 1 1572 8 1802 001e BB68 ldr r3, [r7, #8] 1803 0020 002B cmp r3, #0 1804 0022 02D0 beq .L80 1805 .loc 1 1572 25 discriminator 1 1806 0024 FB88 ldrh r3, [r7, #6] 1807 0026 002B cmp r3, #0 1808 0028 05D1 bne .L81 1809 .L80: 1573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 1810 .loc 1 1574 23 1811 002a FB68 ldr r3, [r7, #12] 1812 002c 4FF40072 mov r2, #512 1813 0030 5A64 str r2, [r3, #68] 1575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1814 .loc 1 1575 15 1815 0032 0123 movs r3, #1 1816 0034 F0E0 b .L82 1817 .L81: 1576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 1818 .loc 1 1578 5 1819 0036 FB68 ldr r3, [r7, #12] 1820 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 1821 003c 012B cmp r3, #1 1822 003e 01D1 bne .L83 1823 .loc 1 1578 5 is_stmt 0 discriminator 1 1824 0040 0223 movs r3, #2 1825 0042 E9E0 b .L82 1826 .L83: 1827 .loc 1 1578 5 discriminator 2 1828 0044 FB68 ldr r3, [r7, #12] 1829 0046 0122 movs r2, #1 1830 0048 83F84020 strb r2, [r3, #64] 1579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 1581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 1831 .loc 1 1581 17 is_stmt 1 discriminator 2 1832 004c FFF7FEFF bl HAL_GetTick 1833 0050 7861 str r0, [r7, #20] 1582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 1834 .loc 1 1583 21 discriminator 2 1835 0052 FB68 ldr r3, [r7, #12] 1836 0054 2222 movs r2, #34 1837 0056 83F84120 strb r2, [r3, #65] 1584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 1838 .loc 1 1584 21 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 61 1839 005a FB68 ldr r3, [r7, #12] 1840 005c 2022 movs r2, #32 1841 005e 83F84220 strb r2, [r3, #66] 1585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 1842 .loc 1 1585 21 discriminator 2 1843 0062 FB68 ldr r3, [r7, #12] 1844 0064 0022 movs r2, #0 1845 0066 5A64 str r2, [r3, #68] 1586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 1846 .loc 1 1588 21 discriminator 2 1847 0068 FB68 ldr r3, [r7, #12] 1848 006a BA68 ldr r2, [r7, #8] 1849 006c 5A62 str r2, [r3, #36] 1589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 1850 .loc 1 1589 21 discriminator 2 1851 006e FB68 ldr r3, [r7, #12] 1852 0070 FA88 ldrh r2, [r7, #6] @ movhi 1853 0072 5A85 strh r2, [r3, #42] @ movhi 1590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 1854 .loc 1 1590 26 discriminator 2 1855 0074 FB68 ldr r3, [r7, #12] 1856 0076 5B8D ldrh r3, [r3, #42] @ movhi 1857 0078 9AB2 uxth r2, r3 1858 .loc 1 1590 20 discriminator 2 1859 007a FB68 ldr r3, [r7, #12] 1860 007c 1A85 strh r2, [r3, #40] @ movhi 1591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 1861 .loc 1 1591 21 discriminator 2 1862 007e FB68 ldr r3, [r7, #12] 1863 0080 0022 movs r2, #0 1864 0082 5A63 str r2, [r3, #52] 1592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 1865 .loc 1 1594 9 discriminator 2 1866 0084 FB68 ldr r3, [r7, #12] 1867 0086 1B68 ldr r3, [r3] 1868 .loc 1 1594 25 discriminator 2 1869 0088 5A68 ldr r2, [r3, #4] 1870 .loc 1 1594 9 discriminator 2 1871 008a FB68 ldr r3, [r7, #12] 1872 008c 1B68 ldr r3, [r3] 1873 .loc 1 1594 25 discriminator 2 1874 008e 22F40042 bic r2, r2, #32768 1875 0092 5A60 str r2, [r3, #4] 1595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */ 1597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) 1876 .loc 1 1597 9 discriminator 2 1877 0094 7B69 ldr r3, [r7, #20] 1878 0096 0093 str r3, [sp] 1879 0098 3B68 ldr r3, [r7] 1880 009a 0022 movs r2, #0 1881 009c 0821 movs r1, #8 1882 009e F868 ldr r0, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 62 1883 00a0 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1884 00a4 0346 mov r3, r0 1885 .loc 1 1597 8 discriminator 2 1886 00a6 002B cmp r3, #0 1887 00a8 09D0 beq .L84 1598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1888 .loc 1 1600 11 1889 00aa FB68 ldr r3, [r7, #12] 1890 00ac 1B68 ldr r3, [r3] 1891 .loc 1 1600 27 1892 00ae 5A68 ldr r2, [r3, #4] 1893 .loc 1 1600 11 1894 00b0 FB68 ldr r3, [r7, #12] 1895 00b2 1B68 ldr r3, [r3] 1896 .loc 1 1600 27 1897 00b4 42F40042 orr r2, r2, #32768 1898 00b8 5A60 str r2, [r3, #4] 1601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1899 .loc 1 1601 14 1900 00ba 0123 movs r3, #1 1901 00bc ACE0 b .L82 1902 .L84: 1602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 1605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 1903 .loc 1 1605 5 1904 00be FB68 ldr r3, [r7, #12] 1905 00c0 1B68 ldr r3, [r3] 1906 00c2 0822 movs r2, #8 1907 00c4 DA61 str r2, [r3, #28] 1606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is reset Receiver mode */ 1608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) 1908 .loc 1 1608 9 1909 00c6 7B69 ldr r3, [r7, #20] 1910 00c8 0093 str r3, [sp] 1911 00ca 3B68 ldr r3, [r7] 1912 00cc 0122 movs r2, #1 1913 00ce 4FF48031 mov r1, #65536 1914 00d2 F868 ldr r0, [r7, #12] 1915 00d4 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 1916 00d8 0346 mov r3, r0 1917 .loc 1 1608 8 1918 00da 002B cmp r3, #0 1919 00dc 54D0 beq .L86 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; 1920 .loc 1 1611 11 1921 00de FB68 ldr r3, [r7, #12] 1922 00e0 1B68 ldr r3, [r3] 1923 .loc 1 1611 27 1924 00e2 5A68 ldr r2, [r3, #4] 1925 .loc 1 1611 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 63 1926 00e4 FB68 ldr r3, [r7, #12] 1927 00e6 1B68 ldr r3, [r3] 1928 .loc 1 1611 27 1929 00e8 42F40042 orr r2, r2, #32768 1930 00ec 5A60 str r2, [r3, #4] 1612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 1931 .loc 1 1612 14 1932 00ee 0123 movs r3, #1 1933 00f0 92E0 b .L82 1934 .L89: 1613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U) 1616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 1618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 1935 .loc 1 1618 11 1936 00f2 7A69 ldr r2, [r7, #20] 1937 00f4 3968 ldr r1, [r7] 1938 00f6 F868 ldr r0, [r7, #12] 1939 00f8 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout 1940 00fc 0346 mov r3, r0 1941 .loc 1 1618 10 1942 00fe 002B cmp r3, #0 1943 0100 29D0 beq .L87 1619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 1944 .loc 1 1621 13 1945 0102 FB68 ldr r3, [r7, #12] 1946 0104 1B68 ldr r3, [r3] 1947 .loc 1 1621 29 1948 0106 5A68 ldr r2, [r3, #4] 1949 .loc 1 1621 13 1950 0108 FB68 ldr r3, [r7, #12] 1951 010a 1B68 ldr r3, [r3] 1952 .loc 1 1621 29 1953 010c 42F40042 orr r2, r2, #32768 1954 0110 5A60 str r2, [r3, #4] 1622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 1624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) 1955 .loc 1 1624 13 1956 0112 FB68 ldr r3, [r7, #12] 1957 0114 1B68 ldr r3, [r3] 1958 0116 9B69 ldr r3, [r3, #24] 1959 0118 03F00403 and r3, r3, #4 1960 .loc 1 1624 12 1961 011c 042B cmp r3, #4 1962 011e 18D1 bne .L88 1625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 1963 .loc 1 1627 42 1964 0120 FB68 ldr r3, [r7, #12] 1965 0122 1B68 ldr r3, [r3] 1966 .loc 1 1627 52 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 64 1967 0124 5A6A ldr r2, [r3, #36] 1968 .loc 1 1627 16 1969 0126 FB68 ldr r3, [r7, #12] 1970 0128 5B6A ldr r3, [r3, #36] 1971 .loc 1 1627 29 1972 012a D2B2 uxtb r2, r2 1973 .loc 1 1627 27 1974 012c 1A70 strb r2, [r3] 1628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 1975 .loc 1 1630 15 1976 012e FB68 ldr r3, [r7, #12] 1977 0130 5B6A ldr r3, [r3, #36] 1978 .loc 1 1630 25 1979 0132 5A1C adds r2, r3, #1 1980 0134 FB68 ldr r3, [r7, #12] 1981 0136 5A62 str r2, [r3, #36] 1631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 1982 .loc 1 1632 15 1983 0138 FB68 ldr r3, [r7, #12] 1984 013a 5B8D ldrh r3, [r3, #42] @ movhi 1985 013c 9BB2 uxth r3, r3 1986 .loc 1 1632 26 1987 013e 013B subs r3, r3, #1 1988 0140 9AB2 uxth r2, r3 1989 0142 FB68 ldr r3, [r7, #12] 1990 0144 5A85 strh r2, [r3, #42] @ movhi 1633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 1991 .loc 1 1633 15 1992 0146 FB68 ldr r3, [r7, #12] 1993 0148 1B8D ldrh r3, [r3, #40] 1994 .loc 1 1633 25 1995 014a 013B subs r3, r3, #1 1996 014c 9AB2 uxth r2, r3 1997 014e FB68 ldr r3, [r7, #12] 1998 0150 1A85 strh r2, [r3, #40] @ movhi 1999 .L88: 1634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2000 .loc 1 1636 16 2001 0152 0123 movs r3, #1 2002 0154 60E0 b .L82 2003 .L87: 1637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 1640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 2004 .loc 1 1640 38 2005 0156 FB68 ldr r3, [r7, #12] 2006 0158 1B68 ldr r3, [r3] 2007 .loc 1 1640 48 2008 015a 5A6A ldr r2, [r3, #36] 2009 .loc 1 1640 12 2010 015c FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 65 2011 015e 5B6A ldr r3, [r3, #36] 2012 .loc 1 1640 25 2013 0160 D2B2 uxtb r2, r2 2014 .loc 1 1640 23 2015 0162 1A70 strb r2, [r3] 1641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 2016 .loc 1 1643 11 2017 0164 FB68 ldr r3, [r7, #12] 2018 0166 5B6A ldr r3, [r3, #36] 2019 .loc 1 1643 21 2020 0168 5A1C adds r2, r3, #1 2021 016a FB68 ldr r3, [r7, #12] 2022 016c 5A62 str r2, [r3, #36] 1644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 2023 .loc 1 1645 11 2024 016e FB68 ldr r3, [r7, #12] 2025 0170 5B8D ldrh r3, [r3, #42] @ movhi 2026 0172 9BB2 uxth r3, r3 2027 .loc 1 1645 22 2028 0174 013B subs r3, r3, #1 2029 0176 9AB2 uxth r2, r3 2030 0178 FB68 ldr r3, [r7, #12] 2031 017a 5A85 strh r2, [r3, #42] @ movhi 1646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 2032 .loc 1 1646 11 2033 017c FB68 ldr r3, [r7, #12] 2034 017e 1B8D ldrh r3, [r3, #40] 2035 .loc 1 1646 21 2036 0180 013B subs r3, r3, #1 2037 0182 9AB2 uxth r2, r3 2038 0184 FB68 ldr r3, [r7, #12] 2039 0186 1A85 strh r2, [r3, #40] @ movhi 2040 .L86: 1615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2041 .loc 1 1615 16 2042 0188 FB68 ldr r3, [r7, #12] 2043 018a 5B8D ldrh r3, [r3, #42] @ movhi 2044 018c 9BB2 uxth r3, r3 1615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2045 .loc 1 1615 11 2046 018e 002B cmp r3, #0 2047 0190 AFD1 bne .L89 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 **** /* Wait until STOP flag is set */ 1650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 2048 .loc 1 1650 9 2049 0192 7A69 ldr r2, [r7, #20] 2050 0194 3968 ldr r1, [r7] 2051 0196 F868 ldr r0, [r7, #12] 2052 0198 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 2053 019c 0346 mov r3, r0 2054 .loc 1 1650 8 2055 019e 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 66 2056 01a0 09D0 beq .L90 1651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 2057 .loc 1 1653 11 2058 01a2 FB68 ldr r3, [r7, #12] 2059 01a4 1B68 ldr r3, [r3] 2060 .loc 1 1653 27 2061 01a6 5A68 ldr r2, [r3, #4] 2062 .loc 1 1653 11 2063 01a8 FB68 ldr r3, [r7, #12] 2064 01aa 1B68 ldr r3, [r3] 2065 .loc 1 1653 27 2066 01ac 42F40042 orr r2, r2, #32768 2067 01b0 5A60 str r2, [r3, #4] 1654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2068 .loc 1 1654 14 2069 01b2 0123 movs r3, #1 2070 01b4 30E0 b .L82 2071 .L90: 1655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */ 1658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 2072 .loc 1 1658 5 2073 01b6 FB68 ldr r3, [r7, #12] 2074 01b8 1B68 ldr r3, [r3] 2075 01ba 2022 movs r2, #32 2076 01bc DA61 str r2, [r3, #28] 1659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ 1661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) 2077 .loc 1 1661 9 2078 01be 7B69 ldr r3, [r7, #20] 2079 01c0 0093 str r3, [sp] 2080 01c2 3B68 ldr r3, [r7] 2081 01c4 0122 movs r2, #1 2082 01c6 4FF40041 mov r1, #32768 2083 01ca F868 ldr r0, [r7, #12] 2084 01cc FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 2085 01d0 0346 mov r3, r0 2086 .loc 1 1661 8 2087 01d2 002B cmp r3, #0 2088 01d4 09D0 beq .L91 1662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 2089 .loc 1 1664 11 2090 01d6 FB68 ldr r3, [r7, #12] 2091 01d8 1B68 ldr r3, [r3] 2092 .loc 1 1664 27 2093 01da 5A68 ldr r2, [r3, #4] 2094 .loc 1 1664 11 2095 01dc FB68 ldr r3, [r7, #12] 2096 01de 1B68 ldr r3, [r3] 2097 .loc 1 1664 27 2098 01e0 42F40042 orr r2, r2, #32768 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 67 2099 01e4 5A60 str r2, [r3, #4] 1665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2100 .loc 1 1665 14 2101 01e6 0123 movs r3, #1 2102 01e8 16E0 b .L82 2103 .L91: 1666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 1669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 2104 .loc 1 1669 9 2105 01ea FB68 ldr r3, [r7, #12] 2106 01ec 1B68 ldr r3, [r3] 2107 .loc 1 1669 25 2108 01ee 5A68 ldr r2, [r3, #4] 2109 .loc 1 1669 9 2110 01f0 FB68 ldr r3, [r7, #12] 2111 01f2 1B68 ldr r3, [r3] 2112 .loc 1 1669 25 2113 01f4 42F40042 orr r2, r2, #32768 2114 01f8 5A60 str r2, [r3, #4] 1670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2115 .loc 1 1671 17 2116 01fa FB68 ldr r3, [r7, #12] 2117 01fc 2022 movs r2, #32 2118 01fe 83F84120 strb r2, [r3, #65] 1672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2119 .loc 1 1672 17 2120 0202 FB68 ldr r3, [r7, #12] 2121 0204 0022 movs r2, #0 2122 0206 83F84220 strb r2, [r3, #66] 1673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2123 .loc 1 1675 5 2124 020a FB68 ldr r3, [r7, #12] 2125 020c 0022 movs r2, #0 2126 020e 83F84020 strb r2, [r3, #64] 1676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2127 .loc 1 1677 12 2128 0212 0023 movs r3, #0 2129 0214 00E0 b .L82 2130 .L79: 1678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2131 .loc 1 1681 12 2132 0216 0223 movs r3, #2 2133 .L82: 1682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2134 .loc 1 1683 1 2135 0218 1846 mov r0, r3 2136 021a 1837 adds r7, r7, #24 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 68 2137 .LCFI40: 2138 .cfi_def_cfa_offset 8 2139 021c BD46 mov sp, r7 2140 .LCFI41: 2141 .cfi_def_cfa_register 13 2142 @ sp needed 2143 021e 80BD pop {r7, pc} 2144 .cfi_endproc 2145 .LFE137: 2147 .section .text.HAL_I2C_Master_Transmit_IT,"ax",%progbits 2148 .align 1 2149 .global HAL_I2C_Master_Transmit_IT 2150 .syntax unified 2151 .thumb 2152 .thumb_func 2154 HAL_I2C_Master_Transmit_IT: 2155 .LFB138: 1684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt 1687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t 1696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2156 .loc 1 1697 1 2157 .cfi_startproc 2158 @ args = 0, pretend = 0, frame = 24 2159 @ frame_needed = 1, uses_anonymous_args = 0 2160 0000 80B5 push {r7, lr} 2161 .LCFI42: 2162 .cfi_def_cfa_offset 8 2163 .cfi_offset 7, -8 2164 .cfi_offset 14, -4 2165 0002 88B0 sub sp, sp, #32 2166 .LCFI43: 2167 .cfi_def_cfa_offset 40 2168 0004 02AF add r7, sp, #8 2169 .LCFI44: 2170 .cfi_def_cfa 7, 32 2171 0006 F860 str r0, [r7, #12] 2172 0008 7A60 str r2, [r7, #4] 2173 000a 1A46 mov r2, r3 2174 000c 0B46 mov r3, r1 @ movhi 2175 000e 7B81 strh r3, [r7, #10] @ movhi 2176 0010 1346 mov r3, r2 @ movhi 2177 0012 3B81 strh r3, [r7, #8] @ movhi 1698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2178 .loc 1 1700 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 69 2179 0014 FB68 ldr r3, [r7, #12] 2180 0016 93F84130 ldrb r3, [r3, #65] 2181 001a DBB2 uxtb r3, r3 2182 .loc 1 1700 6 2183 001c 202B cmp r3, #32 2184 001e 7CD1 bne .L93 1701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2185 .loc 1 1702 9 2186 0020 FB68 ldr r3, [r7, #12] 2187 0022 1B68 ldr r3, [r3] 2188 0024 9B69 ldr r3, [r3, #24] 2189 0026 03F40043 and r3, r3, #32768 2190 .loc 1 1702 8 2191 002a B3F5004F cmp r3, #32768 2192 002e 01D1 bne .L94 1703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2193 .loc 1 1704 14 2194 0030 0223 movs r3, #2 2195 0032 73E0 b .L95 2196 .L94: 1705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2197 .loc 1 1708 5 2198 0034 FB68 ldr r3, [r7, #12] 2199 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2200 003a 012B cmp r3, #1 2201 003c 01D1 bne .L96 2202 .loc 1 1708 5 is_stmt 0 discriminator 1 2203 003e 0223 movs r3, #2 2204 0040 6CE0 b .L95 2205 .L96: 2206 .loc 1 1708 5 discriminator 2 2207 0042 FB68 ldr r3, [r7, #12] 2208 0044 0122 movs r2, #1 2209 0046 83F84020 strb r2, [r3, #64] 1709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 2210 .loc 1 1710 23 is_stmt 1 discriminator 2 2211 004a FB68 ldr r3, [r7, #12] 2212 004c 2122 movs r2, #33 2213 004e 83F84120 strb r2, [r3, #65] 1711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2214 .loc 1 1711 23 discriminator 2 2215 0052 FB68 ldr r3, [r7, #12] 2216 0054 1022 movs r2, #16 2217 0056 83F84220 strb r2, [r3, #66] 1712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2218 .loc 1 1712 23 discriminator 2 2219 005a FB68 ldr r3, [r7, #12] 2220 005c 0022 movs r2, #0 2221 005e 5A64 str r2, [r3, #68] 1713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 70 1715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2222 .loc 1 1715 23 discriminator 2 2223 0060 FB68 ldr r3, [r7, #12] 2224 0062 7A68 ldr r2, [r7, #4] 2225 0064 5A62 str r2, [r3, #36] 1716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2226 .loc 1 1716 23 discriminator 2 2227 0066 FB68 ldr r3, [r7, #12] 2228 0068 3A89 ldrh r2, [r7, #8] @ movhi 2229 006a 5A85 strh r2, [r3, #42] @ movhi 1717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2230 .loc 1 1717 23 discriminator 2 2231 006c FB68 ldr r3, [r7, #12] 2232 006e 2D4A ldr r2, .L101 2233 0070 DA62 str r2, [r3, #44] 1718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 2234 .loc 1 1718 23 discriminator 2 2235 0072 FB68 ldr r3, [r7, #12] 2236 0074 2C4A ldr r2, .L101+4 2237 0076 5A63 str r2, [r3, #52] 1719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2238 .loc 1 1720 13 discriminator 2 2239 0078 FB68 ldr r3, [r7, #12] 2240 007a 5B8D ldrh r3, [r3, #42] @ movhi 2241 007c 9BB2 uxth r3, r3 2242 .loc 1 1720 8 discriminator 2 2243 007e FF2B cmp r3, #255 2244 0080 06D9 bls .L97 1721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 2245 .loc 1 1722 22 2246 0082 FB68 ldr r3, [r7, #12] 2247 0084 FF22 movs r2, #255 2248 0086 1A85 strh r2, [r3, #40] @ movhi 1723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2249 .loc 1 1723 16 2250 0088 4FF08073 mov r3, #16777216 2251 008c 7B61 str r3, [r7, #20] 2252 008e 07E0 b .L98 2253 .L97: 1724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2254 .loc 1 1727 28 2255 0090 FB68 ldr r3, [r7, #12] 2256 0092 5B8D ldrh r3, [r3, #42] @ movhi 2257 0094 9AB2 uxth r2, r3 2258 .loc 1 1727 22 2259 0096 FB68 ldr r3, [r7, #12] 2260 0098 1A85 strh r2, [r3, #40] @ movhi 1728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2261 .loc 1 1728 16 2262 009a 4FF00073 mov r3, #33554432 2263 009e 7B61 str r3, [r7, #20] 2264 .L98: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 71 1729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 1733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 2265 .loc 1 1733 13 2266 00a0 FB68 ldr r3, [r7, #12] 2267 00a2 1B8D ldrh r3, [r3, #40] 2268 .loc 1 1733 8 2269 00a4 002B cmp r3, #0 2270 00a6 24D0 beq .L99 1734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 2271 .loc 1 1737 35 2272 00a8 FB68 ldr r3, [r7, #12] 2273 00aa 5B6A ldr r3, [r3, #36] 2274 .loc 1 1737 30 2275 00ac 1A78 ldrb r2, [r3] @ zero_extendqisi2 2276 .loc 1 1737 11 2277 00ae FB68 ldr r3, [r7, #12] 2278 00b0 1B68 ldr r3, [r3] 2279 .loc 1 1737 28 2280 00b2 9A62 str r2, [r3, #40] 1738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 2281 .loc 1 1740 11 2282 00b4 FB68 ldr r3, [r7, #12] 2283 00b6 5B6A ldr r3, [r3, #36] 2284 .loc 1 1740 21 2285 00b8 5A1C adds r2, r3, #1 2286 00ba FB68 ldr r3, [r7, #12] 2287 00bc 5A62 str r2, [r3, #36] 1741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 2288 .loc 1 1742 11 2289 00be FB68 ldr r3, [r7, #12] 2290 00c0 5B8D ldrh r3, [r3, #42] @ movhi 2291 00c2 9BB2 uxth r3, r3 2292 .loc 1 1742 22 2293 00c4 013B subs r3, r3, #1 2294 00c6 9AB2 uxth r2, r3 2295 00c8 FB68 ldr r3, [r7, #12] 2296 00ca 5A85 strh r2, [r3, #42] @ movhi 1743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 2297 .loc 1 1743 11 2298 00cc FB68 ldr r3, [r7, #12] 2299 00ce 1B8D ldrh r3, [r3, #40] 2300 .loc 1 1743 21 2301 00d0 013B subs r3, r3, #1 2302 00d2 9AB2 uxth r2, r3 2303 00d4 FB68 ldr r3, [r7, #12] 2304 00d6 1A85 strh r2, [r3, #40] @ movhi 1744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 72 2305 .loc 1 1745 58 2306 00d8 FB68 ldr r3, [r7, #12] 2307 00da 1B8D ldrh r3, [r3, #40] 2308 .loc 1 1745 7 2309 00dc DBB2 uxtb r3, r3 2310 00de 0133 adds r3, r3, #1 2311 00e0 DAB2 uxtb r2, r3 2312 00e2 7989 ldrh r1, [r7, #10] 2313 00e4 114B ldr r3, .L101+8 2314 00e6 0093 str r3, [sp] 2315 00e8 7B69 ldr r3, [r7, #20] 2316 00ea F868 ldr r0, [r7, #12] 2317 00ec FFF7FEFF bl I2C_TransferConfig 2318 00f0 09E0 b .L100 2319 .L99: 1746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, 2320 .loc 1 1750 57 2321 00f2 FB68 ldr r3, [r7, #12] 2322 00f4 1B8D ldrh r3, [r3, #40] 2323 .loc 1 1750 7 2324 00f6 DAB2 uxtb r2, r3 2325 00f8 7989 ldrh r1, [r7, #10] 2326 00fa 0C4B ldr r3, .L101+8 2327 00fc 0093 str r3, [sp] 2328 00fe 7B69 ldr r3, [r7, #20] 2329 0100 F868 ldr r0, [r7, #12] 2330 0102 FFF7FEFF bl I2C_TransferConfig 2331 .L100: 1751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 1752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2332 .loc 1 1755 5 2333 0106 FB68 ldr r3, [r7, #12] 2334 0108 0022 movs r2, #0 2335 010a 83F84020 strb r2, [r3, #64] 1756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 1762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 1765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 2336 .loc 1 1765 5 2337 010e 0121 movs r1, #1 2338 0110 F868 ldr r0, [r7, #12] 2339 0112 FFF7FEFF bl I2C_Enable_IRQ 1766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 73 2340 .loc 1 1767 12 2341 0116 0023 movs r3, #0 2342 0118 00E0 b .L95 2343 .L93: 1768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2344 .loc 1 1771 12 2345 011a 0223 movs r3, #2 2346 .L95: 1772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2347 .loc 1 1773 1 2348 011c 1846 mov r0, r3 2349 011e 1837 adds r7, r7, #24 2350 .LCFI45: 2351 .cfi_def_cfa_offset 8 2352 0120 BD46 mov sp, r7 2353 .LCFI46: 2354 .cfi_def_cfa_register 13 2355 @ sp needed 2356 0122 80BD pop {r7, pc} 2357 .L102: 2358 .align 2 2359 .L101: 2360 0124 0000FFFF .word -65536 2361 0128 00000000 .word I2C_Master_ISR_IT 2362 012c 00200080 .word -2147475456 2363 .cfi_endproc 2364 .LFE138: 2366 .section .text.HAL_I2C_Master_Receive_IT,"ax",%progbits 2367 .align 1 2368 .global HAL_I2C_Master_Receive_IT 2369 .syntax unified 2370 .thumb 2371 .thumb_func 2373 HAL_I2C_Master_Receive_IT: 2374 .LFB139: 1774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt 1777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t * 1786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2375 .loc 1 1787 1 2376 .cfi_startproc 2377 @ args = 0, pretend = 0, frame = 24 2378 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 74 2379 0000 80B5 push {r7, lr} 2380 .LCFI47: 2381 .cfi_def_cfa_offset 8 2382 .cfi_offset 7, -8 2383 .cfi_offset 14, -4 2384 0002 88B0 sub sp, sp, #32 2385 .LCFI48: 2386 .cfi_def_cfa_offset 40 2387 0004 02AF add r7, sp, #8 2388 .LCFI49: 2389 .cfi_def_cfa 7, 32 2390 0006 F860 str r0, [r7, #12] 2391 0008 7A60 str r2, [r7, #4] 2392 000a 1A46 mov r2, r3 2393 000c 0B46 mov r3, r1 @ movhi 2394 000e 7B81 strh r3, [r7, #10] @ movhi 2395 0010 1346 mov r3, r2 @ movhi 2396 0012 3B81 strh r3, [r7, #8] @ movhi 1788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2397 .loc 1 1790 11 2398 0014 FB68 ldr r3, [r7, #12] 2399 0016 93F84130 ldrb r3, [r3, #65] 2400 001a DBB2 uxtb r3, r3 2401 .loc 1 1790 6 2402 001c 202B cmp r3, #32 2403 001e 53D1 bne .L104 1791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2404 .loc 1 1792 9 2405 0020 FB68 ldr r3, [r7, #12] 2406 0022 1B68 ldr r3, [r3] 2407 0024 9B69 ldr r3, [r3, #24] 2408 0026 03F40043 and r3, r3, #32768 2409 .loc 1 1792 8 2410 002a B3F5004F cmp r3, #32768 2411 002e 01D1 bne .L105 1793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2412 .loc 1 1794 14 2413 0030 0223 movs r3, #2 2414 0032 4AE0 b .L106 2415 .L105: 1795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2416 .loc 1 1798 5 2417 0034 FB68 ldr r3, [r7, #12] 2418 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2419 003a 012B cmp r3, #1 2420 003c 01D1 bne .L107 2421 .loc 1 1798 5 is_stmt 0 discriminator 1 2422 003e 0223 movs r3, #2 2423 0040 43E0 b .L106 2424 .L107: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 75 2425 .loc 1 1798 5 discriminator 2 2426 0042 FB68 ldr r3, [r7, #12] 2427 0044 0122 movs r2, #1 2428 0046 83F84020 strb r2, [r3, #64] 1799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 2429 .loc 1 1800 23 is_stmt 1 discriminator 2 2430 004a FB68 ldr r3, [r7, #12] 2431 004c 2222 movs r2, #34 2432 004e 83F84120 strb r2, [r3, #65] 1801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2433 .loc 1 1801 23 discriminator 2 2434 0052 FB68 ldr r3, [r7, #12] 2435 0054 1022 movs r2, #16 2436 0056 83F84220 strb r2, [r3, #66] 1802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2437 .loc 1 1802 23 discriminator 2 2438 005a FB68 ldr r3, [r7, #12] 2439 005c 0022 movs r2, #0 2440 005e 5A64 str r2, [r3, #68] 1803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2441 .loc 1 1805 23 discriminator 2 2442 0060 FB68 ldr r3, [r7, #12] 2443 0062 7A68 ldr r2, [r7, #4] 2444 0064 5A62 str r2, [r3, #36] 1806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2445 .loc 1 1806 23 discriminator 2 2446 0066 FB68 ldr r3, [r7, #12] 2447 0068 3A89 ldrh r2, [r7, #8] @ movhi 2448 006a 5A85 strh r2, [r3, #42] @ movhi 1807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2449 .loc 1 1807 23 discriminator 2 2450 006c FB68 ldr r3, [r7, #12] 2451 006e 194A ldr r2, .L110 2452 0070 DA62 str r2, [r3, #44] 1808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 2453 .loc 1 1808 23 discriminator 2 2454 0072 FB68 ldr r3, [r7, #12] 2455 0074 184A ldr r2, .L110+4 2456 0076 5A63 str r2, [r3, #52] 1809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2457 .loc 1 1810 13 discriminator 2 2458 0078 FB68 ldr r3, [r7, #12] 2459 007a 5B8D ldrh r3, [r3, #42] @ movhi 2460 007c 9BB2 uxth r3, r3 2461 .loc 1 1810 8 discriminator 2 2462 007e FF2B cmp r3, #255 2463 0080 06D9 bls .L108 1811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 2464 .loc 1 1812 22 2465 0082 FB68 ldr r3, [r7, #12] 2466 0084 0122 movs r2, #1 2467 0086 1A85 strh r2, [r3, #40] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 76 1813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2468 .loc 1 1813 16 2469 0088 4FF08073 mov r3, #16777216 2470 008c 7B61 str r3, [r7, #20] 2471 008e 07E0 b .L109 2472 .L108: 1814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2473 .loc 1 1817 28 2474 0090 FB68 ldr r3, [r7, #12] 2475 0092 5B8D ldrh r3, [r3, #42] @ movhi 2476 0094 9AB2 uxth r2, r3 2477 .loc 1 1817 22 2478 0096 FB68 ldr r3, [r7, #12] 2479 0098 1A85 strh r2, [r3, #40] @ movhi 1818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2480 .loc 1 1818 16 2481 009a 4FF00073 mov r3, #33554432 2482 009e 7B61 str r3, [r7, #20] 2483 .L109: 1819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 1822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 1823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ 2484 .loc 1 1823 55 2485 00a0 FB68 ldr r3, [r7, #12] 2486 00a2 1B8D ldrh r3, [r3, #40] 2487 .loc 1 1823 5 2488 00a4 DAB2 uxtb r2, r3 2489 00a6 7989 ldrh r1, [r7, #10] 2490 00a8 0C4B ldr r3, .L110+8 2491 00aa 0093 str r3, [sp] 2492 00ac 7B69 ldr r3, [r7, #20] 2493 00ae F868 ldr r0, [r7, #12] 2494 00b0 FFF7FEFF bl I2C_TransferConfig 1824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2495 .loc 1 1826 5 2496 00b4 FB68 ldr r3, [r7, #12] 2497 00b6 0022 movs r2, #0 2498 00b8 83F84020 strb r2, [r3, #64] 1827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 1833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 1836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 2499 .loc 1 1836 5 2500 00bc 0221 movs r1, #2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 77 2501 00be F868 ldr r0, [r7, #12] 2502 00c0 FFF7FEFF bl I2C_Enable_IRQ 1837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2503 .loc 1 1838 12 2504 00c4 0023 movs r3, #0 2505 00c6 00E0 b .L106 2506 .L104: 1839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2507 .loc 1 1842 12 2508 00c8 0223 movs r3, #2 2509 .L106: 1843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2510 .loc 1 1844 1 2511 00ca 1846 mov r0, r3 2512 00cc 1837 adds r7, r7, #24 2513 .LCFI50: 2514 .cfi_def_cfa_offset 8 2515 00ce BD46 mov sp, r7 2516 .LCFI51: 2517 .cfi_def_cfa_register 13 2518 @ sp needed 2519 00d0 80BD pop {r7, pc} 2520 .L111: 2521 00d2 00BF .align 2 2522 .L110: 2523 00d4 0000FFFF .word -65536 2524 00d8 00000000 .word I2C_Master_ISR_IT 2525 00dc 00240080 .word -2147474432 2526 .cfi_endproc 2527 .LFE139: 2529 .section .text.HAL_I2C_Slave_Transmit_IT,"ax",%progbits 2530 .align 1 2531 .global HAL_I2C_Slave_Transmit_IT 2532 .syntax unified 2533 .thumb 2534 .thumb_func 2536 HAL_I2C_Slave_Transmit_IT: 2537 .LFB140: 1845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt 1848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1854: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) 1855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2538 .loc 1 1855 1 2539 .cfi_startproc 2540 @ args = 0, pretend = 0, frame = 16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 78 2541 @ frame_needed = 1, uses_anonymous_args = 0 2542 0000 80B5 push {r7, lr} 2543 .LCFI52: 2544 .cfi_def_cfa_offset 8 2545 .cfi_offset 7, -8 2546 .cfi_offset 14, -4 2547 0002 84B0 sub sp, sp, #16 2548 .LCFI53: 2549 .cfi_def_cfa_offset 24 2550 0004 00AF add r7, sp, #0 2551 .LCFI54: 2552 .cfi_def_cfa_register 7 2553 0006 F860 str r0, [r7, #12] 2554 0008 B960 str r1, [r7, #8] 2555 000a 1346 mov r3, r2 2556 000c FB80 strh r3, [r7, #6] @ movhi 1856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2557 .loc 1 1856 11 2558 000e FB68 ldr r3, [r7, #12] 2559 0010 93F84130 ldrb r3, [r3, #65] 2560 0014 DBB2 uxtb r3, r3 2561 .loc 1 1856 6 2562 0016 202B cmp r3, #32 2563 0018 56D1 bne .L113 1857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2564 .loc 1 1859 5 2565 001a FB68 ldr r3, [r7, #12] 2566 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2567 0020 012B cmp r3, #1 2568 0022 01D1 bne .L114 2569 .loc 1 1859 5 is_stmt 0 discriminator 1 2570 0024 0223 movs r3, #2 2571 0026 50E0 b .L115 2572 .L114: 2573 .loc 1 1859 5 discriminator 2 2574 0028 FB68 ldr r3, [r7, #12] 2575 002a 0122 movs r2, #1 2576 002c 83F84020 strb r2, [r3, #64] 1860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 2577 .loc 1 1861 23 is_stmt 1 discriminator 2 2578 0030 FB68 ldr r3, [r7, #12] 2579 0032 2122 movs r2, #33 2580 0034 83F84120 strb r2, [r3, #65] 1862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 2581 .loc 1 1862 23 discriminator 2 2582 0038 FB68 ldr r3, [r7, #12] 2583 003a 2022 movs r2, #32 2584 003c 83F84220 strb r2, [r3, #66] 1863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2585 .loc 1 1863 23 discriminator 2 2586 0040 FB68 ldr r3, [r7, #12] 2587 0042 0022 movs r2, #0 2588 0044 5A64 str r2, [r3, #68] 1864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 79 1865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 2589 .loc 1 1866 9 discriminator 2 2590 0046 FB68 ldr r3, [r7, #12] 2591 0048 1B68 ldr r3, [r3] 2592 .loc 1 1866 25 discriminator 2 2593 004a 5A68 ldr r2, [r3, #4] 2594 .loc 1 1866 9 discriminator 2 2595 004c FB68 ldr r3, [r7, #12] 2596 004e 1B68 ldr r3, [r3] 2597 .loc 1 1866 25 discriminator 2 2598 0050 22F40042 bic r2, r2, #32768 2599 0054 5A60 str r2, [r3, #4] 1867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2600 .loc 1 1869 23 discriminator 2 2601 0056 FB68 ldr r3, [r7, #12] 2602 0058 BA68 ldr r2, [r7, #8] 2603 005a 5A62 str r2, [r3, #36] 1870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2604 .loc 1 1870 23 discriminator 2 2605 005c FB68 ldr r3, [r7, #12] 2606 005e FA88 ldrh r2, [r7, #6] @ movhi 2607 0060 5A85 strh r2, [r3, #42] @ movhi 1871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2608 .loc 1 1871 29 discriminator 2 2609 0062 FB68 ldr r3, [r7, #12] 2610 0064 5B8D ldrh r3, [r3, #42] @ movhi 2611 0066 9AB2 uxth r2, r3 2612 .loc 1 1871 23 discriminator 2 2613 0068 FB68 ldr r3, [r7, #12] 2614 006a 1A85 strh r2, [r3, #40] @ movhi 1872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2615 .loc 1 1872 23 discriminator 2 2616 006c FB68 ldr r3, [r7, #12] 2617 006e 194A ldr r2, .L117 2618 0070 DA62 str r2, [r3, #44] 1873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 2619 .loc 1 1873 23 discriminator 2 2620 0072 FB68 ldr r3, [r7, #12] 2621 0074 184A ldr r2, .L117+4 2622 0076 5A63 str r2, [r3, #52] 1874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 1876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 2623 .loc 1 1876 19 discriminator 2 2624 0078 FB68 ldr r3, [r7, #12] 2625 007a 1B6A ldr r3, [r3, #32] 2626 .loc 1 1876 8 discriminator 2 2627 007c B3F5003F cmp r3, #131072 2628 0080 17D1 bne .L116 1877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 1879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 1880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 2629 .loc 1 1880 35 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 80 2630 0082 FB68 ldr r3, [r7, #12] 2631 0084 5B6A ldr r3, [r3, #36] 2632 .loc 1 1880 30 2633 0086 1A78 ldrb r2, [r3] @ zero_extendqisi2 2634 .loc 1 1880 11 2635 0088 FB68 ldr r3, [r7, #12] 2636 008a 1B68 ldr r3, [r3] 2637 .loc 1 1880 28 2638 008c 9A62 str r2, [r3, #40] 1881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 1883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 2639 .loc 1 1883 11 2640 008e FB68 ldr r3, [r7, #12] 2641 0090 5B6A ldr r3, [r3, #36] 2642 .loc 1 1883 21 2643 0092 5A1C adds r2, r3, #1 2644 0094 FB68 ldr r3, [r7, #12] 2645 0096 5A62 str r2, [r3, #36] 1884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 2646 .loc 1 1885 11 2647 0098 FB68 ldr r3, [r7, #12] 2648 009a 5B8D ldrh r3, [r3, #42] @ movhi 2649 009c 9BB2 uxth r3, r3 2650 .loc 1 1885 22 2651 009e 013B subs r3, r3, #1 2652 00a0 9AB2 uxth r2, r3 2653 00a2 FB68 ldr r3, [r7, #12] 2654 00a4 5A85 strh r2, [r3, #42] @ movhi 1886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 2655 .loc 1 1886 11 2656 00a6 FB68 ldr r3, [r7, #12] 2657 00a8 1B8D ldrh r3, [r3, #40] 2658 .loc 1 1886 21 2659 00aa 013B subs r3, r3, #1 2660 00ac 9AB2 uxth r2, r3 2661 00ae FB68 ldr r3, [r7, #12] 2662 00b0 1A85 strh r2, [r3, #40] @ movhi 2663 .L116: 1887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2664 .loc 1 1890 5 2665 00b2 FB68 ldr r3, [r7, #12] 2666 00b4 0022 movs r2, #0 2667 00b6 83F84020 strb r2, [r3, #64] 1891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 1897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 81 1900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); 2668 .loc 1 1900 5 2669 00ba 48F20101 movw r1, #32769 2670 00be F868 ldr r0, [r7, #12] 2671 00c0 FFF7FEFF bl I2C_Enable_IRQ 1901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2672 .loc 1 1902 12 2673 00c4 0023 movs r3, #0 2674 00c6 00E0 b .L115 2675 .L113: 1903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2676 .loc 1 1906 12 2677 00c8 0223 movs r3, #2 2678 .L115: 1907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2679 .loc 1 1908 1 2680 00ca 1846 mov r0, r3 2681 00cc 1037 adds r7, r7, #16 2682 .LCFI55: 2683 .cfi_def_cfa_offset 8 2684 00ce BD46 mov sp, r7 2685 .LCFI56: 2686 .cfi_def_cfa_register 13 2687 @ sp needed 2688 00d0 80BD pop {r7, pc} 2689 .L118: 2690 00d2 00BF .align 2 2691 .L117: 2692 00d4 0000FFFF .word -65536 2693 00d8 00000000 .word I2C_Slave_ISR_IT 2694 .cfi_endproc 2695 .LFE140: 2697 .section .text.HAL_I2C_Slave_Receive_IT,"ax",%progbits 2698 .align 1 2699 .global HAL_I2C_Slave_Receive_IT 2700 .syntax unified 2701 .thumb 2702 .thumb_func 2704 HAL_I2C_Slave_Receive_IT: 2705 .LFB141: 1909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt 1912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 1915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1918: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) 1919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2706 .loc 1 1919 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 82 2707 .cfi_startproc 2708 @ args = 0, pretend = 0, frame = 16 2709 @ frame_needed = 1, uses_anonymous_args = 0 2710 0000 80B5 push {r7, lr} 2711 .LCFI57: 2712 .cfi_def_cfa_offset 8 2713 .cfi_offset 7, -8 2714 .cfi_offset 14, -4 2715 0002 84B0 sub sp, sp, #16 2716 .LCFI58: 2717 .cfi_def_cfa_offset 24 2718 0004 00AF add r7, sp, #0 2719 .LCFI59: 2720 .cfi_def_cfa_register 7 2721 0006 F860 str r0, [r7, #12] 2722 0008 B960 str r1, [r7, #8] 2723 000a 1346 mov r3, r2 2724 000c FB80 strh r3, [r7, #6] @ movhi 1920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2725 .loc 1 1920 11 2726 000e FB68 ldr r3, [r7, #12] 2727 0010 93F84130 ldrb r3, [r3, #65] 2728 0014 DBB2 uxtb r3, r3 2729 .loc 1 1920 6 2730 0016 202B cmp r3, #32 2731 0018 39D1 bne .L120 1921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2732 .loc 1 1923 5 2733 001a FB68 ldr r3, [r7, #12] 2734 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2735 0020 012B cmp r3, #1 2736 0022 01D1 bne .L121 2737 .loc 1 1923 5 is_stmt 0 discriminator 1 2738 0024 0223 movs r3, #2 2739 0026 33E0 b .L122 2740 .L121: 2741 .loc 1 1923 5 discriminator 2 2742 0028 FB68 ldr r3, [r7, #12] 2743 002a 0122 movs r2, #1 2744 002c 83F84020 strb r2, [r3, #64] 1924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 2745 .loc 1 1925 23 is_stmt 1 discriminator 2 2746 0030 FB68 ldr r3, [r7, #12] 2747 0032 2222 movs r2, #34 2748 0034 83F84120 strb r2, [r3, #65] 1926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 2749 .loc 1 1926 23 discriminator 2 2750 0038 FB68 ldr r3, [r7, #12] 2751 003a 2022 movs r2, #32 2752 003c 83F84220 strb r2, [r3, #66] 1927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2753 .loc 1 1927 23 discriminator 2 2754 0040 FB68 ldr r3, [r7, #12] 2755 0042 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 83 2756 0044 5A64 str r2, [r3, #68] 1928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 1930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 2757 .loc 1 1930 9 discriminator 2 2758 0046 FB68 ldr r3, [r7, #12] 2759 0048 1B68 ldr r3, [r3] 2760 .loc 1 1930 25 discriminator 2 2761 004a 5A68 ldr r2, [r3, #4] 2762 .loc 1 1930 9 discriminator 2 2763 004c FB68 ldr r3, [r7, #12] 2764 004e 1B68 ldr r3, [r3] 2765 .loc 1 1930 25 discriminator 2 2766 0050 22F40042 bic r2, r2, #32768 2767 0054 5A60 str r2, [r3, #4] 1931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2768 .loc 1 1933 23 discriminator 2 2769 0056 FB68 ldr r3, [r7, #12] 2770 0058 BA68 ldr r2, [r7, #8] 2771 005a 5A62 str r2, [r3, #36] 1934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2772 .loc 1 1934 23 discriminator 2 2773 005c FB68 ldr r3, [r7, #12] 2774 005e FA88 ldrh r2, [r7, #6] @ movhi 2775 0060 5A85 strh r2, [r3, #42] @ movhi 1935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2776 .loc 1 1935 29 discriminator 2 2777 0062 FB68 ldr r3, [r7, #12] 2778 0064 5B8D ldrh r3, [r3, #42] @ movhi 2779 0066 9AB2 uxth r2, r3 2780 .loc 1 1935 23 discriminator 2 2781 0068 FB68 ldr r3, [r7, #12] 2782 006a 1A85 strh r2, [r3, #40] @ movhi 1936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2783 .loc 1 1936 23 discriminator 2 2784 006c FB68 ldr r3, [r7, #12] 2785 006e 0A4A ldr r2, .L123 2786 0070 DA62 str r2, [r3, #44] 1937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 2787 .loc 1 1937 23 discriminator 2 2788 0072 FB68 ldr r3, [r7, #12] 2789 0074 094A ldr r2, .L123+4 2790 0076 5A63 str r2, [r3, #52] 1938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 1940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2791 .loc 1 1940 5 discriminator 2 2792 0078 FB68 ldr r3, [r7, #12] 2793 007a 0022 movs r2, #0 2794 007c 83F84020 strb r2, [r3, #64] 1941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 1943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 1944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 1945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 84 1946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 1947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 1948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 1949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 1950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 2795 .loc 1 1950 5 discriminator 2 2796 0080 48F20201 movw r1, #32770 2797 0084 F868 ldr r0, [r7, #12] 2798 0086 FFF7FEFF bl I2C_Enable_IRQ 1951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 2799 .loc 1 1952 12 discriminator 2 2800 008a 0023 movs r3, #0 2801 008c 00E0 b .L122 2802 .L120: 1953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2803 .loc 1 1956 12 2804 008e 0223 movs r3, #2 2805 .L122: 1957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2806 .loc 1 1958 1 2807 0090 1846 mov r0, r3 2808 0092 1037 adds r7, r7, #16 2809 .LCFI60: 2810 .cfi_def_cfa_offset 8 2811 0094 BD46 mov sp, r7 2812 .LCFI61: 2813 .cfi_def_cfa_register 13 2814 @ sp needed 2815 0096 80BD pop {r7, pc} 2816 .L124: 2817 .align 2 2818 .L123: 2819 0098 0000FFFF .word -65536 2820 009c 00000000 .word I2C_Slave_ISR_IT 2821 .cfi_endproc 2822 .LFE141: 2824 .section .text.HAL_I2C_Master_Transmit_DMA,"ax",%progbits 2825 .align 1 2826 .global HAL_I2C_Master_Transmit_DMA 2827 .syntax unified 2828 .thumb 2829 .thumb_func 2831 HAL_I2C_Master_Transmit_DMA: 2832 .LFB142: 1959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 1961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with DMA 1962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 1963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 1964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 1965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 1966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 85 1967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 1968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 1969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 1970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t 1971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 1972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2833 .loc 1 1972 1 2834 .cfi_startproc 2835 @ args = 0, pretend = 0, frame = 32 2836 @ frame_needed = 1, uses_anonymous_args = 0 2837 0000 80B5 push {r7, lr} 2838 .LCFI62: 2839 .cfi_def_cfa_offset 8 2840 .cfi_offset 7, -8 2841 .cfi_offset 14, -4 2842 0002 8AB0 sub sp, sp, #40 2843 .LCFI63: 2844 .cfi_def_cfa_offset 48 2845 0004 02AF add r7, sp, #8 2846 .LCFI64: 2847 .cfi_def_cfa 7, 40 2848 0006 F860 str r0, [r7, #12] 2849 0008 7A60 str r2, [r7, #4] 2850 000a 1A46 mov r2, r3 2851 000c 0B46 mov r3, r1 @ movhi 2852 000e 7B81 strh r3, [r7, #10] @ movhi 2853 0010 1346 mov r3, r2 @ movhi 2854 0012 3B81 strh r3, [r7, #8] @ movhi 1973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 1974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 1975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; 2855 .loc 1 1975 12 2856 0014 0023 movs r3, #0 2857 0016 BB61 str r3, [r7, #24] 1976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 2858 .loc 1 1977 11 2859 0018 FB68 ldr r3, [r7, #12] 2860 001a 93F84130 ldrb r3, [r3, #65] 2861 001e DBB2 uxtb r3, r3 2862 .loc 1 1977 6 2863 0020 202B cmp r3, #32 2864 0022 40F0EF80 bne .L126 1978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 2865 .loc 1 1979 9 2866 0026 FB68 ldr r3, [r7, #12] 2867 0028 1B68 ldr r3, [r3] 2868 002a 9B69 ldr r3, [r3, #24] 2869 002c 03F40043 and r3, r3, #32768 2870 .loc 1 1979 8 2871 0030 B3F5004F cmp r3, #32768 2872 0034 01D1 bne .L127 1980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 2873 .loc 1 1981 14 2874 0036 0223 movs r3, #2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 86 2875 0038 E5E0 b .L128 2876 .L127: 1982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 1983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 1985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 2877 .loc 1 1985 5 2878 003a FB68 ldr r3, [r7, #12] 2879 003c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 2880 0040 012B cmp r3, #1 2881 0042 01D1 bne .L129 2882 .loc 1 1985 5 is_stmt 0 discriminator 1 2883 0044 0223 movs r3, #2 2884 0046 DEE0 b .L128 2885 .L129: 2886 .loc 1 1985 5 discriminator 2 2887 0048 FB68 ldr r3, [r7, #12] 2888 004a 0122 movs r2, #1 2889 004c 83F84020 strb r2, [r3, #64] 1986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 2890 .loc 1 1987 23 is_stmt 1 discriminator 2 2891 0050 FB68 ldr r3, [r7, #12] 2892 0052 2122 movs r2, #33 2893 0054 83F84120 strb r2, [r3, #65] 1988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 2894 .loc 1 1988 23 discriminator 2 2895 0058 FB68 ldr r3, [r7, #12] 2896 005a 1022 movs r2, #16 2897 005c 83F84220 strb r2, [r3, #66] 1989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 2898 .loc 1 1989 23 discriminator 2 2899 0060 FB68 ldr r3, [r7, #12] 2900 0062 0022 movs r2, #0 2901 0064 5A64 str r2, [r3, #68] 1990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 1992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 2902 .loc 1 1992 23 discriminator 2 2903 0066 FB68 ldr r3, [r7, #12] 2904 0068 7A68 ldr r2, [r7, #4] 2905 006a 5A62 str r2, [r3, #36] 1993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 2906 .loc 1 1993 23 discriminator 2 2907 006c FB68 ldr r3, [r7, #12] 2908 006e 3A89 ldrh r2, [r7, #8] @ movhi 2909 0070 5A85 strh r2, [r3, #42] @ movhi 1994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 2910 .loc 1 1994 23 discriminator 2 2911 0072 FB68 ldr r3, [r7, #12] 2912 0074 664A ldr r2, .L139 2913 0076 DA62 str r2, [r3, #44] 1995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 2914 .loc 1 1995 23 discriminator 2 2915 0078 FB68 ldr r3, [r7, #12] 2916 007a 664A ldr r2, .L139+4 2917 007c 5A63 str r2, [r3, #52] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 87 1996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 1997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 2918 .loc 1 1997 13 discriminator 2 2919 007e FB68 ldr r3, [r7, #12] 2920 0080 5B8D ldrh r3, [r3, #42] @ movhi 2921 0082 9BB2 uxth r3, r3 2922 .loc 1 1997 8 discriminator 2 2923 0084 FF2B cmp r3, #255 2924 0086 06D9 bls .L130 1998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 1999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 2925 .loc 1 1999 22 2926 0088 FB68 ldr r3, [r7, #12] 2927 008a FF22 movs r2, #255 2928 008c 1A85 strh r2, [r3, #40] @ movhi 2000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 2929 .loc 1 2000 16 2930 008e 4FF08073 mov r3, #16777216 2931 0092 FB61 str r3, [r7, #28] 2932 0094 07E0 b .L131 2933 .L130: 2001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 2934 .loc 1 2004 28 2935 0096 FB68 ldr r3, [r7, #12] 2936 0098 5B8D ldrh r3, [r3, #42] @ movhi 2937 009a 9AB2 uxth r2, r3 2938 .loc 1 2004 22 2939 009c FB68 ldr r3, [r7, #12] 2940 009e 1A85 strh r2, [r3, #40] @ movhi 2005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 2941 .loc 1 2005 16 2942 00a0 4FF00073 mov r3, #33554432 2943 00a4 FB61 str r3, [r7, #28] 2944 .L131: 2006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 2945 .loc 1 2008 13 2946 00a6 FB68 ldr r3, [r7, #12] 2947 00a8 1B8D ldrh r3, [r3, #40] 2948 .loc 1 2008 8 2949 00aa 002B cmp r3, #0 2950 00ac 1AD0 beq .L132 2009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 2011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 2012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 2951 .loc 1 2012 35 2952 00ae FB68 ldr r3, [r7, #12] 2953 00b0 5B6A ldr r3, [r3, #36] 2954 .loc 1 2012 30 2955 00b2 1A78 ldrb r2, [r3] @ zero_extendqisi2 2956 .loc 1 2012 11 2957 00b4 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 88 2958 00b6 1B68 ldr r3, [r3] 2959 .loc 1 2012 28 2960 00b8 9A62 str r2, [r3, #40] 2013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 2961 .loc 1 2015 11 2962 00ba FB68 ldr r3, [r7, #12] 2963 00bc 5B6A ldr r3, [r3, #36] 2964 .loc 1 2015 21 2965 00be 5A1C adds r2, r3, #1 2966 00c0 FB68 ldr r3, [r7, #12] 2967 00c2 5A62 str r2, [r3, #36] 2016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; 2968 .loc 1 2017 24 2969 00c4 FB68 ldr r3, [r7, #12] 2970 00c6 1B8D ldrh r3, [r3, #40] 2971 .loc 1 2017 18 2972 00c8 BB61 str r3, [r7, #24] 2018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 2973 .loc 1 2018 11 2974 00ca FB68 ldr r3, [r7, #12] 2975 00cc 5B8D ldrh r3, [r3, #42] @ movhi 2976 00ce 9BB2 uxth r3, r3 2977 .loc 1 2018 22 2978 00d0 013B subs r3, r3, #1 2979 00d2 9AB2 uxth r2, r3 2980 00d4 FB68 ldr r3, [r7, #12] 2981 00d6 5A85 strh r2, [r3, #42] @ movhi 2019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 2982 .loc 1 2019 11 2983 00d8 FB68 ldr r3, [r7, #12] 2984 00da 1B8D ldrh r3, [r3, #40] 2985 .loc 1 2019 21 2986 00dc 013B subs r3, r3, #1 2987 00de 9AB2 uxth r2, r3 2988 00e0 FB68 ldr r3, [r7, #12] 2989 00e2 1A85 strh r2, [r3, #40] @ movhi 2990 .L132: 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 **** if (hi2c->XferSize > 0U) 2991 .loc 1 2022 13 2992 00e4 FB68 ldr r3, [r7, #12] 2993 00e6 1B8D ldrh r3, [r3, #40] 2994 .loc 1 2022 8 2995 00e8 002B cmp r3, #0 2996 00ea 74D0 beq .L133 2023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 2997 .loc 1 2024 15 2998 00ec FB68 ldr r3, [r7, #12] 2999 00ee 9B6B ldr r3, [r3, #56] 3000 .loc 1 2024 10 3001 00f0 002B cmp r3, #0 3002 00f2 22D0 beq .L134 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 89 2025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 3003 .loc 1 2027 13 3004 00f4 FB68 ldr r3, [r7, #12] 3005 00f6 9B6B ldr r3, [r3, #56] 3006 .loc 1 2027 40 3007 00f8 474A ldr r2, .L139+8 3008 00fa 9A62 str r2, [r3, #40] 2028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 3009 .loc 1 2030 13 3010 00fc FB68 ldr r3, [r7, #12] 3011 00fe 9B6B ldr r3, [r3, #56] 3012 .loc 1 2030 41 3013 0100 464A ldr r2, .L139+12 3014 0102 1A63 str r2, [r3, #48] 2031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 3015 .loc 1 2033 13 3016 0104 FB68 ldr r3, [r7, #12] 3017 0106 9B6B ldr r3, [r3, #56] 3018 .loc 1 2033 44 3019 0108 0022 movs r2, #0 3020 010a DA62 str r2, [r3, #44] 2034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 3021 .loc 1 2034 13 3022 010c FB68 ldr r3, [r7, #12] 3023 010e 9B6B ldr r3, [r3, #56] 3024 .loc 1 2034 41 3025 0110 0022 movs r2, #0 3026 0112 5A63 str r2, [r3, #52] 2035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, 3027 .loc 1 2037 25 3028 0114 FB68 ldr r3, [r7, #12] 3029 0116 986B ldr r0, [r3, #56] 3030 .loc 1 2037 70 3031 0118 FB68 ldr r3, [r7, #12] 3032 011a 5B6A ldr r3, [r3, #36] 3033 .loc 1 2037 25 3034 011c 1946 mov r1, r3 2038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); 3035 .loc 1 2038 57 3036 011e FB68 ldr r3, [r7, #12] 3037 0120 1B68 ldr r3, [r3] 3038 .loc 1 2038 52 3039 0122 2833 adds r3, r3, #40 2037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); 3040 .loc 1 2037 25 3041 0124 1A46 mov r2, r3 3042 .loc 1 2038 79 3043 0126 FB68 ldr r3, [r7, #12] 3044 0128 1B8D ldrh r3, [r3, #40] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 90 2037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); 3045 .loc 1 2037 25 3046 012a FFF7FEFF bl HAL_DMA_Start_IT 3047 012e 0346 mov r3, r0 3048 0130 FB75 strb r3, [r7, #23] 2039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3049 .loc 1 2055 10 3050 0132 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 3051 0134 002B cmp r3, #0 3052 0136 3AD1 bne .L136 3053 0138 13E0 b .L138 3054 .L134: 2043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3055 .loc 1 2043 25 3056 013a FB68 ldr r3, [r7, #12] 3057 013c 2022 movs r2, #32 3058 013e 83F84120 strb r2, [r3, #65] 2044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3059 .loc 1 2044 25 3060 0142 FB68 ldr r3, [r7, #12] 3061 0144 0022 movs r2, #0 3062 0146 83F84220 strb r2, [r3, #66] 2047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3063 .loc 1 2047 25 3064 014a FB68 ldr r3, [r7, #12] 3065 014c 5B6C ldr r3, [r3, #68] 3066 014e 43F08002 orr r2, r3, #128 3067 0152 FB68 ldr r3, [r7, #12] 3068 0154 5A64 str r2, [r3, #68] 2050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3069 .loc 1 2050 9 3070 0156 FB68 ldr r3, [r7, #12] 3071 0158 0022 movs r2, #0 3072 015a 83F84020 strb r2, [r3, #64] 2052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3073 .loc 1 2052 16 3074 015e 0123 movs r3, #1 3075 0160 51E0 b .L128 3076 .L138: 2056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 91 2058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART 2059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), 3077 .loc 1 2059 60 3078 0162 FB68 ldr r3, [r7, #12] 3079 0164 1B8D ldrh r3, [r3, #40] 3080 .loc 1 2059 9 3081 0166 DBB2 uxtb r3, r3 3082 0168 0133 adds r3, r3, #1 3083 016a DAB2 uxtb r2, r3 3084 016c 7989 ldrh r1, [r7, #10] 3085 016e 2C4B ldr r3, .L139+16 3086 0170 0093 str r3, [sp] 3087 0172 FB69 ldr r3, [r7, #28] 3088 0174 F868 ldr r0, [r7, #12] 3089 0176 FFF7FEFF bl I2C_TransferConfig 2060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); 2061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 2063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 3090 .loc 1 2063 25 3091 017a FB68 ldr r3, [r7, #12] 3092 017c 5B8D ldrh r3, [r3, #42] @ movhi 3093 017e 9AB2 uxth r2, r3 3094 .loc 1 2063 32 3095 0180 FB68 ldr r3, [r7, #12] 3096 0182 1B8D ldrh r3, [r3, #40] 3097 .loc 1 2063 25 3098 0184 D31A subs r3, r2, r3 3099 0186 9AB2 uxth r2, r3 3100 0188 FB68 ldr r3, [r7, #12] 3101 018a 5A85 strh r2, [r3, #42] @ movhi 2064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3102 .loc 1 2066 9 3103 018c FB68 ldr r3, [r7, #12] 3104 018e 0022 movs r2, #0 3105 0190 83F84020 strb r2, [r3, #64] 2067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 2072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 3106 .loc 1 2072 9 3107 0194 1021 movs r1, #16 3108 0196 F868 ldr r0, [r7, #12] 3109 0198 FFF7FEFF bl I2C_Enable_IRQ 2073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 3110 .loc 1 2075 13 3111 019c FB68 ldr r3, [r7, #12] 3112 019e 1B68 ldr r3, [r3] 3113 .loc 1 2075 29 3114 01a0 1A68 ldr r2, [r3] 3115 .loc 1 2075 13 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 92 3116 01a2 FB68 ldr r3, [r7, #12] 3117 01a4 1B68 ldr r3, [r3] 3118 .loc 1 2075 29 3119 01a6 42F48042 orr r2, r2, #16384 3120 01aa 1A60 str r2, [r3] 3121 01ac 28E0 b .L137 3122 .L136: 2076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3123 .loc 1 2080 25 3124 01ae FB68 ldr r3, [r7, #12] 3125 01b0 2022 movs r2, #32 3126 01b2 83F84120 strb r2, [r3, #65] 2081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3127 .loc 1 2081 25 3128 01b6 FB68 ldr r3, [r7, #12] 3129 01b8 0022 movs r2, #0 3130 01ba 83F84220 strb r2, [r3, #66] 2082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3131 .loc 1 2084 25 3132 01be FB68 ldr r3, [r7, #12] 3133 01c0 5B6C ldr r3, [r3, #68] 3134 01c2 43F01002 orr r2, r3, #16 3135 01c6 FB68 ldr r3, [r7, #12] 3136 01c8 5A64 str r2, [r3, #68] 2085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3137 .loc 1 2087 9 3138 01ca FB68 ldr r3, [r7, #12] 3139 01cc 0022 movs r2, #0 3140 01ce 83F84020 strb r2, [r3, #64] 2088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3141 .loc 1 2089 16 3142 01d2 0123 movs r3, #1 3143 01d4 17E0 b .L128 3144 .L133: 2090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 2095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 3145 .loc 1 2095 21 3146 01d6 FB68 ldr r3, [r7, #12] 3147 01d8 124A ldr r2, .L139+20 3148 01da 5A63 str r2, [r3, #52] 2096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ 2099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, I2C_AUTOEND_MODE, ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 93 3149 .loc 1 2099 7 3150 01dc BB69 ldr r3, [r7, #24] 3151 01de DAB2 uxtb r2, r3 3152 01e0 7989 ldrh r1, [r7, #10] 3153 01e2 0F4B ldr r3, .L139+16 3154 01e4 0093 str r3, [sp] 3155 01e6 4FF00073 mov r3, #33554432 3156 01ea F868 ldr r0, [r7, #12] 3157 01ec FFF7FEFF bl I2C_TransferConfig 2100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); 2101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3158 .loc 1 2103 7 3159 01f0 FB68 ldr r3, [r7, #12] 3160 01f2 0022 movs r2, #0 3161 01f4 83F84020 strb r2, [r3, #64] 2104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 3162 .loc 1 2112 7 3163 01f8 0121 movs r1, #1 3164 01fa F868 ldr r0, [r7, #12] 3165 01fc FFF7FEFF bl I2C_Enable_IRQ 3166 .L137: 2113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3167 .loc 1 2115 12 3168 0200 0023 movs r3, #0 3169 0202 00E0 b .L128 3170 .L126: 2116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3171 .loc 1 2119 12 3172 0204 0223 movs r3, #2 3173 .L128: 2120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3174 .loc 1 2121 1 3175 0206 1846 mov r0, r3 3176 0208 2037 adds r7, r7, #32 3177 .LCFI65: 3178 .cfi_def_cfa_offset 8 3179 020a BD46 mov sp, r7 3180 .LCFI66: 3181 .cfi_def_cfa_register 13 3182 @ sp needed 3183 020c 80BD pop {r7, pc} ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 94 3184 .L140: 3185 020e 00BF .align 2 3186 .L139: 3187 0210 0000FFFF .word -65536 3188 0214 00000000 .word I2C_Master_ISR_DMA 3189 0218 00000000 .word I2C_DMAMasterTransmitCplt 3190 021c 00000000 .word I2C_DMAError 3191 0220 00200080 .word -2147475456 3192 0224 00000000 .word I2C_Master_ISR_IT 3193 .cfi_endproc 3194 .LFE142: 3196 .section .text.HAL_I2C_Master_Receive_DMA,"ax",%progbits 3197 .align 1 3198 .global HAL_I2C_Master_Receive_DMA 3199 .syntax unified 3200 .thumb 3201 .thumb_func 3203 HAL_I2C_Master_Receive_DMA: 3204 .LFB143: 2122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with DMA 2125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t 2134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size) 2135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3205 .loc 1 2135 1 3206 .cfi_startproc 3207 @ args = 0, pretend = 0, frame = 24 3208 @ frame_needed = 1, uses_anonymous_args = 0 3209 0000 80B5 push {r7, lr} 3210 .LCFI67: 3211 .cfi_def_cfa_offset 8 3212 .cfi_offset 7, -8 3213 .cfi_offset 14, -4 3214 0002 88B0 sub sp, sp, #32 3215 .LCFI68: 3216 .cfi_def_cfa_offset 40 3217 0004 02AF add r7, sp, #8 3218 .LCFI69: 3219 .cfi_def_cfa 7, 32 3220 0006 F860 str r0, [r7, #12] 3221 0008 7A60 str r2, [r7, #4] 3222 000a 1A46 mov r2, r3 3223 000c 0B46 mov r3, r1 @ movhi 3224 000e 7B81 strh r3, [r7, #10] @ movhi 3225 0010 1346 mov r3, r2 @ movhi 3226 0012 3B81 strh r3, [r7, #8] @ movhi 2136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 2137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 95 2138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3227 .loc 1 2139 11 3228 0014 FB68 ldr r3, [r7, #12] 3229 0016 93F84130 ldrb r3, [r3, #65] 3230 001a DBB2 uxtb r3, r3 3231 .loc 1 2139 6 3232 001c 202B cmp r3, #32 3233 001e 40F0CD80 bne .L142 2140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 3234 .loc 1 2141 9 3235 0022 FB68 ldr r3, [r7, #12] 3236 0024 1B68 ldr r3, [r3] 3237 0026 9B69 ldr r3, [r3, #24] 3238 0028 03F40043 and r3, r3, #32768 3239 .loc 1 2141 8 3240 002c B3F5004F cmp r3, #32768 3241 0030 01D1 bne .L143 2142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3242 .loc 1 2143 14 3243 0032 0223 movs r3, #2 3244 0034 C3E0 b .L144 3245 .L143: 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 **** /* Process Locked */ 2147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3246 .loc 1 2147 5 3247 0036 FB68 ldr r3, [r7, #12] 3248 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3249 003c 012B cmp r3, #1 3250 003e 01D1 bne .L145 3251 .loc 1 2147 5 is_stmt 0 discriminator 1 3252 0040 0223 movs r3, #2 3253 0042 BCE0 b .L144 3254 .L145: 3255 .loc 1 2147 5 discriminator 2 3256 0044 FB68 ldr r3, [r7, #12] 3257 0046 0122 movs r2, #1 3258 0048 83F84020 strb r2, [r3, #64] 2148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 3259 .loc 1 2149 23 is_stmt 1 discriminator 2 3260 004c FB68 ldr r3, [r7, #12] 3261 004e 2222 movs r2, #34 3262 0050 83F84120 strb r2, [r3, #65] 2150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 3263 .loc 1 2150 23 discriminator 2 3264 0054 FB68 ldr r3, [r7, #12] 3265 0056 1022 movs r2, #16 3266 0058 83F84220 strb r2, [r3, #66] 2151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 3267 .loc 1 2151 23 discriminator 2 3268 005c FB68 ldr r3, [r7, #12] 3269 005e 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 96 3270 0060 5A64 str r2, [r3, #68] 2152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3271 .loc 1 2154 23 discriminator 2 3272 0062 FB68 ldr r3, [r7, #12] 3273 0064 7A68 ldr r2, [r7, #4] 3274 0066 5A62 str r2, [r3, #36] 2155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3275 .loc 1 2155 23 discriminator 2 3276 0068 FB68 ldr r3, [r7, #12] 3277 006a 3A89 ldrh r2, [r7, #8] @ movhi 3278 006c 5A85 strh r2, [r3, #42] @ movhi 2156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 3279 .loc 1 2156 23 discriminator 2 3280 006e FB68 ldr r3, [r7, #12] 3281 0070 554A ldr r2, .L154 3282 0072 DA62 str r2, [r3, #44] 2157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 3283 .loc 1 2157 23 discriminator 2 3284 0074 FB68 ldr r3, [r7, #12] 3285 0076 554A ldr r2, .L154+4 3286 0078 5A63 str r2, [r3, #52] 2158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 3287 .loc 1 2159 13 discriminator 2 3288 007a FB68 ldr r3, [r7, #12] 3289 007c 5B8D ldrh r3, [r3, #42] @ movhi 3290 007e 9BB2 uxth r3, r3 3291 .loc 1 2159 8 discriminator 2 3292 0080 FF2B cmp r3, #255 3293 0082 06D9 bls .L146 2160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 3294 .loc 1 2161 22 3295 0084 FB68 ldr r3, [r7, #12] 3296 0086 0122 movs r2, #1 3297 0088 1A85 strh r2, [r3, #40] @ movhi 2162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 3298 .loc 1 2162 16 3299 008a 4FF08073 mov r3, #16777216 3300 008e 7B61 str r3, [r7, #20] 3301 0090 07E0 b .L147 3302 .L146: 2163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3303 .loc 1 2166 28 3304 0092 FB68 ldr r3, [r7, #12] 3305 0094 5B8D ldrh r3, [r3, #42] @ movhi 3306 0096 9AB2 uxth r2, r3 3307 .loc 1 2166 22 3308 0098 FB68 ldr r3, [r7, #12] 3309 009a 1A85 strh r2, [r3, #40] @ movhi 2167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 3310 .loc 1 2167 16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 97 3311 009c 4FF00073 mov r3, #33554432 3312 00a0 7B61 str r3, [r7, #20] 3313 .L147: 2168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 3314 .loc 1 2170 13 3315 00a2 FB68 ldr r3, [r7, #12] 3316 00a4 1B8D ldrh r3, [r3, #40] 3317 .loc 1 2170 8 3318 00a6 002B cmp r3, #0 3319 00a8 70D0 beq .L148 2171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 3320 .loc 1 2172 15 3321 00aa FB68 ldr r3, [r7, #12] 3322 00ac DB6B ldr r3, [r3, #60] 3323 .loc 1 2172 10 3324 00ae 002B cmp r3, #0 3325 00b0 20D0 beq .L149 2173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 3326 .loc 1 2175 13 3327 00b2 FB68 ldr r3, [r7, #12] 3328 00b4 DB6B ldr r3, [r3, #60] 3329 .loc 1 2175 40 3330 00b6 464A ldr r2, .L154+8 3331 00b8 9A62 str r2, [r3, #40] 2176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 3332 .loc 1 2178 13 3333 00ba FB68 ldr r3, [r7, #12] 3334 00bc DB6B ldr r3, [r3, #60] 3335 .loc 1 2178 41 3336 00be 454A ldr r2, .L154+12 3337 00c0 1A63 str r2, [r3, #48] 2179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 3338 .loc 1 2181 13 3339 00c2 FB68 ldr r3, [r7, #12] 3340 00c4 DB6B ldr r3, [r3, #60] 3341 .loc 1 2181 44 3342 00c6 0022 movs r2, #0 3343 00c8 DA62 str r2, [r3, #44] 2182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 3344 .loc 1 2182 13 3345 00ca FB68 ldr r3, [r7, #12] 3346 00cc DB6B ldr r3, [r3, #60] 3347 .loc 1 2182 41 3348 00ce 0022 movs r2, #0 3349 00d0 5A63 str r2, [r3, #52] 2183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 98 3350 .loc 1 2185 25 3351 00d2 FB68 ldr r3, [r7, #12] 3352 00d4 D86B ldr r0, [r3, #60] 3353 .loc 1 2185 71 3354 00d6 FB68 ldr r3, [r7, #12] 3355 00d8 1B68 ldr r3, [r3] 3356 .loc 1 2185 66 3357 00da 2433 adds r3, r3, #36 3358 .loc 1 2185 25 3359 00dc 1946 mov r1, r3 3360 00de 7A68 ldr r2, [r7, #4] 2186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3361 .loc 1 2186 46 3362 00e0 FB68 ldr r3, [r7, #12] 3363 00e2 1B8D ldrh r3, [r3, #40] 2185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3364 .loc 1 2185 25 3365 00e4 FFF7FEFF bl HAL_DMA_Start_IT 3366 00e8 0346 mov r3, r0 3367 00ea FB74 strb r3, [r7, #19] 2187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 2192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3368 .loc 1 2203 10 3369 00ec FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 3370 00ee 002B cmp r3, #0 3371 00f0 38D1 bne .L151 3372 00f2 13E0 b .L153 3373 .L149: 2191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3374 .loc 1 2191 25 3375 00f4 FB68 ldr r3, [r7, #12] 3376 00f6 2022 movs r2, #32 3377 00f8 83F84120 strb r2, [r3, #65] 2192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3378 .loc 1 2192 25 3379 00fc FB68 ldr r3, [r7, #12] 3380 00fe 0022 movs r2, #0 3381 0100 83F84220 strb r2, [r3, #66] 2195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3382 .loc 1 2195 25 3383 0104 FB68 ldr r3, [r7, #12] 3384 0106 5B6C ldr r3, [r3, #68] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 99 3385 0108 43F08002 orr r2, r3, #128 3386 010c FB68 ldr r3, [r7, #12] 3387 010e 5A64 str r2, [r3, #68] 2198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3388 .loc 1 2198 9 3389 0110 FB68 ldr r3, [r7, #12] 3390 0112 0022 movs r2, #0 3391 0114 83F84020 strb r2, [r3, #64] 2200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3392 .loc 1 2200 16 3393 0118 0123 movs r3, #1 3394 011a 50E0 b .L144 3395 .L153: 2204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART * 2207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_ 3396 .loc 1 2207 59 3397 011c FB68 ldr r3, [r7, #12] 3398 011e 1B8D ldrh r3, [r3, #40] 3399 .loc 1 2207 9 3400 0120 DAB2 uxtb r2, r3 3401 0122 7989 ldrh r1, [r7, #10] 3402 0124 2C4B ldr r3, .L154+16 3403 0126 0093 str r3, [sp] 3404 0128 7B69 ldr r3, [r7, #20] 3405 012a F868 ldr r0, [r7, #12] 3406 012c FFF7FEFF bl I2C_TransferConfig 2208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 2210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 3407 .loc 1 2210 25 3408 0130 FB68 ldr r3, [r7, #12] 3409 0132 5B8D ldrh r3, [r3, #42] @ movhi 3410 0134 9AB2 uxth r2, r3 3411 .loc 1 2210 32 3412 0136 FB68 ldr r3, [r7, #12] 3413 0138 1B8D ldrh r3, [r3, #40] 3414 .loc 1 2210 25 3415 013a D31A subs r3, r2, r3 3416 013c 9AB2 uxth r2, r3 3417 013e FB68 ldr r3, [r7, #12] 3418 0140 5A85 strh r2, [r3, #42] @ movhi 2211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3419 .loc 1 2213 9 3420 0142 FB68 ldr r3, [r7, #12] 3421 0144 0022 movs r2, #0 3422 0146 83F84020 strb r2, [r3, #64] 2214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 2219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 3423 .loc 1 2219 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 100 3424 014a 1021 movs r1, #16 3425 014c F868 ldr r0, [r7, #12] 3426 014e FFF7FEFF bl I2C_Enable_IRQ 2220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 3427 .loc 1 2222 13 3428 0152 FB68 ldr r3, [r7, #12] 3429 0154 1B68 ldr r3, [r3] 3430 .loc 1 2222 29 3431 0156 1A68 ldr r2, [r3] 3432 .loc 1 2222 13 3433 0158 FB68 ldr r3, [r7, #12] 3434 015a 1B68 ldr r3, [r3] 3435 .loc 1 2222 29 3436 015c 42F40042 orr r2, r2, #32768 3437 0160 1A60 str r2, [r3] 3438 0162 29E0 b .L152 3439 .L151: 2223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3440 .loc 1 2227 25 3441 0164 FB68 ldr r3, [r7, #12] 3442 0166 2022 movs r2, #32 3443 0168 83F84120 strb r2, [r3, #65] 2228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3444 .loc 1 2228 25 3445 016c FB68 ldr r3, [r7, #12] 3446 016e 0022 movs r2, #0 3447 0170 83F84220 strb r2, [r3, #66] 2229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3448 .loc 1 2231 25 3449 0174 FB68 ldr r3, [r7, #12] 3450 0176 5B6C ldr r3, [r3, #68] 3451 0178 43F01002 orr r2, r3, #16 3452 017c FB68 ldr r3, [r7, #12] 3453 017e 5A64 str r2, [r3, #68] 2232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3454 .loc 1 2234 9 3455 0180 FB68 ldr r3, [r7, #12] 3456 0182 0022 movs r2, #0 3457 0184 83F84020 strb r2, [r3, #64] 2235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3458 .loc 1 2236 16 3459 0188 0123 movs r3, #1 3460 018a 18E0 b .L144 3461 .L148: 2237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 101 2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 2242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 3462 .loc 1 2242 21 3463 018c FB68 ldr r3, [r7, #12] 3464 018e 134A ldr r2, .L154+20 3465 0190 5A63 str r2, [r3, #52] 2243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ 2246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 3466 .loc 1 2246 57 3467 0192 FB68 ldr r3, [r7, #12] 3468 0194 1B8D ldrh r3, [r3, #40] 3469 .loc 1 2246 7 3470 0196 DAB2 uxtb r2, r3 3471 0198 7989 ldrh r1, [r7, #10] 3472 019a 0F4B ldr r3, .L154+16 3473 019c 0093 str r3, [sp] 3474 019e 4FF00073 mov r3, #33554432 3475 01a2 F868 ldr r0, [r7, #12] 3476 01a4 FFF7FEFF bl I2C_TransferConfig 2247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3477 .loc 1 2250 7 3478 01a8 FB68 ldr r3, [r7, #12] 3479 01aa 0022 movs r2, #0 3480 01ac 83F84020 strb r2, [r3, #64] 2251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 2256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 3481 .loc 1 2259 7 3482 01b0 0221 movs r1, #2 3483 01b2 F868 ldr r0, [r7, #12] 3484 01b4 FFF7FEFF bl I2C_Enable_IRQ 3485 .L152: 2260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3486 .loc 1 2262 12 3487 01b8 0023 movs r3, #0 3488 01ba 00E0 b .L144 3489 .L142: 2263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3490 .loc 1 2266 12 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 102 3491 01bc 0223 movs r3, #2 3492 .L144: 2267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3493 .loc 1 2268 1 3494 01be 1846 mov r0, r3 3495 01c0 1837 adds r7, r7, #24 3496 .LCFI70: 3497 .cfi_def_cfa_offset 8 3498 01c2 BD46 mov sp, r7 3499 .LCFI71: 3500 .cfi_def_cfa_register 13 3501 @ sp needed 3502 01c4 80BD pop {r7, pc} 3503 .L155: 3504 01c6 00BF .align 2 3505 .L154: 3506 01c8 0000FFFF .word -65536 3507 01cc 00000000 .word I2C_Master_ISR_DMA 3508 01d0 00000000 .word I2C_DMAMasterReceiveCplt 3509 01d4 00000000 .word I2C_DMAError 3510 01d8 00240080 .word -2147474432 3511 01dc 00000000 .word I2C_Master_ISR_IT 3512 .cfi_endproc 3513 .LFE143: 3515 .section .text.HAL_I2C_Slave_Transmit_DMA,"ax",%progbits 3516 .align 1 3517 .global HAL_I2C_Slave_Transmit_DMA 3518 .syntax unified 3519 .thumb 3520 .thumb_func 3522 HAL_I2C_Slave_Transmit_DMA: 3523 .LFB144: 2269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA 2272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2278: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 2279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3524 .loc 1 2279 1 3525 .cfi_startproc 3526 @ args = 0, pretend = 0, frame = 24 3527 @ frame_needed = 1, uses_anonymous_args = 0 3528 0000 80B5 push {r7, lr} 3529 .LCFI72: 3530 .cfi_def_cfa_offset 8 3531 .cfi_offset 7, -8 3532 .cfi_offset 14, -4 3533 0002 86B0 sub sp, sp, #24 3534 .LCFI73: 3535 .cfi_def_cfa_offset 32 3536 0004 00AF add r7, sp, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 103 3537 .LCFI74: 3538 .cfi_def_cfa_register 7 3539 0006 F860 str r0, [r7, #12] 3540 0008 B960 str r1, [r7, #8] 3541 000a 1346 mov r3, r2 3542 000c FB80 strh r3, [r7, #6] @ movhi 2280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3543 .loc 1 2282 11 3544 000e FB68 ldr r3, [r7, #12] 3545 0010 93F84130 ldrb r3, [r3, #65] 3546 0014 DBB2 uxtb r3, r3 3547 .loc 1 2282 6 3548 0016 202B cmp r3, #32 3549 0018 40F0D180 bne .L157 2283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 3550 .loc 1 2284 8 3551 001c BB68 ldr r3, [r7, #8] 3552 001e 002B cmp r3, #0 3553 0020 02D0 beq .L158 3554 .loc 1 2284 25 discriminator 1 3555 0022 FB88 ldrh r3, [r7, #6] 3556 0024 002B cmp r3, #0 3557 0026 05D1 bne .L159 3558 .L158: 2285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 3559 .loc 1 2286 23 3560 0028 FB68 ldr r3, [r7, #12] 3561 002a 4FF40072 mov r2, #512 3562 002e 5A64 str r2, [r3, #68] 2287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3563 .loc 1 2287 15 3564 0030 0123 movs r3, #1 3565 0032 C5E0 b .L160 3566 .L159: 2288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3567 .loc 1 2290 5 3568 0034 FB68 ldr r3, [r7, #12] 3569 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3570 003a 012B cmp r3, #1 3571 003c 01D1 bne .L161 3572 .loc 1 2290 5 is_stmt 0 discriminator 1 3573 003e 0223 movs r3, #2 3574 0040 BEE0 b .L160 3575 .L161: 3576 .loc 1 2290 5 discriminator 2 3577 0042 FB68 ldr r3, [r7, #12] 3578 0044 0122 movs r2, #1 3579 0046 83F84020 strb r2, [r3, #64] 2291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 3580 .loc 1 2292 23 is_stmt 1 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 104 3581 004a FB68 ldr r3, [r7, #12] 3582 004c 2122 movs r2, #33 3583 004e 83F84120 strb r2, [r3, #65] 2293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 3584 .loc 1 2293 23 discriminator 2 3585 0052 FB68 ldr r3, [r7, #12] 3586 0054 2022 movs r2, #32 3587 0056 83F84220 strb r2, [r3, #66] 2294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 3588 .loc 1 2294 23 discriminator 2 3589 005a FB68 ldr r3, [r7, #12] 3590 005c 0022 movs r2, #0 3591 005e 5A64 str r2, [r3, #68] 2295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3592 .loc 1 2297 23 discriminator 2 3593 0060 FB68 ldr r3, [r7, #12] 3594 0062 BA68 ldr r2, [r7, #8] 3595 0064 5A62 str r2, [r3, #36] 2298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3596 .loc 1 2298 23 discriminator 2 3597 0066 FB68 ldr r3, [r7, #12] 3598 0068 FA88 ldrh r2, [r7, #6] @ movhi 3599 006a 5A85 strh r2, [r3, #42] @ movhi 2299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3600 .loc 1 2299 29 discriminator 2 3601 006c FB68 ldr r3, [r7, #12] 3602 006e 5B8D ldrh r3, [r3, #42] @ movhi 3603 0070 9AB2 uxth r2, r3 3604 .loc 1 2299 23 discriminator 2 3605 0072 FB68 ldr r3, [r7, #12] 3606 0074 1A85 strh r2, [r3, #40] @ movhi 2300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 3607 .loc 1 2300 23 discriminator 2 3608 0076 FB68 ldr r3, [r7, #12] 3609 0078 534A ldr r2, .L169 3610 007a DA62 str r2, [r3, #44] 2301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 3611 .loc 1 2301 23 discriminator 2 3612 007c FB68 ldr r3, [r7, #12] 3613 007e 534A ldr r2, .L169+4 3614 0080 5A63 str r2, [r3, #52] 2302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ 2304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) 3615 .loc 1 2304 19 discriminator 2 3616 0082 FB68 ldr r3, [r7, #12] 3617 0084 1B6A ldr r3, [r3, #32] 3618 .loc 1 2304 8 discriminator 2 3619 0086 B3F5003F cmp r3, #131072 3620 008a 17D1 bne .L162 2305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 2307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 2308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 3621 .loc 1 2308 35 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 105 3622 008c FB68 ldr r3, [r7, #12] 3623 008e 5B6A ldr r3, [r3, #36] 3624 .loc 1 2308 30 3625 0090 1A78 ldrb r2, [r3] @ zero_extendqisi2 3626 .loc 1 2308 11 3627 0092 FB68 ldr r3, [r7, #12] 3628 0094 1B68 ldr r3, [r3] 3629 .loc 1 2308 28 3630 0096 9A62 str r2, [r3, #40] 2309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 3631 .loc 1 2311 11 3632 0098 FB68 ldr r3, [r7, #12] 3633 009a 5B6A ldr r3, [r3, #36] 3634 .loc 1 2311 21 3635 009c 5A1C adds r2, r3, #1 3636 009e FB68 ldr r3, [r7, #12] 3637 00a0 5A62 str r2, [r3, #36] 2312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 3638 .loc 1 2313 11 3639 00a2 FB68 ldr r3, [r7, #12] 3640 00a4 5B8D ldrh r3, [r3, #42] @ movhi 3641 00a6 9BB2 uxth r3, r3 3642 .loc 1 2313 22 3643 00a8 013B subs r3, r3, #1 3644 00aa 9AB2 uxth r2, r3 3645 00ac FB68 ldr r3, [r7, #12] 3646 00ae 5A85 strh r2, [r3, #42] @ movhi 2314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 3647 .loc 1 2314 11 3648 00b0 FB68 ldr r3, [r7, #12] 3649 00b2 1B8D ldrh r3, [r3, #40] 3650 .loc 1 2314 21 3651 00b4 013B subs r3, r3, #1 3652 00b6 9AB2 uxth r2, r3 3653 00b8 FB68 ldr r3, [r7, #12] 3654 00ba 1A85 strh r2, [r3, #40] @ movhi 3655 .L162: 2315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 3656 .loc 1 2317 13 3657 00bc FB68 ldr r3, [r7, #12] 3658 00be 5B8D ldrh r3, [r3, #42] @ movhi 3659 00c0 9BB2 uxth r3, r3 3660 .loc 1 2317 8 3661 00c2 002B cmp r3, #0 3662 00c4 68D0 beq .L163 2318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 3663 .loc 1 2319 15 3664 00c6 FB68 ldr r3, [r7, #12] 3665 00c8 9B6B ldr r3, [r3, #56] 3666 .loc 1 2319 10 3667 00ca 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 106 3668 00cc 22D0 beq .L164 2320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; 3669 .loc 1 2322 13 3670 00ce FB68 ldr r3, [r7, #12] 3671 00d0 9B6B ldr r3, [r3, #56] 3672 .loc 1 2322 40 3673 00d2 3F4A ldr r2, .L169+8 3674 00d4 9A62 str r2, [r3, #40] 2323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 3675 .loc 1 2325 13 3676 00d6 FB68 ldr r3, [r7, #12] 3677 00d8 9B6B ldr r3, [r3, #56] 3678 .loc 1 2325 41 3679 00da 3E4A ldr r2, .L169+12 3680 00dc 1A63 str r2, [r3, #48] 2326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 3681 .loc 1 2328 13 3682 00de FB68 ldr r3, [r7, #12] 3683 00e0 9B6B ldr r3, [r3, #56] 3684 .loc 1 2328 44 3685 00e2 0022 movs r2, #0 3686 00e4 DA62 str r2, [r3, #44] 2329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 3687 .loc 1 2329 13 3688 00e6 FB68 ldr r3, [r7, #12] 3689 00e8 9B6B ldr r3, [r3, #56] 3690 .loc 1 2329 41 3691 00ea 0022 movs r2, #0 3692 00ec 5A63 str r2, [r3, #52] 2330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, 3693 .loc 1 2332 25 3694 00ee FB68 ldr r3, [r7, #12] 3695 00f0 986B ldr r0, [r3, #56] 2333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3696 .loc 1 2333 56 3697 00f2 FB68 ldr r3, [r7, #12] 3698 00f4 5B6A ldr r3, [r3, #36] 2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3699 .loc 1 2332 25 3700 00f6 1946 mov r1, r3 3701 .loc 1 2333 83 3702 00f8 FB68 ldr r3, [r7, #12] 3703 00fa 1B68 ldr r3, [r3] 3704 .loc 1 2333 78 3705 00fc 2833 adds r3, r3, #40 2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3706 .loc 1 2332 25 3707 00fe 1A46 mov r2, r3 2334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 107 3708 .loc 1 2334 46 3709 0100 FB68 ldr r3, [r7, #12] 3710 0102 1B8D ldrh r3, [r3, #40] 2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, 3711 .loc 1 2332 25 3712 0104 FFF7FEFF bl HAL_DMA_Start_IT 3713 0108 0346 mov r3, r0 3714 010a FB75 strb r3, [r7, #23] 2335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3715 .loc 1 2351 10 3716 010c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 3717 010e 002B cmp r3, #0 3718 0110 2ED1 bne .L166 3719 0112 13E0 b .L168 3720 .L164: 2339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3721 .loc 1 2339 25 3722 0114 FB68 ldr r3, [r7, #12] 3723 0116 2822 movs r2, #40 3724 0118 83F84120 strb r2, [r3, #65] 2340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3725 .loc 1 2340 25 3726 011c FB68 ldr r3, [r7, #12] 3727 011e 0022 movs r2, #0 3728 0120 83F84220 strb r2, [r3, #66] 2343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3729 .loc 1 2343 25 3730 0124 FB68 ldr r3, [r7, #12] 3731 0126 5B6C ldr r3, [r3, #68] 3732 0128 43F08002 orr r2, r3, #128 3733 012c FB68 ldr r3, [r7, #12] 3734 012e 5A64 str r2, [r3, #68] 2346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3735 .loc 1 2346 9 3736 0130 FB68 ldr r3, [r7, #12] 3737 0132 0022 movs r2, #0 3738 0134 83F84020 strb r2, [r3, #64] 2348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3739 .loc 1 2348 16 3740 0138 0123 movs r3, #1 3741 013a 41E0 b .L160 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 108 3742 .L168: 2352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 3743 .loc 1 2354 13 3744 013c FB68 ldr r3, [r7, #12] 3745 013e 1B68 ldr r3, [r3] 3746 .loc 1 2354 29 3747 0140 5A68 ldr r2, [r3, #4] 3748 .loc 1 2354 13 3749 0142 FB68 ldr r3, [r7, #12] 3750 0144 1B68 ldr r3, [r3] 3751 .loc 1 2354 29 3752 0146 22F40042 bic r2, r2, #32768 3753 014a 5A60 str r2, [r3, #4] 2355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3754 .loc 1 2357 9 3755 014c FB68 ldr r3, [r7, #12] 3756 014e 0022 movs r2, #0 3757 0150 83F84020 strb r2, [r3, #64] 2358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 3758 .loc 1 2363 9 3759 0154 4FF40041 mov r1, #32768 3760 0158 F868 ldr r0, [r7, #12] 3761 015a FFF7FEFF bl I2C_Enable_IRQ 2364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 3762 .loc 1 2366 13 3763 015e FB68 ldr r3, [r7, #12] 3764 0160 1B68 ldr r3, [r3] 3765 .loc 1 2366 29 3766 0162 1A68 ldr r2, [r3] 3767 .loc 1 2366 13 3768 0164 FB68 ldr r3, [r7, #12] 3769 0166 1B68 ldr r3, [r3] 3770 .loc 1 2366 29 3771 0168 42F48042 orr r2, r2, #16384 3772 016c 1A60 str r2, [r3] 3773 016e 24E0 b .L167 3774 .L166: 2367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 3775 .loc 1 2371 25 3776 0170 FB68 ldr r3, [r7, #12] 3777 0172 2822 movs r2, #40 3778 0174 83F84120 strb r2, [r3, #65] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 109 2372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3779 .loc 1 2372 25 3780 0178 FB68 ldr r3, [r7, #12] 3781 017a 0022 movs r2, #0 3782 017c 83F84220 strb r2, [r3, #66] 2373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3783 .loc 1 2375 25 3784 0180 FB68 ldr r3, [r7, #12] 3785 0182 5B6C ldr r3, [r3, #68] 3786 0184 43F01002 orr r2, r3, #16 3787 0188 FB68 ldr r3, [r7, #12] 3788 018a 5A64 str r2, [r3, #68] 2376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3789 .loc 1 2378 9 3790 018c FB68 ldr r3, [r7, #12] 3791 018e 0022 movs r2, #0 3792 0190 83F84020 strb r2, [r3, #64] 2379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3793 .loc 1 2380 16 3794 0194 0123 movs r3, #1 3795 0196 13E0 b .L160 3796 .L163: 2381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 3797 .loc 1 2386 11 3798 0198 FB68 ldr r3, [r7, #12] 3799 019a 1B68 ldr r3, [r3] 3800 .loc 1 2386 27 3801 019c 5A68 ldr r2, [r3, #4] 3802 .loc 1 2386 11 3803 019e FB68 ldr r3, [r7, #12] 3804 01a0 1B68 ldr r3, [r3] 3805 .loc 1 2386 27 3806 01a2 22F40042 bic r2, r2, #32768 3807 01a6 5A60 str r2, [r3, #4] 2387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3808 .loc 1 2389 7 3809 01a8 FB68 ldr r3, [r7, #12] 3810 01aa 0022 movs r2, #0 3811 01ac 83F84020 strb r2, [r3, #64] 2390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 110 3812 .loc 1 2395 7 3813 01b0 4FF40041 mov r1, #32768 3814 01b4 F868 ldr r0, [r7, #12] 3815 01b6 FFF7FEFF bl I2C_Enable_IRQ 3816 .L167: 2396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 3817 .loc 1 2398 12 3818 01ba 0023 movs r3, #0 3819 01bc 00E0 b .L160 3820 .L157: 2399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 3821 .loc 1 2402 12 3822 01be 0223 movs r3, #2 3823 .L160: 2403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3824 .loc 1 2404 1 3825 01c0 1846 mov r0, r3 3826 01c2 1837 adds r7, r7, #24 3827 .LCFI75: 3828 .cfi_def_cfa_offset 8 3829 01c4 BD46 mov sp, r7 3830 .LCFI76: 3831 .cfi_def_cfa_register 13 3832 @ sp needed 3833 01c6 80BD pop {r7, pc} 3834 .L170: 3835 .align 2 3836 .L169: 3837 01c8 0000FFFF .word -65536 3838 01cc 00000000 .word I2C_Slave_ISR_DMA 3839 01d0 00000000 .word I2C_DMASlaveTransmitCplt 3840 01d4 00000000 .word I2C_DMAError 3841 .cfi_endproc 3842 .LFE144: 3844 .section .text.HAL_I2C_Slave_Receive_DMA,"ax",%progbits 3845 .align 1 3846 .global HAL_I2C_Slave_Receive_DMA 3847 .syntax unified 3848 .thumb 3849 .thumb_func 3851 HAL_I2C_Slave_Receive_DMA: 3852 .LFB145: 2405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with DMA 2408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 111 2414: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) 2415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3853 .loc 1 2415 1 3854 .cfi_startproc 3855 @ args = 0, pretend = 0, frame = 24 3856 @ frame_needed = 1, uses_anonymous_args = 0 3857 0000 80B5 push {r7, lr} 3858 .LCFI77: 3859 .cfi_def_cfa_offset 8 3860 .cfi_offset 7, -8 3861 .cfi_offset 14, -4 3862 0002 86B0 sub sp, sp, #24 3863 .LCFI78: 3864 .cfi_def_cfa_offset 32 3865 0004 00AF add r7, sp, #0 3866 .LCFI79: 3867 .cfi_def_cfa_register 7 3868 0006 F860 str r0, [r7, #12] 3869 0008 B960 str r1, [r7, #8] 3870 000a 1346 mov r3, r2 3871 000c FB80 strh r3, [r7, #6] @ movhi 2416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 3872 .loc 1 2418 11 3873 000e FB68 ldr r3, [r7, #12] 3874 0010 93F84130 ldrb r3, [r3, #65] 3875 0014 DBB2 uxtb r3, r3 3876 .loc 1 2418 6 3877 0016 202B cmp r3, #32 3878 0018 40F09B80 bne .L172 2419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 3879 .loc 1 2420 8 3880 001c BB68 ldr r3, [r7, #8] 3881 001e 002B cmp r3, #0 3882 0020 02D0 beq .L173 3883 .loc 1 2420 25 discriminator 1 3884 0022 FB88 ldrh r3, [r7, #6] 3885 0024 002B cmp r3, #0 3886 0026 05D1 bne .L174 3887 .L173: 2421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 3888 .loc 1 2422 23 3889 0028 FB68 ldr r3, [r7, #12] 3890 002a 4FF40072 mov r2, #512 3891 002e 5A64 str r2, [r3, #68] 2423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3892 .loc 1 2423 15 3893 0030 0123 movs r3, #1 3894 0032 8FE0 b .L175 3895 .L174: 2424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 3896 .loc 1 2426 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 112 3897 0034 FB68 ldr r3, [r7, #12] 3898 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 3899 003a 012B cmp r3, #1 3900 003c 01D1 bne .L176 3901 .loc 1 2426 5 is_stmt 0 discriminator 1 3902 003e 0223 movs r3, #2 3903 0040 88E0 b .L175 3904 .L176: 3905 .loc 1 2426 5 discriminator 2 3906 0042 FB68 ldr r3, [r7, #12] 3907 0044 0122 movs r2, #1 3908 0046 83F84020 strb r2, [r3, #64] 2427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 3909 .loc 1 2428 23 is_stmt 1 discriminator 2 3910 004a FB68 ldr r3, [r7, #12] 3911 004c 2222 movs r2, #34 3912 004e 83F84120 strb r2, [r3, #65] 2429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 3913 .loc 1 2429 23 discriminator 2 3914 0052 FB68 ldr r3, [r7, #12] 3915 0054 2022 movs r2, #32 3916 0056 83F84220 strb r2, [r3, #66] 2430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 3917 .loc 1 2430 23 discriminator 2 3918 005a FB68 ldr r3, [r7, #12] 3919 005c 0022 movs r2, #0 3920 005e 5A64 str r2, [r3, #68] 2431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 3921 .loc 1 2433 23 discriminator 2 3922 0060 FB68 ldr r3, [r7, #12] 3923 0062 BA68 ldr r2, [r7, #8] 3924 0064 5A62 str r2, [r3, #36] 2434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 3925 .loc 1 2434 23 discriminator 2 3926 0066 FB68 ldr r3, [r7, #12] 3927 0068 FA88 ldrh r2, [r7, #6] @ movhi 3928 006a 5A85 strh r2, [r3, #42] @ movhi 2435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 3929 .loc 1 2435 29 discriminator 2 3930 006c FB68 ldr r3, [r7, #12] 3931 006e 5B8D ldrh r3, [r3, #42] @ movhi 3932 0070 9AB2 uxth r2, r3 3933 .loc 1 2435 23 discriminator 2 3934 0072 FB68 ldr r3, [r7, #12] 3935 0074 1A85 strh r2, [r3, #40] @ movhi 2436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 3936 .loc 1 2436 23 discriminator 2 3937 0076 FB68 ldr r3, [r7, #12] 3938 0078 384A ldr r2, .L182 3939 007a DA62 str r2, [r3, #44] 2437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 3940 .loc 1 2437 23 discriminator 2 3941 007c FB68 ldr r3, [r7, #12] 3942 007e 384A ldr r2, .L182+4 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 113 3943 0080 5A63 str r2, [r3, #52] 2438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 3944 .loc 1 2439 13 discriminator 2 3945 0082 FB68 ldr r3, [r7, #12] 3946 0084 DB6B ldr r3, [r3, #60] 3947 .loc 1 2439 8 discriminator 2 3948 0086 002B cmp r3, #0 3949 0088 20D0 beq .L177 2440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 2442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; 3950 .loc 1 2442 11 3951 008a FB68 ldr r3, [r7, #12] 3952 008c DB6B ldr r3, [r3, #60] 3953 .loc 1 2442 38 3954 008e 354A ldr r2, .L182+8 3955 0090 9A62 str r2, [r3, #40] 2443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 2445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 3956 .loc 1 2445 11 3957 0092 FB68 ldr r3, [r7, #12] 3958 0094 DB6B ldr r3, [r3, #60] 3959 .loc 1 2445 39 3960 0096 344A ldr r2, .L182+12 3961 0098 1A63 str r2, [r3, #48] 2446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 2448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 3962 .loc 1 2448 11 3963 009a FB68 ldr r3, [r7, #12] 3964 009c DB6B ldr r3, [r3, #60] 3965 .loc 1 2448 42 3966 009e 0022 movs r2, #0 3967 00a0 DA62 str r2, [r3, #44] 2449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 3968 .loc 1 2449 11 3969 00a2 FB68 ldr r3, [r7, #12] 3970 00a4 DB6B ldr r3, [r3, #60] 3971 .loc 1 2449 39 3972 00a6 0022 movs r2, #0 3973 00a8 5A63 str r2, [r3, #52] 2450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 2452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa 3974 .loc 1 2452 23 3975 00aa FB68 ldr r3, [r7, #12] 3976 00ac D86B ldr r0, [r3, #60] 3977 .loc 1 2452 69 3978 00ae FB68 ldr r3, [r7, #12] 3979 00b0 1B68 ldr r3, [r3] 3980 .loc 1 2452 64 3981 00b2 2433 adds r3, r3, #36 3982 .loc 1 2452 23 3983 00b4 1946 mov r1, r3 3984 00b6 BA68 ldr r2, [r7, #8] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 114 2453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3985 .loc 1 2453 44 3986 00b8 FB68 ldr r3, [r7, #12] 3987 00ba 1B8D ldrh r3, [r3, #40] 2452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 3988 .loc 1 2452 23 3989 00bc FFF7FEFF bl HAL_DMA_Start_IT 3990 00c0 0346 mov r3, r0 3991 00c2 FB75 strb r3, [r7, #23] 2454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 2463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 3992 .loc 1 2470 8 3993 00c4 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 3994 00c6 002B cmp r3, #0 3995 00c8 2FD1 bne .L179 3996 00ca 13E0 b .L181 3997 .L177: 2458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3998 .loc 1 2458 23 3999 00cc FB68 ldr r3, [r7, #12] 4000 00ce 2822 movs r2, #40 4001 00d0 83F84120 strb r2, [r3, #65] 2459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4002 .loc 1 2459 23 4003 00d4 FB68 ldr r3, [r7, #12] 4004 00d6 0022 movs r2, #0 4005 00d8 83F84220 strb r2, [r3, #66] 2462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4006 .loc 1 2462 23 4007 00dc FB68 ldr r3, [r7, #12] 4008 00de 5B6C ldr r3, [r3, #68] 4009 00e0 43F08002 orr r2, r3, #128 4010 00e4 FB68 ldr r3, [r7, #12] 4011 00e6 5A64 str r2, [r3, #68] 2465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4012 .loc 1 2465 7 4013 00e8 FB68 ldr r3, [r7, #12] 4014 00ea 0022 movs r2, #0 4015 00ec 83F84020 strb r2, [r3, #64] 2467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4016 .loc 1 2467 14 4017 00f0 0123 movs r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 115 4018 00f2 2FE0 b .L175 4019 .L181: 2471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 2473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 4020 .loc 1 2473 11 4021 00f4 FB68 ldr r3, [r7, #12] 4022 00f6 1B68 ldr r3, [r3] 4023 .loc 1 2473 27 4024 00f8 5A68 ldr r2, [r3, #4] 4025 .loc 1 2473 11 4026 00fa FB68 ldr r3, [r7, #12] 4027 00fc 1B68 ldr r3, [r3] 4028 .loc 1 2473 27 4029 00fe 22F40042 bic r2, r2, #32768 4030 0102 5A60 str r2, [r3, #4] 2474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4031 .loc 1 2476 7 4032 0104 FB68 ldr r3, [r7, #12] 4033 0106 0022 movs r2, #0 4034 0108 83F84020 strb r2, [r3, #64] 2477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 2482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 4035 .loc 1 2482 7 4036 010c 4FF40041 mov r1, #32768 4037 0110 F868 ldr r0, [r7, #12] 4038 0112 FFF7FEFF bl I2C_Enable_IRQ 2483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 2485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 4039 .loc 1 2485 11 4040 0116 FB68 ldr r3, [r7, #12] 4041 0118 1B68 ldr r3, [r3] 4042 .loc 1 2485 27 4043 011a 1A68 ldr r2, [r3] 4044 .loc 1 2485 11 4045 011c FB68 ldr r3, [r7, #12] 4046 011e 1B68 ldr r3, [r3] 4047 .loc 1 2485 27 4048 0120 42F40042 orr r2, r2, #32768 4049 0124 1A60 str r2, [r3] 2486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 2490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 2491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 2492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 2494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 2495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 116 2496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 2498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 2500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4050 .loc 1 2502 12 4051 0126 0023 movs r3, #0 4052 0128 14E0 b .L175 4053 .L179: 2490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4054 .loc 1 2490 23 4055 012a FB68 ldr r3, [r7, #12] 4056 012c 2822 movs r2, #40 4057 012e 83F84120 strb r2, [r3, #65] 2491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4058 .loc 1 2491 23 4059 0132 FB68 ldr r3, [r7, #12] 4060 0134 0022 movs r2, #0 4061 0136 83F84220 strb r2, [r3, #66] 2494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4062 .loc 1 2494 23 4063 013a FB68 ldr r3, [r7, #12] 4064 013c 5B6C ldr r3, [r3, #68] 4065 013e 43F01002 orr r2, r3, #16 4066 0142 FB68 ldr r3, [r7, #12] 4067 0144 5A64 str r2, [r3, #68] 2497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4068 .loc 1 2497 7 4069 0146 FB68 ldr r3, [r7, #12] 4070 0148 0022 movs r2, #0 4071 014a 83F84020 strb r2, [r3, #64] 2499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4072 .loc 1 2499 14 4073 014e 0123 movs r3, #1 4074 0150 00E0 b .L175 4075 .L172: 2503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4076 .loc 1 2506 12 4077 0152 0223 movs r3, #2 4078 .L175: 2507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4079 .loc 1 2508 1 4080 0154 1846 mov r0, r3 4081 0156 1837 adds r7, r7, #24 4082 .LCFI80: 4083 .cfi_def_cfa_offset 8 4084 0158 BD46 mov sp, r7 4085 .LCFI81: 4086 .cfi_def_cfa_register 13 4087 @ sp needed 4088 015a 80BD pop {r7, pc} ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 117 4089 .L183: 4090 .align 2 4091 .L182: 4092 015c 0000FFFF .word -65536 4093 0160 00000000 .word I2C_Slave_ISR_DMA 4094 0164 00000000 .word I2C_DMASlaveReceiveCplt 4095 0168 00000000 .word I2C_DMAError 4096 .cfi_endproc 4097 .LFE145: 4099 .section .text.HAL_I2C_Mem_Write,"ax",%progbits 4100 .align 1 4101 .global HAL_I2C_Mem_Write 4102 .syntax unified 4103 .thumb 4104 .thumb_func 4106 HAL_I2C_Mem_Write: 4107 .LFB146: 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 **** * @brief Write an amount of data in blocking mode to a specific memory address 2512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 2521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre 2524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Ti 2525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4108 .loc 1 2525 1 4109 .cfi_startproc 4110 @ args = 12, pretend = 0, frame = 24 4111 @ frame_needed = 1, uses_anonymous_args = 0 4112 0000 80B5 push {r7, lr} 4113 .LCFI82: 4114 .cfi_def_cfa_offset 8 4115 .cfi_offset 7, -8 4116 .cfi_offset 14, -4 4117 0002 88B0 sub sp, sp, #32 4118 .LCFI83: 4119 .cfi_def_cfa_offset 40 4120 0004 02AF add r7, sp, #8 4121 .LCFI84: 4122 .cfi_def_cfa 7, 32 4123 0006 F860 str r0, [r7, #12] 4124 0008 0846 mov r0, r1 4125 000a 1146 mov r1, r2 4126 000c 1A46 mov r2, r3 4127 000e 0346 mov r3, r0 @ movhi 4128 0010 7B81 strh r3, [r7, #10] @ movhi 4129 0012 0B46 mov r3, r1 @ movhi 4130 0014 3B81 strh r3, [r7, #8] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 118 4131 0016 1346 mov r3, r2 @ movhi 4132 0018 FB80 strh r3, [r7, #6] @ movhi 2526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 2527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 4133 .loc 1 2529 3 4134 001a FB88 ldrh r3, [r7, #6] 4135 001c 012B cmp r3, #1 4136 001e 07D0 beq .L185 4137 .loc 1 2529 3 is_stmt 0 discriminator 1 4138 0020 FB88 ldrh r3, [r7, #6] 4139 0022 022B cmp r3, #2 4140 0024 04D0 beq .L185 4141 .loc 1 2529 3 discriminator 2 4142 0026 40F6E111 movw r1, #2529 4143 002a 8448 ldr r0, .L201 4144 002c FFF7FEFF bl assert_failed 4145 .L185: 2530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4146 .loc 1 2531 11 is_stmt 1 4147 0030 FB68 ldr r3, [r7, #12] 4148 0032 93F84130 ldrb r3, [r3, #65] 4149 0036 DBB2 uxtb r3, r3 4150 .loc 1 2531 6 4151 0038 202B cmp r3, #32 4152 003a 40F0F980 bne .L186 2532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4153 .loc 1 2533 8 4154 003e 3B6A ldr r3, [r7, #32] 4155 0040 002B cmp r3, #0 4156 0042 02D0 beq .L187 4157 .loc 1 2533 25 discriminator 1 4158 0044 BB8C ldrh r3, [r7, #36] 4159 0046 002B cmp r3, #0 4160 0048 05D1 bne .L188 4161 .L187: 2534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4162 .loc 1 2535 23 4163 004a FB68 ldr r3, [r7, #12] 4164 004c 4FF40072 mov r2, #512 4165 0050 5A64 str r2, [r3, #68] 2536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4166 .loc 1 2536 15 4167 0052 0123 movs r3, #1 4168 0054 EDE0 b .L189 4169 .L188: 2537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4170 .loc 1 2540 5 4171 0056 FB68 ldr r3, [r7, #12] 4172 0058 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 119 4173 005c 012B cmp r3, #1 4174 005e 01D1 bne .L190 4175 .loc 1 2540 5 is_stmt 0 discriminator 1 4176 0060 0223 movs r3, #2 4177 0062 E6E0 b .L189 4178 .L190: 4179 .loc 1 2540 5 discriminator 2 4180 0064 FB68 ldr r3, [r7, #12] 4181 0066 0122 movs r2, #1 4182 0068 83F84020 strb r2, [r3, #64] 2541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 2543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 4183 .loc 1 2543 17 is_stmt 1 discriminator 2 4184 006c FFF7FEFF bl HAL_GetTick 4185 0070 7861 str r0, [r7, #20] 2544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 4186 .loc 1 2545 9 discriminator 2 4187 0072 7B69 ldr r3, [r7, #20] 4188 0074 0093 str r3, [sp] 4189 0076 1923 movs r3, #25 4190 0078 0122 movs r2, #1 4191 007a 4FF40041 mov r1, #32768 4192 007e F868 ldr r0, [r7, #12] 4193 0080 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4194 0084 0346 mov r3, r0 4195 .loc 1 2545 8 discriminator 2 4196 0086 002B cmp r3, #0 4197 0088 01D0 beq .L191 2546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4198 .loc 1 2547 14 4199 008a 0123 movs r3, #1 4200 008c D1E0 b .L189 4201 .L191: 2548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 4202 .loc 1 2550 21 4203 008e FB68 ldr r3, [r7, #12] 4204 0090 2122 movs r2, #33 4205 0092 83F84120 strb r2, [r3, #65] 2551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4206 .loc 1 2551 21 4207 0096 FB68 ldr r3, [r7, #12] 4208 0098 4022 movs r2, #64 4209 009a 83F84220 strb r2, [r3, #66] 2552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4210 .loc 1 2552 21 4211 009e FB68 ldr r3, [r7, #12] 4212 00a0 0022 movs r2, #0 4213 00a2 5A64 str r2, [r3, #68] 2553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4214 .loc 1 2555 21 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 120 4215 00a4 FB68 ldr r3, [r7, #12] 4216 00a6 3A6A ldr r2, [r7, #32] 4217 00a8 5A62 str r2, [r3, #36] 2556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4218 .loc 1 2556 21 4219 00aa FB68 ldr r3, [r7, #12] 4220 00ac BA8C ldrh r2, [r7, #36] @ movhi 4221 00ae 5A85 strh r2, [r3, #42] @ movhi 2557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 4222 .loc 1 2557 21 4223 00b0 FB68 ldr r3, [r7, #12] 4224 00b2 0022 movs r2, #0 4225 00b4 5A63 str r2, [r3, #52] 2558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL 4226 .loc 1 2560 9 4227 00b6 F888 ldrh r0, [r7, #6] 4228 00b8 3A89 ldrh r2, [r7, #8] 4229 00ba 7989 ldrh r1, [r7, #10] 4230 00bc 7B69 ldr r3, [r7, #20] 4231 00be 0193 str r3, [sp, #4] 4232 00c0 BB6A ldr r3, [r7, #40] 4233 00c2 0093 str r3, [sp] 4234 00c4 0346 mov r3, r0 4235 00c6 F868 ldr r0, [r7, #12] 4236 00c8 FFF7FEFF bl I2C_RequestMemoryWrite 4237 00cc 0346 mov r3, r0 4238 .loc 1 2560 8 4239 00ce 002B cmp r3, #0 4240 00d0 05D0 beq .L192 2561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4241 .loc 1 2563 7 4242 00d2 FB68 ldr r3, [r7, #12] 4243 00d4 0022 movs r2, #0 4244 00d6 83F84020 strb r2, [r3, #64] 2564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4245 .loc 1 2564 14 4246 00da 0123 movs r3, #1 4247 00dc A9E0 b .L189 4248 .L192: 2565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ 2568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4249 .loc 1 2568 13 4250 00de FB68 ldr r3, [r7, #12] 4251 00e0 5B8D ldrh r3, [r3, #42] @ movhi 4252 00e2 9BB2 uxth r3, r3 4253 .loc 1 2568 8 4254 00e4 FF2B cmp r3, #255 4255 00e6 0ED9 bls .L193 2569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 4256 .loc 1 2570 22 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 121 4257 00e8 FB68 ldr r3, [r7, #12] 4258 00ea FF22 movs r2, #255 4259 00ec 1A85 strh r2, [r3, #40] @ movhi 2571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST 4260 .loc 1 2571 57 4261 00ee FB68 ldr r3, [r7, #12] 4262 00f0 1B8D ldrh r3, [r3, #40] 4263 .loc 1 2571 7 4264 00f2 DAB2 uxtb r2, r3 4265 00f4 7989 ldrh r1, [r7, #10] 4266 00f6 0023 movs r3, #0 4267 00f8 0093 str r3, [sp] 4268 00fa 4FF08073 mov r3, #16777216 4269 00fe F868 ldr r0, [r7, #12] 4270 0100 FFF7FEFF bl I2C_TransferConfig 4271 0104 0FE0 b .L199 4272 .L193: 2572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4273 .loc 1 2575 28 4274 0106 FB68 ldr r3, [r7, #12] 4275 0108 5B8D ldrh r3, [r3, #42] @ movhi 4276 010a 9AB2 uxth r2, r3 4277 .loc 1 2575 22 4278 010c FB68 ldr r3, [r7, #12] 4279 010e 1A85 strh r2, [r3, #40] @ movhi 2576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS 4280 .loc 1 2576 57 4281 0110 FB68 ldr r3, [r7, #12] 4282 0112 1B8D ldrh r3, [r3, #40] 4283 .loc 1 2576 7 4284 0114 DAB2 uxtb r2, r3 4285 0116 7989 ldrh r1, [r7, #10] 4286 0118 0023 movs r3, #0 4287 011a 0093 str r3, [sp] 4288 011c 4FF00073 mov r3, #33554432 4289 0120 F868 ldr r0, [r7, #12] 4290 0122 FFF7FEFF bl I2C_TransferConfig 4291 .L199: 2577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 2580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 2582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 4292 .loc 1 2582 11 4293 0126 7A69 ldr r2, [r7, #20] 4294 0128 B96A ldr r1, [r7, #40] 4295 012a F868 ldr r0, [r7, #12] 4296 012c FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 4297 0130 0346 mov r3, r0 4298 .loc 1 2582 10 4299 0132 002B cmp r3, #0 4300 0134 01D0 beq .L195 2583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 122 2584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4301 .loc 1 2584 16 4302 0136 0123 movs r3, #1 4303 0138 7BE0 b .L189 4304 .L195: 2585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 2588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 4305 .loc 1 2588 35 4306 013a FB68 ldr r3, [r7, #12] 4307 013c 5B6A ldr r3, [r3, #36] 4308 .loc 1 2588 30 4309 013e 1A78 ldrb r2, [r3] @ zero_extendqisi2 4310 .loc 1 2588 11 4311 0140 FB68 ldr r3, [r7, #12] 4312 0142 1B68 ldr r3, [r3] 4313 .loc 1 2588 28 4314 0144 9A62 str r2, [r3, #40] 2589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 4315 .loc 1 2591 11 4316 0146 FB68 ldr r3, [r7, #12] 4317 0148 5B6A ldr r3, [r3, #36] 4318 .loc 1 2591 21 4319 014a 5A1C adds r2, r3, #1 4320 014c FB68 ldr r3, [r7, #12] 4321 014e 5A62 str r2, [r3, #36] 2592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 4322 .loc 1 2593 11 4323 0150 FB68 ldr r3, [r7, #12] 4324 0152 5B8D ldrh r3, [r3, #42] @ movhi 4325 0154 9BB2 uxth r3, r3 4326 .loc 1 2593 22 4327 0156 013B subs r3, r3, #1 4328 0158 9AB2 uxth r2, r3 4329 015a FB68 ldr r3, [r7, #12] 4330 015c 5A85 strh r2, [r3, #42] @ movhi 2594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 4331 .loc 1 2594 11 4332 015e FB68 ldr r3, [r7, #12] 4333 0160 1B8D ldrh r3, [r3, #40] 4334 .loc 1 2594 21 4335 0162 013B subs r3, r3, #1 4336 0164 9AB2 uxth r2, r3 4337 0166 FB68 ldr r3, [r7, #12] 4338 0168 1A85 strh r2, [r3, #40] @ movhi 2595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 4339 .loc 1 2596 16 4340 016a FB68 ldr r3, [r7, #12] 4341 016c 5B8D ldrh r3, [r3, #42] @ movhi 4342 016e 9BB2 uxth r3, r3 4343 .loc 1 2596 10 4344 0170 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 123 4345 0172 34D0 beq .L196 4346 .loc 1 2596 43 discriminator 1 4347 0174 FB68 ldr r3, [r7, #12] 4348 0176 1B8D ldrh r3, [r3, #40] 4349 .loc 1 2596 35 discriminator 1 4350 0178 002B cmp r3, #0 4351 017a 30D1 bne .L196 2597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 2599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 4352 .loc 1 2599 13 4353 017c 7B69 ldr r3, [r7, #20] 4354 017e 0093 str r3, [sp] 4355 0180 BB6A ldr r3, [r7, #40] 4356 0182 0022 movs r2, #0 4357 0184 8021 movs r1, #128 4358 0186 F868 ldr r0, [r7, #12] 4359 0188 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4360 018c 0346 mov r3, r0 4361 .loc 1 2599 12 4362 018e 002B cmp r3, #0 4363 0190 01D0 beq .L197 2600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4364 .loc 1 2601 18 4365 0192 0123 movs r3, #1 4366 0194 4DE0 b .L189 4367 .L197: 2602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4368 .loc 1 2604 17 4369 0196 FB68 ldr r3, [r7, #12] 4370 0198 5B8D ldrh r3, [r3, #42] @ movhi 4371 019a 9BB2 uxth r3, r3 4372 .loc 1 2604 12 4373 019c FF2B cmp r3, #255 4374 019e 0ED9 bls .L198 2605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 4375 .loc 1 2606 26 4376 01a0 FB68 ldr r3, [r7, #12] 4377 01a2 FF22 movs r2, #255 4378 01a4 1A85 strh r2, [r3, #40] @ movhi 2607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 4379 .loc 1 2607 61 4380 01a6 FB68 ldr r3, [r7, #12] 4381 01a8 1B8D ldrh r3, [r3, #40] 4382 .loc 1 2607 11 4383 01aa DAB2 uxtb r2, r3 4384 01ac 7989 ldrh r1, [r7, #10] 4385 01ae 0023 movs r3, #0 4386 01b0 0093 str r3, [sp] 4387 01b2 4FF08073 mov r3, #16777216 4388 01b6 F868 ldr r0, [r7, #12] 4389 01b8 FFF7FEFF bl I2C_TransferConfig 4390 01bc 0FE0 b .L196 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 124 4391 .L198: 2608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4392 .loc 1 2612 32 4393 01be FB68 ldr r3, [r7, #12] 4394 01c0 5B8D ldrh r3, [r3, #42] @ movhi 4395 01c2 9AB2 uxth r2, r3 4396 .loc 1 2612 26 4397 01c4 FB68 ldr r3, [r7, #12] 4398 01c6 1A85 strh r2, [r3, #40] @ movhi 2613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 4399 .loc 1 2613 61 4400 01c8 FB68 ldr r3, [r7, #12] 4401 01ca 1B8D ldrh r3, [r3, #40] 4402 .loc 1 2613 11 4403 01cc DAB2 uxtb r2, r3 4404 01ce 7989 ldrh r1, [r7, #10] 4405 01d0 0023 movs r3, #0 4406 01d2 0093 str r3, [sp] 4407 01d4 4FF00073 mov r3, #33554432 4408 01d8 F868 ldr r0, [r7, #12] 4409 01da FFF7FEFF bl I2C_TransferConfig 4410 .L196: 2614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); 4411 .loc 1 2618 18 4412 01de FB68 ldr r3, [r7, #12] 4413 01e0 5B8D ldrh r3, [r3, #42] @ movhi 4414 01e2 9BB2 uxth r3, r3 4415 .loc 1 2618 5 4416 01e4 002B cmp r3, #0 4417 01e6 9ED1 bne .L199 2619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 2621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 2622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 4418 .loc 1 2622 9 4419 01e8 7A69 ldr r2, [r7, #20] 4420 01ea B96A ldr r1, [r7, #40] 4421 01ec F868 ldr r0, [r7, #12] 4422 01ee FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 4423 01f2 0346 mov r3, r0 4424 .loc 1 2622 8 4425 01f4 002B cmp r3, #0 4426 01f6 01D0 beq .L200 2623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4427 .loc 1 2624 14 4428 01f8 0123 movs r3, #1 4429 01fa 1AE0 b .L189 4430 .L200: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 125 2625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 2628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 4431 .loc 1 2628 5 4432 01fc FB68 ldr r3, [r7, #12] 4433 01fe 1B68 ldr r3, [r3] 4434 0200 2022 movs r2, #32 4435 0202 DA61 str r2, [r3, #28] 2629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 2631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 4436 .loc 1 2631 5 4437 0204 FB68 ldr r3, [r7, #12] 4438 0206 1B68 ldr r3, [r3] 4439 0208 5968 ldr r1, [r3, #4] 4440 020a FB68 ldr r3, [r7, #12] 4441 020c 1A68 ldr r2, [r3] 4442 020e 0C4B ldr r3, .L201+4 4443 0210 0B40 ands r3, r3, r1 4444 0212 5360 str r3, [r2, #4] 2632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 4445 .loc 1 2633 17 4446 0214 FB68 ldr r3, [r7, #12] 4447 0216 2022 movs r2, #32 4448 0218 83F84120 strb r2, [r3, #65] 2634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4449 .loc 1 2634 17 4450 021c FB68 ldr r3, [r7, #12] 4451 021e 0022 movs r2, #0 4452 0220 83F84220 strb r2, [r3, #66] 2635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4453 .loc 1 2637 5 4454 0224 FB68 ldr r3, [r7, #12] 4455 0226 0022 movs r2, #0 4456 0228 83F84020 strb r2, [r3, #64] 2638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4457 .loc 1 2639 12 4458 022c 0023 movs r3, #0 4459 022e 00E0 b .L189 4460 .L186: 2640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4461 .loc 1 2643 12 4462 0230 0223 movs r3, #2 4463 .L189: 2644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4464 .loc 1 2645 1 4465 0232 1846 mov r0, r3 4466 0234 1837 adds r7, r7, #24 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 126 4467 .LCFI85: 4468 .cfi_def_cfa_offset 8 4469 0236 BD46 mov sp, r7 4470 .LCFI86: 4471 .cfi_def_cfa_register 13 4472 @ sp needed 4473 0238 80BD pop {r7, pc} 4474 .L202: 4475 023a 00BF .align 2 4476 .L201: 4477 023c 00000000 .word .LC0 4478 0240 00E800FE .word -33495040 4479 .cfi_endproc 4480 .LFE146: 4482 .section .text.HAL_I2C_Mem_Read,"ax",%progbits 4483 .align 1 4484 .global HAL_I2C_Mem_Read 4485 .syntax unified 4486 .thumb 4487 .thumb_func 4489 HAL_I2C_Mem_Read: 4490 .LFB147: 2646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Read an amount of data in blocking mode from a specific memory address 2649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 2658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres 2661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Tim 2662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4491 .loc 1 2662 1 4492 .cfi_startproc 4493 @ args = 12, pretend = 0, frame = 24 4494 @ frame_needed = 1, uses_anonymous_args = 0 4495 0000 80B5 push {r7, lr} 4496 .LCFI87: 4497 .cfi_def_cfa_offset 8 4498 .cfi_offset 7, -8 4499 .cfi_offset 14, -4 4500 0002 88B0 sub sp, sp, #32 4501 .LCFI88: 4502 .cfi_def_cfa_offset 40 4503 0004 02AF add r7, sp, #8 4504 .LCFI89: 4505 .cfi_def_cfa 7, 32 4506 0006 F860 str r0, [r7, #12] 4507 0008 0846 mov r0, r1 4508 000a 1146 mov r1, r2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 127 4509 000c 1A46 mov r2, r3 4510 000e 0346 mov r3, r0 @ movhi 4511 0010 7B81 strh r3, [r7, #10] @ movhi 4512 0012 0B46 mov r3, r1 @ movhi 4513 0014 3B81 strh r3, [r7, #8] @ movhi 4514 0016 1346 mov r3, r2 @ movhi 4515 0018 FB80 strh r3, [r7, #6] @ movhi 2663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 2664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 4516 .loc 1 2666 3 4517 001a FB88 ldrh r3, [r7, #6] 4518 001c 012B cmp r3, #1 4519 001e 07D0 beq .L204 4520 .loc 1 2666 3 is_stmt 0 discriminator 1 4521 0020 FB88 ldrh r3, [r7, #6] 4522 0022 022B cmp r3, #2 4523 0024 04D0 beq .L204 4524 .loc 1 2666 3 discriminator 2 4525 0026 40F66A21 movw r1, #2666 4526 002a 8648 ldr r0, .L220 4527 002c FFF7FEFF bl assert_failed 4528 .L204: 2667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4529 .loc 1 2668 11 is_stmt 1 4530 0030 FB68 ldr r3, [r7, #12] 4531 0032 93F84130 ldrb r3, [r3, #65] 4532 0036 DBB2 uxtb r3, r3 4533 .loc 1 2668 6 4534 0038 202B cmp r3, #32 4535 003a 40F0FD80 bne .L205 2669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4536 .loc 1 2670 8 4537 003e 3B6A ldr r3, [r7, #32] 4538 0040 002B cmp r3, #0 4539 0042 02D0 beq .L206 4540 .loc 1 2670 25 discriminator 1 4541 0044 BB8C ldrh r3, [r7, #36] 4542 0046 002B cmp r3, #0 4543 0048 05D1 bne .L207 4544 .L206: 2671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4545 .loc 1 2672 23 4546 004a FB68 ldr r3, [r7, #12] 4547 004c 4FF40072 mov r2, #512 4548 0050 5A64 str r2, [r3, #68] 2673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4549 .loc 1 2673 15 4550 0052 0123 movs r3, #1 4551 0054 F1E0 b .L208 4552 .L207: 2674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 128 2676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4553 .loc 1 2677 5 4554 0056 FB68 ldr r3, [r7, #12] 4555 0058 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4556 005c 012B cmp r3, #1 4557 005e 01D1 bne .L209 4558 .loc 1 2677 5 is_stmt 0 discriminator 1 4559 0060 0223 movs r3, #2 4560 0062 EAE0 b .L208 4561 .L209: 4562 .loc 1 2677 5 discriminator 2 4563 0064 FB68 ldr r3, [r7, #12] 4564 0066 0122 movs r2, #1 4565 0068 83F84020 strb r2, [r3, #64] 2678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/ 2680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 4566 .loc 1 2680 17 is_stmt 1 discriminator 2 4567 006c FFF7FEFF bl HAL_GetTick 4568 0070 7861 str r0, [r7, #20] 2681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK 4569 .loc 1 2682 9 discriminator 2 4570 0072 7B69 ldr r3, [r7, #20] 4571 0074 0093 str r3, [sp] 4572 0076 1923 movs r3, #25 4573 0078 0122 movs r2, #1 4574 007a 4FF40041 mov r1, #32768 4575 007e F868 ldr r0, [r7, #12] 4576 0080 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4577 0084 0346 mov r3, r0 4578 .loc 1 2682 8 discriminator 2 4579 0086 002B cmp r3, #0 4580 0088 01D0 beq .L210 2683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4581 .loc 1 2684 14 4582 008a 0123 movs r3, #1 4583 008c D5E0 b .L208 4584 .L210: 2685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 4585 .loc 1 2687 21 4586 008e FB68 ldr r3, [r7, #12] 4587 0090 2222 movs r2, #34 4588 0092 83F84120 strb r2, [r3, #65] 2688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4589 .loc 1 2688 21 4590 0096 FB68 ldr r3, [r7, #12] 4591 0098 4022 movs r2, #64 4592 009a 83F84220 strb r2, [r3, #66] 2689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4593 .loc 1 2689 21 4594 009e FB68 ldr r3, [r7, #12] 4595 00a0 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 129 4596 00a2 5A64 str r2, [r3, #68] 2690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4597 .loc 1 2692 21 4598 00a4 FB68 ldr r3, [r7, #12] 4599 00a6 3A6A ldr r2, [r7, #32] 4600 00a8 5A62 str r2, [r3, #36] 2693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4601 .loc 1 2693 21 4602 00aa FB68 ldr r3, [r7, #12] 4603 00ac BA8C ldrh r2, [r7, #36] @ movhi 4604 00ae 5A85 strh r2, [r3, #42] @ movhi 2694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 4605 .loc 1 2694 21 4606 00b0 FB68 ldr r3, [r7, #12] 4607 00b2 0022 movs r2, #0 4608 00b4 5A63 str r2, [r3, #52] 2695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_ 4609 .loc 1 2697 9 4610 00b6 F888 ldrh r0, [r7, #6] 4611 00b8 3A89 ldrh r2, [r7, #8] 4612 00ba 7989 ldrh r1, [r7, #10] 4613 00bc 7B69 ldr r3, [r7, #20] 4614 00be 0193 str r3, [sp, #4] 4615 00c0 BB6A ldr r3, [r7, #40] 4616 00c2 0093 str r3, [sp] 4617 00c4 0346 mov r3, r0 4618 00c6 F868 ldr r0, [r7, #12] 4619 00c8 FFF7FEFF bl I2C_RequestMemoryRead 4620 00cc 0346 mov r3, r0 4621 .loc 1 2697 8 4622 00ce 002B cmp r3, #0 4623 00d0 05D0 beq .L211 2698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4624 .loc 1 2700 7 4625 00d2 FB68 ldr r3, [r7, #12] 4626 00d4 0022 movs r2, #0 4627 00d6 83F84020 strb r2, [r3, #64] 2701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4628 .loc 1 2701 14 4629 00da 0123 movs r3, #1 4630 00dc ADE0 b .L208 4631 .L211: 2702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 2705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 2706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4632 .loc 1 2706 13 4633 00de FB68 ldr r3, [r7, #12] 4634 00e0 5B8D ldrh r3, [r3, #42] @ movhi 4635 00e2 9BB2 uxth r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 130 4636 .loc 1 2706 8 4637 00e4 FF2B cmp r3, #255 4638 00e6 0ED9 bls .L212 2707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 4639 .loc 1 2708 22 4640 00e8 FB68 ldr r3, [r7, #12] 4641 00ea 0122 movs r2, #1 4642 00ec 1A85 strh r2, [r3, #40] @ movhi 2709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, 4643 .loc 1 2709 57 4644 00ee FB68 ldr r3, [r7, #12] 4645 00f0 1B8D ldrh r3, [r3, #40] 4646 .loc 1 2709 7 4647 00f2 DAB2 uxtb r2, r3 4648 00f4 7989 ldrh r1, [r7, #10] 4649 00f6 544B ldr r3, .L220+4 4650 00f8 0093 str r3, [sp] 4651 00fa 4FF08073 mov r3, #16777216 4652 00fe F868 ldr r0, [r7, #12] 4653 0100 FFF7FEFF bl I2C_TransferConfig 4654 0104 0FE0 b .L218 4655 .L212: 2710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4656 .loc 1 2714 28 4657 0106 FB68 ldr r3, [r7, #12] 4658 0108 5B8D ldrh r3, [r3, #42] @ movhi 4659 010a 9AB2 uxth r2, r3 4660 .loc 1 2714 22 4661 010c FB68 ldr r3, [r7, #12] 4662 010e 1A85 strh r2, [r3, #40] @ movhi 2715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 4663 .loc 1 2715 57 4664 0110 FB68 ldr r3, [r7, #12] 4665 0112 1B8D ldrh r3, [r3, #40] 4666 .loc 1 2715 7 4667 0114 DAB2 uxtb r2, r3 4668 0116 7989 ldrh r1, [r7, #10] 4669 0118 4B4B ldr r3, .L220+4 4670 011a 0093 str r3, [sp] 4671 011c 4FF00073 mov r3, #33554432 4672 0120 F868 ldr r0, [r7, #12] 4673 0122 FFF7FEFF bl I2C_TransferConfig 4674 .L218: 2716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 2717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 2720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */ 2722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) 4675 .loc 1 2722 11 4676 0126 7B69 ldr r3, [r7, #20] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 131 4677 0128 0093 str r3, [sp] 4678 012a BB6A ldr r3, [r7, #40] 4679 012c 0022 movs r2, #0 4680 012e 0421 movs r1, #4 4681 0130 F868 ldr r0, [r7, #12] 4682 0132 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4683 0136 0346 mov r3, r0 4684 .loc 1 2722 10 4685 0138 002B cmp r3, #0 4686 013a 01D0 beq .L214 2723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4687 .loc 1 2724 16 4688 013c 0123 movs r3, #1 4689 013e 7CE0 b .L208 4690 .L214: 2725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 2728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 4691 .loc 1 2728 38 4692 0140 FB68 ldr r3, [r7, #12] 4693 0142 1B68 ldr r3, [r3] 4694 .loc 1 2728 48 4695 0144 5A6A ldr r2, [r3, #36] 4696 .loc 1 2728 12 4697 0146 FB68 ldr r3, [r7, #12] 4698 0148 5B6A ldr r3, [r3, #36] 4699 .loc 1 2728 25 4700 014a D2B2 uxtb r2, r2 4701 .loc 1 2728 23 4702 014c 1A70 strb r2, [r3] 2729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 2731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 4703 .loc 1 2731 11 4704 014e FB68 ldr r3, [r7, #12] 4705 0150 5B6A ldr r3, [r3, #36] 4706 .loc 1 2731 21 4707 0152 5A1C adds r2, r3, #1 4708 0154 FB68 ldr r3, [r7, #12] 4709 0156 5A62 str r2, [r3, #36] 2732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 4710 .loc 1 2733 11 4711 0158 FB68 ldr r3, [r7, #12] 4712 015a 1B8D ldrh r3, [r3, #40] 4713 .loc 1 2733 21 4714 015c 013B subs r3, r3, #1 4715 015e 9AB2 uxth r2, r3 4716 0160 FB68 ldr r3, [r7, #12] 4717 0162 1A85 strh r2, [r3, #40] @ movhi 2734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 4718 .loc 1 2734 11 4719 0164 FB68 ldr r3, [r7, #12] 4720 0166 5B8D ldrh r3, [r3, #42] @ movhi 4721 0168 9BB2 uxth r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 132 4722 .loc 1 2734 22 4723 016a 013B subs r3, r3, #1 4724 016c 9AB2 uxth r2, r3 4725 016e FB68 ldr r3, [r7, #12] 4726 0170 5A85 strh r2, [r3, #42] @ movhi 2735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 4727 .loc 1 2736 16 4728 0172 FB68 ldr r3, [r7, #12] 4729 0174 5B8D ldrh r3, [r3, #42] @ movhi 4730 0176 9BB2 uxth r3, r3 4731 .loc 1 2736 10 4732 0178 002B cmp r3, #0 4733 017a 34D0 beq .L215 4734 .loc 1 2736 43 discriminator 1 4735 017c FB68 ldr r3, [r7, #12] 4736 017e 1B8D ldrh r3, [r3, #40] 4737 .loc 1 2736 35 discriminator 1 4738 0180 002B cmp r3, #0 4739 0182 30D1 bne .L215 2737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 2739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) 4740 .loc 1 2739 13 4741 0184 7B69 ldr r3, [r7, #20] 4742 0186 0093 str r3, [sp] 4743 0188 BB6A ldr r3, [r7, #40] 4744 018a 0022 movs r2, #0 4745 018c 8021 movs r1, #128 4746 018e F868 ldr r0, [r7, #12] 4747 0190 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 4748 0194 0346 mov r3, r0 4749 .loc 1 2739 12 4750 0196 002B cmp r3, #0 4751 0198 01D0 beq .L216 2740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4752 .loc 1 2741 18 4753 019a 0123 movs r3, #1 4754 019c 4DE0 b .L208 4755 .L216: 2742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 4756 .loc 1 2744 17 4757 019e FB68 ldr r3, [r7, #12] 4758 01a0 5B8D ldrh r3, [r3, #42] @ movhi 4759 01a2 9BB2 uxth r3, r3 4760 .loc 1 2744 12 4761 01a4 FF2B cmp r3, #255 4762 01a6 0ED9 bls .L217 2745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 4763 .loc 1 2746 26 4764 01a8 FB68 ldr r3, [r7, #12] 4765 01aa 0122 movs r2, #1 4766 01ac 1A85 strh r2, [r3, #40] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 133 2747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, 4767 .loc 1 2747 62 4768 01ae FB68 ldr r3, [r7, #12] 4769 01b0 1B8D ldrh r3, [r3, #40] 4770 .loc 1 2747 11 4771 01b2 DAB2 uxtb r2, r3 4772 01b4 7989 ldrh r1, [r7, #10] 4773 01b6 0023 movs r3, #0 4774 01b8 0093 str r3, [sp] 4775 01ba 4FF08073 mov r3, #16777216 4776 01be F868 ldr r0, [r7, #12] 4777 01c0 FFF7FEFF bl I2C_TransferConfig 4778 01c4 0FE0 b .L215 4779 .L217: 2748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 4780 .loc 1 2752 32 4781 01c6 FB68 ldr r3, [r7, #12] 4782 01c8 5B8D ldrh r3, [r3, #42] @ movhi 4783 01ca 9AB2 uxth r2, r3 4784 .loc 1 2752 26 4785 01cc FB68 ldr r3, [r7, #12] 4786 01ce 1A85 strh r2, [r3, #40] @ movhi 2753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 4787 .loc 1 2753 61 4788 01d0 FB68 ldr r3, [r7, #12] 4789 01d2 1B8D ldrh r3, [r3, #40] 4790 .loc 1 2753 11 4791 01d4 DAB2 uxtb r2, r3 4792 01d6 7989 ldrh r1, [r7, #10] 4793 01d8 0023 movs r3, #0 4794 01da 0093 str r3, [sp] 4795 01dc 4FF00073 mov r3, #33554432 4796 01e0 F868 ldr r0, [r7, #12] 4797 01e2 FFF7FEFF bl I2C_TransferConfig 4798 .L215: 2754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP); 2755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); 4799 .loc 1 2757 18 4800 01e6 FB68 ldr r3, [r7, #12] 4801 01e8 5B8D ldrh r3, [r3, #42] @ movhi 4802 01ea 9BB2 uxth r3, r3 4803 .loc 1 2757 5 4804 01ec 002B cmp r3, #0 4805 01ee 9AD1 bne .L218 2758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 2760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 2761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) 4806 .loc 1 2761 9 4807 01f0 7A69 ldr r2, [r7, #20] 4808 01f2 B96A ldr r1, [r7, #40] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 134 4809 01f4 F868 ldr r0, [r7, #12] 4810 01f6 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout 4811 01fa 0346 mov r3, r0 4812 .loc 1 2761 8 4813 01fc 002B cmp r3, #0 4814 01fe 01D0 beq .L219 2762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4815 .loc 1 2763 14 4816 0200 0123 movs r3, #1 4817 0202 1AE0 b .L208 4818 .L219: 2764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 2767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 4819 .loc 1 2767 5 4820 0204 FB68 ldr r3, [r7, #12] 4821 0206 1B68 ldr r3, [r3] 4822 0208 2022 movs r2, #32 4823 020a DA61 str r2, [r3, #28] 2768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 2770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 4824 .loc 1 2770 5 4825 020c FB68 ldr r3, [r7, #12] 4826 020e 1B68 ldr r3, [r3] 4827 0210 5968 ldr r1, [r3, #4] 4828 0212 FB68 ldr r3, [r7, #12] 4829 0214 1A68 ldr r2, [r3] 4830 0216 0D4B ldr r3, .L220+8 4831 0218 0B40 ands r3, r3, r1 4832 021a 5360 str r3, [r2, #4] 2771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 4833 .loc 1 2772 17 4834 021c FB68 ldr r3, [r7, #12] 4835 021e 2022 movs r2, #32 4836 0220 83F84120 strb r2, [r3, #65] 2773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4837 .loc 1 2773 17 4838 0224 FB68 ldr r3, [r7, #12] 4839 0226 0022 movs r2, #0 4840 0228 83F84220 strb r2, [r3, #66] 2774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4841 .loc 1 2776 5 4842 022c FB68 ldr r3, [r7, #12] 4843 022e 0022 movs r2, #0 4844 0230 83F84020 strb r2, [r3, #64] 2777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 4845 .loc 1 2778 12 4846 0234 0023 movs r3, #0 4847 0236 00E0 b .L208 4848 .L205: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 135 2779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4849 .loc 1 2782 12 4850 0238 0223 movs r3, #2 4851 .L208: 2783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4852 .loc 1 2784 1 4853 023a 1846 mov r0, r3 4854 023c 1837 adds r7, r7, #24 4855 .LCFI90: 4856 .cfi_def_cfa_offset 8 4857 023e BD46 mov sp, r7 4858 .LCFI91: 4859 .cfi_def_cfa_register 13 4860 @ sp needed 4861 0240 80BD pop {r7, pc} 4862 .L221: 4863 0242 00BF .align 2 4864 .L220: 4865 0244 00000000 .word .LC0 4866 0248 00240080 .word -2147474432 4867 024c 00E800FE .word -33495040 4868 .cfi_endproc 4869 .LFE147: 4871 .section .text.HAL_I2C_Mem_Write_IT,"ax",%progbits 4872 .align 1 4873 .global HAL_I2C_Mem_Write_IT 4874 .syntax unified 4875 .thumb 4876 .thumb_func 4878 HAL_I2C_Mem_Write_IT: 4879 .LFB148: 2785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2786: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 2787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2797: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 2798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4880 .loc 1 2799 1 4881 .cfi_startproc 4882 @ args = 8, pretend = 0, frame = 16 4883 @ frame_needed = 1, uses_anonymous_args = 0 4884 0000 80B5 push {r7, lr} 4885 .LCFI92: 4886 .cfi_def_cfa_offset 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 136 4887 .cfi_offset 7, -8 4888 .cfi_offset 14, -4 4889 0002 86B0 sub sp, sp, #24 4890 .LCFI93: 4891 .cfi_def_cfa_offset 32 4892 0004 02AF add r7, sp, #8 4893 .LCFI94: 4894 .cfi_def_cfa 7, 24 4895 0006 F860 str r0, [r7, #12] 4896 0008 0846 mov r0, r1 4897 000a 1146 mov r1, r2 4898 000c 1A46 mov r2, r3 4899 000e 0346 mov r3, r0 @ movhi 4900 0010 7B81 strh r3, [r7, #10] @ movhi 4901 0012 0B46 mov r3, r1 @ movhi 4902 0014 3B81 strh r3, [r7, #8] @ movhi 4903 0016 1346 mov r3, r2 @ movhi 4904 0018 FB80 strh r3, [r7, #6] @ movhi 2800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 4905 .loc 1 2801 3 4906 001a FB88 ldrh r3, [r7, #6] 4907 001c 012B cmp r3, #1 4908 001e 07D0 beq .L223 4909 .loc 1 2801 3 is_stmt 0 discriminator 1 4910 0020 FB88 ldrh r3, [r7, #6] 4911 0022 022B cmp r3, #2 4912 0024 04D0 beq .L223 4913 .loc 1 2801 3 discriminator 2 4914 0026 40F6F121 movw r1, #2801 4915 002a 3C48 ldr r0, .L232 4916 002c FFF7FEFF bl assert_failed 4917 .L223: 2802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 4918 .loc 1 2803 11 is_stmt 1 4919 0030 FB68 ldr r3, [r7, #12] 4920 0032 93F84130 ldrb r3, [r3, #65] 4921 0036 DBB2 uxtb r3, r3 4922 .loc 1 2803 6 4923 0038 202B cmp r3, #32 4924 003a 6AD1 bne .L224 2804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 4925 .loc 1 2805 8 4926 003c BB69 ldr r3, [r7, #24] 4927 003e 002B cmp r3, #0 4928 0040 02D0 beq .L225 4929 .loc 1 2805 25 discriminator 1 4930 0042 BB8B ldrh r3, [r7, #28] 4931 0044 002B cmp r3, #0 4932 0046 05D1 bne .L226 4933 .L225: 2806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 4934 .loc 1 2807 23 4935 0048 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 137 4936 004a 4FF40072 mov r2, #512 4937 004e 5A64 str r2, [r3, #68] 2808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4938 .loc 1 2808 15 4939 0050 0123 movs r3, #1 4940 0052 5FE0 b .L227 4941 .L226: 2809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 4942 .loc 1 2811 9 4943 0054 FB68 ldr r3, [r7, #12] 4944 0056 1B68 ldr r3, [r3] 4945 0058 9B69 ldr r3, [r3, #24] 4946 005a 03F40043 and r3, r3, #32768 4947 .loc 1 2811 8 4948 005e B3F5004F cmp r3, #32768 4949 0062 01D1 bne .L228 2812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 4950 .loc 1 2813 14 4951 0064 0223 movs r3, #2 4952 0066 55E0 b .L227 4953 .L228: 2814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 4954 .loc 1 2817 5 4955 0068 FB68 ldr r3, [r7, #12] 4956 006a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 4957 006e 012B cmp r3, #1 4958 0070 01D1 bne .L229 4959 .loc 1 2817 5 is_stmt 0 discriminator 1 4960 0072 0223 movs r3, #2 4961 0074 4EE0 b .L227 4962 .L229: 4963 .loc 1 2817 5 discriminator 2 4964 0076 FB68 ldr r3, [r7, #12] 4965 0078 0122 movs r2, #1 4966 007a 83F84020 strb r2, [r3, #64] 2818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 4967 .loc 1 2819 23 is_stmt 1 discriminator 2 4968 007e FB68 ldr r3, [r7, #12] 4969 0080 2122 movs r2, #33 4970 0082 83F84120 strb r2, [r3, #65] 2820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 4971 .loc 1 2820 23 discriminator 2 4972 0086 FB68 ldr r3, [r7, #12] 4973 0088 4022 movs r2, #64 4974 008a 83F84220 strb r2, [r3, #66] 2821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 4975 .loc 1 2821 23 discriminator 2 4976 008e FB68 ldr r3, [r7, #12] 4977 0090 0022 movs r2, #0 4978 0092 5A64 str r2, [r3, #68] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 138 2822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0U; 4979 .loc 1 2824 23 discriminator 2 4980 0094 FB68 ldr r3, [r7, #12] 4981 0096 0022 movs r2, #0 4982 0098 1A85 strh r2, [r3, #40] @ movhi 2825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 4983 .loc 1 2825 23 discriminator 2 4984 009a FB68 ldr r3, [r7, #12] 4985 009c BA69 ldr r2, [r7, #24] 4986 009e 5A62 str r2, [r3, #36] 2826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 4987 .loc 1 2826 23 discriminator 2 4988 00a0 FB68 ldr r3, [r7, #12] 4989 00a2 BA8B ldrh r2, [r7, #28] @ movhi 4990 00a4 5A85 strh r2, [r3, #42] @ movhi 2827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 4991 .loc 1 2827 23 discriminator 2 4992 00a6 FB68 ldr r3, [r7, #12] 4993 00a8 1D4A ldr r2, .L232+4 4994 00aa DA62 str r2, [r3, #44] 2828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; 4995 .loc 1 2828 23 discriminator 2 4996 00ac FB68 ldr r3, [r7, #12] 4997 00ae 1D4A ldr r2, .L232+8 4998 00b0 5A63 str r2, [r3, #52] 2829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 4999 .loc 1 2829 23 discriminator 2 5000 00b2 7A89 ldrh r2, [r7, #10] 5001 00b4 FB68 ldr r3, [r7, #12] 5002 00b6 DA64 str r2, [r3, #76] 2830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 2832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 5003 .loc 1 2832 8 discriminator 2 5004 00b8 FB88 ldrh r3, [r7, #6] 5005 00ba 012B cmp r3, #1 5006 00bc 09D1 bne .L230 2833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 2835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 5007 .loc 1 2835 30 5008 00be 3B89 ldrh r3, [r7, #8] @ movhi 5009 00c0 DAB2 uxtb r2, r3 5010 .loc 1 2835 11 5011 00c2 FB68 ldr r3, [r7, #12] 5012 00c4 1B68 ldr r3, [r3] 5013 .loc 1 2835 28 5014 00c6 9A62 str r2, [r3, #40] 2836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 2838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 5015 .loc 1 2838 24 5016 00c8 FB68 ldr r3, [r7, #12] 5017 00ca 4FF0FF32 mov r2, #-1 5018 00ce 1A65 str r2, [r3, #80] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 139 5019 00d0 0BE0 b .L231 5020 .L230: 2839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 2841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 2844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 5021 .loc 1 2844 30 5022 00d2 3B89 ldrh r3, [r7, #8] 5023 00d4 1B0A lsrs r3, r3, #8 5024 00d6 9BB2 uxth r3, r3 5025 00d8 DAB2 uxtb r2, r3 5026 .loc 1 2844 11 5027 00da FB68 ldr r3, [r7, #12] 5028 00dc 1B68 ldr r3, [r3] 5029 .loc 1 2844 28 5030 00de 9A62 str r2, [r3, #40] 2845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 2847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 5031 .loc 1 2847 26 5032 00e0 3B89 ldrh r3, [r7, #8] @ movhi 5033 00e2 DBB2 uxtb r3, r3 5034 00e4 1A46 mov r2, r3 5035 .loc 1 2847 24 5036 00e6 FB68 ldr r3, [r7, #12] 5037 00e8 1A65 str r2, [r3, #80] 5038 .L231: 2848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_W 5039 .loc 1 2850 5 5040 00ea FB88 ldrh r3, [r7, #6] @ movhi 5041 00ec DAB2 uxtb r2, r3 5042 00ee 7989 ldrh r1, [r7, #10] 5043 00f0 0D4B ldr r3, .L232+12 5044 00f2 0093 str r3, [sp] 5045 00f4 4FF08073 mov r3, #16777216 5046 00f8 F868 ldr r0, [r7, #12] 5047 00fa FFF7FEFF bl I2C_TransferConfig 2851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5048 .loc 1 2853 5 5049 00fe FB68 ldr r3, [r7, #12] 5050 0100 0022 movs r2, #0 5051 0102 83F84020 strb r2, [r3, #64] 2854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 140 2863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5052 .loc 1 2863 5 5053 0106 0121 movs r1, #1 5054 0108 F868 ldr r0, [r7, #12] 5055 010a FFF7FEFF bl I2C_Enable_IRQ 2864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5056 .loc 1 2865 12 5057 010e 0023 movs r3, #0 5058 0110 00E0 b .L227 5059 .L224: 2866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5060 .loc 1 2869 12 5061 0112 0223 movs r3, #2 5062 .L227: 2870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5063 .loc 1 2871 1 5064 0114 1846 mov r0, r3 5065 0116 1037 adds r7, r7, #16 5066 .LCFI95: 5067 .cfi_def_cfa_offset 8 5068 0118 BD46 mov sp, r7 5069 .LCFI96: 5070 .cfi_def_cfa_register 13 5071 @ sp needed 5072 011a 80BD pop {r7, pc} 5073 .L233: 5074 .align 2 5075 .L232: 5076 011c 00000000 .word .LC0 5077 0120 0000FFFF .word -65536 5078 0124 00000000 .word I2C_Mem_ISR_IT 5079 0128 00200080 .word -2147475456 5080 .cfi_endproc 5081 .LFE148: 5083 .section .text.HAL_I2C_Mem_Read_IT,"ax",%progbits 5084 .align 1 5085 .global HAL_I2C_Mem_Read_IT 5086 .syntax unified 5087 .thumb 5088 .thumb_func 5090 HAL_I2C_Mem_Read_IT: 5091 .LFB149: 2872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 2874: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 2875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 141 2882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2885: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 2886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5092 .loc 1 2887 1 5093 .cfi_startproc 5094 @ args = 8, pretend = 0, frame = 16 5095 @ frame_needed = 1, uses_anonymous_args = 0 5096 0000 80B5 push {r7, lr} 5097 .LCFI97: 5098 .cfi_def_cfa_offset 8 5099 .cfi_offset 7, -8 5100 .cfi_offset 14, -4 5101 0002 86B0 sub sp, sp, #24 5102 .LCFI98: 5103 .cfi_def_cfa_offset 32 5104 0004 02AF add r7, sp, #8 5105 .LCFI99: 5106 .cfi_def_cfa 7, 24 5107 0006 F860 str r0, [r7, #12] 5108 0008 0846 mov r0, r1 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 2888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 5117 .loc 1 2889 3 5118 001a FB88 ldrh r3, [r7, #6] 5119 001c 012B cmp r3, #1 5120 001e 07D0 beq .L235 5121 .loc 1 2889 3 is_stmt 0 discriminator 1 5122 0020 FB88 ldrh r3, [r7, #6] 5123 0022 022B cmp r3, #2 5124 0024 04D0 beq .L235 5125 .loc 1 2889 3 discriminator 2 5126 0026 40F64931 movw r1, #2889 5127 002a 3A48 ldr r0, .L244 5128 002c FFF7FEFF bl assert_failed 5129 .L235: 2890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5130 .loc 1 2891 11 is_stmt 1 5131 0030 FB68 ldr r3, [r7, #12] 5132 0032 93F84130 ldrb r3, [r3, #65] 5133 0036 DBB2 uxtb r3, r3 5134 .loc 1 2891 6 5135 0038 202B cmp r3, #32 5136 003a 66D1 bne .L236 2892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 142 5137 .loc 1 2893 8 5138 003c BB69 ldr r3, [r7, #24] 5139 003e 002B cmp r3, #0 5140 0040 02D0 beq .L237 5141 .loc 1 2893 25 discriminator 1 5142 0042 BB8B ldrh r3, [r7, #28] 5143 0044 002B cmp r3, #0 5144 0046 05D1 bne .L238 5145 .L237: 2894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 5146 .loc 1 2895 23 5147 0048 FB68 ldr r3, [r7, #12] 5148 004a 4FF40072 mov r2, #512 5149 004e 5A64 str r2, [r3, #68] 2896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5150 .loc 1 2896 15 5151 0050 0123 movs r3, #1 5152 0052 5BE0 b .L239 5153 .L238: 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 **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5154 .loc 1 2899 9 5155 0054 FB68 ldr r3, [r7, #12] 5156 0056 1B68 ldr r3, [r3] 5157 0058 9B69 ldr r3, [r3, #24] 5158 005a 03F40043 and r3, r3, #32768 5159 .loc 1 2899 8 5160 005e B3F5004F cmp r3, #32768 5161 0062 01D1 bne .L240 2900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5162 .loc 1 2901 14 5163 0064 0223 movs r3, #2 5164 0066 51E0 b .L239 5165 .L240: 2902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5166 .loc 1 2905 5 5167 0068 FB68 ldr r3, [r7, #12] 5168 006a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5169 006e 012B cmp r3, #1 5170 0070 01D1 bne .L241 5171 .loc 1 2905 5 is_stmt 0 discriminator 1 5172 0072 0223 movs r3, #2 5173 0074 4AE0 b .L239 5174 .L241: 5175 .loc 1 2905 5 discriminator 2 5176 0076 FB68 ldr r3, [r7, #12] 5177 0078 0122 movs r2, #1 5178 007a 83F84020 strb r2, [r3, #64] 2906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 5179 .loc 1 2907 23 is_stmt 1 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 143 5180 007e FB68 ldr r3, [r7, #12] 5181 0080 2222 movs r2, #34 5182 0082 83F84120 strb r2, [r3, #65] 2908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 5183 .loc 1 2908 23 discriminator 2 5184 0086 FB68 ldr r3, [r7, #12] 5185 0088 4022 movs r2, #64 5186 008a 83F84220 strb r2, [r3, #66] 2909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5187 .loc 1 2909 23 discriminator 2 5188 008e FB68 ldr r3, [r7, #12] 5189 0090 0022 movs r2, #0 5190 0092 5A64 str r2, [r3, #68] 2910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 2912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 5191 .loc 1 2912 23 discriminator 2 5192 0094 FB68 ldr r3, [r7, #12] 5193 0096 BA69 ldr r2, [r7, #24] 5194 0098 5A62 str r2, [r3, #36] 2913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 5195 .loc 1 2913 23 discriminator 2 5196 009a FB68 ldr r3, [r7, #12] 5197 009c BA8B ldrh r2, [r7, #28] @ movhi 5198 009e 5A85 strh r2, [r3, #42] @ movhi 2914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 5199 .loc 1 2914 23 discriminator 2 5200 00a0 FB68 ldr r3, [r7, #12] 5201 00a2 1D4A ldr r2, .L244+4 5202 00a4 DA62 str r2, [r3, #44] 2915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; 5203 .loc 1 2915 23 discriminator 2 5204 00a6 FB68 ldr r3, [r7, #12] 5205 00a8 1C4A ldr r2, .L244+8 5206 00aa 5A63 str r2, [r3, #52] 2916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 5207 .loc 1 2916 23 discriminator 2 5208 00ac 7A89 ldrh r2, [r7, #10] 5209 00ae FB68 ldr r3, [r7, #12] 5210 00b0 DA64 str r2, [r3, #76] 2917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 2919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 5211 .loc 1 2919 8 discriminator 2 5212 00b2 FB88 ldrh r3, [r7, #6] 5213 00b4 012B cmp r3, #1 5214 00b6 09D1 bne .L242 2920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 2922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 5215 .loc 1 2922 30 5216 00b8 3B89 ldrh r3, [r7, #8] @ movhi 5217 00ba DAB2 uxtb r2, r3 5218 .loc 1 2922 11 5219 00bc FB68 ldr r3, [r7, #12] 5220 00be 1B68 ldr r3, [r3] 5221 .loc 1 2922 28 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 144 5222 00c0 9A62 str r2, [r3, #40] 2923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 2925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 5223 .loc 1 2925 24 5224 00c2 FB68 ldr r3, [r7, #12] 5225 00c4 4FF0FF32 mov r2, #-1 5226 00c8 1A65 str r2, [r3, #80] 5227 00ca 0BE0 b .L243 5228 .L242: 2926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 2928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 2931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 5229 .loc 1 2931 30 5230 00cc 3B89 ldrh r3, [r7, #8] 5231 00ce 1B0A lsrs r3, r3, #8 5232 00d0 9BB2 uxth r3, r3 5233 00d2 DAB2 uxtb r2, r3 5234 .loc 1 2931 11 5235 00d4 FB68 ldr r3, [r7, #12] 5236 00d6 1B68 ldr r3, [r3] 5237 .loc 1 2931 28 5238 00d8 9A62 str r2, [r3, #40] 2932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 2934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 5239 .loc 1 2934 26 5240 00da 3B89 ldrh r3, [r7, #8] @ movhi 5241 00dc DBB2 uxtb r3, r3 5242 00de 1A46 mov r2, r3 5243 .loc 1 2934 24 5244 00e0 FB68 ldr r3, [r7, #12] 5245 00e2 1A65 str r2, [r3, #80] 5246 .L243: 2935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 2937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_ 5247 .loc 1 2937 5 5248 00e4 FB88 ldrh r3, [r7, #6] @ movhi 5249 00e6 DAB2 uxtb r2, r3 5250 00e8 7989 ldrh r1, [r7, #10] 5251 00ea 0D4B ldr r3, .L244+12 5252 00ec 0093 str r3, [sp] 5253 00ee 0023 movs r3, #0 5254 00f0 F868 ldr r0, [r7, #12] 5255 00f2 FFF7FEFF bl I2C_TransferConfig 2938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 2940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5256 .loc 1 2940 5 5257 00f6 FB68 ldr r3, [r7, #12] 5258 00f8 0022 movs r2, #0 5259 00fa 83F84020 strb r2, [r3, #64] 2941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 145 2942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 2943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 2944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 2945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 2947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 2948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 2949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 2950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5260 .loc 1 2950 5 5261 00fe 0121 movs r1, #1 5262 0100 F868 ldr r0, [r7, #12] 5263 0102 FFF7FEFF bl I2C_Enable_IRQ 2951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5264 .loc 1 2952 12 5265 0106 0023 movs r3, #0 5266 0108 00E0 b .L239 5267 .L236: 2953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 2955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5268 .loc 1 2956 12 5269 010a 0223 movs r3, #2 5270 .L239: 2957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5271 .loc 1 2958 1 5272 010c 1846 mov r0, r3 5273 010e 1037 adds r7, r7, #16 5274 .LCFI100: 5275 .cfi_def_cfa_offset 8 5276 0110 BD46 mov sp, r7 5277 .LCFI101: 5278 .cfi_def_cfa_register 13 5279 @ sp needed 5280 0112 80BD pop {r7, pc} 5281 .L245: 5282 .align 2 5283 .L244: 5284 0114 00000000 .word .LC0 5285 0118 0000FFFF .word -65536 5286 011c 00000000 .word I2C_Mem_ISR_IT 5287 0120 00200080 .word -2147475456 5288 .cfi_endproc 5289 .LFE149: 5291 .section .text.HAL_I2C_Mem_Write_DMA,"ax",%progbits 5292 .align 1 5293 .global HAL_I2C_Mem_Write_DMA 5294 .syntax unified 5295 .thumb 5296 .thumb_func 5298 HAL_I2C_Mem_Write_DMA: 5299 .LFB150: 2959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 146 2961: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 2962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 2963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 2965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 2966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 2967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 2968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 2969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 2970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 2971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 2972: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 2973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 2974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5300 .loc 1 2974 1 5301 .cfi_startproc 5302 @ args = 8, pretend = 0, frame = 24 5303 @ frame_needed = 1, uses_anonymous_args = 0 5304 0000 80B5 push {r7, lr} 5305 .LCFI102: 5306 .cfi_def_cfa_offset 8 5307 .cfi_offset 7, -8 5308 .cfi_offset 14, -4 5309 0002 88B0 sub sp, sp, #32 5310 .LCFI103: 5311 .cfi_def_cfa_offset 40 5312 0004 02AF add r7, sp, #8 5313 .LCFI104: 5314 .cfi_def_cfa 7, 32 5315 0006 F860 str r0, [r7, #12] 5316 0008 0846 mov r0, r1 5317 000a 1146 mov r1, r2 5318 000c 1A46 mov r2, r3 5319 000e 0346 mov r3, r0 @ movhi 5320 0010 7B81 strh r3, [r7, #10] @ movhi 5321 0012 0B46 mov r3, r1 @ movhi 5322 0014 3B81 strh r3, [r7, #8] @ movhi 5323 0016 1346 mov r3, r2 @ movhi 5324 0018 FB80 strh r3, [r7, #6] @ movhi 2975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 2976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 2978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 5325 .loc 1 2978 3 5326 001a FB88 ldrh r3, [r7, #6] 5327 001c 012B cmp r3, #1 5328 001e 07D0 beq .L247 5329 .loc 1 2978 3 is_stmt 0 discriminator 1 5330 0020 FB88 ldrh r3, [r7, #6] 5331 0022 022B cmp r3, #2 5332 0024 04D0 beq .L247 5333 .loc 1 2978 3 discriminator 2 5334 0026 40F6A231 movw r1, #2978 5335 002a 6948 ldr r0, .L263 5336 002c FFF7FEFF bl assert_failed 5337 .L247: 2979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 147 2980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5338 .loc 1 2980 11 is_stmt 1 5339 0030 FB68 ldr r3, [r7, #12] 5340 0032 93F84130 ldrb r3, [r3, #65] 5341 0036 DBB2 uxtb r3, r3 5342 .loc 1 2980 6 5343 0038 202B cmp r3, #32 5344 003a 40F0C380 bne .L248 2981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 5345 .loc 1 2982 8 5346 003e 3B6A ldr r3, [r7, #32] 5347 0040 002B cmp r3, #0 5348 0042 02D0 beq .L249 5349 .loc 1 2982 25 discriminator 1 5350 0044 BB8C ldrh r3, [r7, #36] 5351 0046 002B cmp r3, #0 5352 0048 05D1 bne .L250 5353 .L249: 2983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 5354 .loc 1 2984 23 5355 004a FB68 ldr r3, [r7, #12] 5356 004c 4FF40072 mov r2, #512 5357 0050 5A64 str r2, [r3, #68] 2985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5358 .loc 1 2985 15 5359 0052 0123 movs r3, #1 5360 0054 B7E0 b .L251 5361 .L250: 2986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5362 .loc 1 2988 9 5363 0056 FB68 ldr r3, [r7, #12] 5364 0058 1B68 ldr r3, [r3] 5365 005a 9B69 ldr r3, [r3, #24] 5366 005c 03F40043 and r3, r3, #32768 5367 .loc 1 2988 8 5368 0060 B3F5004F cmp r3, #32768 5369 0064 01D1 bne .L252 2989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 2990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5370 .loc 1 2990 14 5371 0066 0223 movs r3, #2 5372 0068 ADE0 b .L251 5373 .L252: 2991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 2992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 2994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5374 .loc 1 2994 5 5375 006a FB68 ldr r3, [r7, #12] 5376 006c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5377 0070 012B cmp r3, #1 5378 0072 01D1 bne .L253 5379 .loc 1 2994 5 is_stmt 0 discriminator 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 148 5380 0074 0223 movs r3, #2 5381 0076 A6E0 b .L251 5382 .L253: 5383 .loc 1 2994 5 discriminator 2 5384 0078 FB68 ldr r3, [r7, #12] 5385 007a 0122 movs r2, #1 5386 007c 83F84020 strb r2, [r3, #64] 2995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 5387 .loc 1 2996 23 is_stmt 1 discriminator 2 5388 0080 FB68 ldr r3, [r7, #12] 5389 0082 2122 movs r2, #33 5390 0084 83F84120 strb r2, [r3, #65] 2997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 5391 .loc 1 2997 23 discriminator 2 5392 0088 FB68 ldr r3, [r7, #12] 5393 008a 4022 movs r2, #64 5394 008c 83F84220 strb r2, [r3, #66] 2998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5395 .loc 1 2998 23 discriminator 2 5396 0090 FB68 ldr r3, [r7, #12] 5397 0092 0022 movs r2, #0 5398 0094 5A64 str r2, [r3, #68] 2999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 5399 .loc 1 3001 23 discriminator 2 5400 0096 FB68 ldr r3, [r7, #12] 5401 0098 3A6A ldr r2, [r7, #32] 5402 009a 5A62 str r2, [r3, #36] 3002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 5403 .loc 1 3002 23 discriminator 2 5404 009c FB68 ldr r3, [r7, #12] 5405 009e BA8C ldrh r2, [r7, #36] @ movhi 5406 00a0 5A85 strh r2, [r3, #42] @ movhi 3003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 5407 .loc 1 3003 23 discriminator 2 5408 00a2 FB68 ldr r3, [r7, #12] 5409 00a4 4B4A ldr r2, .L263+4 5410 00a6 DA62 str r2, [r3, #44] 3004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; 5411 .loc 1 3004 23 discriminator 2 5412 00a8 FB68 ldr r3, [r7, #12] 5413 00aa 4B4A ldr r2, .L263+8 5414 00ac 5A63 str r2, [r3, #52] 3005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 5415 .loc 1 3005 23 discriminator 2 5416 00ae 7A89 ldrh r2, [r7, #10] 5417 00b0 FB68 ldr r3, [r7, #12] 5418 00b2 DA64 str r2, [r3, #76] 3006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 5419 .loc 1 3007 13 discriminator 2 5420 00b4 FB68 ldr r3, [r7, #12] 5421 00b6 5B8D ldrh r3, [r3, #42] @ movhi 5422 00b8 9BB2 uxth r3, r3 5423 .loc 1 3007 8 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 149 5424 00ba FF2B cmp r3, #255 5425 00bc 03D9 bls .L254 3008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 5426 .loc 1 3009 22 5427 00be FB68 ldr r3, [r7, #12] 5428 00c0 FF22 movs r2, #255 5429 00c2 1A85 strh r2, [r3, #40] @ movhi 5430 00c4 04E0 b .L255 5431 .L254: 3010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 5432 .loc 1 3013 28 5433 00c6 FB68 ldr r3, [r7, #12] 5434 00c8 5B8D ldrh r3, [r3, #42] @ movhi 5435 00ca 9AB2 uxth r2, r3 5436 .loc 1 3013 22 5437 00cc FB68 ldr r3, [r7, #12] 5438 00ce 1A85 strh r2, [r3, #40] @ movhi 5439 .L255: 3014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 3017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 5440 .loc 1 3017 8 5441 00d0 FB88 ldrh r3, [r7, #6] 5442 00d2 012B cmp r3, #1 5443 00d4 09D1 bne .L256 3018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 3020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 5444 .loc 1 3020 30 5445 00d6 3B89 ldrh r3, [r7, #8] @ movhi 5446 00d8 DAB2 uxtb r2, r3 5447 .loc 1 3020 11 5448 00da FB68 ldr r3, [r7, #12] 5449 00dc 1B68 ldr r3, [r3] 5450 .loc 1 3020 28 5451 00de 9A62 str r2, [r3, #40] 3021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 3023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 5452 .loc 1 3023 24 5453 00e0 FB68 ldr r3, [r7, #12] 5454 00e2 4FF0FF32 mov r2, #-1 5455 00e6 1A65 str r2, [r3, #80] 5456 00e8 0BE0 b .L257 5457 .L256: 3024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 3026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 3029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 5458 .loc 1 3029 30 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 150 5459 00ea 3B89 ldrh r3, [r7, #8] 5460 00ec 1B0A lsrs r3, r3, #8 5461 00ee 9BB2 uxth r3, r3 5462 00f0 DAB2 uxtb r2, r3 5463 .loc 1 3029 11 5464 00f2 FB68 ldr r3, [r7, #12] 5465 00f4 1B68 ldr r3, [r3] 5466 .loc 1 3029 28 5467 00f6 9A62 str r2, [r3, #40] 3030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 3032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 5468 .loc 1 3032 26 5469 00f8 3B89 ldrh r3, [r7, #8] @ movhi 5470 00fa DBB2 uxtb r3, r3 5471 00fc 1A46 mov r2, r3 5472 .loc 1 3032 24 5473 00fe FB68 ldr r3, [r7, #12] 5474 0100 1A65 str r2, [r3, #80] 5475 .L257: 3033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 5476 .loc 1 3035 13 5477 0102 FB68 ldr r3, [r7, #12] 5478 0104 9B6B ldr r3, [r3, #56] 5479 .loc 1 3035 8 5480 0106 002B cmp r3, #0 5481 0108 20D0 beq .L258 3036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 5482 .loc 1 3038 11 5483 010a FB68 ldr r3, [r7, #12] 5484 010c 9B6B ldr r3, [r3, #56] 5485 .loc 1 3038 38 5486 010e 334A ldr r2, .L263+12 5487 0110 9A62 str r2, [r3, #40] 3039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 5488 .loc 1 3041 11 5489 0112 FB68 ldr r3, [r7, #12] 5490 0114 9B6B ldr r3, [r3, #56] 5491 .loc 1 3041 39 5492 0116 324A ldr r2, .L263+16 5493 0118 1A63 str r2, [r3, #48] 3042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 5494 .loc 1 3044 11 5495 011a FB68 ldr r3, [r7, #12] 5496 011c 9B6B ldr r3, [r3, #56] 5497 .loc 1 3044 42 5498 011e 0022 movs r2, #0 5499 0120 DA62 str r2, [r3, #44] 3045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 151 5500 .loc 1 3045 11 5501 0122 FB68 ldr r3, [r7, #12] 5502 0124 9B6B ldr r3, [r3, #56] 5503 .loc 1 3045 39 5504 0126 0022 movs r2, #0 5505 0128 5A63 str r2, [r3, #52] 3046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX 5506 .loc 1 3048 23 5507 012a FB68 ldr r3, [r7, #12] 5508 012c 986B ldr r0, [r3, #56] 5509 012e 396A ldr r1, [r7, #32] 5510 .loc 1 3048 86 5511 0130 FB68 ldr r3, [r7, #12] 5512 0132 1B68 ldr r3, [r3] 5513 .loc 1 3048 81 5514 0134 2833 adds r3, r3, #40 5515 .loc 1 3048 23 5516 0136 1A46 mov r2, r3 3049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5517 .loc 1 3049 44 5518 0138 FB68 ldr r3, [r7, #12] 5519 013a 1B8D ldrh r3, [r3, #40] 3048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5520 .loc 1 3048 23 5521 013c FFF7FEFF bl HAL_DMA_Start_IT 5522 0140 0346 mov r3, r0 5523 0142 FB75 strb r3, [r7, #23] 3050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 5524 .loc 1 3066 8 5525 0144 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 5526 0146 002B cmp r3, #0 5527 0148 28D1 bne .L260 5528 014a 13E0 b .L262 5529 .L258: 3054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5530 .loc 1 3054 23 5531 014c FB68 ldr r3, [r7, #12] 5532 014e 2022 movs r2, #32 5533 0150 83F84120 strb r2, [r3, #65] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 152 3055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5534 .loc 1 3055 23 5535 0154 FB68 ldr r3, [r7, #12] 5536 0156 0022 movs r2, #0 5537 0158 83F84220 strb r2, [r3, #66] 3058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5538 .loc 1 3058 23 5539 015c FB68 ldr r3, [r7, #12] 5540 015e 5B6C ldr r3, [r3, #68] 5541 0160 43F08002 orr r2, r3, #128 5542 0164 FB68 ldr r3, [r7, #12] 5543 0166 5A64 str r2, [r3, #68] 3061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5544 .loc 1 3061 7 5545 0168 FB68 ldr r3, [r7, #12] 5546 016a 0022 movs r2, #0 5547 016c 83F84020 strb r2, [r3, #64] 3063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5548 .loc 1 3063 14 5549 0170 0123 movs r3, #1 5550 0172 28E0 b .L251 5551 .L262: 3067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 3069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START 5552 .loc 1 3069 7 5553 0174 FB88 ldrh r3, [r7, #6] @ movhi 5554 0176 DAB2 uxtb r2, r3 5555 0178 7989 ldrh r1, [r7, #10] 5556 017a 1A4B ldr r3, .L263+20 5557 017c 0093 str r3, [sp] 5558 017e 4FF08073 mov r3, #16777216 5559 0182 F868 ldr r0, [r7, #12] 5560 0184 FFF7FEFF bl I2C_TransferConfig 3070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5561 .loc 1 3072 7 5562 0188 FB68 ldr r3, [r7, #12] 5563 018a 0022 movs r2, #0 5564 018c 83F84020 strb r2, [r3, #64] 3073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5565 .loc 1 3081 7 5566 0190 0121 movs r1, #1 5567 0192 F868 ldr r0, [r7, #12] 5568 0194 FFF7FEFF bl I2C_Enable_IRQ 3082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 153 3085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5569 .loc 1 3098 12 5570 0198 0023 movs r3, #0 5571 019a 14E0 b .L251 5572 .L260: 3086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5573 .loc 1 3086 23 5574 019c FB68 ldr r3, [r7, #12] 5575 019e 2022 movs r2, #32 5576 01a0 83F84120 strb r2, [r3, #65] 3087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5577 .loc 1 3087 23 5578 01a4 FB68 ldr r3, [r7, #12] 5579 01a6 0022 movs r2, #0 5580 01a8 83F84220 strb r2, [r3, #66] 3090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5581 .loc 1 3090 23 5582 01ac FB68 ldr r3, [r7, #12] 5583 01ae 5B6C ldr r3, [r3, #68] 5584 01b0 43F01002 orr r2, r3, #16 5585 01b4 FB68 ldr r3, [r7, #12] 5586 01b6 5A64 str r2, [r3, #68] 3093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5587 .loc 1 3093 7 5588 01b8 FB68 ldr r3, [r7, #12] 5589 01ba 0022 movs r2, #0 5590 01bc 83F84020 strb r2, [r3, #64] 3095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5591 .loc 1 3095 14 5592 01c0 0123 movs r3, #1 5593 01c2 00E0 b .L251 5594 .L248: 3099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5595 .loc 1 3102 12 5596 01c4 0223 movs r3, #2 5597 .L251: 3103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5598 .loc 1 3104 1 5599 01c6 1846 mov r0, r3 5600 01c8 1837 adds r7, r7, #24 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 154 5601 .LCFI105: 5602 .cfi_def_cfa_offset 8 5603 01ca BD46 mov sp, r7 5604 .LCFI106: 5605 .cfi_def_cfa_register 13 5606 @ sp needed 5607 01cc 80BD pop {r7, pc} 5608 .L264: 5609 01ce 00BF .align 2 5610 .L263: 5611 01d0 00000000 .word .LC0 5612 01d4 0000FFFF .word -65536 5613 01d8 00000000 .word I2C_Mem_ISR_DMA 5614 01dc 00000000 .word I2C_DMAMasterTransmitCplt 5615 01e0 00000000 .word I2C_DMAError 5616 01e4 00200080 .word -2147475456 5617 .cfi_endproc 5618 .LFE150: 5620 .section .text.HAL_I2C_Mem_Read_DMA,"ax",%progbits 5621 .align 1 5622 .global HAL_I2C_Mem_Read_DMA 5623 .syntax unified 5624 .thumb 5625 .thumb_func 5627 HAL_I2C_Mem_Read_DMA: 5628 .LFB151: 3105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3107: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. 3108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 3113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 3114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be read 3116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3118: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 3119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) 3120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5629 .loc 1 3120 1 5630 .cfi_startproc 5631 @ args = 8, pretend = 0, frame = 24 5632 @ frame_needed = 1, uses_anonymous_args = 0 5633 0000 80B5 push {r7, lr} 5634 .LCFI107: 5635 .cfi_def_cfa_offset 8 5636 .cfi_offset 7, -8 5637 .cfi_offset 14, -4 5638 0002 88B0 sub sp, sp, #32 5639 .LCFI108: 5640 .cfi_def_cfa_offset 40 5641 0004 02AF add r7, sp, #8 5642 .LCFI109: 5643 .cfi_def_cfa 7, 32 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 155 5644 0006 F860 str r0, [r7, #12] 5645 0008 0846 mov r0, r1 5646 000a 1146 mov r1, r2 5647 000c 1A46 mov r2, r3 5648 000e 0346 mov r3, r0 @ movhi 5649 0010 7B81 strh r3, [r7, #10] @ movhi 5650 0012 0B46 mov r3, r1 @ movhi 5651 0014 3B81 strh r3, [r7, #8] @ movhi 5652 0016 1346 mov r3, r2 @ movhi 5653 0018 FB80 strh r3, [r7, #6] @ movhi 3121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); 5654 .loc 1 3124 3 5655 001a FB88 ldrh r3, [r7, #6] 5656 001c 012B cmp r3, #1 5657 001e 07D0 beq .L266 5658 .loc 1 3124 3 is_stmt 0 discriminator 1 5659 0020 FB88 ldrh r3, [r7, #6] 5660 0022 022B cmp r3, #2 5661 0024 04D0 beq .L266 5662 .loc 1 3124 3 discriminator 2 5663 0026 40F63441 movw r1, #3124 5664 002a 6848 ldr r0, .L282 5665 002c FFF7FEFF bl assert_failed 5666 .L266: 3125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5667 .loc 1 3126 11 is_stmt 1 5668 0030 FB68 ldr r3, [r7, #12] 5669 0032 93F84130 ldrb r3, [r3, #65] 5670 0036 DBB2 uxtb r3, r3 5671 .loc 1 3126 6 5672 0038 202B cmp r3, #32 5673 003a 40F0C280 bne .L267 3127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 5674 .loc 1 3128 8 5675 003e 3B6A ldr r3, [r7, #32] 5676 0040 002B cmp r3, #0 5677 0042 02D0 beq .L268 5678 .loc 1 3128 25 discriminator 1 5679 0044 BB8C ldrh r3, [r7, #36] 5680 0046 002B cmp r3, #0 5681 0048 05D1 bne .L269 5682 .L268: 3129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 5683 .loc 1 3130 23 5684 004a FB68 ldr r3, [r7, #12] 5685 004c 4FF40072 mov r2, #512 5686 0050 5A64 str r2, [r3, #68] 3131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 5687 .loc 1 3131 15 5688 0052 0123 movs r3, #1 5689 0054 B6E0 b .L270 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 156 5690 .L269: 3132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5691 .loc 1 3134 9 5692 0056 FB68 ldr r3, [r7, #12] 5693 0058 1B68 ldr r3, [r3] 5694 005a 9B69 ldr r3, [r3, #24] 5695 005c 03F40043 and r3, r3, #32768 5696 .loc 1 3134 8 5697 0060 B3F5004F cmp r3, #32768 5698 0064 01D1 bne .L271 3135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5699 .loc 1 3136 14 5700 0066 0223 movs r3, #2 5701 0068 ACE0 b .L270 5702 .L271: 3137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 5703 .loc 1 3140 5 5704 006a FB68 ldr r3, [r7, #12] 5705 006c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 5706 0070 012B cmp r3, #1 5707 0072 01D1 bne .L272 5708 .loc 1 3140 5 is_stmt 0 discriminator 1 5709 0074 0223 movs r3, #2 5710 0076 A5E0 b .L270 5711 .L272: 5712 .loc 1 3140 5 discriminator 2 5713 0078 FB68 ldr r3, [r7, #12] 5714 007a 0122 movs r2, #1 5715 007c 83F84020 strb r2, [r3, #64] 3141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 5716 .loc 1 3142 23 is_stmt 1 discriminator 2 5717 0080 FB68 ldr r3, [r7, #12] 5718 0082 2222 movs r2, #34 5719 0084 83F84120 strb r2, [r3, #65] 3143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; 5720 .loc 1 3143 23 discriminator 2 5721 0088 FB68 ldr r3, [r7, #12] 5722 008a 4022 movs r2, #64 5723 008c 83F84220 strb r2, [r3, #66] 3144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 5724 .loc 1 3144 23 discriminator 2 5725 0090 FB68 ldr r3, [r7, #12] 5726 0092 0022 movs r2, #0 5727 0094 5A64 str r2, [r3, #68] 3145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 5728 .loc 1 3147 23 discriminator 2 5729 0096 FB68 ldr r3, [r7, #12] 5730 0098 3A6A ldr r2, [r7, #32] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 157 5731 009a 5A62 str r2, [r3, #36] 3148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 5732 .loc 1 3148 23 discriminator 2 5733 009c FB68 ldr r3, [r7, #12] 5734 009e BA8C ldrh r2, [r7, #36] @ movhi 5735 00a0 5A85 strh r2, [r3, #42] @ movhi 3149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 5736 .loc 1 3149 23 discriminator 2 5737 00a2 FB68 ldr r3, [r7, #12] 5738 00a4 4A4A ldr r2, .L282+4 5739 00a6 DA62 str r2, [r3, #44] 3150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; 5740 .loc 1 3150 23 discriminator 2 5741 00a8 FB68 ldr r3, [r7, #12] 5742 00aa 4A4A ldr r2, .L282+8 5743 00ac 5A63 str r2, [r3, #52] 3151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; 5744 .loc 1 3151 23 discriminator 2 5745 00ae 7A89 ldrh r2, [r7, #10] 5746 00b0 FB68 ldr r3, [r7, #12] 5747 00b2 DA64 str r2, [r3, #76] 3152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 5748 .loc 1 3153 13 discriminator 2 5749 00b4 FB68 ldr r3, [r7, #12] 5750 00b6 5B8D ldrh r3, [r3, #42] @ movhi 5751 00b8 9BB2 uxth r3, r3 5752 .loc 1 3153 8 discriminator 2 5753 00ba FF2B cmp r3, #255 5754 00bc 03D9 bls .L273 3154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 5755 .loc 1 3155 22 5756 00be FB68 ldr r3, [r7, #12] 5757 00c0 FF22 movs r2, #255 5758 00c2 1A85 strh r2, [r3, #40] @ movhi 5759 00c4 04E0 b .L274 5760 .L273: 3156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 5761 .loc 1 3159 28 5762 00c6 FB68 ldr r3, [r7, #12] 5763 00c8 5B8D ldrh r3, [r3, #42] @ movhi 5764 00ca 9AB2 uxth r2, r3 5765 .loc 1 3159 22 5766 00cc FB68 ldr r3, [r7, #12] 5767 00ce 1A85 strh r2, [r3, #40] @ movhi 5768 .L274: 3160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 3163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 5769 .loc 1 3163 8 5770 00d0 FB88 ldrh r3, [r7, #6] 5771 00d2 012B cmp r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 158 5772 00d4 09D1 bne .L275 3164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */ 3166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 5773 .loc 1 3166 30 5774 00d6 3B89 ldrh r3, [r7, #8] @ movhi 5775 00d8 DAB2 uxtb r2, r3 5776 .loc 1 3166 11 5777 00da FB68 ldr r3, [r7, #12] 5778 00dc 1B68 ldr r3, [r3] 5779 .loc 1 3166 28 5780 00de 9A62 str r2, [r3, #40] 3167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 3169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 5781 .loc 1 3169 24 5782 00e0 FB68 ldr r3, [r7, #12] 5783 00e2 4FF0FF32 mov r2, #-1 5784 00e6 1A65 str r2, [r3, #80] 5785 00e8 0BE0 b .L276 5786 .L275: 3170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 3172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ 3175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 5787 .loc 1 3175 30 5788 00ea 3B89 ldrh r3, [r7, #8] 5789 00ec 1B0A lsrs r3, r3, #8 5790 00ee 9BB2 uxth r3, r3 5791 00f0 DAB2 uxtb r2, r3 5792 .loc 1 3175 11 5793 00f2 FB68 ldr r3, [r7, #12] 5794 00f4 1B68 ldr r3, [r3] 5795 .loc 1 3175 28 5796 00f6 9A62 str r2, [r3, #40] 3176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ 3178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); 5797 .loc 1 3178 26 5798 00f8 3B89 ldrh r3, [r7, #8] @ movhi 5799 00fa DBB2 uxtb r3, r3 5800 00fc 1A46 mov r2, r3 5801 .loc 1 3178 24 5802 00fe FB68 ldr r3, [r7, #12] 5803 0100 1A65 str r2, [r3, #80] 5804 .L276: 3179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 5805 .loc 1 3181 13 5806 0102 FB68 ldr r3, [r7, #12] 5807 0104 DB6B ldr r3, [r3, #60] 5808 .loc 1 3181 8 5809 0106 002B cmp r3, #0 5810 0108 20D0 beq .L277 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 159 3182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 5811 .loc 1 3184 11 5812 010a FB68 ldr r3, [r7, #12] 5813 010c DB6B ldr r3, [r3, #60] 5814 .loc 1 3184 38 5815 010e 324A ldr r2, .L282+12 5816 0110 9A62 str r2, [r3, #40] 3185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 5817 .loc 1 3187 11 5818 0112 FB68 ldr r3, [r7, #12] 5819 0114 DB6B ldr r3, [r3, #60] 5820 .loc 1 3187 39 5821 0116 314A ldr r2, .L282+16 5822 0118 1A63 str r2, [r3, #48] 3188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 5823 .loc 1 3190 11 5824 011a FB68 ldr r3, [r7, #12] 5825 011c DB6B ldr r3, [r3, #60] 5826 .loc 1 3190 42 5827 011e 0022 movs r2, #0 5828 0120 DA62 str r2, [r3, #44] 3191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 5829 .loc 1 3191 11 5830 0122 FB68 ldr r3, [r7, #12] 5831 0124 DB6B ldr r3, [r3, #60] 5832 .loc 1 3191 39 5833 0126 0022 movs r2, #0 5834 0128 5A63 str r2, [r3, #52] 3192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa 5835 .loc 1 3194 23 5836 012a FB68 ldr r3, [r7, #12] 5837 012c D86B ldr r0, [r3, #60] 5838 .loc 1 3194 69 5839 012e FB68 ldr r3, [r7, #12] 5840 0130 1B68 ldr r3, [r3] 5841 .loc 1 3194 64 5842 0132 2433 adds r3, r3, #36 5843 .loc 1 3194 23 5844 0134 1946 mov r1, r3 5845 0136 3A6A ldr r2, [r7, #32] 3195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5846 .loc 1 3195 44 5847 0138 FB68 ldr r3, [r7, #12] 5848 013a 1B8D ldrh r3, [r3, #40] 3194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 5849 .loc 1 3194 23 5850 013c FFF7FEFF bl HAL_DMA_Start_IT 5851 0140 0346 mov r3, r0 5852 0142 FB75 strb r3, [r7, #23] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 160 3196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 5853 .loc 1 3212 8 5854 0144 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 5855 0146 002B cmp r3, #0 5856 0148 27D1 bne .L279 5857 014a 13E0 b .L281 5858 .L277: 3200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5859 .loc 1 3200 23 5860 014c FB68 ldr r3, [r7, #12] 5861 014e 2022 movs r2, #32 5862 0150 83F84120 strb r2, [r3, #65] 3201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5863 .loc 1 3201 23 5864 0154 FB68 ldr r3, [r7, #12] 5865 0156 0022 movs r2, #0 5866 0158 83F84220 strb r2, [r3, #66] 3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5867 .loc 1 3204 23 5868 015c FB68 ldr r3, [r7, #12] 5869 015e 5B6C ldr r3, [r3, #68] 5870 0160 43F08002 orr r2, r3, #128 5871 0164 FB68 ldr r3, [r7, #12] 5872 0166 5A64 str r2, [r3, #68] 3207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5873 .loc 1 3207 7 5874 0168 FB68 ldr r3, [r7, #12] 5875 016a 0022 movs r2, #0 5876 016c 83F84020 strb r2, [r3, #64] 3209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5877 .loc 1 3209 14 5878 0170 0123 movs r3, #1 5879 0172 27E0 b .L270 5880 .L281: 3213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ 3215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_STAR 5881 .loc 1 3215 7 5882 0174 FB88 ldrh r3, [r7, #6] @ movhi 5883 0176 DAB2 uxtb r2, r3 5884 0178 7989 ldrh r1, [r7, #10] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 161 5885 017a 194B ldr r3, .L282+20 5886 017c 0093 str r3, [sp] 5887 017e 0023 movs r3, #0 5888 0180 F868 ldr r0, [r7, #12] 5889 0182 FFF7FEFF bl I2C_TransferConfig 3216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 5890 .loc 1 3218 7 5891 0186 FB68 ldr r3, [r7, #12] 5892 0188 0022 movs r2, #0 5893 018a 83F84020 strb r2, [r3, #64] 3219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 5894 .loc 1 3227 7 5895 018e 0121 movs r1, #1 5896 0190 F868 ldr r0, [r7, #12] 5897 0192 FFF7FEFF bl I2C_Enable_IRQ 3228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 3237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 5898 .loc 1 3244 12 5899 0196 0023 movs r3, #0 5900 0198 14E0 b .L270 5901 .L279: 3232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 5902 .loc 1 3232 23 5903 019a FB68 ldr r3, [r7, #12] 5904 019c 2022 movs r2, #32 5905 019e 83F84120 strb r2, [r3, #65] 3233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5906 .loc 1 3233 23 5907 01a2 FB68 ldr r3, [r7, #12] 5908 01a4 0022 movs r2, #0 5909 01a6 83F84220 strb r2, [r3, #66] 3236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 162 5910 .loc 1 3236 23 5911 01aa FB68 ldr r3, [r7, #12] 5912 01ac 5B6C ldr r3, [r3, #68] 5913 01ae 43F01002 orr r2, r3, #16 5914 01b2 FB68 ldr r3, [r7, #12] 5915 01b4 5A64 str r2, [r3, #68] 3239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5916 .loc 1 3239 7 5917 01b6 FB68 ldr r3, [r7, #12] 5918 01b8 0022 movs r2, #0 5919 01ba 83F84020 strb r2, [r3, #64] 3241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5920 .loc 1 3241 14 5921 01be 0123 movs r3, #1 5922 01c0 00E0 b .L270 5923 .L267: 3245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5924 .loc 1 3248 12 5925 01c2 0223 movs r3, #2 5926 .L270: 3249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5927 .loc 1 3250 1 5928 01c4 1846 mov r0, r3 5929 01c6 1837 adds r7, r7, #24 5930 .LCFI110: 5931 .cfi_def_cfa_offset 8 5932 01c8 BD46 mov sp, r7 5933 .LCFI111: 5934 .cfi_def_cfa_register 13 5935 @ sp needed 5936 01ca 80BD pop {r7, pc} 5937 .L283: 5938 .align 2 5939 .L282: 5940 01cc 00000000 .word .LC0 5941 01d0 0000FFFF .word -65536 5942 01d4 00000000 .word I2C_Mem_ISR_DMA 5943 01d8 00000000 .word I2C_DMAMasterReceiveCplt 5944 01dc 00000000 .word I2C_DMAError 5945 01e0 00200080 .word -2147475456 5946 .cfi_endproc 5947 .LFE151: 5949 .section .text.HAL_I2C_IsDeviceReady,"ax",%progbits 5950 .align 1 5951 .global HAL_I2C_IsDeviceReady 5952 .syntax unified 5953 .thumb 5954 .thumb_func 5956 HAL_I2C_IsDeviceReady: 5957 .LFB152: 3251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Checks if target device is ready for communication. ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 163 3254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This function is used with Memory devices 3255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Trials Number of trials 3260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 3261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria 3264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout) 3265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5958 .loc 1 3265 1 5959 .cfi_startproc 5960 @ args = 0, pretend = 0, frame = 32 5961 @ frame_needed = 1, uses_anonymous_args = 0 5962 0000 80B5 push {r7, lr} 5963 .LCFI112: 5964 .cfi_def_cfa_offset 8 5965 .cfi_offset 7, -8 5966 .cfi_offset 14, -4 5967 0002 8AB0 sub sp, sp, #40 5968 .LCFI113: 5969 .cfi_def_cfa_offset 48 5970 0004 02AF add r7, sp, #8 5971 .LCFI114: 5972 .cfi_def_cfa 7, 40 5973 0006 F860 str r0, [r7, #12] 5974 0008 7A60 str r2, [r7, #4] 5975 000a 3B60 str r3, [r7] 5976 000c 0B46 mov r3, r1 @ movhi 5977 000e 7B81 strh r3, [r7, #10] @ movhi 3266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart; 3267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t I2C_Trials = 0UL; 5978 .loc 1 3268 17 5979 0010 0023 movs r3, #0 5980 0012 7B61 str r3, [r7, #20] 3269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp1; 3271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp2; 3272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 5981 .loc 1 3273 11 5982 0014 FB68 ldr r3, [r7, #12] 5983 0016 93F84130 ldrb r3, [r3, #65] 5984 001a DBB2 uxtb r3, r3 5985 .loc 1 3273 6 5986 001c 202B cmp r3, #32 5987 001e 40F0D680 bne .L285 3274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) 5988 .loc 1 3275 9 5989 0022 FB68 ldr r3, [r7, #12] 5990 0024 1B68 ldr r3, [r3] 5991 0026 9B69 ldr r3, [r3, #24] 5992 0028 03F40043 and r3, r3, #32768 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 164 5993 .loc 1 3275 8 5994 002c B3F5004F cmp r3, #32768 5995 0030 01D1 bne .L286 3276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 5996 .loc 1 3277 14 5997 0032 0223 movs r3, #2 5998 0034 CCE0 b .L287 5999 .L286: 3278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6000 .loc 1 3281 5 6001 0036 FB68 ldr r3, [r7, #12] 6002 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6003 003c 012B cmp r3, #1 6004 003e 01D1 bne .L288 6005 .loc 1 3281 5 is_stmt 0 discriminator 1 6006 0040 0223 movs r3, #2 6007 0042 C5E0 b .L287 6008 .L288: 6009 .loc 1 3281 5 discriminator 2 6010 0044 FB68 ldr r3, [r7, #12] 6011 0046 0122 movs r2, #1 6012 0048 83F84020 strb r2, [r3, #64] 3282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; 6013 .loc 1 3283 17 is_stmt 1 discriminator 2 6014 004c FB68 ldr r3, [r7, #12] 6015 004e 2422 movs r2, #36 6016 0050 83F84120 strb r2, [r3, #65] 3284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6017 .loc 1 3284 21 discriminator 2 6018 0054 FB68 ldr r3, [r7, #12] 6019 0056 0022 movs r2, #0 6020 0058 5A64 str r2, [r3, #68] 6021 .L299: 3285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do 3287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Start */ 3289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); 6022 .loc 1 3289 29 6023 005a FB68 ldr r3, [r7, #12] 6024 005c DB68 ldr r3, [r3, #12] 6025 005e 012B cmp r3, #1 6026 0060 07D1 bne .L289 6027 .loc 1 3289 29 is_stmt 0 discriminator 1 6028 0062 7B89 ldrh r3, [r7, #10] 6029 0064 C3F30903 ubfx r3, r3, #0, #10 6030 0068 43F00073 orr r3, r3, #33554432 6031 006c 43F40053 orr r3, r3, #8192 6032 0070 06E0 b .L290 6033 .L289: 6034 .loc 1 3289 29 discriminator 2 6035 0072 7B89 ldrh r3, [r7, #10] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 165 6036 0074 C3F30903 ubfx r3, r3, #0, #10 6037 0078 43F00073 orr r3, r3, #33554432 6038 007c 43F42053 orr r3, r3, #10240 6039 .L290: 6040 .loc 1 3289 11 is_stmt 1 discriminator 4 6041 0080 FA68 ldr r2, [r7, #12] 6042 0082 1268 ldr r2, [r2] 6043 .loc 1 3289 27 discriminator 4 6044 0084 5360 str r3, [r2, #4] 3290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ 3292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set or a NACK flag is set*/ 3293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 6045 .loc 1 3293 19 discriminator 4 6046 0086 FFF7FEFF bl HAL_GetTick 6047 008a B861 str r0, [r7, #24] 3294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); 6048 .loc 1 3295 14 discriminator 4 6049 008c FB68 ldr r3, [r7, #12] 6050 008e 1B68 ldr r3, [r3] 6051 0090 9B69 ldr r3, [r3, #24] 6052 0092 03F02003 and r3, r3, #32 6053 0096 202B cmp r3, #32 6054 0098 0CBF ite eq 6055 009a 0123 moveq r3, #1 6056 009c 0023 movne r3, #0 6057 009e DBB2 uxtb r3, r3 6058 .loc 1 3295 12 discriminator 4 6059 00a0 FB77 strb r3, [r7, #31] 3296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); 6060 .loc 1 3296 14 discriminator 4 6061 00a2 FB68 ldr r3, [r7, #12] 6062 00a4 1B68 ldr r3, [r3] 6063 00a6 9B69 ldr r3, [r3, #24] 6064 00a8 03F01003 and r3, r3, #16 6065 00ac 102B cmp r3, #16 6066 00ae 0CBF ite eq 6067 00b0 0123 moveq r3, #1 6068 00b2 0023 movne r3, #0 6069 00b4 DBB2 uxtb r3, r3 6070 .loc 1 3296 12 discriminator 4 6071 00b6 BB77 strb r3, [r7, #30] 3297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((tmp1 == RESET) && (tmp2 == RESET)) 6072 .loc 1 3298 13 discriminator 4 6073 00b8 34E0 b .L291 6074 .L295: 3299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 6075 .loc 1 3300 12 6076 00ba 3B68 ldr r3, [r7] 6077 00bc B3F1FF3F cmp r3, #-1 6078 00c0 1AD0 beq .L292 3301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 6079 .loc 1 3302 17 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 166 6080 00c2 FFF7FEFF bl HAL_GetTick 6081 00c6 0246 mov r2, r0 6082 .loc 1 3302 31 6083 00c8 BB69 ldr r3, [r7, #24] 6084 00ca D31A subs r3, r2, r3 6085 .loc 1 3302 14 6086 00cc 3A68 ldr r2, [r7] 6087 00ce 9A42 cmp r2, r3 6088 00d0 02D3 bcc .L293 6089 .loc 1 3302 55 discriminator 1 6090 00d2 3B68 ldr r3, [r7] 6091 00d4 002B cmp r3, #0 6092 00d6 0FD1 bne .L292 6093 .L293: 3303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6094 .loc 1 3305 25 6095 00d8 FB68 ldr r3, [r7, #12] 6096 00da 2022 movs r2, #32 6097 00dc 83F84120 strb r2, [r3, #65] 3306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 6098 .loc 1 3308 29 6099 00e0 FB68 ldr r3, [r7, #12] 6100 00e2 5B6C ldr r3, [r3, #68] 6101 00e4 43F02002 orr r2, r3, #32 6102 00e8 FB68 ldr r3, [r7, #12] 6103 00ea 5A64 str r2, [r3, #68] 3309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6104 .loc 1 3311 13 6105 00ec FB68 ldr r3, [r7, #12] 6106 00ee 0022 movs r2, #0 6107 00f0 83F84020 strb r2, [r3, #64] 3312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6108 .loc 1 3313 20 6109 00f4 0123 movs r3, #1 6110 00f6 6BE0 b .L287 6111 .L292: 3314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); 6112 .loc 1 3317 16 6113 00f8 FB68 ldr r3, [r7, #12] 6114 00fa 1B68 ldr r3, [r3] 6115 00fc 9B69 ldr r3, [r3, #24] 6116 00fe 03F02003 and r3, r3, #32 6117 0102 202B cmp r3, #32 6118 0104 0CBF ite eq 6119 0106 0123 moveq r3, #1 6120 0108 0023 movne r3, #0 6121 010a DBB2 uxtb r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 167 6122 .loc 1 3317 14 6123 010c FB77 strb r3, [r7, #31] 3318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); 6124 .loc 1 3318 16 6125 010e FB68 ldr r3, [r7, #12] 6126 0110 1B68 ldr r3, [r3] 6127 0112 9B69 ldr r3, [r3, #24] 6128 0114 03F01003 and r3, r3, #16 6129 0118 102B cmp r3, #16 6130 011a 0CBF ite eq 6131 011c 0123 moveq r3, #1 6132 011e 0023 movne r3, #0 6133 0120 DBB2 uxtb r3, r3 6134 .loc 1 3318 14 6135 0122 BB77 strb r3, [r7, #30] 6136 .L291: 3298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6137 .loc 1 3298 13 6138 0124 FB7F ldrb r3, [r7, #31] @ zero_extendqisi2 6139 0126 002B cmp r3, #0 6140 0128 02D1 bne .L294 3298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6141 .loc 1 3298 30 discriminator 1 6142 012a BB7F ldrb r3, [r7, #30] @ zero_extendqisi2 6143 012c 002B cmp r3, #0 6144 012e C4D0 beq .L295 6145 .L294: 3319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if the NACKF flag has not been set */ 3322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) 6146 .loc 1 3322 11 6147 0130 FB68 ldr r3, [r7, #12] 6148 0132 1B68 ldr r3, [r3] 6149 0134 9B69 ldr r3, [r3, #24] 6150 0136 03F01003 and r3, r3, #16 6151 .loc 1 3322 10 6152 013a 102B cmp r3, #16 6153 013c 1AD0 beq .L296 3323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ 3325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) 6154 .loc 1 3325 13 6155 013e BB69 ldr r3, [r7, #24] 6156 0140 0093 str r3, [sp] 6157 0142 3B68 ldr r3, [r7] 6158 0144 0022 movs r2, #0 6159 0146 2021 movs r1, #32 6160 0148 F868 ldr r0, [r7, #12] 6161 014a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 6162 014e 0346 mov r3, r0 6163 .loc 1 3325 12 6164 0150 002B cmp r3, #0 6165 0152 01D0 beq .L297 3326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6166 .loc 1 3327 18 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 168 6167 0154 0123 movs r3, #1 6168 0156 3BE0 b .L287 6169 .L297: 3328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 3331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 6170 .loc 1 3331 9 6171 0158 FB68 ldr r3, [r7, #12] 6172 015a 1B68 ldr r3, [r3] 6173 015c 2022 movs r2, #32 6174 015e DA61 str r2, [r3, #28] 3332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Device is ready */ 3334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6175 .loc 1 3334 21 6176 0160 FB68 ldr r3, [r7, #12] 6177 0162 2022 movs r2, #32 6178 0164 83F84120 strb r2, [r3, #65] 3335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6179 .loc 1 3337 9 6180 0168 FB68 ldr r3, [r7, #12] 6181 016a 0022 movs r2, #0 6182 016c 83F84020 strb r2, [r3, #64] 3338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 6183 .loc 1 3339 16 6184 0170 0023 movs r3, #0 6185 0172 2DE0 b .L287 6186 .L296: 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 **** /* Wait until STOPF flag is reset */ 3344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) 6187 .loc 1 3344 13 6188 0174 BB69 ldr r3, [r7, #24] 6189 0176 0093 str r3, [sp] 6190 0178 3B68 ldr r3, [r7] 6191 017a 0022 movs r2, #0 6192 017c 2021 movs r1, #32 6193 017e F868 ldr r0, [r7, #12] 6194 0180 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 6195 0184 0346 mov r3, r0 6196 .loc 1 3344 12 6197 0186 002B cmp r3, #0 6198 0188 01D0 beq .L298 3345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6199 .loc 1 3346 18 6200 018a 0123 movs r3, #1 6201 018c 20E0 b .L287 6202 .L298: 3347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 169 3349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 3350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 6203 .loc 1 3350 9 6204 018e FB68 ldr r3, [r7, #12] 6205 0190 1B68 ldr r3, [r3] 6206 0192 1022 movs r2, #16 6207 0194 DA61 str r2, [r3, #28] 3351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag, auto generated with autoend*/ 3353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 6208 .loc 1 3353 9 6209 0196 FB68 ldr r3, [r7, #12] 6210 0198 1B68 ldr r3, [r3] 6211 019a 2022 movs r2, #32 6212 019c DA61 str r2, [r3, #28] 3354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Trials */ 3357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Trials++; 6213 .loc 1 3357 17 6214 019e 7B69 ldr r3, [r7, #20] 6215 01a0 0133 adds r3, r3, #1 6216 01a2 7B61 str r3, [r7, #20] 3358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (I2C_Trials < Trials); 6217 .loc 1 3358 25 6218 01a4 7B69 ldr r3, [r7, #20] 6219 .loc 1 3358 5 6220 01a6 7A68 ldr r2, [r7, #4] 6221 01a8 9A42 cmp r2, r3 6222 01aa 3FF656AF bhi .L299 3359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6223 .loc 1 3361 17 6224 01ae FB68 ldr r3, [r7, #12] 6225 01b0 2022 movs r2, #32 6226 01b2 83F84120 strb r2, [r3, #65] 3362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 6227 .loc 1 3364 21 6228 01b6 FB68 ldr r3, [r7, #12] 6229 01b8 5B6C ldr r3, [r3, #68] 6230 01ba 43F02002 orr r2, r3, #32 6231 01be FB68 ldr r3, [r7, #12] 6232 01c0 5A64 str r2, [r3, #68] 3365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6233 .loc 1 3367 5 6234 01c2 FB68 ldr r3, [r7, #12] 6235 01c4 0022 movs r2, #0 6236 01c6 83F84020 strb r2, [r3, #64] 3368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 6237 .loc 1 3369 12 6238 01ca 0123 movs r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 170 6239 01cc 00E0 b .L287 6240 .L285: 3370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 6241 .loc 1 3373 12 6242 01ce 0223 movs r3, #2 6243 .L287: 3374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6244 .loc 1 3375 1 6245 01d0 1846 mov r0, r3 6246 01d2 2037 adds r7, r7, #32 6247 .LCFI115: 6248 .cfi_def_cfa_offset 8 6249 01d4 BD46 mov sp, r7 6250 .LCFI116: 6251 .cfi_def_cfa_register 13 6252 @ sp needed 6253 01d6 80BD pop {r7, pc} 6254 .cfi_endproc 6255 .LFE152: 6257 .section .text.HAL_I2C_Master_Seq_Transmit_IT,"ax",%progbits 6258 .align 1 6259 .global HAL_I2C_Master_Seq_Transmit_IT 6260 .syntax unified 6261 .thumb 6262 .thumb_func 6264 HAL_I2C_Master_Seq_Transmit_IT: 6265 .LFB153: 3376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3378: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 3379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint 3390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6266 .loc 1 3391 1 6267 .cfi_startproc 6268 @ args = 4, pretend = 0, frame = 32 6269 @ frame_needed = 1, uses_anonymous_args = 0 6270 0000 80B5 push {r7, lr} 6271 .LCFI117: 6272 .cfi_def_cfa_offset 8 6273 .cfi_offset 7, -8 6274 .cfi_offset 14, -4 6275 0002 8AB0 sub sp, sp, #40 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 171 6276 .LCFI118: 6277 .cfi_def_cfa_offset 48 6278 0004 02AF add r7, sp, #8 6279 .LCFI119: 6280 .cfi_def_cfa 7, 40 6281 0006 F860 str r0, [r7, #12] 6282 0008 7A60 str r2, [r7, #4] 6283 000a 1A46 mov r2, r3 6284 000c 0B46 mov r3, r1 @ movhi 6285 000e 7B81 strh r3, [r7, #10] @ movhi 6286 0010 1346 mov r3, r2 @ movhi 6287 0012 3B81 strh r3, [r7, #8] @ movhi 3392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; 6288 .loc 1 3393 12 6289 0014 684B ldr r3, .L317 6290 0016 BB61 str r3, [r7, #24] 3394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; 6291 .loc 1 3394 12 6292 0018 0023 movs r3, #0 6293 001a 7B61 str r3, [r7, #20] 3395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 6294 .loc 1 3397 3 6295 001c BB6A ldr r3, [r7, #40] 6296 001e 002B cmp r3, #0 6297 0020 1ED0 beq .L301 6298 .loc 1 3397 3 is_stmt 0 discriminator 1 6299 0022 BB6A ldr r3, [r7, #40] 6300 0024 B3F1807F cmp r3, #16777216 6301 0028 1AD0 beq .L301 6302 .loc 1 3397 3 discriminator 2 6303 002a BB6A ldr r3, [r7, #40] 6304 002c B3F1807F cmp r3, #16777216 6305 0030 16D0 beq .L301 6306 .loc 1 3397 3 discriminator 3 6307 0032 BB6A ldr r3, [r7, #40] 6308 0034 B3F1007F cmp r3, #33554432 6309 0038 12D0 beq .L301 6310 .loc 1 3397 3 discriminator 4 6311 003a BB6A ldr r3, [r7, #40] 6312 003c B3F1007F cmp r3, #33554432 6313 0040 0ED0 beq .L301 6314 .loc 1 3397 3 discriminator 5 6315 0042 BB6A ldr r3, [r7, #40] 6316 0044 002B cmp r3, #0 6317 0046 0BD0 beq .L301 6318 .loc 1 3397 3 discriminator 6 6319 0048 BB6A ldr r3, [r7, #40] 6320 004a AA2B cmp r3, #170 6321 004c 08D0 beq .L301 6322 .loc 1 3397 3 discriminator 7 6323 004e BB6A ldr r3, [r7, #40] 6324 0050 B3F52A4F cmp r3, #43520 6325 0054 04D0 beq .L301 6326 .loc 1 3397 3 discriminator 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 172 6327 0056 40F64551 movw r1, #3397 6328 005a 5848 ldr r0, .L317+4 6329 005c FFF7FEFF bl assert_failed 6330 .L301: 3398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 6331 .loc 1 3399 11 is_stmt 1 6332 0060 FB68 ldr r3, [r7, #12] 6333 0062 93F84130 ldrb r3, [r3, #65] 6334 0066 DBB2 uxtb r3, r3 6335 .loc 1 3399 6 6336 0068 202B cmp r3, #32 6337 006a 40F09F80 bne .L302 3400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6338 .loc 1 3402 5 6339 006e FB68 ldr r3, [r7, #12] 6340 0070 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6341 0074 012B cmp r3, #1 6342 0076 01D1 bne .L303 6343 .loc 1 3402 5 is_stmt 0 discriminator 1 6344 0078 0223 movs r3, #2 6345 007a 98E0 b .L304 6346 .L303: 6347 .loc 1 3402 5 discriminator 2 6348 007c FB68 ldr r3, [r7, #12] 6349 007e 0122 movs r2, #1 6350 0080 83F84020 strb r2, [r3, #64] 3403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 6351 .loc 1 3404 21 is_stmt 1 discriminator 2 6352 0084 FB68 ldr r3, [r7, #12] 6353 0086 2122 movs r2, #33 6354 0088 83F84120 strb r2, [r3, #65] 3405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 6355 .loc 1 3405 21 discriminator 2 6356 008c FB68 ldr r3, [r7, #12] 6357 008e 1022 movs r2, #16 6358 0090 83F84220 strb r2, [r3, #66] 3406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6359 .loc 1 3406 21 discriminator 2 6360 0094 FB68 ldr r3, [r7, #12] 6361 0096 0022 movs r2, #0 6362 0098 5A64 str r2, [r3, #68] 3407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 6363 .loc 1 3409 23 discriminator 2 6364 009a FB68 ldr r3, [r7, #12] 6365 009c 7A68 ldr r2, [r7, #4] 6366 009e 5A62 str r2, [r3, #36] 3410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 6367 .loc 1 3410 23 discriminator 2 6368 00a0 FB68 ldr r3, [r7, #12] 6369 00a2 3A89 ldrh r2, [r7, #8] @ movhi 6370 00a4 5A85 strh r2, [r3, #42] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 173 3411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 6371 .loc 1 3411 23 discriminator 2 6372 00a6 FB68 ldr r3, [r7, #12] 6373 00a8 BA6A ldr r2, [r7, #40] 6374 00aa DA62 str r2, [r3, #44] 3412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 6375 .loc 1 3412 23 discriminator 2 6376 00ac FB68 ldr r3, [r7, #12] 6377 00ae 444A ldr r2, .L317+8 6378 00b0 5A63 str r2, [r3, #52] 3413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6379 .loc 1 3415 13 discriminator 2 6380 00b2 FB68 ldr r3, [r7, #12] 6381 00b4 5B8D ldrh r3, [r3, #42] @ movhi 6382 00b6 9BB2 uxth r3, r3 6383 .loc 1 3415 8 discriminator 2 6384 00b8 FF2B cmp r3, #255 6385 00ba 06D9 bls .L305 3416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6386 .loc 1 3417 22 6387 00bc FB68 ldr r3, [r7, #12] 6388 00be FF22 movs r2, #255 6389 00c0 1A85 strh r2, [r3, #40] @ movhi 3418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 6390 .loc 1 3418 16 6391 00c2 4FF08073 mov r3, #16777216 6392 00c6 FB61 str r3, [r7, #28] 6393 00c8 07E0 b .L306 6394 .L305: 3419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6395 .loc 1 3422 28 6396 00ca FB68 ldr r3, [r7, #12] 6397 00cc 5B8D ldrh r3, [r3, #42] @ movhi 6398 00ce 9AB2 uxth r2, r3 6399 .loc 1 3422 22 6400 00d0 FB68 ldr r3, [r7, #12] 6401 00d2 1A85 strh r2, [r3, #40] @ movhi 3423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6402 .loc 1 3423 16 6403 00d4 FB68 ldr r3, [r7, #12] 6404 00d6 DB6A ldr r3, [r3, #44] 6405 00d8 FB61 str r3, [r7, #28] 6406 .L306: 3424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ 6407 .loc 1 3426 14 6408 00da FB68 ldr r3, [r7, #12] 6409 00dc 1B8D ldrh r3, [r3, #40] 6410 .loc 1 3426 8 6411 00de 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 174 6412 00e0 21D0 beq .L307 6413 .loc 1 3426 31 discriminator 1 6414 00e2 BB6A ldr r3, [r7, #40] 6415 00e4 002B cmp r3, #0 6416 00e6 03D0 beq .L308 6417 .loc 1 3426 68 discriminator 2 6418 00e8 BB6A ldr r3, [r7, #40] 6419 00ea B3F1007F cmp r3, #33554432 6420 00ee 1AD1 bne .L307 6421 .L308: 3427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) 3428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 3430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 3431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 6422 .loc 1 3431 35 6423 00f0 FB68 ldr r3, [r7, #12] 6424 00f2 5B6A ldr r3, [r3, #36] 6425 .loc 1 3431 30 6426 00f4 1A78 ldrb r2, [r3] @ zero_extendqisi2 6427 .loc 1 3431 11 6428 00f6 FB68 ldr r3, [r7, #12] 6429 00f8 1B68 ldr r3, [r3] 6430 .loc 1 3431 28 6431 00fa 9A62 str r2, [r3, #40] 3432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 3434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 6432 .loc 1 3434 11 6433 00fc FB68 ldr r3, [r7, #12] 6434 00fe 5B6A ldr r3, [r3, #36] 6435 .loc 1 3434 21 6436 0100 5A1C adds r2, r3, #1 6437 0102 FB68 ldr r3, [r7, #12] 6438 0104 5A62 str r2, [r3, #36] 3435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; 6439 .loc 1 3436 24 6440 0106 FB68 ldr r3, [r7, #12] 6441 0108 1B8D ldrh r3, [r3, #40] 6442 .loc 1 3436 18 6443 010a 7B61 str r3, [r7, #20] 3437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 6444 .loc 1 3437 11 6445 010c FB68 ldr r3, [r7, #12] 6446 010e 5B8D ldrh r3, [r3, #42] @ movhi 6447 0110 9BB2 uxth r3, r3 6448 .loc 1 3437 22 6449 0112 013B subs r3, r3, #1 6450 0114 9AB2 uxth r2, r3 6451 0116 FB68 ldr r3, [r7, #12] 6452 0118 5A85 strh r2, [r3, #42] @ movhi 3438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 6453 .loc 1 3438 11 6454 011a FB68 ldr r3, [r7, #12] 6455 011c 1B8D ldrh r3, [r3, #40] 6456 .loc 1 3438 21 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 175 6457 011e 013B subs r3, r3, #1 6458 0120 9AB2 uxth r2, r3 6459 0122 FB68 ldr r3, [r7, #12] 6460 0124 1A85 strh r2, [r3, #40] @ movhi 6461 .L307: 3439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ 6462 .loc 1 3444 14 6463 0126 FB68 ldr r3, [r7, #12] 6464 0128 1B6B ldr r3, [r3, #48] 6465 .loc 1 3444 8 6466 012a 112B cmp r3, #17 6467 012c 0ED1 bne .L309 3445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6468 .loc 1 3445 10 6469 012e BB6A ldr r3, [r7, #40] 6470 0130 AA2B cmp r3, #170 6471 0132 03D0 beq .L310 6472 .loc 1 3445 10 is_stmt 0 discriminator 2 6473 0134 BB6A ldr r3, [r7, #40] 6474 0136 B3F52A4F cmp r3, #43520 6475 013a 01D1 bne .L311 6476 .L310: 6477 .loc 1 3445 10 discriminator 3 6478 013c 0123 movs r3, #1 6479 013e 00E0 b .L312 6480 .L311: 6481 .loc 1 3445 10 discriminator 4 6482 0140 0023 movs r3, #0 6483 .L312: 3444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6484 .loc 1 3444 59 is_stmt 1 6485 0142 002B cmp r3, #0 6486 0144 02D1 bne .L309 3446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 6487 .loc 1 3447 19 6488 0146 0023 movs r3, #0 6489 0148 BB61 str r3, [r7, #24] 6490 014a 0AE0 b .L313 6491 .L309: 3448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 6492 .loc 1 3452 7 6493 014c F868 ldr r0, [r7, #12] 6494 014e FFF7FEFF bl I2C_ConvertOtherXferOptions 3453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 6495 .loc 1 3455 15 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 176 6496 0152 FB68 ldr r3, [r7, #12] 6497 0154 5B8D ldrh r3, [r3, #42] @ movhi 6498 0156 9BB2 uxth r3, r3 6499 .loc 1 3455 10 6500 0158 FF2B cmp r3, #255 6501 015a 02D8 bhi .L313 3456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6502 .loc 1 3457 18 6503 015c FB68 ldr r3, [r7, #12] 6504 015e DB6A ldr r3, [r3, #44] 6505 0160 FB61 str r3, [r7, #28] 6506 .L313: 3458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ 3462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) 6507 .loc 1 3462 8 6508 0162 BB6A ldr r3, [r7, #40] 6509 0164 002B cmp r3, #0 6510 0166 03D0 beq .L314 6511 .loc 1 3462 42 discriminator 1 6512 0168 BB6A ldr r3, [r7, #40] 6513 016a B3F1007F cmp r3, #33554432 6514 016e 09D1 bne .L315 6515 .L314: 3463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); 6516 .loc 1 3464 7 6517 0170 7B69 ldr r3, [r7, #20] 6518 0172 DAB2 uxtb r2, r3 6519 0174 7989 ldrh r1, [r7, #10] 6520 0176 BB69 ldr r3, [r7, #24] 6521 0178 0093 str r3, [sp] 6522 017a FB69 ldr r3, [r7, #28] 6523 017c F868 ldr r0, [r7, #12] 6524 017e FFF7FEFF bl I2C_TransferConfig 6525 0182 09E0 b .L316 6526 .L315: 3465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 6527 .loc 1 3468 57 6528 0184 FB68 ldr r3, [r7, #12] 6529 0186 1B8D ldrh r3, [r3, #40] 6530 .loc 1 3468 7 6531 0188 DAB2 uxtb r2, r3 6532 018a 7989 ldrh r1, [r7, #10] 6533 018c BB69 ldr r3, [r7, #24] 6534 018e 0093 str r3, [sp] 6535 0190 FB69 ldr r3, [r7, #28] 6536 0192 F868 ldr r0, [r7, #12] 6537 0194 FFF7FEFF bl I2C_TransferConfig 6538 .L316: 3469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 177 3470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6539 .loc 1 3472 5 6540 0198 FB68 ldr r3, [r7, #12] 6541 019a 0022 movs r2, #0 6542 019c 83F84020 strb r2, [r3, #64] 3473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 6543 .loc 1 3481 5 6544 01a0 0121 movs r1, #1 6545 01a2 F868 ldr r0, [r7, #12] 6546 01a4 FFF7FEFF bl I2C_Enable_IRQ 3482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 6547 .loc 1 3483 12 6548 01a8 0023 movs r3, #0 6549 01aa 00E0 b .L304 6550 .L302: 3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 6551 .loc 1 3487 12 6552 01ac 0223 movs r3, #2 6553 .L304: 3488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6554 .loc 1 3489 1 6555 01ae 1846 mov r0, r3 6556 01b0 2037 adds r7, r7, #32 6557 .LCFI120: 6558 .cfi_def_cfa_offset 8 6559 01b2 BD46 mov sp, r7 6560 .LCFI121: 6561 .cfi_def_cfa_register 13 6562 @ sp needed 6563 01b4 80BD pop {r7, pc} 6564 .L318: 6565 01b6 00BF .align 2 6566 .L317: 6567 01b8 00200080 .word -2147475456 6568 01bc 00000000 .word .LC0 6569 01c0 00000000 .word I2C_Master_ISR_IT 6570 .cfi_endproc 6571 .LFE153: 6573 .section .text.HAL_I2C_Master_Seq_Transmit_DMA,"ax",%progbits 6574 .align 1 6575 .global HAL_I2C_Master_Seq_Transmit_DMA 6576 .syntax unified ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 178 6577 .thumb 6578 .thumb_func 6580 HAL_I2C_Master_Seq_Transmit_DMA: 6581 .LFB154: 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 **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. 3493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin 3504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6582 .loc 1 3505 1 6583 .cfi_startproc 6584 @ args = 4, pretend = 0, frame = 32 6585 @ frame_needed = 1, uses_anonymous_args = 0 6586 0000 80B5 push {r7, lr} 6587 .LCFI122: 6588 .cfi_def_cfa_offset 8 6589 .cfi_offset 7, -8 6590 .cfi_offset 14, -4 6591 0002 8AB0 sub sp, sp, #40 6592 .LCFI123: 6593 .cfi_def_cfa_offset 48 6594 0004 02AF add r7, sp, #8 6595 .LCFI124: 6596 .cfi_def_cfa 7, 40 6597 0006 F860 str r0, [r7, #12] 6598 0008 7A60 str r2, [r7, #4] 6599 000a 1A46 mov r2, r3 6600 000c 0B46 mov r3, r1 @ movhi 6601 000e 7B81 strh r3, [r7, #10] @ movhi 6602 0010 1346 mov r3, r2 @ movhi 6603 0012 3B81 strh r3, [r7, #8] @ movhi 3506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; 6604 .loc 1 3507 12 6605 0014 8D4B ldr r3, .L345 6606 0016 BB61 str r3, [r7, #24] 3508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; 6607 .loc 1 3509 12 6608 0018 0023 movs r3, #0 6609 001a 7B61 str r3, [r7, #20] 3510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 6610 .loc 1 3512 3 6611 001c BB6A ldr r3, [r7, #40] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 179 6612 001e 002B cmp r3, #0 6613 0020 1ED0 beq .L320 6614 .loc 1 3512 3 is_stmt 0 discriminator 1 6615 0022 BB6A ldr r3, [r7, #40] 6616 0024 B3F1807F cmp r3, #16777216 6617 0028 1AD0 beq .L320 6618 .loc 1 3512 3 discriminator 2 6619 002a BB6A ldr r3, [r7, #40] 6620 002c B3F1807F cmp r3, #16777216 6621 0030 16D0 beq .L320 6622 .loc 1 3512 3 discriminator 3 6623 0032 BB6A ldr r3, [r7, #40] 6624 0034 B3F1007F cmp r3, #33554432 6625 0038 12D0 beq .L320 6626 .loc 1 3512 3 discriminator 4 6627 003a BB6A ldr r3, [r7, #40] 6628 003c B3F1007F cmp r3, #33554432 6629 0040 0ED0 beq .L320 6630 .loc 1 3512 3 discriminator 5 6631 0042 BB6A ldr r3, [r7, #40] 6632 0044 002B cmp r3, #0 6633 0046 0BD0 beq .L320 6634 .loc 1 3512 3 discriminator 6 6635 0048 BB6A ldr r3, [r7, #40] 6636 004a AA2B cmp r3, #170 6637 004c 08D0 beq .L320 6638 .loc 1 3512 3 discriminator 7 6639 004e BB6A ldr r3, [r7, #40] 6640 0050 B3F52A4F cmp r3, #43520 6641 0054 04D0 beq .L320 6642 .loc 1 3512 3 discriminator 8 6643 0056 40F6B851 movw r1, #3512 6644 005a 7D48 ldr r0, .L345+4 6645 005c FFF7FEFF bl assert_failed 6646 .L320: 3513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 6647 .loc 1 3514 11 is_stmt 1 6648 0060 FB68 ldr r3, [r7, #12] 6649 0062 93F84130 ldrb r3, [r3, #65] 6650 0066 DBB2 uxtb r3, r3 6651 .loc 1 3514 6 6652 0068 202B cmp r3, #32 6653 006a 40F03581 bne .L321 3515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 6654 .loc 1 3517 5 6655 006e FB68 ldr r3, [r7, #12] 6656 0070 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 6657 0074 012B cmp r3, #1 6658 0076 01D1 bne .L322 6659 .loc 1 3517 5 is_stmt 0 discriminator 1 6660 0078 0223 movs r3, #2 6661 007a 2EE1 b .L323 6662 .L322: 6663 .loc 1 3517 5 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 180 6664 007c FB68 ldr r3, [r7, #12] 6665 007e 0122 movs r2, #1 6666 0080 83F84020 strb r2, [r3, #64] 3518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; 6667 .loc 1 3519 21 is_stmt 1 discriminator 2 6668 0084 FB68 ldr r3, [r7, #12] 6669 0086 2122 movs r2, #33 6670 0088 83F84120 strb r2, [r3, #65] 3520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 6671 .loc 1 3520 21 discriminator 2 6672 008c FB68 ldr r3, [r7, #12] 6673 008e 1022 movs r2, #16 6674 0090 83F84220 strb r2, [r3, #66] 3521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 6675 .loc 1 3521 21 discriminator 2 6676 0094 FB68 ldr r3, [r7, #12] 6677 0096 0022 movs r2, #0 6678 0098 5A64 str r2, [r3, #68] 3522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 6679 .loc 1 3524 23 discriminator 2 6680 009a FB68 ldr r3, [r7, #12] 6681 009c 7A68 ldr r2, [r7, #4] 6682 009e 5A62 str r2, [r3, #36] 3525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 6683 .loc 1 3525 23 discriminator 2 6684 00a0 FB68 ldr r3, [r7, #12] 6685 00a2 3A89 ldrh r2, [r7, #8] @ movhi 6686 00a4 5A85 strh r2, [r3, #42] @ movhi 3526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 6687 .loc 1 3526 23 discriminator 2 6688 00a6 FB68 ldr r3, [r7, #12] 6689 00a8 BA6A ldr r2, [r7, #40] 6690 00aa DA62 str r2, [r3, #44] 3527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 6691 .loc 1 3527 23 discriminator 2 6692 00ac FB68 ldr r3, [r7, #12] 6693 00ae 694A ldr r2, .L345+8 6694 00b0 5A63 str r2, [r3, #52] 3528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6695 .loc 1 3530 13 discriminator 2 6696 00b2 FB68 ldr r3, [r7, #12] 6697 00b4 5B8D ldrh r3, [r3, #42] @ movhi 6698 00b6 9BB2 uxth r3, r3 6699 .loc 1 3530 8 discriminator 2 6700 00b8 FF2B cmp r3, #255 6701 00ba 06D9 bls .L324 3531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6702 .loc 1 3532 22 6703 00bc FB68 ldr r3, [r7, #12] 6704 00be FF22 movs r2, #255 6705 00c0 1A85 strh r2, [r3, #40] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 181 3533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 6706 .loc 1 3533 16 6707 00c2 4FF08073 mov r3, #16777216 6708 00c6 FB61 str r3, [r7, #28] 6709 00c8 07E0 b .L325 6710 .L324: 3534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6711 .loc 1 3537 28 6712 00ca FB68 ldr r3, [r7, #12] 6713 00cc 5B8D ldrh r3, [r3, #42] @ movhi 6714 00ce 9AB2 uxth r2, r3 6715 .loc 1 3537 22 6716 00d0 FB68 ldr r3, [r7, #12] 6717 00d2 1A85 strh r2, [r3, #40] @ movhi 3538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6718 .loc 1 3538 16 6719 00d4 FB68 ldr r3, [r7, #12] 6720 00d6 DB6A ldr r3, [r3, #44] 6721 00d8 FB61 str r3, [r7, #28] 6722 .L325: 3539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ 6723 .loc 1 3541 14 6724 00da FB68 ldr r3, [r7, #12] 6725 00dc 1B8D ldrh r3, [r3, #40] 6726 .loc 1 3541 8 6727 00de 002B cmp r3, #0 6728 00e0 21D0 beq .L326 6729 .loc 1 3541 31 discriminator 1 6730 00e2 BB6A ldr r3, [r7, #40] 6731 00e4 002B cmp r3, #0 6732 00e6 03D0 beq .L327 6733 .loc 1 3541 68 discriminator 2 6734 00e8 BB6A ldr r3, [r7, #40] 6735 00ea B3F1007F cmp r3, #33554432 6736 00ee 1AD1 bne .L326 6737 .L327: 3542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) 3543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */ 3545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 3546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 6738 .loc 1 3546 35 6739 00f0 FB68 ldr r3, [r7, #12] 6740 00f2 5B6A ldr r3, [r3, #36] 6741 .loc 1 3546 30 6742 00f4 1A78 ldrb r2, [r3] @ zero_extendqisi2 6743 .loc 1 3546 11 6744 00f6 FB68 ldr r3, [r7, #12] 6745 00f8 1B68 ldr r3, [r3] 6746 .loc 1 3546 28 6747 00fa 9A62 str r2, [r3, #40] 3547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 182 3548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 3549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 6748 .loc 1 3549 11 6749 00fc FB68 ldr r3, [r7, #12] 6750 00fe 5B6A ldr r3, [r3, #36] 6751 .loc 1 3549 21 6752 0100 5A1C adds r2, r3, #1 6753 0102 FB68 ldr r3, [r7, #12] 6754 0104 5A62 str r2, [r3, #36] 3550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; 6755 .loc 1 3551 24 6756 0106 FB68 ldr r3, [r7, #12] 6757 0108 1B8D ldrh r3, [r3, #40] 6758 .loc 1 3551 18 6759 010a 7B61 str r3, [r7, #20] 3552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 6760 .loc 1 3552 11 6761 010c FB68 ldr r3, [r7, #12] 6762 010e 5B8D ldrh r3, [r3, #42] @ movhi 6763 0110 9BB2 uxth r3, r3 6764 .loc 1 3552 22 6765 0112 013B subs r3, r3, #1 6766 0114 9AB2 uxth r2, r3 6767 0116 FB68 ldr r3, [r7, #12] 6768 0118 5A85 strh r2, [r3, #42] @ movhi 3553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 6769 .loc 1 3553 11 6770 011a FB68 ldr r3, [r7, #12] 6771 011c 1B8D ldrh r3, [r3, #40] 6772 .loc 1 3553 21 6773 011e 013B subs r3, r3, #1 6774 0120 9AB2 uxth r2, r3 6775 0122 FB68 ldr r3, [r7, #12] 6776 0124 1A85 strh r2, [r3, #40] @ movhi 6777 .L326: 3554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ 6778 .loc 1 3559 14 6779 0126 FB68 ldr r3, [r7, #12] 6780 0128 1B6B ldr r3, [r3, #48] 6781 .loc 1 3559 8 6782 012a 112B cmp r3, #17 6783 012c 0ED1 bne .L328 3560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6784 .loc 1 3560 10 6785 012e BB6A ldr r3, [r7, #40] 6786 0130 AA2B cmp r3, #170 6787 0132 03D0 beq .L329 6788 .loc 1 3560 10 is_stmt 0 discriminator 2 6789 0134 BB6A ldr r3, [r7, #40] 6790 0136 B3F52A4F cmp r3, #43520 6791 013a 01D1 bne .L330 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 183 6792 .L329: 6793 .loc 1 3560 10 discriminator 3 6794 013c 0123 movs r3, #1 6795 013e 00E0 b .L331 6796 .L330: 6797 .loc 1 3560 10 discriminator 4 6798 0140 0023 movs r3, #0 6799 .L331: 3559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 6800 .loc 1 3559 59 is_stmt 1 6801 0142 002B cmp r3, #0 6802 0144 02D1 bne .L328 3561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 6803 .loc 1 3562 19 6804 0146 0023 movs r3, #0 6805 0148 BB61 str r3, [r7, #24] 6806 014a 0AE0 b .L332 6807 .L328: 3563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 6808 .loc 1 3567 7 6809 014c F868 ldr r0, [r7, #12] 6810 014e FFF7FEFF bl I2C_ConvertOtherXferOptions 3568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 6811 .loc 1 3570 15 6812 0152 FB68 ldr r3, [r7, #12] 6813 0154 5B8D ldrh r3, [r3, #42] @ movhi 6814 0156 9BB2 uxth r3, r3 6815 .loc 1 3570 10 6816 0158 FF2B cmp r3, #255 6817 015a 02D8 bhi .L332 3571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 6818 .loc 1 3572 18 6819 015c FB68 ldr r3, [r7, #12] 6820 015e DB6A ldr r3, [r3, #44] 6821 0160 FB61 str r3, [r7, #28] 6822 .L332: 3573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 6823 .loc 1 3576 13 6824 0162 FB68 ldr r3, [r7, #12] 6825 0164 1B8D ldrh r3, [r3, #40] 6826 .loc 1 3576 8 6827 0166 002B cmp r3, #0 6828 0168 00F08E80 beq .L333 3577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 6829 .loc 1 3578 15 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 184 6830 016c FB68 ldr r3, [r7, #12] 6831 016e 9B6B ldr r3, [r3, #56] 6832 .loc 1 3578 10 6833 0170 002B cmp r3, #0 6834 0172 22D0 beq .L334 3579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; 6835 .loc 1 3581 13 6836 0174 FB68 ldr r3, [r7, #12] 6837 0176 9B6B ldr r3, [r3, #56] 6838 .loc 1 3581 40 6839 0178 374A ldr r2, .L345+12 6840 017a 9A62 str r2, [r3, #40] 3582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 6841 .loc 1 3584 13 6842 017c FB68 ldr r3, [r7, #12] 6843 017e 9B6B ldr r3, [r3, #56] 6844 .loc 1 3584 41 6845 0180 364A ldr r2, .L345+16 6846 0182 1A63 str r2, [r3, #48] 3585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 6847 .loc 1 3587 13 6848 0184 FB68 ldr r3, [r7, #12] 6849 0186 9B6B ldr r3, [r3, #56] 6850 .loc 1 3587 44 6851 0188 0022 movs r2, #0 6852 018a DA62 str r2, [r3, #44] 3588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 6853 .loc 1 3588 13 6854 018c FB68 ldr r3, [r7, #12] 6855 018e 9B6B ldr r3, [r3, #56] 6856 .loc 1 3588 41 6857 0190 0022 movs r2, #0 6858 0192 5A63 str r2, [r3, #52] 3589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, 6859 .loc 1 3591 25 6860 0194 FB68 ldr r3, [r7, #12] 6861 0196 986B ldr r0, [r3, #56] 6862 .loc 1 3591 70 6863 0198 FB68 ldr r3, [r7, #12] 6864 019a 5B6A ldr r3, [r3, #36] 6865 .loc 1 3591 25 6866 019c 1946 mov r1, r3 3592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); 6867 .loc 1 3592 57 6868 019e FB68 ldr r3, [r7, #12] 6869 01a0 1B68 ldr r3, [r3] 6870 .loc 1 3592 52 6871 01a2 2833 adds r3, r3, #40 3591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 185 6872 .loc 1 3591 25 6873 01a4 1A46 mov r2, r3 6874 .loc 1 3592 79 6875 01a6 FB68 ldr r3, [r7, #12] 6876 01a8 1B8D ldrh r3, [r3, #40] 3591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); 6877 .loc 1 3591 25 6878 01aa FFF7FEFF bl HAL_DMA_Start_IT 6879 01ae 0346 mov r3, r0 6880 01b0 FB74 strb r3, [r7, #19] 3593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 3605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 6881 .loc 1 3609 10 6882 01b2 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 6883 01b4 002B cmp r3, #0 6884 01b6 53D1 bne .L336 6885 01b8 13E0 b .L344 6886 .L334: 3597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6887 .loc 1 3597 25 6888 01ba FB68 ldr r3, [r7, #12] 6889 01bc 2022 movs r2, #32 6890 01be 83F84120 strb r2, [r3, #65] 3598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6891 .loc 1 3598 25 6892 01c2 FB68 ldr r3, [r7, #12] 6893 01c4 0022 movs r2, #0 6894 01c6 83F84220 strb r2, [r3, #66] 3601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6895 .loc 1 3601 25 6896 01ca FB68 ldr r3, [r7, #12] 6897 01cc 5B6C ldr r3, [r3, #68] 6898 01ce 43F08002 orr r2, r3, #128 6899 01d2 FB68 ldr r3, [r7, #12] 6900 01d4 5A64 str r2, [r3, #68] 3604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6901 .loc 1 3604 9 6902 01d6 FB68 ldr r3, [r7, #12] 6903 01d8 0022 movs r2, #0 6904 01da 83F84020 strb r2, [r3, #64] 3606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6905 .loc 1 3606 16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 186 6906 01de 0123 movs r3, #1 6907 01e0 7BE0 b .L323 6908 .L344: 3610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ 3612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) 6909 .loc 1 3612 12 6910 01e2 BB6A ldr r3, [r7, #40] 6911 01e4 002B cmp r3, #0 6912 01e6 03D0 beq .L337 6913 .loc 1 3612 46 discriminator 1 6914 01e8 BB6A ldr r3, [r7, #40] 6915 01ea B3F1007F cmp r3, #33554432 6916 01ee 09D1 bne .L338 6917 .L337: 3613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); 6918 .loc 1 3614 11 6919 01f0 7B69 ldr r3, [r7, #20] 6920 01f2 DAB2 uxtb r2, r3 6921 01f4 7989 ldrh r1, [r7, #10] 6922 01f6 BB69 ldr r3, [r7, #24] 6923 01f8 0093 str r3, [sp] 6924 01fa FB69 ldr r3, [r7, #28] 6925 01fc F868 ldr r0, [r7, #12] 6926 01fe FFF7FEFF bl I2C_TransferConfig 6927 0202 09E0 b .L339 6928 .L338: 3615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 6929 .loc 1 3618 61 6930 0204 FB68 ldr r3, [r7, #12] 6931 0206 1B8D ldrh r3, [r3, #40] 6932 .loc 1 3618 11 6933 0208 DAB2 uxtb r2, r3 6934 020a 7989 ldrh r1, [r7, #10] 6935 020c BB69 ldr r3, [r7, #24] 6936 020e 0093 str r3, [sp] 6937 0210 FB69 ldr r3, [r7, #28] 6938 0212 F868 ldr r0, [r7, #12] 6939 0214 FFF7FEFF bl I2C_TransferConfig 6940 .L339: 3619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 3622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 6941 .loc 1 3622 25 6942 0218 FB68 ldr r3, [r7, #12] 6943 021a 5B8D ldrh r3, [r3, #42] @ movhi 6944 021c 9AB2 uxth r2, r3 6945 .loc 1 3622 32 6946 021e FB68 ldr r3, [r7, #12] 6947 0220 1B8D ldrh r3, [r3, #40] 6948 .loc 1 3622 25 6949 0222 D31A subs r3, r2, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 187 6950 0224 9AB2 uxth r2, r3 6951 0226 FB68 ldr r3, [r7, #12] 6952 0228 5A85 strh r2, [r3, #42] @ movhi 3623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6953 .loc 1 3625 9 6954 022a FB68 ldr r3, [r7, #12] 6955 022c 0022 movs r2, #0 6956 022e 83F84020 strb r2, [r3, #64] 3626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 3631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 6957 .loc 1 3631 9 6958 0232 1021 movs r1, #16 6959 0234 F868 ldr r0, [r7, #12] 6960 0236 FFF7FEFF bl I2C_Enable_IRQ 3632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 3634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 6961 .loc 1 3634 13 6962 023a FB68 ldr r3, [r7, #12] 6963 023c 1B68 ldr r3, [r3] 6964 .loc 1 3634 29 6965 023e 1A68 ldr r2, [r3] 6966 .loc 1 3634 13 6967 0240 FB68 ldr r3, [r7, #12] 6968 0242 1B68 ldr r3, [r3] 6969 .loc 1 3634 29 6970 0244 42F48042 orr r2, r2, #16384 6971 0248 1A60 str r2, [r3] 6972 024a 43E0 b .L340 6973 .L346: 6974 .align 2 6975 .L345: 6976 024c 00200080 .word -2147475456 6977 0250 00000000 .word .LC0 6978 0254 00000000 .word I2C_Master_ISR_DMA 6979 0258 00000000 .word I2C_DMAMasterTransmitCplt 6980 025c 00000000 .word I2C_DMAError 6981 .L336: 3635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6982 .loc 1 3639 25 6983 0260 FB68 ldr r3, [r7, #12] 6984 0262 2022 movs r2, #32 6985 0264 83F84120 strb r2, [r3, #65] 3640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6986 .loc 1 3640 25 6987 0268 FB68 ldr r3, [r7, #12] 6988 026a 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 188 6989 026c 83F84220 strb r2, [r3, #66] 3641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 6990 .loc 1 3643 25 6991 0270 FB68 ldr r3, [r7, #12] 6992 0272 5B6C ldr r3, [r3, #68] 6993 0274 43F01002 orr r2, r3, #16 6994 0278 FB68 ldr r3, [r7, #12] 6995 027a 5A64 str r2, [r3, #68] 3644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6996 .loc 1 3646 9 6997 027c FB68 ldr r3, [r7, #12] 6998 027e 0022 movs r2, #0 6999 0280 83F84020 strb r2, [r3, #64] 3647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7000 .loc 1 3648 16 7001 0284 0123 movs r3, #1 7002 0286 28E0 b .L323 7003 .L333: 3649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 3654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 7004 .loc 1 3654 21 7005 0288 FB68 ldr r3, [r7, #12] 7006 028a 164A ldr r2, .L347 7007 028c 5A63 str r2, [r3, #52] 3655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 3657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ 3658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) 7008 .loc 1 3658 10 7009 028e BB6A ldr r3, [r7, #40] 7010 0290 002B cmp r3, #0 7011 0292 03D0 beq .L341 7012 .loc 1 3658 44 discriminator 1 7013 0294 BB6A ldr r3, [r7, #40] 7014 0296 B3F1007F cmp r3, #33554432 7015 029a 09D1 bne .L342 7016 .L341: 3659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); 7017 .loc 1 3660 9 7018 029c 7B69 ldr r3, [r7, #20] 7019 029e DAB2 uxtb r2, r3 7020 02a0 7989 ldrh r1, [r7, #10] 7021 02a2 BB69 ldr r3, [r7, #24] 7022 02a4 0093 str r3, [sp] 7023 02a6 FB69 ldr r3, [r7, #28] 7024 02a8 F868 ldr r0, [r7, #12] 7025 02aa FFF7FEFF bl I2C_TransferConfig ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 189 7026 02ae 09E0 b .L343 7027 .L342: 3661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 7028 .loc 1 3664 59 7029 02b0 FB68 ldr r3, [r7, #12] 7030 02b2 1B8D ldrh r3, [r3, #40] 7031 .loc 1 3664 9 7032 02b4 DAB2 uxtb r2, r3 7033 02b6 7989 ldrh r1, [r7, #10] 7034 02b8 BB69 ldr r3, [r7, #24] 7035 02ba 0093 str r3, [sp] 7036 02bc FB69 ldr r3, [r7, #28] 7037 02be F868 ldr r0, [r7, #12] 7038 02c0 FFF7FEFF bl I2C_TransferConfig 7039 .L343: 3665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7040 .loc 1 3668 7 7041 02c4 FB68 ldr r3, [r7, #12] 7042 02c6 0022 movs r2, #0 7043 02c8 83F84020 strb r2, [r3, #64] 3669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ 3674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); 7044 .loc 1 3677 7 7045 02cc 0121 movs r1, #1 7046 02ce F868 ldr r0, [r7, #12] 7047 02d0 FFF7FEFF bl I2C_Enable_IRQ 7048 .L340: 3678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7049 .loc 1 3680 12 7050 02d4 0023 movs r3, #0 7051 02d6 00E0 b .L323 7052 .L321: 3681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 7053 .loc 1 3684 12 7054 02d8 0223 movs r3, #2 7055 .L323: 3685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7056 .loc 1 3686 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 190 7057 02da 1846 mov r0, r3 7058 02dc 2037 adds r7, r7, #32 7059 .LCFI125: 7060 .cfi_def_cfa_offset 8 7061 02de BD46 mov sp, r7 7062 .LCFI126: 7063 .cfi_def_cfa_register 13 7064 @ sp needed 7065 02e0 80BD pop {r7, pc} 7066 .L348: 7067 02e2 00BF .align 2 7068 .L347: 7069 02e4 00000000 .word I2C_Master_ISR_IT 7070 .cfi_endproc 7071 .LFE154: 7073 .section .text.HAL_I2C_Master_Seq_Receive_IT,"ax",%progbits 7074 .align 1 7075 .global HAL_I2C_Master_Seq_Receive_IT 7076 .syntax unified 7077 .thumb 7078 .thumb_func 7080 HAL_I2C_Master_Seq_Receive_IT: 7081 .LFB155: 3687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3689: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 3690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8 3701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7082 .loc 1 3702 1 7083 .cfi_startproc 7084 @ args = 4, pretend = 0, frame = 24 7085 @ frame_needed = 1, uses_anonymous_args = 0 7086 0000 80B5 push {r7, lr} 7087 .LCFI127: 7088 .cfi_def_cfa_offset 8 7089 .cfi_offset 7, -8 7090 .cfi_offset 14, -4 7091 0002 88B0 sub sp, sp, #32 7092 .LCFI128: 7093 .cfi_def_cfa_offset 40 7094 0004 02AF add r7, sp, #8 7095 .LCFI129: 7096 .cfi_def_cfa 7, 32 7097 0006 F860 str r0, [r7, #12] 7098 0008 7A60 str r2, [r7, #4] 7099 000a 1A46 mov r2, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 191 7100 000c 0B46 mov r3, r1 @ movhi 7101 000e 7B81 strh r3, [r7, #10] @ movhi 7102 0010 1346 mov r3, r2 @ movhi 7103 0012 3B81 strh r3, [r7, #8] @ movhi 3703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; 7104 .loc 1 3704 12 7105 0014 4B4B ldr r3, .L361 7106 0016 3B61 str r3, [r7, #16] 3705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 7107 .loc 1 3707 3 7108 0018 3B6A ldr r3, [r7, #32] 7109 001a 002B cmp r3, #0 7110 001c 1ED0 beq .L350 7111 .loc 1 3707 3 is_stmt 0 discriminator 1 7112 001e 3B6A ldr r3, [r7, #32] 7113 0020 B3F1807F cmp r3, #16777216 7114 0024 1AD0 beq .L350 7115 .loc 1 3707 3 discriminator 2 7116 0026 3B6A ldr r3, [r7, #32] 7117 0028 B3F1807F cmp r3, #16777216 7118 002c 16D0 beq .L350 7119 .loc 1 3707 3 discriminator 3 7120 002e 3B6A ldr r3, [r7, #32] 7121 0030 B3F1007F cmp r3, #33554432 7122 0034 12D0 beq .L350 7123 .loc 1 3707 3 discriminator 4 7124 0036 3B6A ldr r3, [r7, #32] 7125 0038 B3F1007F cmp r3, #33554432 7126 003c 0ED0 beq .L350 7127 .loc 1 3707 3 discriminator 5 7128 003e 3B6A ldr r3, [r7, #32] 7129 0040 002B cmp r3, #0 7130 0042 0BD0 beq .L350 7131 .loc 1 3707 3 discriminator 6 7132 0044 3B6A ldr r3, [r7, #32] 7133 0046 AA2B cmp r3, #170 7134 0048 08D0 beq .L350 7135 .loc 1 3707 3 discriminator 7 7136 004a 3B6A ldr r3, [r7, #32] 7137 004c B3F52A4F cmp r3, #43520 7138 0050 04D0 beq .L350 7139 .loc 1 3707 3 discriminator 8 7140 0052 40F67B61 movw r1, #3707 7141 0056 3C48 ldr r0, .L361+4 7142 0058 FFF7FEFF bl assert_failed 7143 .L350: 3708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 7144 .loc 1 3709 11 is_stmt 1 7145 005c FB68 ldr r3, [r7, #12] 7146 005e 93F84130 ldrb r3, [r3, #65] 7147 0062 DBB2 uxtb r3, r3 7148 .loc 1 3709 6 7149 0064 202B cmp r3, #32 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 192 7150 0066 67D1 bne .L351 3710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7151 .loc 1 3712 5 7152 0068 FB68 ldr r3, [r7, #12] 7153 006a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7154 006e 012B cmp r3, #1 7155 0070 01D1 bne .L352 7156 .loc 1 3712 5 is_stmt 0 discriminator 1 7157 0072 0223 movs r3, #2 7158 0074 61E0 b .L353 7159 .L352: 7160 .loc 1 3712 5 discriminator 2 7161 0076 FB68 ldr r3, [r7, #12] 7162 0078 0122 movs r2, #1 7163 007a 83F84020 strb r2, [r3, #64] 3713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 7164 .loc 1 3714 21 is_stmt 1 discriminator 2 7165 007e FB68 ldr r3, [r7, #12] 7166 0080 2222 movs r2, #34 7167 0082 83F84120 strb r2, [r3, #65] 3715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 7168 .loc 1 3715 21 discriminator 2 7169 0086 FB68 ldr r3, [r7, #12] 7170 0088 1022 movs r2, #16 7171 008a 83F84220 strb r2, [r3, #66] 3716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7172 .loc 1 3716 21 discriminator 2 7173 008e FB68 ldr r3, [r7, #12] 7174 0090 0022 movs r2, #0 7175 0092 5A64 str r2, [r3, #68] 3717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7176 .loc 1 3719 23 discriminator 2 7177 0094 FB68 ldr r3, [r7, #12] 7178 0096 7A68 ldr r2, [r7, #4] 7179 0098 5A62 str r2, [r3, #36] 3720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7180 .loc 1 3720 23 discriminator 2 7181 009a FB68 ldr r3, [r7, #12] 7182 009c 3A89 ldrh r2, [r7, #8] @ movhi 7183 009e 5A85 strh r2, [r3, #42] @ movhi 3721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7184 .loc 1 3721 23 discriminator 2 7185 00a0 FB68 ldr r3, [r7, #12] 7186 00a2 3A6A ldr r2, [r7, #32] 7187 00a4 DA62 str r2, [r3, #44] 3722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 7188 .loc 1 3722 23 discriminator 2 7189 00a6 FB68 ldr r3, [r7, #12] 7190 00a8 284A ldr r2, .L361+8 7191 00aa 5A63 str r2, [r3, #52] 3723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 193 3725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 7192 .loc 1 3725 13 discriminator 2 7193 00ac FB68 ldr r3, [r7, #12] 7194 00ae 5B8D ldrh r3, [r3, #42] @ movhi 7195 00b0 9BB2 uxth r3, r3 7196 .loc 1 3725 8 discriminator 2 7197 00b2 FF2B cmp r3, #255 7198 00b4 06D9 bls .L354 3726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 7199 .loc 1 3727 22 7200 00b6 FB68 ldr r3, [r7, #12] 7201 00b8 FF22 movs r2, #255 7202 00ba 1A85 strh r2, [r3, #40] @ movhi 3728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 7203 .loc 1 3728 16 7204 00bc 4FF08073 mov r3, #16777216 7205 00c0 7B61 str r3, [r7, #20] 7206 00c2 07E0 b .L355 7207 .L354: 3729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7208 .loc 1 3732 28 7209 00c4 FB68 ldr r3, [r7, #12] 7210 00c6 5B8D ldrh r3, [r3, #42] @ movhi 7211 00c8 9AB2 uxth r2, r3 7212 .loc 1 3732 22 7213 00ca FB68 ldr r3, [r7, #12] 7214 00cc 1A85 strh r2, [r3, #40] @ movhi 3733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 7215 .loc 1 3733 16 7216 00ce FB68 ldr r3, [r7, #12] 7217 00d0 DB6A ldr r3, [r3, #44] 7218 00d2 7B61 str r3, [r7, #20] 7219 .L355: 3734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ 7220 .loc 1 3739 14 7221 00d4 FB68 ldr r3, [r7, #12] 7222 00d6 1B6B ldr r3, [r3, #48] 7223 .loc 1 3739 8 7224 00d8 122B cmp r3, #18 7225 00da 0ED1 bne .L356 3740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 7226 .loc 1 3740 10 7227 00dc 3B6A ldr r3, [r7, #32] 7228 00de AA2B cmp r3, #170 7229 00e0 03D0 beq .L357 7230 .loc 1 3740 10 is_stmt 0 discriminator 2 7231 00e2 3B6A ldr r3, [r7, #32] 7232 00e4 B3F52A4F cmp r3, #43520 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 194 7233 00e8 01D1 bne .L358 7234 .L357: 7235 .loc 1 3740 10 discriminator 3 7236 00ea 0123 movs r3, #1 7237 00ec 00E0 b .L359 7238 .L358: 7239 .loc 1 3740 10 discriminator 4 7240 00ee 0023 movs r3, #0 7241 .L359: 3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 7242 .loc 1 3739 59 is_stmt 1 7243 00f0 002B cmp r3, #0 7244 00f2 02D1 bne .L356 3741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 7245 .loc 1 3742 19 7246 00f4 0023 movs r3, #0 7247 00f6 3B61 str r3, [r7, #16] 7248 00f8 0AE0 b .L360 7249 .L356: 3743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 7250 .loc 1 3747 7 7251 00fa F868 ldr r0, [r7, #12] 7252 00fc FFF7FEFF bl I2C_ConvertOtherXferOptions 3748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 7253 .loc 1 3750 15 7254 0100 FB68 ldr r3, [r7, #12] 7255 0102 5B8D ldrh r3, [r3, #42] @ movhi 7256 0104 9BB2 uxth r3, r3 7257 .loc 1 3750 10 7258 0106 FF2B cmp r3, #255 7259 0108 02D8 bhi .L360 3751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 7260 .loc 1 3752 18 7261 010a FB68 ldr r3, [r7, #12] 7262 010c DB6A ldr r3, [r3, #44] 7263 010e 7B61 str r3, [r7, #20] 7264 .L360: 3753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ 3757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 7265 .loc 1 3757 55 7266 0110 FB68 ldr r3, [r7, #12] 7267 0112 1B8D ldrh r3, [r3, #40] 7268 .loc 1 3757 5 7269 0114 DAB2 uxtb r2, r3 7270 0116 7989 ldrh r1, [r7, #10] 7271 0118 3B69 ldr r3, [r7, #16] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 195 7272 011a 0093 str r3, [sp] 7273 011c 7B69 ldr r3, [r7, #20] 7274 011e F868 ldr r0, [r7, #12] 7275 0120 FFF7FEFF bl I2C_TransferConfig 3758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7276 .loc 1 3760 5 7277 0124 FB68 ldr r3, [r7, #12] 7278 0126 0022 movs r2, #0 7279 0128 83F84020 strb r2, [r3, #64] 3761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 7280 .loc 1 3765 5 7281 012c 0221 movs r1, #2 7282 012e F868 ldr r0, [r7, #12] 7283 0130 FFF7FEFF bl I2C_Enable_IRQ 3766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7284 .loc 1 3767 12 7285 0134 0023 movs r3, #0 7286 0136 00E0 b .L353 7287 .L351: 3768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 7288 .loc 1 3771 12 7289 0138 0223 movs r3, #2 7290 .L353: 3772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7291 .loc 1 3773 1 7292 013a 1846 mov r0, r3 7293 013c 1837 adds r7, r7, #24 7294 .LCFI130: 7295 .cfi_def_cfa_offset 8 7296 013e BD46 mov sp, r7 7297 .LCFI131: 7298 .cfi_def_cfa_register 13 7299 @ sp needed 7300 0140 80BD pop {r7, pc} 7301 .L362: 7302 0142 00BF .align 2 7303 .L361: 7304 0144 00240080 .word -2147474432 7305 0148 00000000 .word .LC0 7306 014c 00000000 .word I2C_Master_ISR_IT 7307 .cfi_endproc 7308 .LFE155: 7310 .section .text.HAL_I2C_Master_Seq_Receive_DMA,"ax",%progbits 7311 .align 1 7312 .global HAL_I2C_Master_Seq_Receive_DMA 7313 .syntax unified ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 196 7314 .thumb 7315 .thumb_func 7317 HAL_I2C_Master_Seq_Receive_DMA: 7318 .LFB156: 3774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3776: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 3777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 3781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 3782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint 3788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) 3789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7319 .loc 1 3789 1 7320 .cfi_startproc 7321 @ args = 4, pretend = 0, frame = 32 7322 @ frame_needed = 1, uses_anonymous_args = 0 7323 0000 80B5 push {r7, lr} 7324 .LCFI132: 7325 .cfi_def_cfa_offset 8 7326 .cfi_offset 7, -8 7327 .cfi_offset 14, -4 7328 0002 8AB0 sub sp, sp, #40 7329 .LCFI133: 7330 .cfi_def_cfa_offset 48 7331 0004 02AF add r7, sp, #8 7332 .LCFI134: 7333 .cfi_def_cfa 7, 40 7334 0006 F860 str r0, [r7, #12] 7335 0008 7A60 str r2, [r7, #4] 7336 000a 1A46 mov r2, r3 7337 000c 0B46 mov r3, r1 @ movhi 7338 000e 7B81 strh r3, [r7, #10] @ movhi 7339 0010 1346 mov r3, r2 @ movhi 7340 0012 3B81 strh r3, [r7, #8] @ movhi 3790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 3791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; 7341 .loc 1 3791 12 7342 0014 884B ldr r3, .L381 7343 0016 BB61 str r3, [r7, #24] 3792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 3793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 7344 .loc 1 3795 3 7345 0018 BB6A ldr r3, [r7, #40] 7346 001a 002B cmp r3, #0 7347 001c 1ED0 beq .L364 7348 .loc 1 3795 3 is_stmt 0 discriminator 1 7349 001e BB6A ldr r3, [r7, #40] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 197 7350 0020 B3F1807F cmp r3, #16777216 7351 0024 1AD0 beq .L364 7352 .loc 1 3795 3 discriminator 2 7353 0026 BB6A ldr r3, [r7, #40] 7354 0028 B3F1807F cmp r3, #16777216 7355 002c 16D0 beq .L364 7356 .loc 1 3795 3 discriminator 3 7357 002e BB6A ldr r3, [r7, #40] 7358 0030 B3F1007F cmp r3, #33554432 7359 0034 12D0 beq .L364 7360 .loc 1 3795 3 discriminator 4 7361 0036 BB6A ldr r3, [r7, #40] 7362 0038 B3F1007F cmp r3, #33554432 7363 003c 0ED0 beq .L364 7364 .loc 1 3795 3 discriminator 5 7365 003e BB6A ldr r3, [r7, #40] 7366 0040 002B cmp r3, #0 7367 0042 0BD0 beq .L364 7368 .loc 1 3795 3 discriminator 6 7369 0044 BB6A ldr r3, [r7, #40] 7370 0046 AA2B cmp r3, #170 7371 0048 08D0 beq .L364 7372 .loc 1 3795 3 discriminator 7 7373 004a BB6A ldr r3, [r7, #40] 7374 004c B3F52A4F cmp r3, #43520 7375 0050 04D0 beq .L364 7376 .loc 1 3795 3 discriminator 8 7377 0052 40F6D361 movw r1, #3795 7378 0056 7948 ldr r0, .L381+4 7379 0058 FFF7FEFF bl assert_failed 7380 .L364: 3796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 7381 .loc 1 3797 11 is_stmt 1 7382 005c FB68 ldr r3, [r7, #12] 7383 005e 93F84130 ldrb r3, [r3, #65] 7384 0062 DBB2 uxtb r3, r3 7385 .loc 1 3797 6 7386 0064 202B cmp r3, #32 7387 0066 40F0E180 bne .L365 3798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7388 .loc 1 3800 5 7389 006a FB68 ldr r3, [r7, #12] 7390 006c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7391 0070 012B cmp r3, #1 7392 0072 01D1 bne .L366 7393 .loc 1 3800 5 is_stmt 0 discriminator 1 7394 0074 0223 movs r3, #2 7395 0076 DAE0 b .L367 7396 .L366: 7397 .loc 1 3800 5 discriminator 2 7398 0078 FB68 ldr r3, [r7, #12] 7399 007a 0122 movs r2, #1 7400 007c 83F84020 strb r2, [r3, #64] 3801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 198 3802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; 7401 .loc 1 3802 21 is_stmt 1 discriminator 2 7402 0080 FB68 ldr r3, [r7, #12] 7403 0082 2222 movs r2, #34 7404 0084 83F84120 strb r2, [r3, #65] 3803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; 7405 .loc 1 3803 21 discriminator 2 7406 0088 FB68 ldr r3, [r7, #12] 7407 008a 1022 movs r2, #16 7408 008c 83F84220 strb r2, [r3, #66] 3804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7409 .loc 1 3804 21 discriminator 2 7410 0090 FB68 ldr r3, [r7, #12] 7411 0092 0022 movs r2, #0 7412 0094 5A64 str r2, [r3, #68] 3805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 3807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7413 .loc 1 3807 23 discriminator 2 7414 0096 FB68 ldr r3, [r7, #12] 7415 0098 7A68 ldr r2, [r7, #4] 7416 009a 5A62 str r2, [r3, #36] 3808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7417 .loc 1 3808 23 discriminator 2 7418 009c FB68 ldr r3, [r7, #12] 7419 009e 3A89 ldrh r2, [r7, #8] @ movhi 7420 00a0 5A85 strh r2, [r3, #42] @ movhi 3809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7421 .loc 1 3809 23 discriminator 2 7422 00a2 FB68 ldr r3, [r7, #12] 7423 00a4 BA6A ldr r2, [r7, #40] 7424 00a6 DA62 str r2, [r3, #44] 3810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; 7425 .loc 1 3810 23 discriminator 2 7426 00a8 FB68 ldr r3, [r7, #12] 7427 00aa 654A ldr r2, .L381+8 7428 00ac 5A63 str r2, [r3, #52] 3811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ 3813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 7429 .loc 1 3813 13 discriminator 2 7430 00ae FB68 ldr r3, [r7, #12] 7431 00b0 5B8D ldrh r3, [r3, #42] @ movhi 7432 00b2 9BB2 uxth r3, r3 7433 .loc 1 3813 8 discriminator 2 7434 00b4 FF2B cmp r3, #255 7435 00b6 06D9 bls .L368 3814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 7436 .loc 1 3815 22 7437 00b8 FB68 ldr r3, [r7, #12] 7438 00ba FF22 movs r2, #255 7439 00bc 1A85 strh r2, [r3, #40] @ movhi 3816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 7440 .loc 1 3816 16 7441 00be 4FF08073 mov r3, #16777216 7442 00c2 FB61 str r3, [r7, #28] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 199 7443 00c4 07E0 b .L369 7444 .L368: 3817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7445 .loc 1 3820 28 7446 00c6 FB68 ldr r3, [r7, #12] 7447 00c8 5B8D ldrh r3, [r3, #42] @ movhi 7448 00ca 9AB2 uxth r2, r3 7449 .loc 1 3820 22 7450 00cc FB68 ldr r3, [r7, #12] 7451 00ce 1A85 strh r2, [r3, #40] @ movhi 3821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 7452 .loc 1 3821 16 7453 00d0 FB68 ldr r3, [r7, #12] 7454 00d2 DB6A ldr r3, [r3, #44] 7455 00d4 FB61 str r3, [r7, #28] 7456 .L369: 3822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, 3825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */ 3826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */ 3827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ 7457 .loc 1 3827 14 7458 00d6 FB68 ldr r3, [r7, #12] 7459 00d8 1B6B ldr r3, [r3, #48] 7460 .loc 1 3827 8 7461 00da 122B cmp r3, #18 7462 00dc 0ED1 bne .L370 3828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 7463 .loc 1 3828 10 7464 00de BB6A ldr r3, [r7, #40] 7465 00e0 AA2B cmp r3, #170 7466 00e2 03D0 beq .L371 7467 .loc 1 3828 10 is_stmt 0 discriminator 2 7468 00e4 BB6A ldr r3, [r7, #40] 7469 00e6 B3F52A4F cmp r3, #43520 7470 00ea 01D1 bne .L372 7471 .L371: 7472 .loc 1 3828 10 discriminator 3 7473 00ec 0123 movs r3, #1 7474 00ee 00E0 b .L373 7475 .L372: 7476 .loc 1 3828 10 discriminator 4 7477 00f0 0023 movs r3, #0 7478 .L373: 3827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) 7479 .loc 1 3827 59 is_stmt 1 7480 00f2 002B cmp r3, #0 7481 00f4 02D1 bne .L370 3829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; 7482 .loc 1 3830 19 7483 00f6 0023 movs r3, #0 7484 00f8 BB61 str r3, [r7, #24] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 200 7485 00fa 0AE0 b .L374 7486 .L370: 3831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ 3835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); 7487 .loc 1 3835 7 7488 00fc F868 ldr r0, [r7, #12] 7489 00fe FFF7FEFF bl I2C_ConvertOtherXferOptions 3836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ 3838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) 7490 .loc 1 3838 15 7491 0102 FB68 ldr r3, [r7, #12] 7492 0104 5B8D ldrh r3, [r3, #42] @ movhi 7493 0106 9BB2 uxth r3, r3 7494 .loc 1 3838 10 7495 0108 FF2B cmp r3, #255 7496 010a 02D8 bhi .L374 3839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 7497 .loc 1 3840 18 7498 010c FB68 ldr r3, [r7, #12] 7499 010e DB6A ldr r3, [r3, #44] 7500 0110 FB61 str r3, [r7, #28] 7501 .L374: 3841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U) 7502 .loc 1 3844 13 7503 0112 FB68 ldr r3, [r7, #12] 7504 0114 1B8D ldrh r3, [r3, #40] 7505 .loc 1 3844 8 7506 0116 002B cmp r3, #0 7507 0118 70D0 beq .L375 3845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 7508 .loc 1 3846 15 7509 011a FB68 ldr r3, [r7, #12] 7510 011c DB6B ldr r3, [r3, #60] 7511 .loc 1 3846 10 7512 011e 002B cmp r3, #0 7513 0120 20D0 beq .L376 3847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 3849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; 7514 .loc 1 3849 13 7515 0122 FB68 ldr r3, [r7, #12] 7516 0124 DB6B ldr r3, [r3, #60] 7517 .loc 1 3849 40 7518 0126 474A ldr r2, .L381+12 7519 0128 9A62 str r2, [r3, #40] 3850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 3852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 201 7520 .loc 1 3852 13 7521 012a FB68 ldr r3, [r7, #12] 7522 012c DB6B ldr r3, [r3, #60] 7523 .loc 1 3852 41 7524 012e 464A ldr r2, .L381+16 7525 0130 1A63 str r2, [r3, #48] 3853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 3855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 7526 .loc 1 3855 13 7527 0132 FB68 ldr r3, [r7, #12] 7528 0134 DB6B ldr r3, [r3, #60] 7529 .loc 1 3855 44 7530 0136 0022 movs r2, #0 7531 0138 DA62 str r2, [r3, #44] 3856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 7532 .loc 1 3856 13 7533 013a FB68 ldr r3, [r7, #12] 7534 013c DB6B ldr r3, [r3, #60] 7535 .loc 1 3856 41 7536 013e 0022 movs r2, #0 7537 0140 5A63 str r2, [r3, #52] 3857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 3859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p 7538 .loc 1 3859 25 7539 0142 FB68 ldr r3, [r7, #12] 7540 0144 D86B ldr r0, [r3, #60] 7541 .loc 1 3859 71 7542 0146 FB68 ldr r3, [r7, #12] 7543 0148 1B68 ldr r3, [r3] 7544 .loc 1 3859 66 7545 014a 2433 adds r3, r3, #36 7546 .loc 1 3859 25 7547 014c 1946 mov r1, r3 7548 014e 7A68 ldr r2, [r7, #4] 3860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 7549 .loc 1 3860 46 7550 0150 FB68 ldr r3, [r7, #12] 7551 0152 1B8D ldrh r3, [r3, #40] 3859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 7552 .loc 1 3859 25 7553 0154 FFF7FEFF bl HAL_DMA_Start_IT 7554 0158 0346 mov r3, r0 7555 015a FB75 strb r3, [r7, #23] 3861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 3866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 3867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 3870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 202 3873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 3875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 7556 .loc 1 3877 10 7557 015c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7558 015e 002B cmp r3, #0 7559 0160 38D1 bne .L378 7560 0162 13E0 b .L380 7561 .L376: 3865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 7562 .loc 1 3865 25 7563 0164 FB68 ldr r3, [r7, #12] 7564 0166 2022 movs r2, #32 7565 0168 83F84120 strb r2, [r3, #65] 3866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7566 .loc 1 3866 25 7567 016c FB68 ldr r3, [r7, #12] 7568 016e 0022 movs r2, #0 7569 0170 83F84220 strb r2, [r3, #66] 3869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7570 .loc 1 3869 25 7571 0174 FB68 ldr r3, [r7, #12] 7572 0176 5B6C ldr r3, [r3, #68] 7573 0178 43F08002 orr r2, r3, #128 7574 017c FB68 ldr r3, [r7, #12] 7575 017e 5A64 str r2, [r3, #68] 3872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7576 .loc 1 3872 9 7577 0180 FB68 ldr r3, [r7, #12] 7578 0182 0022 movs r2, #0 7579 0184 83F84020 strb r2, [r3, #64] 3874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7580 .loc 1 3874 16 7581 0188 0123 movs r3, #1 7582 018a 50E0 b .L367 7583 .L380: 3878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ 3880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); 7584 .loc 1 3880 59 7585 018c FB68 ldr r3, [r7, #12] 7586 018e 1B8D ldrh r3, [r3, #40] 7587 .loc 1 3880 9 7588 0190 DAB2 uxtb r2, r3 7589 0192 7989 ldrh r1, [r7, #10] 7590 0194 BB69 ldr r3, [r7, #24] 7591 0196 0093 str r3, [sp] 7592 0198 FB69 ldr r3, [r7, #28] 7593 019a F868 ldr r0, [r7, #12] 7594 019c FFF7FEFF bl I2C_TransferConfig 3881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 3883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 7595 .loc 1 3883 25 7596 01a0 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 203 7597 01a2 5B8D ldrh r3, [r3, #42] @ movhi 7598 01a4 9AB2 uxth r2, r3 7599 .loc 1 3883 32 7600 01a6 FB68 ldr r3, [r7, #12] 7601 01a8 1B8D ldrh r3, [r3, #40] 7602 .loc 1 3883 25 7603 01aa D31A subs r3, r2, r3 7604 01ac 9AB2 uxth r2, r3 7605 01ae FB68 ldr r3, [r7, #12] 7606 01b0 5A85 strh r2, [r3, #42] @ movhi 3884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7607 .loc 1 3886 9 7608 01b2 FB68 ldr r3, [r7, #12] 7609 01b4 0022 movs r2, #0 7610 01b6 83F84020 strb r2, [r3, #64] 3887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 3889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 3892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 7611 .loc 1 3892 9 7612 01ba 1021 movs r1, #16 7613 01bc F868 ldr r0, [r7, #12] 7614 01be FFF7FEFF bl I2C_Enable_IRQ 3893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 3895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 7615 .loc 1 3895 13 7616 01c2 FB68 ldr r3, [r7, #12] 7617 01c4 1B68 ldr r3, [r3] 7618 .loc 1 3895 29 7619 01c6 1A68 ldr r2, [r3] 7620 .loc 1 3895 13 7621 01c8 FB68 ldr r3, [r7, #12] 7622 01ca 1B68 ldr r3, [r3] 7623 .loc 1 3895 29 7624 01cc 42F40042 orr r2, r2, #32768 7625 01d0 1A60 str r2, [r3] 7626 01d2 29E0 b .L379 7627 .L378: 3896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 3900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 7628 .loc 1 3900 25 7629 01d4 FB68 ldr r3, [r7, #12] 7630 01d6 2022 movs r2, #32 7631 01d8 83F84120 strb r2, [r3, #65] 3901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 7632 .loc 1 3901 25 7633 01dc FB68 ldr r3, [r7, #12] 7634 01de 0022 movs r2, #0 7635 01e0 83F84220 strb r2, [r3, #66] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 204 3902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 3904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 7636 .loc 1 3904 25 7637 01e4 FB68 ldr r3, [r7, #12] 7638 01e6 5B6C ldr r3, [r3, #68] 7639 01e8 43F01002 orr r2, r3, #16 7640 01ec FB68 ldr r3, [r7, #12] 7641 01ee 5A64 str r2, [r3, #68] 3905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7642 .loc 1 3907 9 7643 01f0 FB68 ldr r3, [r7, #12] 7644 01f2 0022 movs r2, #0 7645 01f4 83F84020 strb r2, [r3, #64] 3908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7646 .loc 1 3909 16 7647 01f8 0123 movs r3, #1 7648 01fa 18E0 b .L367 7649 .L375: 3910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ 3915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; 7650 .loc 1 3915 21 7651 01fc FB68 ldr r3, [r7, #12] 7652 01fe 134A ldr r2, .L381+20 7653 0200 5A63 str r2, [r3, #52] 3916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */ 3918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ 3919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, 7654 .loc 1 3919 57 7655 0202 FB68 ldr r3, [r7, #12] 7656 0204 1B8D ldrh r3, [r3, #40] 7657 .loc 1 3919 7 7658 0206 DAB2 uxtb r2, r3 7659 0208 7989 ldrh r1, [r7, #10] 7660 020a 0B4B ldr r3, .L381 7661 020c 0093 str r3, [sp] 7662 020e 4FF00073 mov r3, #33554432 7663 0212 F868 ldr r0, [r7, #12] 7664 0214 FFF7FEFF bl I2C_TransferConfig 3920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ); 3921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 3923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7665 .loc 1 3923 7 7666 0218 FB68 ldr r3, [r7, #12] 7667 021a 0022 movs r2, #0 7668 021c 83F84020 strb r2, [r3, #64] 3924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 205 3926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 3927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 3928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ 3929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */ 3930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | 3931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ 3932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 7669 .loc 1 3932 7 7670 0220 0221 movs r1, #2 7671 0222 F868 ldr r0, [r7, #12] 7672 0224 FFF7FEFF bl I2C_Enable_IRQ 7673 .L379: 3933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7674 .loc 1 3935 12 7675 0228 0023 movs r3, #0 7676 022a 00E0 b .L367 7677 .L365: 3936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 3938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 7678 .loc 1 3939 12 7679 022c 0223 movs r3, #2 7680 .L367: 3940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7681 .loc 1 3941 1 7682 022e 1846 mov r0, r3 7683 0230 2037 adds r7, r7, #32 7684 .LCFI135: 7685 .cfi_def_cfa_offset 8 7686 0232 BD46 mov sp, r7 7687 .LCFI136: 7688 .cfi_def_cfa_register 13 7689 @ sp needed 7690 0234 80BD pop {r7, pc} 7691 .L382: 7692 0236 00BF .align 2 7693 .L381: 7694 0238 00240080 .word -2147474432 7695 023c 00000000 .word .LC0 7696 0240 00000000 .word I2C_Master_ISR_DMA 7697 0244 00000000 .word I2C_DMAMasterReceiveCplt 7698 0248 00000000 .word I2C_DMAError 7699 024c 00000000 .word I2C_Master_ISR_IT 7700 .cfi_endproc 7701 .LFE156: 7703 .section .text.HAL_I2C_Slave_Seq_Transmit_IT,"ax",%progbits 7704 .align 1 7705 .global HAL_I2C_Slave_Seq_Transmit_IT 7706 .syntax unified 7707 .thumb 7708 .thumb_func 7710 HAL_I2C_Slave_Seq_Transmit_IT: 7711 .LFB157: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 206 3942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 3944: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 3945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 3946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 3947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 3948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 3949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 3950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 3951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 3952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 3953: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 3954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 3955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7712 .loc 1 3955 1 7713 .cfi_startproc 7714 @ args = 0, pretend = 0, frame = 24 7715 @ frame_needed = 1, uses_anonymous_args = 0 7716 0000 80B5 push {r7, lr} 7717 .LCFI137: 7718 .cfi_def_cfa_offset 8 7719 .cfi_offset 7, -8 7720 .cfi_offset 14, -4 7721 0002 86B0 sub sp, sp, #24 7722 .LCFI138: 7723 .cfi_def_cfa_offset 32 7724 0004 00AF add r7, sp, #0 7725 .LCFI139: 7726 .cfi_def_cfa_register 7 7727 0006 F860 str r0, [r7, #12] 7728 0008 B960 str r1, [r7, #8] 7729 000a 3B60 str r3, [r7] 7730 000c 1346 mov r3, r2 @ movhi 7731 000e FB80 strh r3, [r7, #6] @ movhi 3956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 3957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 3958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 3960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 7732 .loc 1 3960 3 7733 0010 3B68 ldr r3, [r7] 7734 0012 002B cmp r3, #0 7735 0014 1ED0 beq .L384 7736 .loc 1 3960 3 is_stmt 0 discriminator 1 7737 0016 3B68 ldr r3, [r7] 7738 0018 B3F1807F cmp r3, #16777216 7739 001c 1AD0 beq .L384 7740 .loc 1 3960 3 discriminator 2 7741 001e 3B68 ldr r3, [r7] 7742 0020 B3F1807F cmp r3, #16777216 7743 0024 16D0 beq .L384 7744 .loc 1 3960 3 discriminator 3 7745 0026 3B68 ldr r3, [r7] 7746 0028 B3F1007F cmp r3, #33554432 7747 002c 12D0 beq .L384 7748 .loc 1 3960 3 discriminator 4 7749 002e 3B68 ldr r3, [r7] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 207 7750 0030 B3F1007F cmp r3, #33554432 7751 0034 0ED0 beq .L384 7752 .loc 1 3960 3 discriminator 5 7753 0036 3B68 ldr r3, [r7] 7754 0038 002B cmp r3, #0 7755 003a 0BD0 beq .L384 7756 .loc 1 3960 3 discriminator 6 7757 003c 3B68 ldr r3, [r7] 7758 003e AA2B cmp r3, #170 7759 0040 08D0 beq .L384 7760 .loc 1 3960 3 discriminator 7 7761 0042 3B68 ldr r3, [r7] 7762 0044 B3F52A4F cmp r3, #43520 7763 0048 04D0 beq .L384 7764 .loc 1 3960 3 discriminator 8 7765 004a 40F67871 movw r1, #3960 7766 004e 5448 ldr r0, .L392 7767 0050 FFF7FEFF bl assert_failed 7768 .L384: 3961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3962: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) 7769 .loc 1 3962 22 is_stmt 1 7770 0054 FB68 ldr r3, [r7, #12] 7771 0056 93F84130 ldrb r3, [r3, #65] 7772 005a DBB2 uxtb r3, r3 7773 .loc 1 3962 30 7774 005c 03F02803 and r3, r3, #40 7775 .loc 1 3962 6 7776 0060 282B cmp r3, #40 7777 0062 40F09880 bne .L385 3963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 7778 .loc 1 3964 8 7779 0066 BB68 ldr r3, [r7, #8] 7780 0068 002B cmp r3, #0 7781 006a 02D0 beq .L386 7782 .loc 1 3964 25 discriminator 1 7783 006c FB88 ldrh r3, [r7, #6] 7784 006e 002B cmp r3, #0 7785 0070 05D1 bne .L387 7786 .L386: 3965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 7787 .loc 1 3966 23 7788 0072 FB68 ldr r3, [r7, #12] 7789 0074 4FF40072 mov r2, #512 7790 0078 5A64 str r2, [r3, #68] 3967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7791 .loc 1 3967 15 7792 007a 0123 movs r3, #1 7793 007c 8CE0 b .L388 7794 .L387: 3968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 3969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 3971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); 7795 .loc 1 3971 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 208 7796 007e 48F20101 movw r1, #32769 7797 0082 F868 ldr r0, [r7, #12] 7798 0084 FFF7FEFF bl I2C_Disable_IRQ 3972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 3974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 7799 .loc 1 3974 5 7800 0088 FB68 ldr r3, [r7, #12] 7801 008a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 7802 008e 012B cmp r3, #1 7803 0090 01D1 bne .L389 7804 .loc 1 3974 5 is_stmt 0 discriminator 1 7805 0092 0223 movs r3, #2 7806 0094 80E0 b .L388 7807 .L389: 7808 .loc 1 3974 5 discriminator 2 7809 0096 FB68 ldr r3, [r7, #12] 7810 0098 0122 movs r2, #1 7811 009a 83F84020 strb r2, [r3, #64] 3975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 3977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ 3978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 7812 .loc 1 3978 13 is_stmt 1 discriminator 2 7813 009e FB68 ldr r3, [r7, #12] 7814 00a0 93F84130 ldrb r3, [r3, #65] 7815 00a4 DBB2 uxtb r3, r3 7816 .loc 1 3978 8 discriminator 2 7817 00a6 2A2B cmp r3, #42 7818 00a8 2AD1 bne .L390 3979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 3981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 7819 .loc 1 3981 7 7820 00aa 0221 movs r1, #2 7821 00ac F868 ldr r0, [r7, #12] 7822 00ae FFF7FEFF bl I2C_Disable_IRQ 3982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 3984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 7823 .loc 1 3984 16 7824 00b2 FB68 ldr r3, [r7, #12] 7825 00b4 1B68 ldr r3, [r3] 7826 .loc 1 3984 26 7827 00b6 1B68 ldr r3, [r3] 7828 .loc 1 3984 32 7829 00b8 03F40043 and r3, r3, #32768 7830 .loc 1 3984 10 7831 00bc B3F5004F cmp r3, #32768 7832 00c0 1ED1 bne .L390 3985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 7833 .loc 1 3986 13 7834 00c2 FB68 ldr r3, [r7, #12] 7835 00c4 1B68 ldr r3, [r3] 7836 .loc 1 3986 29 7837 00c6 1A68 ldr r2, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 209 7838 .loc 1 3986 13 7839 00c8 FB68 ldr r3, [r7, #12] 7840 00ca 1B68 ldr r3, [r3] 7841 .loc 1 3986 29 7842 00cc 22F40042 bic r2, r2, #32768 7843 00d0 1A60 str r2, [r3] 3987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 7844 .loc 1 3988 17 7845 00d2 FB68 ldr r3, [r7, #12] 7846 00d4 DB6B ldr r3, [r3, #60] 7847 .loc 1 3988 12 7848 00d6 002B cmp r3, #0 7849 00d8 12D0 beq .L390 3989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 3991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 3992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 7850 .loc 1 3992 15 7851 00da FB68 ldr r3, [r7, #12] 7852 00dc DB6B ldr r3, [r3, #60] 7853 .loc 1 3992 43 7854 00de 314A ldr r2, .L392+4 7855 00e0 5A63 str r2, [r3, #52] 3993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 3994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 3995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 7856 .loc 1 3995 15 7857 00e2 FB68 ldr r3, [r7, #12] 7858 00e4 DB6B ldr r3, [r3, #60] 7859 00e6 1846 mov r0, r3 7860 00e8 FFF7FEFF bl HAL_DMA_Abort_IT 7861 00ec 0346 mov r3, r0 7862 .loc 1 3995 14 7863 00ee 002B cmp r3, #0 7864 00f0 06D0 beq .L390 3996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 3997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 3998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 7865 .loc 1 3998 17 7866 00f2 FB68 ldr r3, [r7, #12] 7867 00f4 DB6B ldr r3, [r3, #60] 7868 .loc 1 3998 25 7869 00f6 5B6B ldr r3, [r3, #52] 7870 .loc 1 3998 49 7871 00f8 FA68 ldr r2, [r7, #12] 7872 00fa D26B ldr r2, [r2, #60] 7873 .loc 1 3998 13 7874 00fc 1046 mov r0, r2 7875 00fe 9847 blx r3 7876 .LVL0: 7877 .L390: 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 **** } 4002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 210 4004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; 7878 .loc 1 4004 21 7879 0100 FB68 ldr r3, [r7, #12] 7880 0102 2922 movs r2, #41 7881 0104 83F84120 strb r2, [r3, #65] 4005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 7882 .loc 1 4005 21 7883 0108 FB68 ldr r3, [r7, #12] 7884 010a 2022 movs r2, #32 7885 010c 83F84220 strb r2, [r3, #66] 4006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 7886 .loc 1 4006 21 7887 0110 FB68 ldr r3, [r7, #12] 7888 0112 0022 movs r2, #0 7889 0114 5A64 str r2, [r3, #68] 4007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 7890 .loc 1 4009 9 7891 0116 FB68 ldr r3, [r7, #12] 7892 0118 1B68 ldr r3, [r3] 7893 .loc 1 4009 25 7894 011a 5A68 ldr r2, [r3, #4] 7895 .loc 1 4009 9 7896 011c FB68 ldr r3, [r7, #12] 7897 011e 1B68 ldr r3, [r3] 7898 .loc 1 4009 25 7899 0120 22F40042 bic r2, r2, #32768 7900 0124 5A60 str r2, [r3, #4] 4010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 7901 .loc 1 4012 23 7902 0126 FB68 ldr r3, [r7, #12] 7903 0128 BA68 ldr r2, [r7, #8] 7904 012a 5A62 str r2, [r3, #36] 4013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 7905 .loc 1 4013 23 7906 012c FB68 ldr r3, [r7, #12] 7907 012e FA88 ldrh r2, [r7, #6] @ movhi 7908 0130 5A85 strh r2, [r3, #42] @ movhi 4014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 7909 .loc 1 4014 29 7910 0132 FB68 ldr r3, [r7, #12] 7911 0134 5B8D ldrh r3, [r3, #42] @ movhi 7912 0136 9AB2 uxth r2, r3 7913 .loc 1 4014 23 7914 0138 FB68 ldr r3, [r7, #12] 7915 013a 1A85 strh r2, [r3, #40] @ movhi 4015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 7916 .loc 1 4015 23 7917 013c FB68 ldr r3, [r7, #12] 7918 013e 3A68 ldr r2, [r7] 7919 0140 DA62 str r2, [r3, #44] 4016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 7920 .loc 1 4016 23 7921 0142 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 211 7922 0144 184A ldr r2, .L392+8 7923 0146 5A63 str r2, [r3, #52] 4017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 7924 .loc 1 4018 11 7925 0148 FB68 ldr r3, [r7, #12] 7926 014a 1B68 ldr r3, [r3] 7927 014c 9B69 ldr r3, [r3, #24] 7928 014e 03F00803 and r3, r3, #8 7929 0152 082B cmp r3, #8 7930 0154 0CBF ite eq 7931 0156 0123 moveq r3, #1 7932 0158 0023 movne r3, #0 7933 015a DBB2 uxtb r3, r3 7934 .loc 1 4018 9 7935 015c FB75 strb r3, [r7, #23] 4019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) 7936 .loc 1 4019 10 7937 015e FB68 ldr r3, [r7, #12] 7938 0160 1B68 ldr r3, [r3] 7939 0162 9B69 ldr r3, [r3, #24] 7940 0164 1B0C lsrs r3, r3, #16 7941 0166 DBB2 uxtb r3, r3 7942 0168 03F00103 and r3, r3, #1 7943 016c DBB2 uxtb r3, r3 7944 .loc 1 4019 8 7945 016e 012B cmp r3, #1 7946 0170 06D1 bne .L391 7947 .loc 1 4019 54 discriminator 1 7948 0172 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7949 0174 002B cmp r3, #0 7950 0176 03D0 beq .L391 4020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 7951 .loc 1 4023 7 7952 0178 FB68 ldr r3, [r7, #12] 7953 017a 1B68 ldr r3, [r3] 7954 017c 0822 movs r2, #8 7955 017e DA61 str r2, [r3, #28] 7956 .L391: 4024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 7957 .loc 1 4027 5 7958 0180 FB68 ldr r3, [r7, #12] 7959 0182 0022 movs r2, #0 7960 0184 83F84020 strb r2, [r3, #64] 4028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ 4033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); 7961 .loc 1 4033 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 212 7962 0188 48F20101 movw r1, #32769 7963 018c F868 ldr r0, [r7, #12] 7964 018e FFF7FEFF bl I2C_Enable_IRQ 4034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 7965 .loc 1 4035 12 7966 0192 0023 movs r3, #0 7967 0194 00E0 b .L388 7968 .L385: 4036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 7969 .loc 1 4039 12 7970 0196 0123 movs r3, #1 7971 .L388: 4040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7972 .loc 1 4041 1 7973 0198 1846 mov r0, r3 7974 019a 1837 adds r7, r7, #24 7975 .LCFI140: 7976 .cfi_def_cfa_offset 8 7977 019c BD46 mov sp, r7 7978 .LCFI141: 7979 .cfi_def_cfa_register 13 7980 @ sp needed 7981 019e 80BD pop {r7, pc} 7982 .L393: 7983 .align 2 7984 .L392: 7985 01a0 00000000 .word .LC0 7986 01a4 00000000 .word I2C_DMAAbort 7987 01a8 00000000 .word I2C_Slave_ISR_IT 7988 .cfi_endproc 7989 .LFE157: 7991 .section .text.HAL_I2C_Slave_Seq_Transmit_DMA,"ax",%progbits 7992 .align 1 7993 .global HAL_I2C_Slave_Seq_Transmit_DMA 7994 .syntax unified 7995 .thumb 7996 .thumb_func 7998 HAL_I2C_Slave_Seq_Transmit_DMA: 7999 .LFB158: 4042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4044: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 4045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 4046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 4049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 4050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 4051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4053: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 4054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 213 4055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8000 .loc 1 4055 1 8001 .cfi_startproc 8002 @ args = 0, pretend = 0, frame = 24 8003 @ frame_needed = 1, uses_anonymous_args = 0 8004 0000 80B5 push {r7, lr} 8005 .LCFI142: 8006 .cfi_def_cfa_offset 8 8007 .cfi_offset 7, -8 8008 .cfi_offset 14, -4 8009 0002 86B0 sub sp, sp, #24 8010 .LCFI143: 8011 .cfi_def_cfa_offset 32 8012 0004 00AF add r7, sp, #0 8013 .LCFI144: 8014 .cfi_def_cfa_register 7 8015 0006 F860 str r0, [r7, #12] 8016 0008 B960 str r1, [r7, #8] 8017 000a 3B60 str r3, [r7] 8018 000c 1346 mov r3, r2 @ movhi 8019 000e FB80 strh r3, [r7, #6] @ movhi 4056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 4058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; 4059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 8020 .loc 1 4061 3 8021 0010 3B68 ldr r3, [r7] 8022 0012 002B cmp r3, #0 8023 0014 1ED0 beq .L395 8024 .loc 1 4061 3 is_stmt 0 discriminator 1 8025 0016 3B68 ldr r3, [r7] 8026 0018 B3F1807F cmp r3, #16777216 8027 001c 1AD0 beq .L395 8028 .loc 1 4061 3 discriminator 2 8029 001e 3B68 ldr r3, [r7] 8030 0020 B3F1807F cmp r3, #16777216 8031 0024 16D0 beq .L395 8032 .loc 1 4061 3 discriminator 3 8033 0026 3B68 ldr r3, [r7] 8034 0028 B3F1007F cmp r3, #33554432 8035 002c 12D0 beq .L395 8036 .loc 1 4061 3 discriminator 4 8037 002e 3B68 ldr r3, [r7] 8038 0030 B3F1007F cmp r3, #33554432 8039 0034 0ED0 beq .L395 8040 .loc 1 4061 3 discriminator 5 8041 0036 3B68 ldr r3, [r7] 8042 0038 002B cmp r3, #0 8043 003a 0BD0 beq .L395 8044 .loc 1 4061 3 discriminator 6 8045 003c 3B68 ldr r3, [r7] 8046 003e AA2B cmp r3, #170 8047 0040 08D0 beq .L395 8048 .loc 1 4061 3 discriminator 7 8049 0042 3B68 ldr r3, [r7] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 214 8050 0044 B3F52A4F cmp r3, #43520 8051 0048 04D0 beq .L395 8052 .loc 1 4061 3 discriminator 8 8053 004a 40F6DD71 movw r1, #4061 8054 004e 9A48 ldr r0, .L410 8055 0050 FFF7FEFF bl assert_failed 8056 .L395: 4062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4063: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) 8057 .loc 1 4063 22 is_stmt 1 8058 0054 FB68 ldr r3, [r7, #12] 8059 0056 93F84130 ldrb r3, [r3, #65] 8060 005a DBB2 uxtb r3, r3 8061 .loc 1 4063 30 8062 005c 03F02803 and r3, r3, #40 8063 .loc 1 4063 6 8064 0060 282B cmp r3, #40 8065 0062 40F03381 bne .L396 4064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 8066 .loc 1 4065 8 8067 0066 BB68 ldr r3, [r7, #8] 8068 0068 002B cmp r3, #0 8069 006a 02D0 beq .L397 8070 .loc 1 4065 25 discriminator 1 8071 006c FB88 ldrh r3, [r7, #6] 8072 006e 002B cmp r3, #0 8073 0070 05D1 bne .L398 8074 .L397: 4066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 8075 .loc 1 4067 23 8076 0072 FB68 ldr r3, [r7, #12] 8077 0074 4FF40072 mov r2, #512 8078 0078 5A64 str r2, [r3, #68] 4068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8079 .loc 1 4068 15 8080 007a 0123 movs r3, #1 8081 007c 27E1 b .L399 8082 .L398: 4069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 8083 .loc 1 4072 5 8084 007e FB68 ldr r3, [r7, #12] 8085 0080 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 8086 0084 012B cmp r3, #1 8087 0086 01D1 bne .L400 8088 .loc 1 4072 5 is_stmt 0 discriminator 1 8089 0088 0223 movs r3, #2 8090 008a 20E1 b .L399 8091 .L400: 8092 .loc 1 4072 5 discriminator 2 8093 008c FB68 ldr r3, [r7, #12] 8094 008e 0122 movs r2, #1 8095 0090 83F84020 strb r2, [r3, #64] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 215 4073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 4075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); 8096 .loc 1 4075 5 is_stmt 1 discriminator 2 8097 0094 48F20101 movw r1, #32769 8098 0098 F868 ldr r0, [r7, #12] 8099 009a FFF7FEFF bl I2C_Disable_IRQ 4076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 4078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ 4079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 8100 .loc 1 4079 13 discriminator 2 8101 009e FB68 ldr r3, [r7, #12] 8102 00a0 93F84130 ldrb r3, [r3, #65] 8103 00a4 DBB2 uxtb r3, r3 8104 .loc 1 4079 8 discriminator 2 8105 00a6 2A2B cmp r3, #42 8106 00a8 2BD1 bne .L401 4080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 4082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 8107 .loc 1 4082 7 8108 00aa 0221 movs r1, #2 8109 00ac F868 ldr r0, [r7, #12] 8110 00ae FFF7FEFF bl I2C_Disable_IRQ 4083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 8111 .loc 1 4084 16 8112 00b2 FB68 ldr r3, [r7, #12] 8113 00b4 1B68 ldr r3, [r3] 8114 .loc 1 4084 26 8115 00b6 1B68 ldr r3, [r3] 8116 .loc 1 4084 32 8117 00b8 03F40043 and r3, r3, #32768 8118 .loc 1 4084 10 8119 00bc B3F5004F cmp r3, #32768 8120 00c0 4CD1 bne .L402 4085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 8121 .loc 1 4087 17 8122 00c2 FB68 ldr r3, [r7, #12] 8123 00c4 DB6B ldr r3, [r3, #60] 8124 .loc 1 4087 12 8125 00c6 002B cmp r3, #0 8126 00c8 48D0 beq .L402 4088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 8127 .loc 1 4089 15 8128 00ca FB68 ldr r3, [r7, #12] 8129 00cc 1B68 ldr r3, [r3] 8130 .loc 1 4089 31 8131 00ce 1A68 ldr r2, [r3] 8132 .loc 1 4089 15 8133 00d0 FB68 ldr r3, [r7, #12] 8134 00d2 1B68 ldr r3, [r3] 8135 .loc 1 4089 31 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 216 8136 00d4 22F40042 bic r2, r2, #32768 8137 00d8 1A60 str r2, [r3] 4090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 8138 .loc 1 4093 15 8139 00da FB68 ldr r3, [r7, #12] 8140 00dc DB6B ldr r3, [r3, #60] 8141 .loc 1 4093 43 8142 00de 774A ldr r2, .L410+4 8143 00e0 5A63 str r2, [r3, #52] 4094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 4096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 8144 .loc 1 4096 15 8145 00e2 FB68 ldr r3, [r7, #12] 8146 00e4 DB6B ldr r3, [r3, #60] 8147 00e6 1846 mov r0, r3 8148 00e8 FFF7FEFF bl HAL_DMA_Abort_IT 8149 00ec 0346 mov r3, r0 8150 .loc 1 4096 14 8151 00ee 002B cmp r3, #0 8152 00f0 34D0 beq .L402 4097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 8153 .loc 1 4099 17 8154 00f2 FB68 ldr r3, [r7, #12] 8155 00f4 DB6B ldr r3, [r3, #60] 8156 .loc 1 4099 25 8157 00f6 5B6B ldr r3, [r3, #52] 8158 .loc 1 4099 49 8159 00f8 FA68 ldr r2, [r7, #12] 8160 00fa D26B ldr r2, [r2, #60] 8161 .loc 1 4099 13 8162 00fc 1046 mov r0, r2 8163 00fe 9847 blx r3 8164 .LVL1: 8165 0100 2CE0 b .L402 8166 .L401: 4100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 8167 .loc 1 4104 18 8168 0102 FB68 ldr r3, [r7, #12] 8169 0104 93F84130 ldrb r3, [r3, #65] 8170 0108 DBB2 uxtb r3, r3 8171 .loc 1 4104 13 8172 010a 292B cmp r3, #41 8173 010c 26D1 bne .L402 4105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 8174 .loc 1 4106 16 8175 010e FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 217 8176 0110 1B68 ldr r3, [r3] 8177 .loc 1 4106 26 8178 0112 1B68 ldr r3, [r3] 8179 .loc 1 4106 32 8180 0114 03F48043 and r3, r3, #16384 8181 .loc 1 4106 10 8182 0118 B3F5804F cmp r3, #16384 8183 011c 1ED1 bne .L402 4107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 8184 .loc 1 4108 13 8185 011e FB68 ldr r3, [r7, #12] 8186 0120 1B68 ldr r3, [r3] 8187 .loc 1 4108 29 8188 0122 1A68 ldr r2, [r3] 8189 .loc 1 4108 13 8190 0124 FB68 ldr r3, [r7, #12] 8191 0126 1B68 ldr r3, [r3] 8192 .loc 1 4108 29 8193 0128 22F48042 bic r2, r2, #16384 8194 012c 1A60 str r2, [r3] 4109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 8195 .loc 1 4111 17 8196 012e FB68 ldr r3, [r7, #12] 8197 0130 9B6B ldr r3, [r3, #56] 8198 .loc 1 4111 12 8199 0132 002B cmp r3, #0 8200 0134 12D0 beq .L402 4112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 8201 .loc 1 4115 15 8202 0136 FB68 ldr r3, [r7, #12] 8203 0138 9B6B ldr r3, [r3, #56] 8204 .loc 1 4115 43 8205 013a 604A ldr r2, .L410+4 8206 013c 5A63 str r2, [r3, #52] 4116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 4118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 8207 .loc 1 4118 15 8208 013e FB68 ldr r3, [r7, #12] 8209 0140 9B6B ldr r3, [r3, #56] 8210 0142 1846 mov r0, r3 8211 0144 FFF7FEFF bl HAL_DMA_Abort_IT 8212 0148 0346 mov r3, r0 8213 .loc 1 4118 14 8214 014a 002B cmp r3, #0 8215 014c 06D0 beq .L402 4119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 8216 .loc 1 4121 17 8217 014e FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 218 8218 0150 9B6B ldr r3, [r3, #56] 8219 .loc 1 4121 25 8220 0152 5B6B ldr r3, [r3, #52] 8221 .loc 1 4121 49 8222 0154 FA68 ldr r2, [r7, #12] 8223 0156 926B ldr r2, [r2, #56] 8224 .loc 1 4121 13 8225 0158 1046 mov r0, r2 8226 015a 9847 blx r3 8227 .LVL2: 8228 .L402: 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 **** } 4125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 4129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; 8229 .loc 1 4131 21 8230 015c FB68 ldr r3, [r7, #12] 8231 015e 2922 movs r2, #41 8232 0160 83F84120 strb r2, [r3, #65] 4132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 8233 .loc 1 4132 21 8234 0164 FB68 ldr r3, [r7, #12] 8235 0166 2022 movs r2, #32 8236 0168 83F84220 strb r2, [r3, #66] 4133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 8237 .loc 1 4133 21 8238 016c FB68 ldr r3, [r7, #12] 8239 016e 0022 movs r2, #0 8240 0170 5A64 str r2, [r3, #68] 4134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 8241 .loc 1 4136 9 8242 0172 FB68 ldr r3, [r7, #12] 8243 0174 1B68 ldr r3, [r3] 8244 .loc 1 4136 25 8245 0176 5A68 ldr r2, [r3, #4] 8246 .loc 1 4136 9 8247 0178 FB68 ldr r3, [r7, #12] 8248 017a 1B68 ldr r3, [r3] 8249 .loc 1 4136 25 8250 017c 22F40042 bic r2, r2, #32768 8251 0180 5A60 str r2, [r3, #4] 4137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 8252 .loc 1 4139 23 8253 0182 FB68 ldr r3, [r7, #12] 8254 0184 BA68 ldr r2, [r7, #8] 8255 0186 5A62 str r2, [r3, #36] 4140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 219 8256 .loc 1 4140 23 8257 0188 FB68 ldr r3, [r7, #12] 8258 018a FA88 ldrh r2, [r7, #6] @ movhi 8259 018c 5A85 strh r2, [r3, #42] @ movhi 4141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 8260 .loc 1 4141 29 8261 018e FB68 ldr r3, [r7, #12] 8262 0190 5B8D ldrh r3, [r3, #42] @ movhi 8263 0192 9AB2 uxth r2, r3 8264 .loc 1 4141 23 8265 0194 FB68 ldr r3, [r7, #12] 8266 0196 1A85 strh r2, [r3, #40] @ movhi 4142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 8267 .loc 1 4142 23 8268 0198 FB68 ldr r3, [r7, #12] 8269 019a 3A68 ldr r2, [r7] 8270 019c DA62 str r2, [r3, #44] 4143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 8271 .loc 1 4143 23 8272 019e FB68 ldr r3, [r7, #12] 8273 01a0 474A ldr r2, .L410+8 8274 01a2 5A63 str r2, [r3, #52] 4144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 8275 .loc 1 4145 13 8276 01a4 FB68 ldr r3, [r7, #12] 8277 01a6 9B6B ldr r3, [r3, #56] 8278 .loc 1 4145 8 8279 01a8 002B cmp r3, #0 8280 01aa 20D0 beq .L403 4146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 4148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; 8281 .loc 1 4148 11 8282 01ac FB68 ldr r3, [r7, #12] 8283 01ae 9B6B ldr r3, [r3, #56] 8284 .loc 1 4148 38 8285 01b0 444A ldr r2, .L410+12 8286 01b2 9A62 str r2, [r3, #40] 4149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 4151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; 8287 .loc 1 4151 11 8288 01b4 FB68 ldr r3, [r7, #12] 8289 01b6 9B6B ldr r3, [r3, #56] 8290 .loc 1 4151 39 8291 01b8 434A ldr r2, .L410+16 8292 01ba 1A63 str r2, [r3, #48] 4152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 4154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; 8293 .loc 1 4154 11 8294 01bc FB68 ldr r3, [r7, #12] 8295 01be 9B6B ldr r3, [r3, #56] 8296 .loc 1 4154 42 8297 01c0 0022 movs r2, #0 8298 01c2 DA62 str r2, [r3, #44] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 220 4155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 8299 .loc 1 4155 11 8300 01c4 FB68 ldr r3, [r7, #12] 8301 01c6 9B6B ldr r3, [r3, #56] 8302 .loc 1 4155 39 8303 01c8 0022 movs r2, #0 8304 01ca 5A63 str r2, [r3, #52] 4156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 4158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX 8305 .loc 1 4158 23 8306 01cc FB68 ldr r3, [r7, #12] 8307 01ce 986B ldr r0, [r3, #56] 8308 01d0 B968 ldr r1, [r7, #8] 8309 .loc 1 4158 86 8310 01d2 FB68 ldr r3, [r7, #12] 8311 01d4 1B68 ldr r3, [r3] 8312 .loc 1 4158 81 8313 01d6 2833 adds r3, r3, #40 8314 .loc 1 4158 23 8315 01d8 1A46 mov r2, r3 4159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 8316 .loc 1 4159 44 8317 01da FB68 ldr r3, [r7, #12] 8318 01dc 1B8D ldrh r3, [r3, #40] 4158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize); 8319 .loc 1 4158 23 8320 01de FFF7FEFF bl HAL_DMA_Start_IT 8321 01e2 0346 mov r3, r0 8322 01e4 FB75 strb r3, [r7, #23] 4160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 4169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 8323 .loc 1 4176 8 8324 01e6 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 8325 01e8 002B cmp r3, #0 8326 01ea 36D1 bne .L405 8327 01ec 13E0 b .L408 8328 .L403: 4164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 8329 .loc 1 4164 23 8330 01ee FB68 ldr r3, [r7, #12] 8331 01f0 2822 movs r2, #40 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 221 8332 01f2 83F84120 strb r2, [r3, #65] 4165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8333 .loc 1 4165 23 8334 01f6 FB68 ldr r3, [r7, #12] 8335 01f8 0022 movs r2, #0 8336 01fa 83F84220 strb r2, [r3, #66] 4168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8337 .loc 1 4168 23 8338 01fe FB68 ldr r3, [r7, #12] 8339 0200 5B6C ldr r3, [r3, #68] 8340 0202 43F08002 orr r2, r3, #128 8341 0206 FB68 ldr r3, [r7, #12] 8342 0208 5A64 str r2, [r3, #68] 4171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8343 .loc 1 4171 7 8344 020a FB68 ldr r3, [r7, #12] 8345 020c 0022 movs r2, #0 8346 020e 83F84020 strb r2, [r3, #64] 4173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8347 .loc 1 4173 14 8348 0212 0123 movs r3, #1 8349 0214 5BE0 b .L399 8350 .L408: 4177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 4179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 8351 .loc 1 4179 23 8352 0216 FB68 ldr r3, [r7, #12] 8353 0218 5B8D ldrh r3, [r3, #42] @ movhi 8354 021a 9AB2 uxth r2, r3 8355 .loc 1 4179 30 8356 021c FB68 ldr r3, [r7, #12] 8357 021e 1B8D ldrh r3, [r3, #40] 8358 .loc 1 4179 23 8359 0220 D31A subs r3, r2, r3 8360 0222 9AB2 uxth r2, r3 8361 0224 FB68 ldr r3, [r7, #12] 8362 0226 5A85 strh r2, [r3, #42] @ movhi 4180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */ 4182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0; 8363 .loc 1 4182 22 8364 0228 FB68 ldr r3, [r7, #12] 8365 022a 0022 movs r2, #0 8366 022c 1A85 strh r2, [r3, #40] @ movhi 4183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 4192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 222 4195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 8367 .loc 1 4199 11 8368 022e FB68 ldr r3, [r7, #12] 8369 0230 1B68 ldr r3, [r3] 8370 0232 9B69 ldr r3, [r3, #24] 8371 0234 03F00803 and r3, r3, #8 8372 0238 082B cmp r3, #8 8373 023a 0CBF ite eq 8374 023c 0123 moveq r3, #1 8375 023e 0023 movne r3, #0 8376 0240 DBB2 uxtb r3, r3 8377 .loc 1 4199 9 8378 0242 BB75 strb r3, [r7, #22] 4200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) 8379 .loc 1 4200 10 8380 0244 FB68 ldr r3, [r7, #12] 8381 0246 1B68 ldr r3, [r3] 8382 0248 9B69 ldr r3, [r3, #24] 8383 024a 1B0C lsrs r3, r3, #16 8384 024c DBB2 uxtb r3, r3 8385 024e 03F00103 and r3, r3, #1 8386 0252 DBB2 uxtb r3, r3 8387 .loc 1 4200 8 8388 0254 012B cmp r3, #1 8389 0256 1BD1 bne .L407 8390 0258 13E0 b .L409 8391 .L405: 4187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 8392 .loc 1 4187 23 8393 025a FB68 ldr r3, [r7, #12] 8394 025c 2822 movs r2, #40 8395 025e 83F84120 strb r2, [r3, #65] 4188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8396 .loc 1 4188 23 8397 0262 FB68 ldr r3, [r7, #12] 8398 0264 0022 movs r2, #0 8399 0266 83F84220 strb r2, [r3, #66] 4191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8400 .loc 1 4191 23 8401 026a FB68 ldr r3, [r7, #12] 8402 026c 5B6C ldr r3, [r3, #68] 8403 026e 43F01002 orr r2, r3, #16 8404 0272 FB68 ldr r3, [r7, #12] 8405 0274 5A64 str r2, [r3, #68] 4194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 8406 .loc 1 4194 7 8407 0276 FB68 ldr r3, [r7, #12] 8408 0278 0022 movs r2, #0 8409 027a 83F84020 strb r2, [r3, #64] 4196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8410 .loc 1 4196 14 8411 027e 0123 movs r3, #1 8412 0280 25E0 b .L399 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 223 8413 .L409: 8414 .loc 1 4200 54 discriminator 1 8415 0282 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 8416 0284 002B cmp r3, #0 8417 0286 03D0 beq .L407 4201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 8418 .loc 1 4204 7 8419 0288 FB68 ldr r3, [r7, #12] 8420 028a 1B68 ldr r3, [r3] 8421 028c 0822 movs r2, #8 8422 028e DA61 str r2, [r3, #28] 8423 .L407: 4205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 8424 .loc 1 4208 5 8425 0290 FB68 ldr r3, [r7, #12] 8426 0292 0022 movs r2, #0 8427 0294 83F84020 strb r2, [r3, #64] 4209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 4211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 8428 .loc 1 4211 9 8429 0298 FB68 ldr r3, [r7, #12] 8430 029a 1B68 ldr r3, [r3] 8431 .loc 1 4211 25 8432 029c 1A68 ldr r2, [r3] 8433 .loc 1 4211 9 8434 029e FB68 ldr r3, [r7, #12] 8435 02a0 1B68 ldr r3, [r3] 8436 .loc 1 4211 25 8437 02a2 42F48042 orr r2, r2, #16384 8438 02a6 1A60 str r2, [r3] 4212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ 4217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 8439 .loc 1 4217 5 8440 02a8 4FF40041 mov r1, #32768 8441 02ac F868 ldr r0, [r7, #12] 8442 02ae FFF7FEFF bl I2C_Enable_IRQ 4218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8443 .loc 1 4219 12 8444 02b2 0023 movs r3, #0 8445 02b4 0BE0 b .L399 8446 .L411: 8447 02b6 00BF .align 2 8448 .L410: 8449 02b8 00000000 .word .LC0 8450 02bc 00000000 .word I2C_DMAAbort ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 224 8451 02c0 00000000 .word I2C_Slave_ISR_DMA 8452 02c4 00000000 .word I2C_DMASlaveTransmitCplt 8453 02c8 00000000 .word I2C_DMAError 8454 .L396: 4220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8455 .loc 1 4223 12 8456 02cc 0123 movs r3, #1 8457 .L399: 4224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8458 .loc 1 4225 1 8459 02ce 1846 mov r0, r3 8460 02d0 1837 adds r7, r7, #24 8461 .LCFI145: 8462 .cfi_def_cfa_offset 8 8463 02d2 BD46 mov sp, r7 8464 .LCFI146: 8465 .cfi_def_cfa_register 13 8466 @ sp needed 8467 02d4 80BD pop {r7, pc} 8468 .cfi_endproc 8469 .LFE158: 8471 02d6 00BF .section .text.HAL_I2C_Slave_Seq_Receive_IT,"ax",%progbits 8472 .align 1 8473 .global HAL_I2C_Slave_Seq_Receive_IT 8474 .syntax unified 8475 .thumb 8476 .thumb_func 8478 HAL_I2C_Slave_Seq_Receive_IT: 8479 .LFB159: 4226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4228: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 4229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 4230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 4233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 4234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 4235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4237: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 4238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 4239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8480 .loc 1 4239 1 8481 .cfi_startproc 8482 @ args = 0, pretend = 0, frame = 24 8483 @ frame_needed = 1, uses_anonymous_args = 0 8484 0000 80B5 push {r7, lr} 8485 .LCFI147: 8486 .cfi_def_cfa_offset 8 8487 .cfi_offset 7, -8 8488 .cfi_offset 14, -4 8489 0002 86B0 sub sp, sp, #24 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 225 8490 .LCFI148: 8491 .cfi_def_cfa_offset 32 8492 0004 00AF add r7, sp, #0 8493 .LCFI149: 8494 .cfi_def_cfa_register 7 8495 0006 F860 str r0, [r7, #12] 8496 0008 B960 str r1, [r7, #8] 8497 000a 3B60 str r3, [r7] 8498 000c 1346 mov r3, r2 @ movhi 8499 000e FB80 strh r3, [r7, #6] @ movhi 4240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 4242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 4244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 8500 .loc 1 4244 3 8501 0010 3B68 ldr r3, [r7] 8502 0012 002B cmp r3, #0 8503 0014 1ED0 beq .L413 8504 .loc 1 4244 3 is_stmt 0 discriminator 1 8505 0016 3B68 ldr r3, [r7] 8506 0018 B3F1807F cmp r3, #16777216 8507 001c 1AD0 beq .L413 8508 .loc 1 4244 3 discriminator 2 8509 001e 3B68 ldr r3, [r7] 8510 0020 B3F1807F cmp r3, #16777216 8511 0024 16D0 beq .L413 8512 .loc 1 4244 3 discriminator 3 8513 0026 3B68 ldr r3, [r7] 8514 0028 B3F1007F cmp r3, #33554432 8515 002c 12D0 beq .L413 8516 .loc 1 4244 3 discriminator 4 8517 002e 3B68 ldr r3, [r7] 8518 0030 B3F1007F cmp r3, #33554432 8519 0034 0ED0 beq .L413 8520 .loc 1 4244 3 discriminator 5 8521 0036 3B68 ldr r3, [r7] 8522 0038 002B cmp r3, #0 8523 003a 0BD0 beq .L413 8524 .loc 1 4244 3 discriminator 6 8525 003c 3B68 ldr r3, [r7] 8526 003e AA2B cmp r3, #170 8527 0040 08D0 beq .L413 8528 .loc 1 4244 3 discriminator 7 8529 0042 3B68 ldr r3, [r7] 8530 0044 B3F52A4F cmp r3, #43520 8531 0048 04D0 beq .L413 8532 .loc 1 4244 3 discriminator 8 8533 004a 41F29401 movw r1, #4244 8534 004e 5448 ldr r0, .L421 8535 0050 FFF7FEFF bl assert_failed 8536 .L413: 4245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4246: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) 8537 .loc 1 4246 22 is_stmt 1 8538 0054 FB68 ldr r3, [r7, #12] 8539 0056 93F84130 ldrb r3, [r3, #65] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 226 8540 005a DBB2 uxtb r3, r3 8541 .loc 1 4246 30 8542 005c 03F02803 and r3, r3, #40 8543 .loc 1 4246 6 8544 0060 282B cmp r3, #40 8545 0062 40F09880 bne .L414 4247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 8546 .loc 1 4248 8 8547 0066 BB68 ldr r3, [r7, #8] 8548 0068 002B cmp r3, #0 8549 006a 02D0 beq .L415 8550 .loc 1 4248 25 discriminator 1 8551 006c FB88 ldrh r3, [r7, #6] 8552 006e 002B cmp r3, #0 8553 0070 05D1 bne .L416 8554 .L415: 4249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 8555 .loc 1 4250 23 8556 0072 FB68 ldr r3, [r7, #12] 8557 0074 4FF40072 mov r2, #512 8558 0078 5A64 str r2, [r3, #68] 4251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8559 .loc 1 4251 15 8560 007a 0123 movs r3, #1 8561 007c 8CE0 b .L417 8562 .L416: 4252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 4255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 8563 .loc 1 4255 5 8564 007e 48F20201 movw r1, #32770 8565 0082 F868 ldr r0, [r7, #12] 8566 0084 FFF7FEFF bl I2C_Disable_IRQ 4256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 8567 .loc 1 4258 5 8568 0088 FB68 ldr r3, [r7, #12] 8569 008a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 8570 008e 012B cmp r3, #1 8571 0090 01D1 bne .L418 8572 .loc 1 4258 5 is_stmt 0 discriminator 1 8573 0092 0223 movs r3, #2 8574 0094 80E0 b .L417 8575 .L418: 8576 .loc 1 4258 5 discriminator 2 8577 0096 FB68 ldr r3, [r7, #12] 8578 0098 0122 movs r2, #1 8579 009a 83F84020 strb r2, [r3, #64] 4259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 4261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ 4262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 8580 .loc 1 4262 13 is_stmt 1 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 227 8581 009e FB68 ldr r3, [r7, #12] 8582 00a0 93F84130 ldrb r3, [r3, #65] 8583 00a4 DBB2 uxtb r3, r3 8584 .loc 1 4262 8 discriminator 2 8585 00a6 292B cmp r3, #41 8586 00a8 2AD1 bne .L419 4263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 4265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 8587 .loc 1 4265 7 8588 00aa 0121 movs r1, #1 8589 00ac F868 ldr r0, [r7, #12] 8590 00ae FFF7FEFF bl I2C_Disable_IRQ 4266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 8591 .loc 1 4267 16 8592 00b2 FB68 ldr r3, [r7, #12] 8593 00b4 1B68 ldr r3, [r3] 8594 .loc 1 4267 26 8595 00b6 1B68 ldr r3, [r3] 8596 .loc 1 4267 32 8597 00b8 03F48043 and r3, r3, #16384 8598 .loc 1 4267 10 8599 00bc B3F5804F cmp r3, #16384 8600 00c0 1ED1 bne .L419 4268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 8601 .loc 1 4269 13 8602 00c2 FB68 ldr r3, [r7, #12] 8603 00c4 1B68 ldr r3, [r3] 8604 .loc 1 4269 29 8605 00c6 1A68 ldr r2, [r3] 8606 .loc 1 4269 13 8607 00c8 FB68 ldr r3, [r7, #12] 8608 00ca 1B68 ldr r3, [r3] 8609 .loc 1 4269 29 8610 00cc 22F48042 bic r2, r2, #16384 8611 00d0 1A60 str r2, [r3] 4270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 8612 .loc 1 4272 17 8613 00d2 FB68 ldr r3, [r7, #12] 8614 00d4 9B6B ldr r3, [r3, #56] 8615 .loc 1 4272 12 8616 00d6 002B cmp r3, #0 8617 00d8 12D0 beq .L419 4273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 8618 .loc 1 4276 15 8619 00da FB68 ldr r3, [r7, #12] 8620 00dc 9B6B ldr r3, [r3, #56] 8621 .loc 1 4276 43 8622 00de 314A ldr r2, .L421+4 8623 00e0 5A63 str r2, [r3, #52] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 228 4277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 4279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 8624 .loc 1 4279 15 8625 00e2 FB68 ldr r3, [r7, #12] 8626 00e4 9B6B ldr r3, [r3, #56] 8627 00e6 1846 mov r0, r3 8628 00e8 FFF7FEFF bl HAL_DMA_Abort_IT 8629 00ec 0346 mov r3, r0 8630 .loc 1 4279 14 8631 00ee 002B cmp r3, #0 8632 00f0 06D0 beq .L419 4280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 8633 .loc 1 4282 17 8634 00f2 FB68 ldr r3, [r7, #12] 8635 00f4 9B6B ldr r3, [r3, #56] 8636 .loc 1 4282 25 8637 00f6 5B6B ldr r3, [r3, #52] 8638 .loc 1 4282 49 8639 00f8 FA68 ldr r2, [r7, #12] 8640 00fa 926B ldr r2, [r2, #56] 8641 .loc 1 4282 13 8642 00fc 1046 mov r0, r2 8643 00fe 9847 blx r3 8644 .LVL3: 8645 .L419: 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 **** } 4286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; 8646 .loc 1 4288 21 8647 0100 FB68 ldr r3, [r7, #12] 8648 0102 2A22 movs r2, #42 8649 0104 83F84120 strb r2, [r3, #65] 4289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 8650 .loc 1 4289 21 8651 0108 FB68 ldr r3, [r7, #12] 8652 010a 2022 movs r2, #32 8653 010c 83F84220 strb r2, [r3, #66] 4290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 8654 .loc 1 4290 21 8655 0110 FB68 ldr r3, [r7, #12] 8656 0112 0022 movs r2, #0 8657 0114 5A64 str r2, [r3, #68] 4291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 8658 .loc 1 4293 9 8659 0116 FB68 ldr r3, [r7, #12] 8660 0118 1B68 ldr r3, [r3] 8661 .loc 1 4293 25 8662 011a 5A68 ldr r2, [r3, #4] 8663 .loc 1 4293 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 229 8664 011c FB68 ldr r3, [r7, #12] 8665 011e 1B68 ldr r3, [r3] 8666 .loc 1 4293 25 8667 0120 22F40042 bic r2, r2, #32768 8668 0124 5A60 str r2, [r3, #4] 4294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 8669 .loc 1 4296 23 8670 0126 FB68 ldr r3, [r7, #12] 8671 0128 BA68 ldr r2, [r7, #8] 8672 012a 5A62 str r2, [r3, #36] 4297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 8673 .loc 1 4297 23 8674 012c FB68 ldr r3, [r7, #12] 8675 012e FA88 ldrh r2, [r7, #6] @ movhi 8676 0130 5A85 strh r2, [r3, #42] @ movhi 4298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 8677 .loc 1 4298 29 8678 0132 FB68 ldr r3, [r7, #12] 8679 0134 5B8D ldrh r3, [r3, #42] @ movhi 8680 0136 9AB2 uxth r2, r3 8681 .loc 1 4298 23 8682 0138 FB68 ldr r3, [r7, #12] 8683 013a 1A85 strh r2, [r3, #40] @ movhi 4299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 8684 .loc 1 4299 23 8685 013c FB68 ldr r3, [r7, #12] 8686 013e 3A68 ldr r2, [r7] 8687 0140 DA62 str r2, [r3, #44] 4300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 8688 .loc 1 4300 23 8689 0142 FB68 ldr r3, [r7, #12] 8690 0144 184A ldr r2, .L421+8 8691 0146 5A63 str r2, [r3, #52] 4301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 8692 .loc 1 4302 11 8693 0148 FB68 ldr r3, [r7, #12] 8694 014a 1B68 ldr r3, [r3] 8695 014c 9B69 ldr r3, [r3, #24] 8696 014e 03F00803 and r3, r3, #8 8697 0152 082B cmp r3, #8 8698 0154 0CBF ite eq 8699 0156 0123 moveq r3, #1 8700 0158 0023 movne r3, #0 8701 015a DBB2 uxtb r3, r3 8702 .loc 1 4302 9 8703 015c FB75 strb r3, [r7, #23] 4303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) 8704 .loc 1 4303 10 8705 015e FB68 ldr r3, [r7, #12] 8706 0160 1B68 ldr r3, [r3] 8707 0162 9B69 ldr r3, [r3, #24] 8708 0164 1B0C lsrs r3, r3, #16 8709 0166 DBB2 uxtb r3, r3 8710 0168 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 230 8711 016c DBB2 uxtb r3, r3 8712 .loc 1 4303 8 8713 016e 002B cmp r3, #0 8714 0170 06D1 bne .L420 8715 .loc 1 4303 55 discriminator 1 8716 0172 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 8717 0174 002B cmp r3, #0 8718 0176 03D0 beq .L420 4304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 8719 .loc 1 4307 7 8720 0178 FB68 ldr r3, [r7, #12] 8721 017a 1B68 ldr r3, [r3] 8722 017c 0822 movs r2, #8 8723 017e DA61 str r2, [r3, #28] 8724 .L420: 4308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 8725 .loc 1 4311 5 8726 0180 FB68 ldr r3, [r7, #12] 8727 0182 0022 movs r2, #0 8728 0184 83F84020 strb r2, [r3, #64] 4312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ 4317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 8729 .loc 1 4317 5 8730 0188 48F20201 movw r1, #32770 8731 018c F868 ldr r0, [r7, #12] 8732 018e FFF7FEFF bl I2C_Enable_IRQ 4318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 8733 .loc 1 4319 12 8734 0192 0023 movs r3, #0 8735 0194 00E0 b .L417 8736 .L414: 4320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8737 .loc 1 4323 12 8738 0196 0123 movs r3, #1 8739 .L417: 4324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 8740 .loc 1 4325 1 8741 0198 1846 mov r0, r3 8742 019a 1837 adds r7, r7, #24 8743 .LCFI150: 8744 .cfi_def_cfa_offset 8 8745 019c BD46 mov sp, r7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 231 8746 .LCFI151: 8747 .cfi_def_cfa_register 13 8748 @ sp needed 8749 019e 80BD pop {r7, pc} 8750 .L422: 8751 .align 2 8752 .L421: 8753 01a0 00000000 .word .LC0 8754 01a4 00000000 .word I2C_DMAAbort 8755 01a8 00000000 .word I2C_Slave_ISR_IT 8756 .cfi_endproc 8757 .LFE159: 8759 .section .text.HAL_I2C_Slave_Seq_Receive_DMA,"ax",%progbits 8760 .align 1 8761 .global HAL_I2C_Slave_Seq_Receive_DMA 8762 .syntax unified 8763 .thumb 8764 .thumb_func 8766 HAL_I2C_Slave_Seq_Receive_DMA: 8767 .LFB160: 4326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4328: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 4329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during 4330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer 4333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent 4334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS 4335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4337: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 4338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions) 4339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 8768 .loc 1 4339 1 8769 .cfi_startproc 8770 @ args = 0, pretend = 0, frame = 24 8771 @ frame_needed = 1, uses_anonymous_args = 0 8772 0000 80B5 push {r7, lr} 8773 .LCFI152: 8774 .cfi_def_cfa_offset 8 8775 .cfi_offset 7, -8 8776 .cfi_offset 14, -4 8777 0002 86B0 sub sp, sp, #24 8778 .LCFI153: 8779 .cfi_def_cfa_offset 32 8780 0004 00AF add r7, sp, #0 8781 .LCFI154: 8782 .cfi_def_cfa_register 7 8783 0006 F860 str r0, [r7, #12] 8784 0008 B960 str r1, [r7, #8] 8785 000a 3B60 str r3, [r7] 8786 000c 1346 mov r3, r2 @ movhi 8787 000e FB80 strh r3, [r7, #6] @ movhi 4340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp; 4342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 232 4343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); 8788 .loc 1 4345 3 8789 0010 3B68 ldr r3, [r7] 8790 0012 002B cmp r3, #0 8791 0014 1ED0 beq .L424 8792 .loc 1 4345 3 is_stmt 0 discriminator 1 8793 0016 3B68 ldr r3, [r7] 8794 0018 B3F1807F cmp r3, #16777216 8795 001c 1AD0 beq .L424 8796 .loc 1 4345 3 discriminator 2 8797 001e 3B68 ldr r3, [r7] 8798 0020 B3F1807F cmp r3, #16777216 8799 0024 16D0 beq .L424 8800 .loc 1 4345 3 discriminator 3 8801 0026 3B68 ldr r3, [r7] 8802 0028 B3F1007F cmp r3, #33554432 8803 002c 12D0 beq .L424 8804 .loc 1 4345 3 discriminator 4 8805 002e 3B68 ldr r3, [r7] 8806 0030 B3F1007F cmp r3, #33554432 8807 0034 0ED0 beq .L424 8808 .loc 1 4345 3 discriminator 5 8809 0036 3B68 ldr r3, [r7] 8810 0038 002B cmp r3, #0 8811 003a 0BD0 beq .L424 8812 .loc 1 4345 3 discriminator 6 8813 003c 3B68 ldr r3, [r7] 8814 003e AA2B cmp r3, #170 8815 0040 08D0 beq .L424 8816 .loc 1 4345 3 discriminator 7 8817 0042 3B68 ldr r3, [r7] 8818 0044 B3F52A4F cmp r3, #43520 8819 0048 04D0 beq .L424 8820 .loc 1 4345 3 discriminator 8 8821 004a 41F2F901 movw r1, #4345 8822 004e 9A48 ldr r0, .L439 8823 0050 FFF7FEFF bl assert_failed 8824 .L424: 4346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4347: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) 8825 .loc 1 4347 22 is_stmt 1 8826 0054 FB68 ldr r3, [r7, #12] 8827 0056 93F84130 ldrb r3, [r3, #65] 8828 005a DBB2 uxtb r3, r3 8829 .loc 1 4347 30 8830 005c 03F02803 and r3, r3, #40 8831 .loc 1 4347 6 8832 0060 282B cmp r3, #40 8833 0062 40F03381 bne .L425 4348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) 8834 .loc 1 4349 8 8835 0066 BB68 ldr r3, [r7, #8] 8836 0068 002B cmp r3, #0 8837 006a 02D0 beq .L426 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 233 8838 .loc 1 4349 25 discriminator 1 8839 006c FB88 ldrh r3, [r7, #6] 8840 006e 002B cmp r3, #0 8841 0070 05D1 bne .L427 8842 .L426: 4350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; 8843 .loc 1 4351 23 8844 0072 FB68 ldr r3, [r7, #12] 8845 0074 4FF40072 mov r2, #512 8846 0078 5A64 str r2, [r3, #68] 4352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 8847 .loc 1 4352 15 8848 007a 0123 movs r3, #1 8849 007c 27E1 b .L428 8850 .L427: 4353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ 4356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 8851 .loc 1 4356 5 8852 007e 48F20201 movw r1, #32770 8853 0082 F868 ldr r0, [r7, #12] 8854 0084 FFF7FEFF bl I2C_Disable_IRQ 4357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 8855 .loc 1 4359 5 8856 0088 FB68 ldr r3, [r7, #12] 8857 008a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 8858 008e 012B cmp r3, #1 8859 0090 01D1 bne .L429 8860 .loc 1 4359 5 is_stmt 0 discriminator 1 8861 0092 0223 movs r3, #2 8862 0094 1BE1 b .L428 8863 .L429: 8864 .loc 1 4359 5 discriminator 2 8865 0096 FB68 ldr r3, [r7, #12] 8866 0098 0122 movs r2, #1 8867 009a 83F84020 strb r2, [r3, #64] 4360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ 4362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ 4363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 8868 .loc 1 4363 13 is_stmt 1 discriminator 2 8869 009e FB68 ldr r3, [r7, #12] 8870 00a0 93F84130 ldrb r3, [r3, #65] 8871 00a4 DBB2 uxtb r3, r3 8872 .loc 1 4363 8 discriminator 2 8873 00a6 292B cmp r3, #41 8874 00a8 2BD1 bne .L430 4364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */ 4366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 8875 .loc 1 4366 7 8876 00aa 0121 movs r1, #1 8877 00ac F868 ldr r0, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 234 8878 00ae FFF7FEFF bl I2C_Disable_IRQ 4367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 8879 .loc 1 4368 16 8880 00b2 FB68 ldr r3, [r7, #12] 8881 00b4 1B68 ldr r3, [r3] 8882 .loc 1 4368 26 8883 00b6 1B68 ldr r3, [r3] 8884 .loc 1 4368 32 8885 00b8 03F48043 and r3, r3, #16384 8886 .loc 1 4368 10 8887 00bc B3F5804F cmp r3, #16384 8888 00c0 4CD1 bne .L431 4369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 8889 .loc 1 4371 17 8890 00c2 FB68 ldr r3, [r7, #12] 8891 00c4 9B6B ldr r3, [r3, #56] 8892 .loc 1 4371 12 8893 00c6 002B cmp r3, #0 8894 00c8 48D0 beq .L431 4372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 8895 .loc 1 4373 15 8896 00ca FB68 ldr r3, [r7, #12] 8897 00cc 1B68 ldr r3, [r3] 8898 .loc 1 4373 31 8899 00ce 1A68 ldr r2, [r3] 8900 .loc 1 4373 15 8901 00d0 FB68 ldr r3, [r7, #12] 8902 00d2 1B68 ldr r3, [r3] 8903 .loc 1 4373 31 8904 00d4 22F48042 bic r2, r2, #16384 8905 00d8 1A60 str r2, [r3] 4374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 8906 .loc 1 4377 15 8907 00da FB68 ldr r3, [r7, #12] 8908 00dc 9B6B ldr r3, [r3, #56] 8909 .loc 1 4377 43 8910 00de 774A ldr r2, .L439+4 8911 00e0 5A63 str r2, [r3, #52] 4378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 4380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 8912 .loc 1 4380 15 8913 00e2 FB68 ldr r3, [r7, #12] 8914 00e4 9B6B ldr r3, [r3, #56] 8915 00e6 1846 mov r0, r3 8916 00e8 FFF7FEFF bl HAL_DMA_Abort_IT 8917 00ec 0346 mov r3, r0 8918 .loc 1 4380 14 8919 00ee 002B cmp r3, #0 8920 00f0 34D0 beq .L431 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 235 4381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 8921 .loc 1 4383 17 8922 00f2 FB68 ldr r3, [r7, #12] 8923 00f4 9B6B ldr r3, [r3, #56] 8924 .loc 1 4383 25 8925 00f6 5B6B ldr r3, [r3, #52] 8926 .loc 1 4383 49 8927 00f8 FA68 ldr r2, [r7, #12] 8928 00fa 926B ldr r2, [r2, #56] 8929 .loc 1 4383 13 8930 00fc 1046 mov r0, r2 8931 00fe 9847 blx r3 8932 .LVL4: 8933 0100 2CE0 b .L431 8934 .L430: 4384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 8935 .loc 1 4388 18 8936 0102 FB68 ldr r3, [r7, #12] 8937 0104 93F84130 ldrb r3, [r3, #65] 8938 0108 DBB2 uxtb r3, r3 8939 .loc 1 4388 13 8940 010a 2A2B cmp r3, #42 8941 010c 26D1 bne .L431 4389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 8942 .loc 1 4390 16 8943 010e FB68 ldr r3, [r7, #12] 8944 0110 1B68 ldr r3, [r3] 8945 .loc 1 4390 26 8946 0112 1B68 ldr r3, [r3] 8947 .loc 1 4390 32 8948 0114 03F40043 and r3, r3, #32768 8949 .loc 1 4390 10 8950 0118 B3F5004F cmp r3, #32768 8951 011c 1ED1 bne .L431 4391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 8952 .loc 1 4392 13 8953 011e FB68 ldr r3, [r7, #12] 8954 0120 1B68 ldr r3, [r3] 8955 .loc 1 4392 29 8956 0122 1A68 ldr r2, [r3] 8957 .loc 1 4392 13 8958 0124 FB68 ldr r3, [r7, #12] 8959 0126 1B68 ldr r3, [r3] 8960 .loc 1 4392 29 8961 0128 22F40042 bic r2, r2, #32768 8962 012c 1A60 str r2, [r3] 4393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */ 4395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 236 8963 .loc 1 4395 17 8964 012e FB68 ldr r3, [r7, #12] 8965 0130 DB6B ldr r3, [r3, #60] 8966 .loc 1 4395 12 8967 0132 002B cmp r3, #0 8968 0134 12D0 beq .L431 4396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 4398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 4399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 8969 .loc 1 4399 15 8970 0136 FB68 ldr r3, [r7, #12] 8971 0138 DB6B ldr r3, [r3, #60] 8972 .loc 1 4399 43 8973 013a 604A ldr r2, .L439+4 8974 013c 5A63 str r2, [r3, #52] 4400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 4402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 8975 .loc 1 4402 15 8976 013e FB68 ldr r3, [r7, #12] 8977 0140 DB6B ldr r3, [r3, #60] 8978 0142 1846 mov r0, r3 8979 0144 FFF7FEFF bl HAL_DMA_Abort_IT 8980 0148 0346 mov r3, r0 8981 .loc 1 4402 14 8982 014a 002B cmp r3, #0 8983 014c 06D0 beq .L431 4403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 4405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 8984 .loc 1 4405 17 8985 014e FB68 ldr r3, [r7, #12] 8986 0150 DB6B ldr r3, [r3, #60] 8987 .loc 1 4405 25 8988 0152 5B6B ldr r3, [r3, #52] 8989 .loc 1 4405 49 8990 0154 FA68 ldr r2, [r7, #12] 8991 0156 D26B ldr r2, [r2, #60] 8992 .loc 1 4405 13 8993 0158 1046 mov r0, r2 8994 015a 9847 blx r3 8995 .LVL5: 8996 .L431: 4406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 4413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; 8997 .loc 1 4415 21 8998 015c FB68 ldr r3, [r7, #12] 8999 015e 2A22 movs r2, #42 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 237 9000 0160 83F84120 strb r2, [r3, #65] 4416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; 9001 .loc 1 4416 21 9002 0164 FB68 ldr r3, [r7, #12] 9003 0166 2022 movs r2, #32 9004 0168 83F84220 strb r2, [r3, #66] 4417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 9005 .loc 1 4417 21 9006 016c FB68 ldr r3, [r7, #12] 9007 016e 0022 movs r2, #0 9008 0170 5A64 str r2, [r3, #68] 4418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */ 4420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; 9009 .loc 1 4420 9 9010 0172 FB68 ldr r3, [r7, #12] 9011 0174 1B68 ldr r3, [r3] 9012 .loc 1 4420 25 9013 0176 5A68 ldr r2, [r3, #4] 9014 .loc 1 4420 9 9015 0178 FB68 ldr r3, [r7, #12] 9016 017a 1B68 ldr r3, [r3] 9017 .loc 1 4420 25 9018 017c 22F40042 bic r2, r2, #32768 9019 0180 5A60 str r2, [r3, #4] 4421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */ 4423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData; 9020 .loc 1 4423 23 9021 0182 FB68 ldr r3, [r7, #12] 9022 0184 BA68 ldr r2, [r7, #8] 9023 0186 5A62 str r2, [r3, #36] 4424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size; 9024 .loc 1 4424 23 9025 0188 FB68 ldr r3, [r7, #12] 9026 018a FA88 ldrh r2, [r7, #6] @ movhi 9027 018c 5A85 strh r2, [r3, #42] @ movhi 4425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 9028 .loc 1 4425 29 9029 018e FB68 ldr r3, [r7, #12] 9030 0190 5B8D ldrh r3, [r3, #42] @ movhi 9031 0192 9AB2 uxth r2, r3 9032 .loc 1 4425 23 9033 0194 FB68 ldr r3, [r7, #12] 9034 0196 1A85 strh r2, [r3, #40] @ movhi 4426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; 9035 .loc 1 4426 23 9036 0198 FB68 ldr r3, [r7, #12] 9037 019a 3A68 ldr r2, [r7] 9038 019c DA62 str r2, [r3, #44] 4427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; 9039 .loc 1 4427 23 9040 019e FB68 ldr r3, [r7, #12] 9041 01a0 474A ldr r2, .L439+8 9042 01a2 5A63 str r2, [r3, #52] 4428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 238 9043 .loc 1 4429 13 9044 01a4 FB68 ldr r3, [r7, #12] 9045 01a6 DB6B ldr r3, [r3, #60] 9046 .loc 1 4429 8 9047 01a8 002B cmp r3, #0 9048 01aa 20D0 beq .L432 4430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ 4432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; 9049 .loc 1 4432 11 9050 01ac FB68 ldr r3, [r7, #12] 9051 01ae DB6B ldr r3, [r3, #60] 9052 .loc 1 4432 38 9053 01b0 444A ldr r2, .L439+12 9054 01b2 9A62 str r2, [r3, #40] 4433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */ 4435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; 9055 .loc 1 4435 11 9056 01b4 FB68 ldr r3, [r7, #12] 9057 01b6 DB6B ldr r3, [r3, #60] 9058 .loc 1 4435 39 9059 01b8 434A ldr r2, .L439+16 9060 01ba 1A63 str r2, [r3, #48] 4436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ 4438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; 9061 .loc 1 4438 11 9062 01bc FB68 ldr r3, [r7, #12] 9063 01be DB6B ldr r3, [r3, #60] 9064 .loc 1 4438 42 9065 01c0 0022 movs r2, #0 9066 01c2 DA62 str r2, [r3, #44] 4439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 9067 .loc 1 4439 11 9068 01c4 FB68 ldr r3, [r7, #12] 9069 01c6 DB6B ldr r3, [r3, #60] 9070 .loc 1 4439 39 9071 01c8 0022 movs r2, #0 9072 01ca 5A63 str r2, [r3, #52] 4440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 4442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, 9073 .loc 1 4442 23 9074 01cc FB68 ldr r3, [r7, #12] 9075 01ce D86B ldr r0, [r3, #60] 9076 .loc 1 4442 69 9077 01d0 FB68 ldr r3, [r7, #12] 9078 01d2 1B68 ldr r3, [r3] 9079 .loc 1 4442 64 9080 01d4 2433 adds r3, r3, #36 9081 .loc 1 4442 23 9082 01d6 1946 mov r1, r3 9083 01d8 BA68 ldr r2, [r7, #8] 4443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); 9084 .loc 1 4443 61 9085 01da FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 239 9086 01dc 1B8D ldrh r3, [r3, #40] 4442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); 9087 .loc 1 4442 23 9088 01de FFF7FEFF bl HAL_DMA_Start_IT 9089 01e2 0346 mov r3, r0 9090 01e4 FB75 strb r3, [r7, #23] 4444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; 4453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) 9091 .loc 1 4460 8 9092 01e6 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 9093 01e8 002B cmp r3, #0 9094 01ea 36D1 bne .L434 9095 01ec 13E0 b .L437 9096 .L432: 4448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 9097 .loc 1 4448 23 9098 01ee FB68 ldr r3, [r7, #12] 9099 01f0 2822 movs r2, #40 9100 01f2 83F84120 strb r2, [r3, #65] 4449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9101 .loc 1 4449 23 9102 01f6 FB68 ldr r3, [r7, #12] 9103 01f8 0022 movs r2, #0 9104 01fa 83F84220 strb r2, [r3, #66] 4452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9105 .loc 1 4452 23 9106 01fe FB68 ldr r3, [r7, #12] 9107 0200 5B6C ldr r3, [r3, #68] 9108 0202 43F08002 orr r2, r3, #128 9109 0206 FB68 ldr r3, [r7, #12] 9110 0208 5A64 str r2, [r3, #68] 4455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9111 .loc 1 4455 7 9112 020a FB68 ldr r3, [r7, #12] 9113 020c 0022 movs r2, #0 9114 020e 83F84020 strb r2, [r3, #64] 4457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9115 .loc 1 4457 14 9116 0212 0123 movs r3, #1 9117 0214 5BE0 b .L428 9118 .L437: 4461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 240 4462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 4463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 9119 .loc 1 4463 23 9120 0216 FB68 ldr r3, [r7, #12] 9121 0218 5B8D ldrh r3, [r3, #42] @ movhi 9122 021a 9AB2 uxth r2, r3 9123 .loc 1 4463 30 9124 021c FB68 ldr r3, [r7, #12] 9125 021e 1B8D ldrh r3, [r3, #40] 9126 .loc 1 4463 23 9127 0220 D31A subs r3, r2, r3 9128 0222 9AB2 uxth r2, r3 9129 0224 FB68 ldr r3, [r7, #12] 9130 0226 5A85 strh r2, [r3, #42] @ movhi 4464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */ 4466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0; 9131 .loc 1 4466 22 9132 0228 FB68 ldr r3, [r7, #12] 9133 022a 0022 movs r2, #0 9134 022c 1A85 strh r2, [r3, #40] @ movhi 4467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */ 4471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 4472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 4473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */ 4475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; 4476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 4479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 4481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); 9135 .loc 1 4483 11 9136 022e FB68 ldr r3, [r7, #12] 9137 0230 1B68 ldr r3, [r3] 9138 0232 9B69 ldr r3, [r3, #24] 9139 0234 03F00803 and r3, r3, #8 9140 0238 082B cmp r3, #8 9141 023a 0CBF ite eq 9142 023c 0123 moveq r3, #1 9143 023e 0023 movne r3, #0 9144 0240 DBB2 uxtb r3, r3 9145 .loc 1 4483 9 9146 0242 BB75 strb r3, [r7, #22] 4484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) 9147 .loc 1 4484 10 9148 0244 FB68 ldr r3, [r7, #12] 9149 0246 1B68 ldr r3, [r3] 9150 0248 9B69 ldr r3, [r3, #24] 9151 024a 1B0C lsrs r3, r3, #16 9152 024c DBB2 uxtb r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 241 9153 024e 03F00103 and r3, r3, #1 9154 0252 DBB2 uxtb r3, r3 9155 .loc 1 4484 8 9156 0254 002B cmp r3, #0 9157 0256 1BD1 bne .L436 9158 0258 13E0 b .L438 9159 .L434: 4471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 9160 .loc 1 4471 23 9161 025a FB68 ldr r3, [r7, #12] 9162 025c 2822 movs r2, #40 9163 025e 83F84120 strb r2, [r3, #65] 4472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9164 .loc 1 4472 23 9165 0262 FB68 ldr r3, [r7, #12] 9166 0264 0022 movs r2, #0 9167 0266 83F84220 strb r2, [r3, #66] 4475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9168 .loc 1 4475 23 9169 026a FB68 ldr r3, [r7, #12] 9170 026c 5B6C ldr r3, [r3, #68] 9171 026e 43F01002 orr r2, r3, #16 9172 0272 FB68 ldr r3, [r7, #12] 9173 0274 5A64 str r2, [r3, #68] 4478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 9174 .loc 1 4478 7 9175 0276 FB68 ldr r3, [r7, #12] 9176 0278 0022 movs r2, #0 9177 027a 83F84020 strb r2, [r3, #64] 4480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9178 .loc 1 4480 14 9179 027e 0123 movs r3, #1 9180 0280 25E0 b .L428 9181 .L438: 9182 .loc 1 4484 55 discriminator 1 9183 0282 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 9184 0284 002B cmp r3, #0 9185 0286 03D0 beq .L436 4485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ 4487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ 4488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 9186 .loc 1 4488 7 9187 0288 FB68 ldr r3, [r7, #12] 9188 028a 1B68 ldr r3, [r3] 9189 028c 0822 movs r2, #8 9190 028e DA61 str r2, [r3, #28] 9191 .L436: 4489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 9192 .loc 1 4492 5 9193 0290 FB68 ldr r3, [r7, #12] 9194 0292 0022 movs r2, #0 9195 0294 83F84020 strb r2, [r3, #64] 4493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 242 4494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 4495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 9196 .loc 1 4495 9 9197 0298 FB68 ldr r3, [r7, #12] 9198 029a 1B68 ldr r3, [r3] 9199 .loc 1 4495 25 9200 029c 1A68 ldr r2, [r3] 9201 .loc 1 4495 9 9202 029e FB68 ldr r3, [r7, #12] 9203 02a0 1B68 ldr r3, [r3] 9204 .loc 1 4495 25 9205 02a2 42F40042 orr r2, r2, #32768 9206 02a6 1A60 str r2, [r3] 4496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */ 4501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); 9207 .loc 1 4501 5 9208 02a8 48F20201 movw r1, #32770 9209 02ac F868 ldr r0, [r7, #12] 9210 02ae FFF7FEFF bl I2C_Enable_IRQ 4502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9211 .loc 1 4503 12 9212 02b2 0023 movs r3, #0 9213 02b4 0BE0 b .L428 9214 .L440: 9215 02b6 00BF .align 2 9216 .L439: 9217 02b8 00000000 .word .LC0 9218 02bc 00000000 .word I2C_DMAAbort 9219 02c0 00000000 .word I2C_Slave_ISR_DMA 9220 02c4 00000000 .word I2C_DMASlaveReceiveCplt 9221 02c8 00000000 .word I2C_DMAError 9222 .L425: 4504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 9223 .loc 1 4507 12 9224 02cc 0123 movs r3, #1 9225 .L428: 4508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9226 .loc 1 4509 1 9227 02ce 1846 mov r0, r3 9228 02d0 1837 adds r7, r7, #24 9229 .LCFI155: 9230 .cfi_def_cfa_offset 8 9231 02d2 BD46 mov sp, r7 9232 .LCFI156: 9233 .cfi_def_cfa_register 13 9234 @ sp needed 9235 02d4 80BD pop {r7, pc} 9236 .cfi_endproc ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 243 9237 .LFE160: 9239 02d6 00BF .section .text.HAL_I2C_EnableListen_IT,"ax",%progbits 9240 .align 1 9241 .global HAL_I2C_EnableListen_IT 9242 .syntax unified 9243 .thumb 9244 .thumb_func 9246 HAL_I2C_EnableListen_IT: 9247 .LFB161: 4510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Enable the Address listen mode with Interrupt. 4513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) 4518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9248 .loc 1 4518 1 9249 .cfi_startproc 9250 @ args = 0, pretend = 0, frame = 8 9251 @ frame_needed = 1, uses_anonymous_args = 0 9252 0000 80B5 push {r7, lr} 9253 .LCFI157: 9254 .cfi_def_cfa_offset 8 9255 .cfi_offset 7, -8 9256 .cfi_offset 14, -4 9257 0002 82B0 sub sp, sp, #8 9258 .LCFI158: 9259 .cfi_def_cfa_offset 16 9260 0004 00AF add r7, sp, #0 9261 .LCFI159: 9262 .cfi_def_cfa_register 7 9263 0006 7860 str r0, [r7, #4] 4519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) 9264 .loc 1 4519 11 9265 0008 7B68 ldr r3, [r7, #4] 9266 000a 93F84130 ldrb r3, [r3, #65] 9267 000e DBB2 uxtb r3, r3 9268 .loc 1 4519 6 9269 0010 202B cmp r3, #32 9270 0012 0DD1 bne .L442 4520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 9271 .loc 1 4521 17 9272 0014 7B68 ldr r3, [r7, #4] 9273 0016 2822 movs r2, #40 9274 0018 83F84120 strb r2, [r3, #65] 4522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 9275 .loc 1 4522 19 9276 001c 7B68 ldr r3, [r7, #4] 9277 001e 074A ldr r2, .L444 9278 0020 5A63 str r2, [r3, #52] 4523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the Address Match interrupt */ 4525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 9279 .loc 1 4525 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 244 9280 0022 4FF40041 mov r1, #32768 9281 0026 7868 ldr r0, [r7, #4] 9282 0028 FFF7FEFF bl I2C_Enable_IRQ 4526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9283 .loc 1 4527 12 9284 002c 0023 movs r3, #0 9285 002e 00E0 b .L443 9286 .L442: 4528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 9287 .loc 1 4531 12 9288 0030 0223 movs r3, #2 9289 .L443: 4532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9290 .loc 1 4533 1 9291 0032 1846 mov r0, r3 9292 0034 0837 adds r7, r7, #8 9293 .LCFI160: 9294 .cfi_def_cfa_offset 8 9295 0036 BD46 mov sp, r7 9296 .LCFI161: 9297 .cfi_def_cfa_register 13 9298 @ sp needed 9299 0038 80BD pop {r7, pc} 9300 .L445: 9301 003a 00BF .align 2 9302 .L444: 9303 003c 00000000 .word I2C_Slave_ISR_IT 9304 .cfi_endproc 9305 .LFE161: 9307 .section .text.HAL_I2C_DisableListen_IT,"ax",%progbits 9308 .align 1 9309 .global HAL_I2C_DisableListen_IT 9310 .syntax unified 9311 .thumb 9312 .thumb_func 9314 HAL_I2C_DisableListen_IT: 9315 .LFB162: 4534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Disable the Address listen mode with Interrupt. 4537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C 4539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) 4542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9316 .loc 1 4542 1 9317 .cfi_startproc 9318 @ args = 0, pretend = 0, frame = 16 9319 @ frame_needed = 1, uses_anonymous_args = 0 9320 0000 80B5 push {r7, lr} 9321 .LCFI162: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 245 9322 .cfi_def_cfa_offset 8 9323 .cfi_offset 7, -8 9324 .cfi_offset 14, -4 9325 0002 84B0 sub sp, sp, #16 9326 .LCFI163: 9327 .cfi_def_cfa_offset 24 9328 0004 00AF add r7, sp, #0 9329 .LCFI164: 9330 .cfi_def_cfa_register 7 9331 0006 7860 str r0, [r7, #4] 4543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 4544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp; 4545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address listen mode only if a transfer is not ongoing */ 4547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) 9332 .loc 1 4547 11 9333 0008 7B68 ldr r3, [r7, #4] 9334 000a 93F84130 ldrb r3, [r3, #65] 9335 000e DBB2 uxtb r3, r3 9336 .loc 1 4547 6 9337 0010 282B cmp r3, #40 9338 0012 21D1 bne .L447 4548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; 9339 .loc 1 4549 26 9340 0014 7B68 ldr r3, [r7, #4] 9341 0016 93F84130 ldrb r3, [r3, #65] 9342 001a DBB2 uxtb r3, r3 9343 .loc 1 4549 9 9344 001c 03F00303 and r3, r3, #3 9345 0020 FB60 str r3, [r7, #12] 4550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); 9346 .loc 1 4550 48 9347 0022 7B68 ldr r3, [r7, #4] 9348 0024 93F84230 ldrb r3, [r3, #66] 9349 0028 DBB2 uxtb r3, r3 9350 .loc 1 4550 33 9351 002a 1A46 mov r2, r3 9352 .loc 1 4550 31 9353 002c FB68 ldr r3, [r7, #12] 9354 002e 1A43 orrs r2, r2, r3 9355 .loc 1 4550 25 9356 0030 7B68 ldr r3, [r7, #4] 9357 0032 1A63 str r2, [r3, #48] 4551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 9358 .loc 1 4551 17 9359 0034 7B68 ldr r3, [r7, #4] 9360 0036 2022 movs r2, #32 9361 0038 83F84120 strb r2, [r3, #65] 4552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 9362 .loc 1 4552 16 9363 003c 7B68 ldr r3, [r7, #4] 9364 003e 0022 movs r2, #0 9365 0040 83F84220 strb r2, [r3, #66] 4553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 9366 .loc 1 4553 19 9367 0044 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 246 9368 0046 0022 movs r2, #0 9369 0048 5A63 str r2, [r3, #52] 4554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the Address Match interrupt */ 4556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 9370 .loc 1 4556 5 9371 004a 4FF40041 mov r1, #32768 9372 004e 7868 ldr r0, [r7, #4] 9373 0050 FFF7FEFF bl I2C_Disable_IRQ 4557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9374 .loc 1 4558 12 9375 0054 0023 movs r3, #0 9376 0056 00E0 b .L448 9377 .L447: 4559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY; 9378 .loc 1 4562 12 9379 0058 0223 movs r3, #2 9380 .L448: 4563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9381 .loc 1 4564 1 9382 005a 1846 mov r0, r3 9383 005c 1037 adds r7, r7, #16 9384 .LCFI165: 9385 .cfi_def_cfa_offset 8 9386 005e BD46 mov sp, r7 9387 .LCFI166: 9388 .cfi_def_cfa_register 13 9389 @ sp needed 9390 0060 80BD pop {r7, pc} 9391 .cfi_endproc 9392 .LFE162: 9394 .section .text.HAL_I2C_Master_Abort_IT,"ax",%progbits 9395 .align 1 9396 .global HAL_I2C_Master_Abort_IT 9397 .syntax unified 9398 .thumb 9399 .thumb_func 9401 HAL_I2C_Master_Abort_IT: 9402 .LFB163: 4565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Abort a master or memory I2C IT or DMA process communication with Interrupt. 4568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 4571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 4572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) 4575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9403 .loc 1 4575 1 9404 .cfi_startproc ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 247 9405 @ args = 0, pretend = 0, frame = 16 9406 @ frame_needed = 1, uses_anonymous_args = 0 9407 0000 80B5 push {r7, lr} 9408 .LCFI167: 9409 .cfi_def_cfa_offset 8 9410 .cfi_offset 7, -8 9411 .cfi_offset 14, -4 9412 0002 86B0 sub sp, sp, #24 9413 .LCFI168: 9414 .cfi_def_cfa_offset 32 9415 0004 02AF add r7, sp, #8 9416 .LCFI169: 9417 .cfi_def_cfa 7, 24 9418 0006 7860 str r0, [r7, #4] 9419 0008 0B46 mov r3, r1 9420 000a 7B80 strh r3, [r7, #2] @ movhi 4576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; 9421 .loc 1 4576 23 9422 000c 7B68 ldr r3, [r7, #4] 9423 000e 93F84230 ldrb r3, [r3, #66] 9424 0012 FB73 strb r3, [r7, #15] 4577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmp_mode == HAL_I2C_MODE_MASTER) || (tmp_mode == HAL_I2C_MODE_MEM)) 9425 .loc 1 4578 6 9426 0014 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 9427 0016 102B cmp r3, #16 9428 0018 02D0 beq .L450 9429 .loc 1 4578 41 discriminator 1 9430 001a FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 9431 001c 402B cmp r3, #64 9432 001e 3CD1 bne .L451 9433 .L450: 4579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 9434 .loc 1 4581 5 9435 0020 7B68 ldr r3, [r7, #4] 9436 0022 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 9437 0026 012B cmp r3, #1 9438 0028 01D1 bne .L452 9439 .loc 1 4581 5 is_stmt 0 discriminator 1 9440 002a 0223 movs r3, #2 9441 002c 36E0 b .L453 9442 .L452: 9443 .loc 1 4581 5 discriminator 2 9444 002e 7B68 ldr r3, [r7, #4] 9445 0030 0122 movs r2, #1 9446 0032 83F84020 strb r2, [r3, #64] 4582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 4584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 9447 .loc 1 4584 13 is_stmt 1 discriminator 2 9448 0036 7B68 ldr r3, [r7, #4] 9449 0038 93F84130 ldrb r3, [r3, #65] 9450 003c DBB2 uxtb r3, r3 9451 .loc 1 4584 8 discriminator 2 9452 003e 212B cmp r3, #33 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 248 9453 0040 07D1 bne .L454 4585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 9454 .loc 1 4586 7 9455 0042 0121 movs r1, #1 9456 0044 7868 ldr r0, [r7, #4] 9457 0046 FFF7FEFF bl I2C_Disable_IRQ 4587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 9458 .loc 1 4587 27 9459 004a 7B68 ldr r3, [r7, #4] 9460 004c 1122 movs r2, #17 9461 004e 1A63 str r2, [r3, #48] 9462 0050 0CE0 b .L455 9463 .L454: 4588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 9464 .loc 1 4589 18 9465 0052 7B68 ldr r3, [r7, #4] 9466 0054 93F84130 ldrb r3, [r3, #65] 9467 0058 DBB2 uxtb r3, r3 9468 .loc 1 4589 13 9469 005a 222B cmp r3, #34 9470 005c 06D1 bne .L455 4590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 9471 .loc 1 4591 7 9472 005e 0221 movs r1, #2 9473 0060 7868 ldr r0, [r7, #4] 9474 0062 FFF7FEFF bl I2C_Disable_IRQ 4592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 9475 .loc 1 4592 27 9476 0066 7B68 ldr r3, [r7, #4] 9477 0068 1222 movs r2, #18 9478 006a 1A63 str r2, [r3, #48] 9479 .L455: 4593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 4597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set State at HAL_I2C_STATE_ABORT */ 4600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_ABORT; 9480 .loc 1 4600 17 9481 006c 7B68 ldr r3, [r7, #4] 9482 006e 6022 movs r2, #96 9483 0070 83F84120 strb r2, [r3, #65] 4601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ 4603: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 4604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); 9484 .loc 1 4604 5 9485 0074 7988 ldrh r1, [r7, #2] 9486 0076 0B4B ldr r3, .L456 9487 0078 0093 str r3, [sp] 9488 007a 4FF00073 mov r3, #33554432 9489 007e 0122 movs r2, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 249 9490 0080 7868 ldr r0, [r7, #4] 9491 0082 FFF7FEFF bl I2C_TransferConfig 4605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 4607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 9492 .loc 1 4607 5 9493 0086 7B68 ldr r3, [r7, #4] 9494 0088 0022 movs r2, #0 9495 008a 83F84020 strb r2, [r3, #64] 4608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process 4610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current 4611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */ 4612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 9496 .loc 1 4612 5 9497 008e 2021 movs r1, #32 9498 0090 7868 ldr r0, [r7, #4] 9499 0092 FFF7FEFF bl I2C_Enable_IRQ 4613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 9500 .loc 1 4614 12 9501 0096 0023 movs r3, #0 9502 0098 00E0 b .L453 9503 .L451: 4615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 4617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong usage of abort function */ 4619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This function should be used only in case of abort monitored by master device */ 4620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 9504 .loc 1 4620 12 9505 009a 0123 movs r3, #1 9506 .L453: 4621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9507 .loc 1 4622 1 9508 009c 1846 mov r0, r3 9509 009e 1037 adds r7, r7, #16 9510 .LCFI170: 9511 .cfi_def_cfa_offset 8 9512 00a0 BD46 mov sp, r7 9513 .LCFI171: 9514 .cfi_def_cfa_register 13 9515 @ sp needed 9516 00a2 80BD pop {r7, pc} 9517 .L457: 9518 .align 2 9519 .L456: 9520 00a4 00400080 .word -2147467264 9521 .cfi_endproc 9522 .LFE163: 9524 .section .text.HAL_I2C_EV_IRQHandler,"ax",%progbits 9525 .align 1 9526 .global HAL_I2C_EV_IRQHandler 9527 .syntax unified 9528 .thumb 9529 .thumb_func ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 250 9531 HAL_I2C_EV_IRQHandler: 9532 .LFB164: 4623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks 4629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 4630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C event interrupt request. 4634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ 4639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9533 .loc 1 4639 1 9534 .cfi_startproc 9535 @ args = 0, pretend = 0, frame = 16 9536 @ frame_needed = 1, uses_anonymous_args = 0 9537 0000 80B5 push {r7, lr} 9538 .LCFI172: 9539 .cfi_def_cfa_offset 8 9540 .cfi_offset 7, -8 9541 .cfi_offset 14, -4 9542 0002 84B0 sub sp, sp, #16 9543 .LCFI173: 9544 .cfi_def_cfa_offset 24 9545 0004 00AF add r7, sp, #0 9546 .LCFI174: 9547 .cfi_def_cfa_register 7 9548 0006 7860 str r0, [r7, #4] 4640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */ 4641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); 9549 .loc 1 4641 24 9550 0008 7B68 ldr r3, [r7, #4] 9551 000a 1B68 ldr r3, [r3] 9552 .loc 1 4641 12 9553 000c 9B69 ldr r3, [r3, #24] 9554 000e FB60 str r3, [r7, #12] 4642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); 9555 .loc 1 4642 24 9556 0010 7B68 ldr r3, [r7, #4] 9557 0012 1B68 ldr r3, [r3] 9558 .loc 1 4642 12 9559 0014 1B68 ldr r3, [r3] 9560 0016 BB60 str r3, [r7, #8] 4643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C events treatment -------------------------------------*/ 4645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferISR != NULL) 9561 .loc 1 4645 11 9562 0018 7B68 ldr r3, [r7, #4] 9563 001a 5B6B ldr r3, [r3, #52] 9564 .loc 1 4645 6 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 251 9565 001c 002B cmp r3, #0 9566 001e 05D0 beq .L460 4646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR(hi2c, itflags, itsources); 9567 .loc 1 4647 9 9568 0020 7B68 ldr r3, [r7, #4] 9569 0022 5B6B ldr r3, [r3, #52] 9570 .loc 1 4647 5 9571 0024 BA68 ldr r2, [r7, #8] 9572 0026 F968 ldr r1, [r7, #12] 9573 0028 7868 ldr r0, [r7, #4] 9574 002a 9847 blx r3 9575 .LVL6: 9576 .L460: 4648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9577 .loc 1 4649 1 9578 002c 00BF nop 9579 002e 1037 adds r7, r7, #16 9580 .LCFI175: 9581 .cfi_def_cfa_offset 8 9582 0030 BD46 mov sp, r7 9583 .LCFI176: 9584 .cfi_def_cfa_register 13 9585 @ sp needed 9586 0032 80BD pop {r7, pc} 9587 .cfi_endproc 9588 .LFE164: 9590 .section .text.HAL_I2C_ER_IRQHandler,"ax",%progbits 9591 .align 1 9592 .global HAL_I2C_ER_IRQHandler 9593 .syntax unified 9594 .thumb 9595 .thumb_func 9597 HAL_I2C_ER_IRQHandler: 9598 .LFB165: 4650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C error interrupt request. 4653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) 4658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9599 .loc 1 4658 1 9600 .cfi_startproc 9601 @ args = 0, pretend = 0, frame = 24 9602 @ frame_needed = 1, uses_anonymous_args = 0 9603 0000 80B5 push {r7, lr} 9604 .LCFI177: 9605 .cfi_def_cfa_offset 8 9606 .cfi_offset 7, -8 9607 .cfi_offset 14, -4 9608 0002 86B0 sub sp, sp, #24 9609 .LCFI178: 9610 .cfi_def_cfa_offset 32 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 252 9611 0004 00AF add r7, sp, #0 9612 .LCFI179: 9613 .cfi_def_cfa_register 7 9614 0006 7860 str r0, [r7, #4] 4659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); 9615 .loc 1 4659 24 9616 0008 7B68 ldr r3, [r7, #4] 9617 000a 1B68 ldr r3, [r3] 9618 .loc 1 4659 12 9619 000c 9B69 ldr r3, [r3, #24] 9620 000e 7B61 str r3, [r7, #20] 4660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); 9621 .loc 1 4660 24 9622 0010 7B68 ldr r3, [r7, #4] 9623 0012 1B68 ldr r3, [r3] 9624 .loc 1 4660 12 9625 0014 1B68 ldr r3, [r3] 9626 0016 3B61 str r3, [r7, #16] 4661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror; 4662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Bus error interrupt occurred ------------------------------------*/ 4664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ 9627 .loc 1 4664 8 9628 0018 7B69 ldr r3, [r7, #20] 9629 001a 1B0A lsrs r3, r3, #8 9630 001c 03F00103 and r3, r3, #1 9631 .loc 1 4664 6 9632 0020 002B cmp r3, #0 9633 0022 10D0 beq .L462 4665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9634 .loc 1 4665 8 discriminator 1 9635 0024 3B69 ldr r3, [r7, #16] 9636 0026 DB09 lsrs r3, r3, #7 9637 0028 03F00103 and r3, r3, #1 4664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9638 .loc 1 4664 57 discriminator 1 9639 002c 002B cmp r3, #0 9640 002e 0AD0 beq .L462 4666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; 9641 .loc 1 4667 21 9642 0030 7B68 ldr r3, [r7, #4] 9643 0032 5B6C ldr r3, [r3, #68] 9644 0034 43F00102 orr r2, r3, #1 9645 0038 7B68 ldr r3, [r7, #4] 9646 003a 5A64 str r2, [r3, #68] 4668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */ 4670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); 9647 .loc 1 4670 5 9648 003c 7B68 ldr r3, [r7, #4] 9649 003e 1B68 ldr r3, [r3] 9650 0040 4FF48072 mov r2, #256 9651 0044 DA61 str r2, [r3, #28] 9652 .L462: 4671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 253 4673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ 4674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ 9653 .loc 1 4674 8 9654 0046 7B69 ldr r3, [r7, #20] 9655 0048 9B0A lsrs r3, r3, #10 9656 004a 03F00103 and r3, r3, #1 9657 .loc 1 4674 6 9658 004e 002B cmp r3, #0 9659 0050 10D0 beq .L463 4675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9660 .loc 1 4675 8 discriminator 1 9661 0052 3B69 ldr r3, [r7, #16] 9662 0054 DB09 lsrs r3, r3, #7 9663 0056 03F00103 and r3, r3, #1 4674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9664 .loc 1 4674 56 discriminator 1 9665 005a 002B cmp r3, #0 9666 005c 0AD0 beq .L463 4676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; 9667 .loc 1 4677 21 9668 005e 7B68 ldr r3, [r7, #4] 9669 0060 5B6C ldr r3, [r3, #68] 9670 0062 43F00802 orr r2, r3, #8 9671 0066 7B68 ldr r3, [r7, #4] 9672 0068 5A64 str r2, [r3, #68] 4678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */ 4680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); 9673 .loc 1 4680 5 9674 006a 7B68 ldr r3, [r7, #4] 9675 006c 1B68 ldr r3, [r3] 9676 006e 4FF48062 mov r2, #1024 9677 0072 DA61 str r2, [r3, #28] 9678 .L463: 4681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ 4684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ 9679 .loc 1 4684 8 9680 0074 7B69 ldr r3, [r7, #20] 9681 0076 5B0A lsrs r3, r3, #9 9682 0078 03F00103 and r3, r3, #1 9683 .loc 1 4684 6 9684 007c 002B cmp r3, #0 9685 007e 10D0 beq .L464 4685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9686 .loc 1 4685 8 discriminator 1 9687 0080 3B69 ldr r3, [r7, #16] 9688 0082 DB09 lsrs r3, r3, #7 9689 0084 03F00103 and r3, r3, #1 4684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) 9690 .loc 1 4684 57 discriminator 1 9691 0088 002B cmp r3, #0 9692 008a 0AD0 beq .L464 4686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 254 9693 .loc 1 4687 21 9694 008c 7B68 ldr r3, [r7, #4] 9695 008e 5B6C ldr r3, [r3, #68] 9696 0090 43F00202 orr r2, r3, #2 9697 0094 7B68 ldr r3, [r7, #4] 9698 0096 5A64 str r2, [r3, #68] 4688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */ 4690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); 9699 .loc 1 4690 5 9700 0098 7B68 ldr r3, [r7, #4] 9701 009a 1B68 ldr r3, [r3] 9702 009c 4FF40072 mov r2, #512 9703 00a0 DA61 str r2, [r3, #28] 9704 .L464: 4691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ 4694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; 9705 .loc 1 4694 12 9706 00a2 7B68 ldr r3, [r7, #4] 9707 00a4 5B6C ldr r3, [r3, #68] 9708 00a6 FB60 str r3, [r7, #12] 4695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Error Callback in case of Error detected */ 4697: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_ 9709 .loc 1 4697 17 9710 00a8 FB68 ldr r3, [r7, #12] 9711 00aa 03F00B03 and r3, r3, #11 9712 .loc 1 4697 6 9713 00ae 002B cmp r3, #0 9714 00b0 03D0 beq .L466 4698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, tmperror); 9715 .loc 1 4699 5 9716 00b2 F968 ldr r1, [r7, #12] 9717 00b4 7868 ldr r0, [r7, #4] 9718 00b6 FFF7FEFF bl I2C_ITError 9719 .L466: 4700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9720 .loc 1 4701 1 9721 00ba 00BF nop 9722 00bc 1837 adds r7, r7, #24 9723 .LCFI180: 9724 .cfi_def_cfa_offset 8 9725 00be BD46 mov sp, r7 9726 .LCFI181: 9727 .cfi_def_cfa_register 13 9728 @ sp needed 9729 00c0 80BD pop {r7, pc} 9730 .cfi_endproc 9731 .LFE165: 9733 .section .text.HAL_I2C_MasterTxCpltCallback,"ax",%progbits 9734 .align 1 9735 .weak HAL_I2C_MasterTxCpltCallback 9736 .syntax unified ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 255 9737 .thumb 9738 .thumb_func 9740 HAL_I2C_MasterTxCpltCallback: 9741 .LFB166: 4702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Tx Transfer completed callback. 4705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) 4710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9742 .loc 1 4710 1 9743 .cfi_startproc 9744 @ args = 0, pretend = 0, frame = 8 9745 @ frame_needed = 1, uses_anonymous_args = 0 9746 @ link register save eliminated. 9747 0000 80B4 push {r7} 9748 .LCFI182: 9749 .cfi_def_cfa_offset 4 9750 .cfi_offset 7, -4 9751 0002 83B0 sub sp, sp, #12 9752 .LCFI183: 9753 .cfi_def_cfa_offset 16 9754 0004 00AF add r7, sp, #0 9755 .LCFI184: 9756 .cfi_def_cfa_register 7 9757 0006 7860 str r0, [r7, #4] 4711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterTxCpltCallback could be implemented in the user file 4716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9758 .loc 1 4717 1 9759 0008 00BF nop 9760 000a 0C37 adds r7, r7, #12 9761 .LCFI185: 9762 .cfi_def_cfa_offset 4 9763 000c BD46 mov sp, r7 9764 .LCFI186: 9765 .cfi_def_cfa_register 13 9766 @ sp needed 9767 000e 5DF8047B ldr r7, [sp], #4 9768 .LCFI187: 9769 .cfi_restore 7 9770 .cfi_def_cfa_offset 0 9771 0012 7047 bx lr 9772 .cfi_endproc 9773 .LFE166: 9775 .section .text.HAL_I2C_MasterRxCpltCallback,"ax",%progbits 9776 .align 1 9777 .weak HAL_I2C_MasterRxCpltCallback 9778 .syntax unified 9779 .thumb ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 256 9780 .thumb_func 9782 HAL_I2C_MasterRxCpltCallback: 9783 .LFB167: 4718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Rx Transfer completed callback. 4721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) 4726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9784 .loc 1 4726 1 9785 .cfi_startproc 9786 @ args = 0, pretend = 0, frame = 8 9787 @ frame_needed = 1, uses_anonymous_args = 0 9788 @ link register save eliminated. 9789 0000 80B4 push {r7} 9790 .LCFI188: 9791 .cfi_def_cfa_offset 4 9792 .cfi_offset 7, -4 9793 0002 83B0 sub sp, sp, #12 9794 .LCFI189: 9795 .cfi_def_cfa_offset 16 9796 0004 00AF add r7, sp, #0 9797 .LCFI190: 9798 .cfi_def_cfa_register 7 9799 0006 7860 str r0, [r7, #4] 4727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterRxCpltCallback could be implemented in the user file 4732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9800 .loc 1 4733 1 9801 0008 00BF nop 9802 000a 0C37 adds r7, r7, #12 9803 .LCFI191: 9804 .cfi_def_cfa_offset 4 9805 000c BD46 mov sp, r7 9806 .LCFI192: 9807 .cfi_def_cfa_register 13 9808 @ sp needed 9809 000e 5DF8047B ldr r7, [sp], #4 9810 .LCFI193: 9811 .cfi_restore 7 9812 .cfi_def_cfa_offset 0 9813 0012 7047 bx lr 9814 .cfi_endproc 9815 .LFE167: 9817 .section .text.HAL_I2C_SlaveTxCpltCallback,"ax",%progbits 9818 .align 1 9819 .weak HAL_I2C_SlaveTxCpltCallback 9820 .syntax unified 9821 .thumb 9822 .thumb_func ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 257 9824 HAL_I2C_SlaveTxCpltCallback: 9825 .LFB168: 4734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @brief Slave Tx Transfer completed callback. 4736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) 4741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9826 .loc 1 4741 1 9827 .cfi_startproc 9828 @ args = 0, pretend = 0, frame = 8 9829 @ frame_needed = 1, uses_anonymous_args = 0 9830 @ link register save eliminated. 9831 0000 80B4 push {r7} 9832 .LCFI194: 9833 .cfi_def_cfa_offset 4 9834 .cfi_offset 7, -4 9835 0002 83B0 sub sp, sp, #12 9836 .LCFI195: 9837 .cfi_def_cfa_offset 16 9838 0004 00AF add r7, sp, #0 9839 .LCFI196: 9840 .cfi_def_cfa_register 7 9841 0006 7860 str r0, [r7, #4] 4742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file 4747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9842 .loc 1 4748 1 9843 0008 00BF nop 9844 000a 0C37 adds r7, r7, #12 9845 .LCFI197: 9846 .cfi_def_cfa_offset 4 9847 000c BD46 mov sp, r7 9848 .LCFI198: 9849 .cfi_def_cfa_register 13 9850 @ sp needed 9851 000e 5DF8047B ldr r7, [sp], #4 9852 .LCFI199: 9853 .cfi_restore 7 9854 .cfi_def_cfa_offset 0 9855 0012 7047 bx lr 9856 .cfi_endproc 9857 .LFE168: 9859 .section .text.HAL_I2C_SlaveRxCpltCallback,"ax",%progbits 9860 .align 1 9861 .weak HAL_I2C_SlaveRxCpltCallback 9862 .syntax unified 9863 .thumb 9864 .thumb_func 9866 HAL_I2C_SlaveRxCpltCallback: 9867 .LFB169: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 258 4749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Rx Transfer completed callback. 4752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) 4757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9868 .loc 1 4757 1 9869 .cfi_startproc 9870 @ args = 0, pretend = 0, frame = 8 9871 @ frame_needed = 1, uses_anonymous_args = 0 9872 @ link register save eliminated. 9873 0000 80B4 push {r7} 9874 .LCFI200: 9875 .cfi_def_cfa_offset 4 9876 .cfi_offset 7, -4 9877 0002 83B0 sub sp, sp, #12 9878 .LCFI201: 9879 .cfi_def_cfa_offset 16 9880 0004 00AF add r7, sp, #0 9881 .LCFI202: 9882 .cfi_def_cfa_register 7 9883 0006 7860 str r0, [r7, #4] 4758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file 4763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9884 .loc 1 4764 1 9885 0008 00BF nop 9886 000a 0C37 adds r7, r7, #12 9887 .LCFI203: 9888 .cfi_def_cfa_offset 4 9889 000c BD46 mov sp, r7 9890 .LCFI204: 9891 .cfi_def_cfa_register 13 9892 @ sp needed 9893 000e 5DF8047B ldr r7, [sp], #4 9894 .LCFI205: 9895 .cfi_restore 7 9896 .cfi_def_cfa_offset 0 9897 0012 7047 bx lr 9898 .cfi_endproc 9899 .LFE169: 9901 .section .text.HAL_I2C_AddrCallback,"ax",%progbits 9902 .align 1 9903 .weak HAL_I2C_AddrCallback 9904 .syntax unified 9905 .thumb 9906 .thumb_func 9908 HAL_I2C_AddrCallback: 9909 .LFB170: 4765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 259 4766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Address Match callback. 4768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFE 4771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param AddrMatchCode Address Match Code 4772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM 4775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9910 .loc 1 4775 1 9911 .cfi_startproc 9912 @ args = 0, pretend = 0, frame = 8 9913 @ frame_needed = 1, uses_anonymous_args = 0 9914 @ link register save eliminated. 9915 0000 80B4 push {r7} 9916 .LCFI206: 9917 .cfi_def_cfa_offset 4 9918 .cfi_offset 7, -4 9919 0002 83B0 sub sp, sp, #12 9920 .LCFI207: 9921 .cfi_def_cfa_offset 16 9922 0004 00AF add r7, sp, #0 9923 .LCFI208: 9924 .cfi_def_cfa_register 7 9925 0006 7860 str r0, [r7, #4] 9926 0008 0B46 mov r3, r1 9927 000a FB70 strb r3, [r7, #3] 9928 000c 1346 mov r3, r2 @ movhi 9929 000e 3B80 strh r3, [r7] @ movhi 4776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(TransferDirection); 4779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(AddrMatchCode); 4780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AddrCallback() could be implemented in the user file 4783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9930 .loc 1 4784 1 9931 0010 00BF nop 9932 0012 0C37 adds r7, r7, #12 9933 .LCFI209: 9934 .cfi_def_cfa_offset 4 9935 0014 BD46 mov sp, r7 9936 .LCFI210: 9937 .cfi_def_cfa_register 13 9938 @ sp needed 9939 0016 5DF8047B ldr r7, [sp], #4 9940 .LCFI211: 9941 .cfi_restore 7 9942 .cfi_def_cfa_offset 0 9943 001a 7047 bx lr 9944 .cfi_endproc 9945 .LFE170: 9947 .section .text.HAL_I2C_ListenCpltCallback,"ax",%progbits 9948 .align 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 260 9949 .weak HAL_I2C_ListenCpltCallback 9950 .syntax unified 9951 .thumb 9952 .thumb_func 9954 HAL_I2C_ListenCpltCallback: 9955 .LFB171: 4785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Listen Complete callback. 4788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) 4793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9956 .loc 1 4793 1 9957 .cfi_startproc 9958 @ args = 0, pretend = 0, frame = 8 9959 @ frame_needed = 1, uses_anonymous_args = 0 9960 @ link register save eliminated. 9961 0000 80B4 push {r7} 9962 .LCFI212: 9963 .cfi_def_cfa_offset 4 9964 .cfi_offset 7, -4 9965 0002 83B0 sub sp, sp, #12 9966 .LCFI213: 9967 .cfi_def_cfa_offset 16 9968 0004 00AF add r7, sp, #0 9969 .LCFI214: 9970 .cfi_def_cfa_register 7 9971 0006 7860 str r0, [r7, #4] 4794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ListenCpltCallback() could be implemented in the user file 4799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 9972 .loc 1 4800 1 9973 0008 00BF nop 9974 000a 0C37 adds r7, r7, #12 9975 .LCFI215: 9976 .cfi_def_cfa_offset 4 9977 000c BD46 mov sp, r7 9978 .LCFI216: 9979 .cfi_def_cfa_register 13 9980 @ sp needed 9981 000e 5DF8047B ldr r7, [sp], #4 9982 .LCFI217: 9983 .cfi_restore 7 9984 .cfi_def_cfa_offset 0 9985 0012 7047 bx lr 9986 .cfi_endproc 9987 .LFE171: 9989 .section .text.HAL_I2C_MemTxCpltCallback,"ax",%progbits 9990 .align 1 9991 .weak HAL_I2C_MemTxCpltCallback ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 261 9992 .syntax unified 9993 .thumb 9994 .thumb_func 9996 HAL_I2C_MemTxCpltCallback: 9997 .LFB172: 4801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Tx Transfer completed callback. 4804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) 4809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 9998 .loc 1 4809 1 9999 .cfi_startproc 10000 @ args = 0, pretend = 0, frame = 8 10001 @ frame_needed = 1, uses_anonymous_args = 0 10002 @ link register save eliminated. 10003 0000 80B4 push {r7} 10004 .LCFI218: 10005 .cfi_def_cfa_offset 4 10006 .cfi_offset 7, -4 10007 0002 83B0 sub sp, sp, #12 10008 .LCFI219: 10009 .cfi_def_cfa_offset 16 10010 0004 00AF add r7, sp, #0 10011 .LCFI220: 10012 .cfi_def_cfa_register 7 10013 0006 7860 str r0, [r7, #4] 4810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemTxCpltCallback could be implemented in the user file 4815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10014 .loc 1 4816 1 10015 0008 00BF nop 10016 000a 0C37 adds r7, r7, #12 10017 .LCFI221: 10018 .cfi_def_cfa_offset 4 10019 000c BD46 mov sp, r7 10020 .LCFI222: 10021 .cfi_def_cfa_register 13 10022 @ sp needed 10023 000e 5DF8047B ldr r7, [sp], #4 10024 .LCFI223: 10025 .cfi_restore 7 10026 .cfi_def_cfa_offset 0 10027 0012 7047 bx lr 10028 .cfi_endproc 10029 .LFE172: 10031 .section .text.HAL_I2C_MemRxCpltCallback,"ax",%progbits 10032 .align 1 10033 .weak HAL_I2C_MemRxCpltCallback 10034 .syntax unified ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 262 10035 .thumb 10036 .thumb_func 10038 HAL_I2C_MemRxCpltCallback: 10039 .LFB173: 4817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Rx Transfer completed callback. 4820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) 4825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10040 .loc 1 4825 1 10041 .cfi_startproc 10042 @ args = 0, pretend = 0, frame = 8 10043 @ frame_needed = 1, uses_anonymous_args = 0 10044 @ link register save eliminated. 10045 0000 80B4 push {r7} 10046 .LCFI224: 10047 .cfi_def_cfa_offset 4 10048 .cfi_offset 7, -4 10049 0002 83B0 sub sp, sp, #12 10050 .LCFI225: 10051 .cfi_def_cfa_offset 16 10052 0004 00AF add r7, sp, #0 10053 .LCFI226: 10054 .cfi_def_cfa_register 7 10055 0006 7860 str r0, [r7, #4] 4826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemRxCpltCallback could be implemented in the user file 4831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10056 .loc 1 4832 1 10057 0008 00BF nop 10058 000a 0C37 adds r7, r7, #12 10059 .LCFI227: 10060 .cfi_def_cfa_offset 4 10061 000c BD46 mov sp, r7 10062 .LCFI228: 10063 .cfi_def_cfa_register 13 10064 @ sp needed 10065 000e 5DF8047B ldr r7, [sp], #4 10066 .LCFI229: 10067 .cfi_restore 7 10068 .cfi_def_cfa_offset 0 10069 0012 7047 bx lr 10070 .cfi_endproc 10071 .LFE173: 10073 .section .text.HAL_I2C_ErrorCallback,"ax",%progbits 10074 .align 1 10075 .weak HAL_I2C_ErrorCallback 10076 .syntax unified 10077 .thumb ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 263 10078 .thumb_func 10080 HAL_I2C_ErrorCallback: 10081 .LFB174: 4833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C error callback. 4836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) 4841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10082 .loc 1 4841 1 10083 .cfi_startproc 10084 @ args = 0, pretend = 0, frame = 8 10085 @ frame_needed = 1, uses_anonymous_args = 0 10086 @ link register save eliminated. 10087 0000 80B4 push {r7} 10088 .LCFI230: 10089 .cfi_def_cfa_offset 4 10090 .cfi_offset 7, -4 10091 0002 83B0 sub sp, sp, #12 10092 .LCFI231: 10093 .cfi_def_cfa_offset 16 10094 0004 00AF add r7, sp, #0 10095 .LCFI232: 10096 .cfi_def_cfa_register 7 10097 0006 7860 str r0, [r7, #4] 4842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ErrorCallback could be implemented in the user file 4847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10098 .loc 1 4848 1 10099 0008 00BF nop 10100 000a 0C37 adds r7, r7, #12 10101 .LCFI233: 10102 .cfi_def_cfa_offset 4 10103 000c BD46 mov sp, r7 10104 .LCFI234: 10105 .cfi_def_cfa_register 13 10106 @ sp needed 10107 000e 5DF8047B ldr r7, [sp], #4 10108 .LCFI235: 10109 .cfi_restore 7 10110 .cfi_def_cfa_offset 0 10111 0012 7047 bx lr 10112 .cfi_endproc 10113 .LFE174: 10115 .section .text.HAL_I2C_AbortCpltCallback,"ax",%progbits 10116 .align 1 10117 .weak HAL_I2C_AbortCpltCallback 10118 .syntax unified 10119 .thumb 10120 .thumb_func ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 264 10122 HAL_I2C_AbortCpltCallback: 10123 .LFB175: 4849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C abort callback. 4852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 4855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) 4857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10124 .loc 1 4857 1 10125 .cfi_startproc 10126 @ args = 0, pretend = 0, frame = 8 10127 @ frame_needed = 1, uses_anonymous_args = 0 10128 @ link register save eliminated. 10129 0000 80B4 push {r7} 10130 .LCFI236: 10131 .cfi_def_cfa_offset 4 10132 .cfi_offset 7, -4 10133 0002 83B0 sub sp, sp, #12 10134 .LCFI237: 10135 .cfi_def_cfa_offset 16 10136 0004 00AF add r7, sp, #0 10137 .LCFI238: 10138 .cfi_def_cfa_register 7 10139 0006 7860 str r0, [r7, #4] 4858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 4859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c); 4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, 4862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AbortCpltCallback could be implemented in the user file 4863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10140 .loc 1 4864 1 10141 0008 00BF nop 10142 000a 0C37 adds r7, r7, #12 10143 .LCFI239: 10144 .cfi_def_cfa_offset 4 10145 000c BD46 mov sp, r7 10146 .LCFI240: 10147 .cfi_def_cfa_register 13 10148 @ sp needed 10149 000e 5DF8047B ldr r7, [sp], #4 10150 .LCFI241: 10151 .cfi_restore 7 10152 .cfi_def_cfa_offset 0 10153 0012 7047 bx lr 10154 .cfi_endproc 10155 .LFE175: 10157 .section .text.HAL_I2C_GetState,"ax",%progbits 10158 .align 1 10159 .global HAL_I2C_GetState 10160 .syntax unified 10161 .thumb 10162 .thumb_func 10164 HAL_I2C_GetState: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 265 10165 .LFB176: 4865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 4868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions 4871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Peripheral State, Mode and Error functions 4872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * 4873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim 4874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 4875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### Peripheral State, Mode and Error functions ##### 4876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================================================== 4877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] 4878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection permit to get in run-time the status of the peripheral 4879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and the data flow. 4880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim 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 **** 4885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C handle state. 4887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL state 4890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) 4892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10166 .loc 1 4892 1 10167 .cfi_startproc 10168 @ args = 0, pretend = 0, frame = 8 10169 @ frame_needed = 1, uses_anonymous_args = 0 10170 @ link register save eliminated. 10171 0000 80B4 push {r7} 10172 .LCFI242: 10173 .cfi_def_cfa_offset 4 10174 .cfi_offset 7, -4 10175 0002 83B0 sub sp, sp, #12 10176 .LCFI243: 10177 .cfi_def_cfa_offset 16 10178 0004 00AF add r7, sp, #0 10179 .LCFI244: 10180 .cfi_def_cfa_register 7 10181 0006 7860 str r0, [r7, #4] 4893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return I2C handle state */ 4894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->State; 10182 .loc 1 4894 14 10183 0008 7B68 ldr r3, [r7, #4] 10184 000a 93F84130 ldrb r3, [r3, #65] 10185 000e DBB2 uxtb r3, r3 4895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10186 .loc 1 4895 1 10187 0010 1846 mov r0, r3 10188 0012 0C37 adds r7, r7, #12 10189 .LCFI245: 10190 .cfi_def_cfa_offset 4 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 266 10191 0014 BD46 mov sp, r7 10192 .LCFI246: 10193 .cfi_def_cfa_register 13 10194 @ sp needed 10195 0016 5DF8047B ldr r7, [sp], #4 10196 .LCFI247: 10197 .cfi_restore 7 10198 .cfi_def_cfa_offset 0 10199 001a 7047 bx lr 10200 .cfi_endproc 10201 .LFE176: 10203 .section .text.HAL_I2C_GetMode,"ax",%progbits 10204 .align 1 10205 .global HAL_I2C_GetMode 10206 .syntax unified 10207 .thumb 10208 .thumb_func 10210 HAL_I2C_GetMode: 10211 .LFB177: 4896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Returns the I2C Master, Slave, Memory or no mode. 4899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for I2C module 4901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL mode 4902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) 4904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10212 .loc 1 4904 1 10213 .cfi_startproc 10214 @ args = 0, pretend = 0, frame = 8 10215 @ frame_needed = 1, uses_anonymous_args = 0 10216 @ link register save eliminated. 10217 0000 80B4 push {r7} 10218 .LCFI248: 10219 .cfi_def_cfa_offset 4 10220 .cfi_offset 7, -4 10221 0002 83B0 sub sp, sp, #12 10222 .LCFI249: 10223 .cfi_def_cfa_offset 16 10224 0004 00AF add r7, sp, #0 10225 .LCFI250: 10226 .cfi_def_cfa_register 7 10227 0006 7860 str r0, [r7, #4] 4905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->Mode; 10228 .loc 1 4905 14 10229 0008 7B68 ldr r3, [r7, #4] 10230 000a 93F84230 ldrb r3, [r3, #66] 10231 000e DBB2 uxtb r3, r3 4906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10232 .loc 1 4906 1 10233 0010 1846 mov r0, r3 10234 0012 0C37 adds r7, r7, #12 10235 .LCFI251: 10236 .cfi_def_cfa_offset 4 10237 0014 BD46 mov sp, r7 10238 .LCFI252: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 267 10239 .cfi_def_cfa_register 13 10240 @ sp needed 10241 0016 5DF8047B ldr r7, [sp], #4 10242 .LCFI253: 10243 .cfi_restore 7 10244 .cfi_def_cfa_offset 0 10245 001a 7047 bx lr 10246 .cfi_endproc 10247 .LFE177: 10249 .section .text.HAL_I2C_GetError,"ax",%progbits 10250 .align 1 10251 .global HAL_I2C_GetError 10252 .syntax unified 10253 .thumb 10254 .thumb_func 10256 HAL_I2C_GetError: 10257 .LFB178: 4907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C error code. 4910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval I2C Error Code 4913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) 4915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10258 .loc 1 4915 1 10259 .cfi_startproc 10260 @ args = 0, pretend = 0, frame = 8 10261 @ frame_needed = 1, uses_anonymous_args = 0 10262 @ link register save eliminated. 10263 0000 80B4 push {r7} 10264 .LCFI254: 10265 .cfi_def_cfa_offset 4 10266 .cfi_offset 7, -4 10267 0002 83B0 sub sp, sp, #12 10268 .LCFI255: 10269 .cfi_def_cfa_offset 16 10270 0004 00AF add r7, sp, #0 10271 .LCFI256: 10272 .cfi_def_cfa_register 7 10273 0006 7860 str r0, [r7, #4] 4916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->ErrorCode; 10274 .loc 1 4916 14 10275 0008 7B68 ldr r3, [r7, #4] 10276 000a 5B6C ldr r3, [r3, #68] 4917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10277 .loc 1 4917 1 10278 000c 1846 mov r0, r3 10279 000e 0C37 adds r7, r7, #12 10280 .LCFI257: 10281 .cfi_def_cfa_offset 4 10282 0010 BD46 mov sp, r7 10283 .LCFI258: 10284 .cfi_def_cfa_register 13 10285 @ sp needed 10286 0012 5DF8047B ldr r7, [sp], #4 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 268 10287 .LCFI259: 10288 .cfi_restore 7 10289 .cfi_def_cfa_offset 0 10290 0016 7047 bx lr 10291 .cfi_endproc 10292 .LFE178: 10294 .section .text.I2C_Master_ISR_IT,"ax",%progbits 10295 .align 1 10296 .syntax unified 10297 .thumb 10298 .thumb_func 10300 I2C_Master_ISR_IT: 10301 .LFB179: 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 **** * @} 4921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 4924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @} 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 **** /** @addtogroup I2C_Private_Functions 4928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{ 4929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 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 **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. 4933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 4934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 4935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 4936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 4937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 4938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 4939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 4940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 4941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10302 .loc 1 4941 1 10303 .cfi_startproc 10304 @ args = 0, pretend = 0, frame = 24 10305 @ frame_needed = 1, uses_anonymous_args = 0 10306 0000 80B5 push {r7, lr} 10307 .LCFI260: 10308 .cfi_def_cfa_offset 8 10309 .cfi_offset 7, -8 10310 .cfi_offset 14, -4 10311 0002 88B0 sub sp, sp, #32 10312 .LCFI261: 10313 .cfi_def_cfa_offset 40 10314 0004 02AF add r7, sp, #8 10315 .LCFI262: 10316 .cfi_def_cfa 7, 32 10317 0006 F860 str r0, [r7, #12] 10318 0008 B960 str r1, [r7, #8] 10319 000a 7A60 str r2, [r7, #4] 4942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress; 4943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 269 10320 .loc 1 4943 12 10321 000c BB68 ldr r3, [r7, #8] 10322 000e 7B61 str r3, [r7, #20] 4944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 4946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 10323 .loc 1 4946 3 10324 0010 FB68 ldr r3, [r7, #12] 10325 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 10326 0016 012B cmp r3, #1 10327 0018 01D1 bne .L484 10328 .loc 1 4946 3 is_stmt 0 discriminator 1 10329 001a 0223 movs r3, #2 10330 001c 2EE1 b .L485 10331 .L484: 10332 .loc 1 4946 3 discriminator 2 10333 001e FB68 ldr r3, [r7, #12] 10334 0020 0122 movs r2, #1 10335 0022 83F84020 strb r2, [r3, #64] 4947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 10336 .loc 1 4948 8 is_stmt 1 discriminator 2 10337 0026 7B69 ldr r3, [r7, #20] 10338 0028 1B09 lsrs r3, r3, #4 10339 002a 03F00103 and r3, r3, #1 10340 .loc 1 4948 6 discriminator 2 10341 002e 002B cmp r3, #0 10342 0030 13D0 beq .L486 4949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10343 .loc 1 4949 8 discriminator 1 10344 0032 7B68 ldr r3, [r7, #4] 10345 0034 1B09 lsrs r3, r3, #4 10346 0036 03F00103 and r3, r3, #1 4948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10347 .loc 1 4948 58 discriminator 1 10348 003a 002B cmp r3, #0 10349 003c 0DD0 beq .L486 4950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 4952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10350 .loc 1 4952 5 10351 003e FB68 ldr r3, [r7, #12] 10352 0040 1B68 ldr r3, [r3] 10353 0042 1022 movs r2, #16 10354 0044 DA61 str r2, [r3, #28] 4953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 4955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 4956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 4957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 10355 .loc 1 4957 21 10356 0046 FB68 ldr r3, [r7, #12] 10357 0048 5B6C ldr r3, [r3, #68] 10358 004a 43F00402 orr r2, r3, #4 10359 004e FB68 ldr r3, [r7, #12] 10360 0050 5A64 str r2, [r3, #68] 4958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 270 4959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 4960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 10361 .loc 1 4960 5 10362 0052 F868 ldr r0, [r7, #12] 10363 0054 FFF7FEFF bl I2C_Flush_TXDR 10364 0058 FBE0 b .L487 10365 .L486: 4961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ 10366 .loc 1 4962 13 10367 005a 7B69 ldr r3, [r7, #20] 10368 005c 9B08 lsrs r3, r3, #2 10369 005e 03F00103 and r3, r3, #1 10370 .loc 1 4962 11 10371 0062 002B cmp r3, #0 10372 0064 23D0 beq .L488 4963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 10373 .loc 1 4963 13 discriminator 1 10374 0066 7B68 ldr r3, [r7, #4] 10375 0068 9B08 lsrs r3, r3, #2 10376 006a 03F00103 and r3, r3, #1 4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 10377 .loc 1 4962 65 discriminator 1 10378 006e 002B cmp r3, #0 10379 0070 1DD0 beq .L488 4964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 4966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 10380 .loc 1 4966 16 10381 0072 7B69 ldr r3, [r7, #20] 10382 0074 23F00403 bic r3, r3, #4 10383 0078 7B61 str r3, [r7, #20] 4967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 4969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 10384 .loc 1 4969 36 10385 007a FB68 ldr r3, [r7, #12] 10386 007c 1B68 ldr r3, [r3] 10387 .loc 1 4969 46 10388 007e 5A6A ldr r2, [r3, #36] 10389 .loc 1 4969 10 10390 0080 FB68 ldr r3, [r7, #12] 10391 0082 5B6A ldr r3, [r3, #36] 10392 .loc 1 4969 23 10393 0084 D2B2 uxtb r2, r2 10394 .loc 1 4969 21 10395 0086 1A70 strb r2, [r3] 4970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 4972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10396 .loc 1 4972 9 10397 0088 FB68 ldr r3, [r7, #12] 10398 008a 5B6A ldr r3, [r3, #36] 10399 .loc 1 4972 19 10400 008c 5A1C adds r2, r3, #1 10401 008e FB68 ldr r3, [r7, #12] 10402 0090 5A62 str r2, [r3, #36] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 271 4973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10403 .loc 1 4974 9 10404 0092 FB68 ldr r3, [r7, #12] 10405 0094 1B8D ldrh r3, [r3, #40] 10406 .loc 1 4974 19 10407 0096 013B subs r3, r3, #1 10408 0098 9AB2 uxth r2, r3 10409 009a FB68 ldr r3, [r7, #12] 10410 009c 1A85 strh r2, [r3, #40] @ movhi 4975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10411 .loc 1 4975 9 10412 009e FB68 ldr r3, [r7, #12] 10413 00a0 5B8D ldrh r3, [r3, #42] @ movhi 10414 00a2 9BB2 uxth r3, r3 10415 .loc 1 4975 20 10416 00a4 013B subs r3, r3, #1 10417 00a6 9AB2 uxth r2, r3 10418 00a8 FB68 ldr r3, [r7, #12] 10419 00aa 5A85 strh r2, [r3, #42] @ movhi 10420 00ac D1E0 b .L487 10421 .L488: 4976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) == RESET) && \ 10422 .loc 1 4977 13 10423 00ae 7B69 ldr r3, [r7, #20] 10424 00b0 9B09 lsrs r3, r3, #6 10425 00b2 03F00103 and r3, r3, #1 10426 .loc 1 4977 11 10427 00b6 002B cmp r3, #0 10428 00b8 2AD1 bne .L489 4978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 10429 .loc 1 4978 14 discriminator 1 10430 00ba 7B69 ldr r3, [r7, #20] 10431 00bc 5B08 lsrs r3, r3, #1 10432 00be 03F00103 and r3, r3, #1 4977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 10433 .loc 1 4977 63 discriminator 1 10434 00c2 002B cmp r3, #0 10435 00c4 24D0 beq .L489 4979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))) 10436 .loc 1 4979 14 10437 00c6 7B68 ldr r3, [r7, #4] 10438 00c8 5B08 lsrs r3, r3, #1 10439 00ca 03F00103 and r3, r3, #1 4978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 10440 .loc 1 4978 66 10441 00ce 002B cmp r3, #0 10442 00d0 1ED0 beq .L489 4980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 4982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 10443 .loc 1 4982 13 10444 00d2 FB68 ldr r3, [r7, #12] 10445 00d4 5B8D ldrh r3, [r3, #42] @ movhi 10446 00d6 9BB2 uxth r3, r3 10447 .loc 1 4982 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 272 10448 00d8 002B cmp r3, #0 10449 00da 00F0BA80 beq .L487 4983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 4985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 10450 .loc 1 4985 35 10451 00de FB68 ldr r3, [r7, #12] 10452 00e0 5B6A ldr r3, [r3, #36] 10453 .loc 1 4985 30 10454 00e2 1A78 ldrb r2, [r3] @ zero_extendqisi2 10455 .loc 1 4985 11 10456 00e4 FB68 ldr r3, [r7, #12] 10457 00e6 1B68 ldr r3, [r3] 10458 .loc 1 4985 28 10459 00e8 9A62 str r2, [r3, #40] 4986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 4988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10460 .loc 1 4988 11 10461 00ea FB68 ldr r3, [r7, #12] 10462 00ec 5B6A ldr r3, [r3, #36] 10463 .loc 1 4988 21 10464 00ee 5A1C adds r2, r3, #1 10465 00f0 FB68 ldr r3, [r7, #12] 10466 00f2 5A62 str r2, [r3, #36] 4989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 4990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10467 .loc 1 4990 11 10468 00f4 FB68 ldr r3, [r7, #12] 10469 00f6 1B8D ldrh r3, [r3, #40] 10470 .loc 1 4990 21 10471 00f8 013B subs r3, r3, #1 10472 00fa 9AB2 uxth r2, r3 10473 00fc FB68 ldr r3, [r7, #12] 10474 00fe 1A85 strh r2, [r3, #40] @ movhi 4991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10475 .loc 1 4991 11 10476 0100 FB68 ldr r3, [r7, #12] 10477 0102 5B8D ldrh r3, [r3, #42] @ movhi 10478 0104 9BB2 uxth r3, r3 10479 .loc 1 4991 22 10480 0106 013B subs r3, r3, #1 10481 0108 9AB2 uxth r2, r3 10482 010a FB68 ldr r3, [r7, #12] 10483 010c 5A85 strh r2, [r3, #42] @ movhi 4982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10484 .loc 1 4982 8 10485 010e A0E0 b .L487 10486 .L489: 4992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ 10487 .loc 1 4994 13 10488 0110 7B69 ldr r3, [r7, #20] 10489 0112 DB09 lsrs r3, r3, #7 10490 0114 03F00103 and r3, r3, #1 10491 .loc 1 4994 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 273 10492 0118 002B cmp r3, #0 10493 011a 6BD0 beq .L491 4995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10494 .loc 1 4995 13 discriminator 1 10495 011c 7B68 ldr r3, [r7, #4] 10496 011e 9B09 lsrs r3, r3, #6 10497 0120 03F00103 and r3, r3, #1 4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10498 .loc 1 4994 64 discriminator 1 10499 0124 002B cmp r3, #0 10500 0126 65D0 beq .L491 4996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 10501 .loc 1 4997 14 10502 0128 FB68 ldr r3, [r7, #12] 10503 012a 5B8D ldrh r3, [r3, #42] @ movhi 10504 012c 9BB2 uxth r3, r3 10505 .loc 1 4997 8 10506 012e 002B cmp r3, #0 10507 0130 4ED0 beq .L492 10508 .loc 1 4997 41 discriminator 1 10509 0132 FB68 ldr r3, [r7, #12] 10510 0134 1B8D ldrh r3, [r3, #40] 10511 .loc 1 4997 33 discriminator 1 10512 0136 002B cmp r3, #0 10513 0138 4AD1 bne .L492 4998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 4999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); 10514 .loc 1 4999 35 10515 013a FB68 ldr r3, [r7, #12] 10516 013c 1B68 ldr r3, [r3] 10517 .loc 1 4999 45 10518 013e 5B68 ldr r3, [r3, #4] 10519 .loc 1 4999 20 10520 0140 9BB2 uxth r3, r3 10521 .loc 1 4999 18 10522 0142 C3F30903 ubfx r3, r3, #0, #10 10523 0146 7B82 strh r3, [r7, #18] @ movhi 5000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 10524 .loc 1 5001 15 10525 0148 FB68 ldr r3, [r7, #12] 10526 014a 5B8D ldrh r3, [r3, #42] @ movhi 10527 014c 9BB2 uxth r3, r3 10528 .loc 1 5001 10 10529 014e FF2B cmp r3, #255 10530 0150 1CD9 bls .L493 5002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 10531 .loc 1 5004 13 10532 0152 FB68 ldr r3, [r7, #12] 10533 0154 1B68 ldr r3, [r3] 10534 0156 9B69 ldr r3, [r3, #24] 10535 0158 1B0C lsrs r3, r3, #16 10536 015a DBB2 uxtb r3, r3 10537 015c 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 274 10538 0160 DBB2 uxtb r3, r3 10539 .loc 1 5004 12 10540 0162 012B cmp r3, #1 10541 0164 03D1 bne .L494 5005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 10542 .loc 1 5006 26 10543 0166 FB68 ldr r3, [r7, #12] 10544 0168 0122 movs r2, #1 10545 016a 1A85 strh r2, [r3, #40] @ movhi 10546 016c 02E0 b .L495 10547 .L494: 5007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 10548 .loc 1 5010 26 10549 016e FB68 ldr r3, [r7, #12] 10550 0170 FF22 movs r2, #255 10551 0172 1A85 strh r2, [r3, #40] @ movhi 10552 .L495: 5011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_START 10553 .loc 1 5012 59 10554 0174 FB68 ldr r3, [r7, #12] 10555 0176 1B8D ldrh r3, [r3, #40] 10556 .loc 1 5012 9 10557 0178 DAB2 uxtb r2, r3 10558 017a 798A ldrh r1, [r7, #18] 10559 017c 0023 movs r3, #0 10560 017e 0093 str r3, [sp] 10561 0180 4FF08073 mov r3, #16777216 10562 0184 F868 ldr r0, [r7, #12] 10563 0186 FFF7FEFF bl I2C_TransferConfig 5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10564 .loc 1 5001 10 10565 018a 32E0 b .L498 10566 .L493: 5013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 10567 .loc 1 5016 30 10568 018c FB68 ldr r3, [r7, #12] 10569 018e 5B8D ldrh r3, [r3, #42] @ movhi 10570 0190 9AB2 uxth r2, r3 10571 .loc 1 5016 24 10572 0192 FB68 ldr r3, [r7, #12] 10573 0194 1A85 strh r2, [r3, #40] @ movhi 5017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 10574 .loc 1 5017 17 10575 0196 FB68 ldr r3, [r7, #12] 10576 0198 DB6A ldr r3, [r3, #44] 10577 .loc 1 5017 12 10578 019a 13F5803F cmn r3, #65536 10579 019e 0BD0 beq .L497 5018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 275 5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, 10580 .loc 1 5019 61 10581 01a0 FB68 ldr r3, [r7, #12] 10582 01a2 1B8D ldrh r3, [r3, #40] 10583 .loc 1 5019 11 10584 01a4 DAB2 uxtb r2, r3 10585 01a6 FB68 ldr r3, [r7, #12] 10586 01a8 DB6A ldr r3, [r3, #44] 10587 01aa 798A ldrh r1, [r7, #18] 10588 01ac 0020 movs r0, #0 10589 01ae 0090 str r0, [sp] 10590 01b0 F868 ldr r0, [r7, #12] 10591 01b2 FFF7FEFF bl I2C_TransferConfig 5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10592 .loc 1 5001 10 10593 01b6 1CE0 b .L498 10594 .L497: 5020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); 5021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, 10595 .loc 1 5024 61 10596 01b8 FB68 ldr r3, [r7, #12] 10597 01ba 1B8D ldrh r3, [r3, #40] 10598 .loc 1 5024 11 10599 01bc DAB2 uxtb r2, r3 10600 01be 798A ldrh r1, [r7, #18] 10601 01c0 0023 movs r3, #0 10602 01c2 0093 str r3, [sp] 10603 01c4 4FF00073 mov r3, #33554432 10604 01c8 F868 ldr r0, [r7, #12] 10605 01ca FFF7FEFF bl I2C_TransferConfig 5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10606 .loc 1 5001 10 10607 01ce 10E0 b .L498 10608 .L492: 5025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 5026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ 5032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 10609 .loc 1 5032 11 10610 01d0 FB68 ldr r3, [r7, #12] 10611 01d2 1B68 ldr r3, [r3] 10612 01d4 5B68 ldr r3, [r3, #4] 10613 01d6 03F00073 and r3, r3, #33554432 10614 .loc 1 5032 10 10615 01da B3F1007F cmp r3, #33554432 10616 01de 03D0 beq .L499 5033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 10617 .loc 1 5035 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 276 10618 01e0 F868 ldr r0, [r7, #12] 10619 01e2 FFF7FEFF bl I2C_ITMasterSeqCplt 4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10620 .loc 1 4997 8 10621 01e6 34E0 b .L487 10622 .L499: 5036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 10623 .loc 1 5041 9 10624 01e8 4021 movs r1, #64 10625 01ea F868 ldr r0, [r7, #12] 10626 01ec FFF7FEFF bl I2C_ITError 4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10627 .loc 1 4997 8 10628 01f0 2FE0 b .L487 10629 .L498: 4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10630 .loc 1 4997 8 is_stmt 0 discriminator 1 10631 01f2 2EE0 b .L487 10632 .L491: 5042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ 10633 .loc 1 5045 13 is_stmt 1 10634 01f4 7B69 ldr r3, [r7, #20] 10635 01f6 9B09 lsrs r3, r3, #6 10636 01f8 03F00103 and r3, r3, #1 10637 .loc 1 5045 11 10638 01fc 002B cmp r3, #0 10639 01fe 28D0 beq .L487 5046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10640 .loc 1 5046 13 discriminator 1 10641 0200 7B68 ldr r3, [r7, #4] 10642 0202 9B09 lsrs r3, r3, #6 10643 0204 03F00103 and r3, r3, #1 5045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10644 .loc 1 5045 63 discriminator 1 10645 0208 002B cmp r3, #0 10646 020a 22D0 beq .L487 5047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 10647 .loc 1 5048 13 10648 020c FB68 ldr r3, [r7, #12] 10649 020e 5B8D ldrh r3, [r3, #42] @ movhi 10650 0210 9BB2 uxth r3, r3 10651 .loc 1 5048 8 10652 0212 002B cmp r3, #0 10653 0214 19D1 bne .L500 5049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 10654 .loc 1 5050 11 10655 0216 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 277 10656 0218 1B68 ldr r3, [r3] 10657 021a 5B68 ldr r3, [r3, #4] 10658 021c 03F00073 and r3, r3, #33554432 10659 .loc 1 5050 10 10660 0220 B3F1007F cmp r3, #33554432 10661 0224 15D0 beq .L487 5051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ 5053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) 10662 .loc 1 5053 17 10663 0226 FB68 ldr r3, [r7, #12] 10664 0228 DB6A ldr r3, [r3, #44] 10665 .loc 1 5053 12 10666 022a 13F5803F cmn r3, #65536 10667 022e 08D1 bne .L501 5054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 5056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 10668 .loc 1 5056 15 10669 0230 FB68 ldr r3, [r7, #12] 10670 0232 1B68 ldr r3, [r3] 10671 .loc 1 5056 31 10672 0234 5A68 ldr r2, [r3, #4] 10673 .loc 1 5056 15 10674 0236 FB68 ldr r3, [r7, #12] 10675 0238 1B68 ldr r3, [r3] 10676 .loc 1 5056 31 10677 023a 42F48042 orr r2, r2, #16384 10678 023e 5A60 str r2, [r3, #4] 10679 0240 07E0 b .L487 10680 .L501: 5057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 10681 .loc 1 5061 11 10682 0242 F868 ldr r0, [r7, #12] 10683 0244 FFF7FEFF bl I2C_ITMasterSeqCplt 10684 0248 03E0 b .L487 10685 .L500: 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 **** } 5065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ 5068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 10686 .loc 1 5069 7 10687 024a 4021 movs r1, #64 10688 024c F868 ldr r0, [r7, #12] 10689 024e FFF7FEFF bl I2C_ITError 10690 .L487: 5070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 278 5073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 10691 .loc 1 5077 8 10692 0252 7B69 ldr r3, [r7, #20] 10693 0254 5B09 lsrs r3, r3, #5 10694 0256 03F00103 and r3, r3, #1 10695 .loc 1 5077 6 10696 025a 002B cmp r3, #0 10697 025c 09D0 beq .L502 5078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10698 .loc 1 5078 8 discriminator 1 10699 025e 7B68 ldr r3, [r7, #4] 10700 0260 5B09 lsrs r3, r3, #5 10701 0262 03F00103 and r3, r3, #1 5077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 10702 .loc 1 5077 61 discriminator 1 10703 0266 002B cmp r3, #0 10704 0268 03D0 beq .L502 5079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); 10705 .loc 1 5081 5 10706 026a 7969 ldr r1, [r7, #20] 10707 026c F868 ldr r0, [r7, #12] 10708 026e FFF7FEFF bl I2C_ITMasterCplt 10709 .L502: 5082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 10710 .loc 1 5085 3 10711 0272 FB68 ldr r3, [r7, #12] 10712 0274 0022 movs r2, #0 10713 0276 83F84020 strb r2, [r3, #64] 5086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 10714 .loc 1 5087 10 10715 027a 0023 movs r3, #0 10716 .L485: 5088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 10717 .loc 1 5088 1 10718 027c 1846 mov r0, r3 10719 027e 1837 adds r7, r7, #24 10720 .LCFI263: 10721 .cfi_def_cfa_offset 8 10722 0280 BD46 mov sp, r7 10723 .LCFI264: 10724 .cfi_def_cfa_register 13 10725 @ sp needed 10726 0282 80BD pop {r7, pc} 10727 .cfi_endproc 10728 .LFE179: 10730 .section .text.I2C_Mem_ISR_IT,"ax",%progbits 10731 .align 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 279 10732 .syntax unified 10733 .thumb 10734 .thumb_func 10736 I2C_Mem_ISR_IT: 10737 .LFB180: 5089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt. 5092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10738 .loc 1 5100 1 10739 .cfi_startproc 10740 @ args = 0, pretend = 0, frame = 24 10741 @ frame_needed = 1, uses_anonymous_args = 0 10742 0000 80B5 push {r7, lr} 10743 .LCFI265: 10744 .cfi_def_cfa_offset 8 10745 .cfi_offset 7, -8 10746 .cfi_offset 14, -4 10747 0002 88B0 sub sp, sp, #32 10748 .LCFI266: 10749 .cfi_def_cfa_offset 40 10750 0004 02AF add r7, sp, #8 10751 .LCFI267: 10752 .cfi_def_cfa 7, 32 10753 0006 F860 str r0, [r7, #12] 10754 0008 B960 str r1, [r7, #8] 10755 000a 7A60 str r2, [r7, #4] 5101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; 10756 .loc 1 5101 12 10757 000c 8C4B ldr r3, .L524 10758 000e 7B61 str r3, [r7, #20] 5102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 10759 .loc 1 5102 12 10760 0010 BB68 ldr r3, [r7, #8] 10761 0012 3B61 str r3, [r7, #16] 5103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 5105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 10762 .loc 1 5105 3 10763 0014 FB68 ldr r3, [r7, #12] 10764 0016 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 10765 001a 012B cmp r3, #1 10766 001c 01D1 bne .L504 10767 .loc 1 5105 3 is_stmt 0 discriminator 1 10768 001e 0223 movs r3, #2 10769 0020 39E1 b .L505 10770 .L504: 10771 .loc 1 5105 3 discriminator 2 10772 0022 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 280 10773 0024 0122 movs r2, #1 10774 0026 83F84020 strb r2, [r3, #64] 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) && \ 10775 .loc 1 5107 8 is_stmt 1 discriminator 2 10776 002a 3B69 ldr r3, [r7, #16] 10777 002c 1B09 lsrs r3, r3, #4 10778 002e 03F00103 and r3, r3, #1 10779 .loc 1 5107 6 discriminator 2 10780 0032 002B cmp r3, #0 10781 0034 13D0 beq .L506 5108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10782 .loc 1 5108 8 discriminator 1 10783 0036 7B68 ldr r3, [r7, #4] 10784 0038 1B09 lsrs r3, r3, #4 10785 003a 03F00103 and r3, r3, #1 5107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 10786 .loc 1 5107 58 discriminator 1 10787 003e 002B cmp r3, #0 10788 0040 0DD0 beq .L506 5109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 10789 .loc 1 5111 5 10790 0042 FB68 ldr r3, [r7, #12] 10791 0044 1B68 ldr r3, [r3] 10792 0046 1022 movs r2, #16 10793 0048 DA61 str r2, [r3, #28] 5112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 5115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 5116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 10794 .loc 1 5116 21 10795 004a FB68 ldr r3, [r7, #12] 10796 004c 5B6C ldr r3, [r3, #68] 10797 004e 43F00402 orr r2, r3, #4 10798 0052 FB68 ldr r3, [r7, #12] 10799 0054 5A64 str r2, [r3, #68] 5117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 10800 .loc 1 5119 5 10801 0056 F868 ldr r0, [r7, #12] 10802 0058 FFF7FEFF bl I2C_Flush_TXDR 10803 005c 06E1 b .L507 10804 .L506: 5120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ 10805 .loc 1 5121 13 10806 005e 3B69 ldr r3, [r7, #16] 10807 0060 9B08 lsrs r3, r3, #2 10808 0062 03F00103 and r3, r3, #1 10809 .loc 1 5121 11 10810 0066 002B cmp r3, #0 10811 0068 23D0 beq .L508 5122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 281 10812 .loc 1 5122 13 discriminator 1 10813 006a 7B68 ldr r3, [r7, #4] 10814 006c 9B08 lsrs r3, r3, #2 10815 006e 03F00103 and r3, r3, #1 5121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 10816 .loc 1 5121 65 discriminator 1 10817 0072 002B cmp r3, #0 10818 0074 1DD0 beq .L508 5123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 5125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 10819 .loc 1 5125 16 10820 0076 3B69 ldr r3, [r7, #16] 10821 0078 23F00403 bic r3, r3, #4 10822 007c 3B61 str r3, [r7, #16] 5126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 5128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 10823 .loc 1 5128 36 10824 007e FB68 ldr r3, [r7, #12] 10825 0080 1B68 ldr r3, [r3] 10826 .loc 1 5128 46 10827 0082 5A6A ldr r2, [r3, #36] 10828 .loc 1 5128 10 10829 0084 FB68 ldr r3, [r7, #12] 10830 0086 5B6A ldr r3, [r3, #36] 10831 .loc 1 5128 23 10832 0088 D2B2 uxtb r2, r2 10833 .loc 1 5128 21 10834 008a 1A70 strb r2, [r3] 5129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10835 .loc 1 5131 9 10836 008c FB68 ldr r3, [r7, #12] 10837 008e 5B6A ldr r3, [r3, #36] 10838 .loc 1 5131 19 10839 0090 5A1C adds r2, r3, #1 10840 0092 FB68 ldr r3, [r7, #12] 10841 0094 5A62 str r2, [r3, #36] 5132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10842 .loc 1 5133 9 10843 0096 FB68 ldr r3, [r7, #12] 10844 0098 1B8D ldrh r3, [r3, #40] 10845 .loc 1 5133 19 10846 009a 013B subs r3, r3, #1 10847 009c 9AB2 uxth r2, r3 10848 009e FB68 ldr r3, [r7, #12] 10849 00a0 1A85 strh r2, [r3, #40] @ movhi 5134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10850 .loc 1 5134 9 10851 00a2 FB68 ldr r3, [r7, #12] 10852 00a4 5B8D ldrh r3, [r3, #42] @ movhi 10853 00a6 9BB2 uxth r3, r3 10854 .loc 1 5134 20 10855 00a8 013B subs r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 282 10856 00aa 9AB2 uxth r2, r3 10857 00ac FB68 ldr r3, [r7, #12] 10858 00ae 5A85 strh r2, [r3, #42] @ movhi 10859 00b0 DCE0 b .L507 10860 .L508: 5135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 10861 .loc 1 5136 13 10862 00b2 3B69 ldr r3, [r7, #16] 10863 00b4 5B08 lsrs r3, r3, #1 10864 00b6 03F00103 and r3, r3, #1 10865 .loc 1 5136 11 10866 00ba 002B cmp r3, #0 10867 00bc 2DD0 beq .L509 5137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10868 .loc 1 5137 13 discriminator 1 10869 00be 7B68 ldr r3, [r7, #4] 10870 00c0 5B08 lsrs r3, r3, #1 10871 00c2 03F00103 and r3, r3, #1 5136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 10872 .loc 1 5136 65 discriminator 1 10873 00c6 002B cmp r3, #0 10874 00c8 27D0 beq .L509 5138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Memaddress == 0xFFFFFFFFU) 10875 .loc 1 5139 13 10876 00ca FB68 ldr r3, [r7, #12] 10877 00cc 1B6D ldr r3, [r3, #80] 10878 .loc 1 5139 8 10879 00ce B3F1FF3F cmp r3, #-1 10880 00d2 18D1 bne .L510 5140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 5142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 10881 .loc 1 5142 35 10882 00d4 FB68 ldr r3, [r7, #12] 10883 00d6 5B6A ldr r3, [r3, #36] 10884 .loc 1 5142 30 10885 00d8 1A78 ldrb r2, [r3] @ zero_extendqisi2 10886 .loc 1 5142 11 10887 00da FB68 ldr r3, [r7, #12] 10888 00dc 1B68 ldr r3, [r3] 10889 .loc 1 5142 28 10890 00de 9A62 str r2, [r3, #40] 5143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 10891 .loc 1 5145 11 10892 00e0 FB68 ldr r3, [r7, #12] 10893 00e2 5B6A ldr r3, [r3, #36] 10894 .loc 1 5145 21 10895 00e4 5A1C adds r2, r3, #1 10896 00e6 FB68 ldr r3, [r7, #12] 10897 00e8 5A62 str r2, [r3, #36] 5146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 10898 .loc 1 5147 11 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 283 10899 00ea FB68 ldr r3, [r7, #12] 10900 00ec 1B8D ldrh r3, [r3, #40] 10901 .loc 1 5147 21 10902 00ee 013B subs r3, r3, #1 10903 00f0 9AB2 uxth r2, r3 10904 00f2 FB68 ldr r3, [r7, #12] 10905 00f4 1A85 strh r2, [r3, #40] @ movhi 5148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 10906 .loc 1 5148 11 10907 00f6 FB68 ldr r3, [r7, #12] 10908 00f8 5B8D ldrh r3, [r3, #42] @ movhi 10909 00fa 9BB2 uxth r3, r3 10910 .loc 1 5148 22 10911 00fc 013B subs r3, r3, #1 10912 00fe 9AB2 uxth r2, r3 10913 0100 FB68 ldr r3, [r7, #12] 10914 0102 5A85 strh r2, [r3, #42] @ movhi 5139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10915 .loc 1 5139 8 10916 0104 B2E0 b .L507 10917 .L510: 5149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */ 5153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; 10918 .loc 1 5153 11 10919 0106 FB68 ldr r3, [r7, #12] 10920 0108 1B68 ldr r3, [r3] 10921 .loc 1 5153 34 10922 010a FA68 ldr r2, [r7, #12] 10923 010c 126D ldr r2, [r2, #80] 10924 .loc 1 5153 28 10925 010e 9A62 str r2, [r3, #40] 5154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 5156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 10926 .loc 1 5156 24 10927 0110 FB68 ldr r3, [r7, #12] 10928 0112 4FF0FF32 mov r2, #-1 10929 0116 1A65 str r2, [r3, #80] 5139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 10930 .loc 1 5139 8 10931 0118 A8E0 b .L507 10932 .L509: 5157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ 10933 .loc 1 5159 13 10934 011a 3B69 ldr r3, [r7, #16] 10935 011c DB09 lsrs r3, r3, #7 10936 011e 03F00103 and r3, r3, #1 10937 .loc 1 5159 11 10938 0122 002B cmp r3, #0 10939 0124 4BD0 beq .L512 5160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10940 .loc 1 5160 13 discriminator 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 284 10941 0126 7B68 ldr r3, [r7, #4] 10942 0128 9B09 lsrs r3, r3, #6 10943 012a 03F00103 and r3, r3, #1 5159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 10944 .loc 1 5159 64 discriminator 1 10945 012e 002B cmp r3, #0 10946 0130 45D0 beq .L512 5161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) 10947 .loc 1 5162 14 10948 0132 FB68 ldr r3, [r7, #12] 10949 0134 5B8D ldrh r3, [r3, #42] @ movhi 10950 0136 9BB2 uxth r3, r3 10951 .loc 1 5162 8 10952 0138 002B cmp r3, #0 10953 013a 3AD0 beq .L513 10954 .loc 1 5162 41 discriminator 1 10955 013c FB68 ldr r3, [r7, #12] 10956 013e 1B8D ldrh r3, [r3, #40] 10957 .loc 1 5162 33 discriminator 1 10958 0140 002B cmp r3, #0 10959 0142 36D1 bne .L513 5163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 10960 .loc 1 5164 15 10961 0144 FB68 ldr r3, [r7, #12] 10962 0146 5B8D ldrh r3, [r3, #42] @ movhi 10963 0148 9BB2 uxth r3, r3 10964 .loc 1 5164 10 10965 014a FF2B cmp r3, #255 10966 014c 1ED9 bls .L514 5165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 10967 .loc 1 5167 13 10968 014e FB68 ldr r3, [r7, #12] 10969 0150 1B68 ldr r3, [r3] 10970 0152 9B69 ldr r3, [r3, #24] 10971 0154 1B0C lsrs r3, r3, #16 10972 0156 DBB2 uxtb r3, r3 10973 0158 03F00103 and r3, r3, #1 10974 015c DBB2 uxtb r3, r3 10975 .loc 1 5167 12 10976 015e 012B cmp r3, #1 10977 0160 03D1 bne .L515 5168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 10978 .loc 1 5169 26 10979 0162 FB68 ldr r3, [r7, #12] 10980 0164 0122 movs r2, #1 10981 0166 1A85 strh r2, [r3, #40] @ movhi 10982 0168 02E0 b .L516 10983 .L515: 5170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 285 10984 .loc 1 5173 26 10985 016a FB68 ldr r3, [r7, #12] 10986 016c FF22 movs r2, #255 10987 016e 1A85 strh r2, [r3, #40] @ movhi 10988 .L516: 5174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 10989 .loc 1 5175 48 10990 0170 FB68 ldr r3, [r7, #12] 10991 0172 DB6C ldr r3, [r3, #76] 10992 .loc 1 5175 9 10993 0174 99B2 uxth r1, r3 10994 .loc 1 5175 75 10995 0176 FB68 ldr r3, [r7, #12] 10996 0178 1B8D ldrh r3, [r3, #40] 10997 .loc 1 5175 9 10998 017a DAB2 uxtb r2, r3 10999 017c 0023 movs r3, #0 11000 017e 0093 str r3, [sp] 11001 0180 4FF08073 mov r3, #16777216 11002 0184 F868 ldr r0, [r7, #12] 11003 0186 FFF7FEFF bl I2C_TransferConfig 5164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11004 .loc 1 5164 10 11005 018a 17E0 b .L518 11006 .L514: 5176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); 5177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 11007 .loc 1 5180 30 11008 018c FB68 ldr r3, [r7, #12] 11009 018e 5B8D ldrh r3, [r3, #42] @ movhi 11010 0190 9AB2 uxth r2, r3 11011 .loc 1 5180 24 11012 0192 FB68 ldr r3, [r7, #12] 11013 0194 1A85 strh r2, [r3, #40] @ movhi 5181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 11014 .loc 1 5181 48 11015 0196 FB68 ldr r3, [r7, #12] 11016 0198 DB6C ldr r3, [r3, #76] 11017 .loc 1 5181 9 11018 019a 99B2 uxth r1, r3 11019 .loc 1 5181 75 11020 019c FB68 ldr r3, [r7, #12] 11021 019e 1B8D ldrh r3, [r3, #40] 11022 .loc 1 5181 9 11023 01a0 DAB2 uxtb r2, r3 11024 01a2 0023 movs r3, #0 11025 01a4 0093 str r3, [sp] 11026 01a6 4FF00073 mov r3, #33554432 11027 01aa F868 ldr r0, [r7, #12] 11028 01ac FFF7FEFF bl I2C_TransferConfig 5164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11029 .loc 1 5164 10 11030 01b0 04E0 b .L518 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 286 11031 .L513: 5182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 5183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 11032 .loc 1 5189 7 11033 01b2 4021 movs r1, #64 11034 01b4 F868 ldr r0, [r7, #12] 11035 01b6 FFF7FEFF bl I2C_ITError 5162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11036 .loc 1 5162 8 11037 01ba 57E0 b .L507 11038 .L518: 5162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11039 .loc 1 5162 8 is_stmt 0 discriminator 1 11040 01bc 56E0 b .L507 11041 .L512: 5190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ 11042 .loc 1 5192 13 is_stmt 1 11043 01be 3B69 ldr r3, [r7, #16] 11044 01c0 9B09 lsrs r3, r3, #6 11045 01c2 03F00103 and r3, r3, #1 11046 .loc 1 5192 11 11047 01c6 002B cmp r3, #0 11048 01c8 50D0 beq .L507 5193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11049 .loc 1 5193 13 discriminator 1 11050 01ca 7B68 ldr r3, [r7, #4] 11051 01cc 9B09 lsrs r3, r3, #6 11052 01ce 03F00103 and r3, r3, #1 5192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11053 .loc 1 5192 63 discriminator 1 11054 01d2 002B cmp r3, #0 11055 01d4 4AD0 beq .L507 5194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupt related to address step */ 5196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 11056 .loc 1 5196 5 11057 01d6 0121 movs r1, #1 11058 01d8 F868 ldr r0, [r7, #12] 11059 01da FFF7FEFF bl I2C_Disable_IRQ 5197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ 5199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); 11060 .loc 1 5199 5 11061 01de 0221 movs r1, #2 11062 01e0 F868 ldr r0, [r7, #12] 11063 01e2 FFF7FEFF bl I2C_Enable_IRQ 5200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 11064 .loc 1 5201 13 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 287 11065 01e6 FB68 ldr r3, [r7, #12] 11066 01e8 93F84130 ldrb r3, [r3, #65] 11067 01ec DBB2 uxtb r3, r3 11068 .loc 1 5201 8 11069 01ee 222B cmp r3, #34 11070 01f0 01D1 bne .L519 5202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; 11071 .loc 1 5203 17 11072 01f2 144B ldr r3, .L524+4 11073 01f4 7B61 str r3, [r7, #20] 11074 .L519: 5204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 11075 .loc 1 5206 13 11076 01f6 FB68 ldr r3, [r7, #12] 11077 01f8 5B8D ldrh r3, [r3, #42] @ movhi 11078 01fa 9BB2 uxth r3, r3 11079 .loc 1 5206 8 11080 01fc FF2B cmp r3, #255 11081 01fe 23D9 bls .L520 5207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 11082 .loc 1 5209 11 11083 0200 FB68 ldr r3, [r7, #12] 11084 0202 1B68 ldr r3, [r3] 11085 0204 9B69 ldr r3, [r3, #24] 11086 0206 1B0C lsrs r3, r3, #16 11087 0208 DBB2 uxtb r3, r3 11088 020a 03F00103 and r3, r3, #1 11089 020e DBB2 uxtb r3, r3 11090 .loc 1 5209 10 11091 0210 012B cmp r3, #1 11092 0212 03D1 bne .L521 5210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 11093 .loc 1 5211 24 11094 0214 FB68 ldr r3, [r7, #12] 11095 0216 0122 movs r2, #1 11096 0218 1A85 strh r2, [r3, #40] @ movhi 11097 021a 02E0 b .L522 11098 .L521: 5212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 11099 .loc 1 5215 24 11100 021c FB68 ldr r3, [r7, #12] 11101 021e FF22 movs r2, #255 11102 0220 1A85 strh r2, [r3, #40] @ movhi 11103 .L522: 5216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 5219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 288 11104 .loc 1 5219 46 11105 0222 FB68 ldr r3, [r7, #12] 11106 0224 DB6C ldr r3, [r3, #76] 11107 .loc 1 5219 7 11108 0226 99B2 uxth r1, r3 11109 .loc 1 5219 73 11110 0228 FB68 ldr r3, [r7, #12] 11111 022a 1B8D ldrh r3, [r3, #40] 11112 .loc 1 5219 7 11113 022c DAB2 uxtb r2, r3 11114 022e 7B69 ldr r3, [r7, #20] 11115 0230 0093 str r3, [sp] 11116 0232 4FF08073 mov r3, #16777216 11117 0236 F868 ldr r0, [r7, #12] 11118 0238 FFF7FEFF bl I2C_TransferConfig 11119 023c 16E0 b .L507 11120 .L525: 11121 023e 00BF .align 2 11122 .L524: 11123 0240 00200080 .word -2147475456 11124 0244 00240080 .word -2147474432 11125 .L520: 5220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); 5221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 11126 .loc 1 5224 28 11127 0248 FB68 ldr r3, [r7, #12] 11128 024a 5B8D ldrh r3, [r3, #42] @ movhi 11129 024c 9AB2 uxth r2, r3 11130 .loc 1 5224 22 11131 024e FB68 ldr r3, [r7, #12] 11132 0250 1A85 strh r2, [r3, #40] @ movhi 5225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ 5227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 11133 .loc 1 5227 46 11134 0252 FB68 ldr r3, [r7, #12] 11135 0254 DB6C ldr r3, [r3, #76] 11136 .loc 1 5227 7 11137 0256 99B2 uxth r1, r3 11138 .loc 1 5227 73 11139 0258 FB68 ldr r3, [r7, #12] 11140 025a 1B8D ldrh r3, [r3, #40] 11141 .loc 1 5227 7 11142 025c DAB2 uxtb r2, r3 11143 025e 7B69 ldr r3, [r7, #20] 11144 0260 0093 str r3, [sp] 11145 0262 4FF00073 mov r3, #33554432 11146 0266 F868 ldr r0, [r7, #12] 11147 0268 FFF7FEFF bl I2C_TransferConfig 11148 .L507: 5228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); 5229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 289 5232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 11149 .loc 1 5236 8 11150 026c 3B69 ldr r3, [r7, #16] 11151 026e 5B09 lsrs r3, r3, #5 11152 0270 03F00103 and r3, r3, #1 11153 .loc 1 5236 6 11154 0274 002B cmp r3, #0 11155 0276 09D0 beq .L523 5237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11156 .loc 1 5237 8 discriminator 1 11157 0278 7B68 ldr r3, [r7, #4] 11158 027a 5B09 lsrs r3, r3, #5 11159 027c 03F00103 and r3, r3, #1 5236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11160 .loc 1 5236 61 discriminator 1 11161 0280 002B cmp r3, #0 11162 0282 03D0 beq .L523 5238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); 11163 .loc 1 5240 5 11164 0284 3969 ldr r1, [r7, #16] 11165 0286 F868 ldr r0, [r7, #12] 11166 0288 FFF7FEFF bl I2C_ITMasterCplt 11167 .L523: 5241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11168 .loc 1 5244 3 11169 028c FB68 ldr r3, [r7, #12] 11170 028e 0022 movs r2, #0 11171 0290 83F84020 strb r2, [r3, #64] 5245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11172 .loc 1 5246 10 11173 0294 0023 movs r3, #0 11174 .L505: 5247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11175 .loc 1 5247 1 11176 0296 1846 mov r0, r3 11177 0298 1837 adds r7, r7, #24 11178 .LCFI268: 11179 .cfi_def_cfa_offset 8 11180 029a BD46 mov sp, r7 11181 .LCFI269: 11182 .cfi_def_cfa_register 13 11183 @ sp needed 11184 029c 80BD pop {r7, pc} 11185 .cfi_endproc 11186 .LFE180: 11188 029e 00BF .section .text.I2C_Slave_ISR_IT,"ax",%progbits 11189 .align 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 290 11190 .syntax unified 11191 .thumb 11192 .thumb_func 11194 I2C_Slave_ISR_IT: 11195 .LFB181: 5248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. 5251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11196 .loc 1 5259 1 11197 .cfi_startproc 11198 @ args = 0, pretend = 0, frame = 24 11199 @ frame_needed = 1, uses_anonymous_args = 0 11200 0000 80B5 push {r7, lr} 11201 .LCFI270: 11202 .cfi_def_cfa_offset 8 11203 .cfi_offset 7, -8 11204 .cfi_offset 14, -4 11205 0002 86B0 sub sp, sp, #24 11206 .LCFI271: 11207 .cfi_def_cfa_offset 32 11208 0004 00AF add r7, sp, #0 11209 .LCFI272: 11210 .cfi_def_cfa_register 7 11211 0006 F860 str r0, [r7, #12] 11212 0008 B960 str r1, [r7, #8] 11213 000a 7A60 str r2, [r7, #4] 5260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 11214 .loc 1 5260 12 11215 000c FB68 ldr r3, [r7, #12] 11216 000e DB6A ldr r3, [r3, #44] 11217 0010 7B61 str r3, [r7, #20] 5261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 11218 .loc 1 5261 12 11219 0012 BB68 ldr r3, [r7, #8] 11220 0014 3B61 str r3, [r7, #16] 5262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */ 5264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 11221 .loc 1 5264 3 11222 0016 FB68 ldr r3, [r7, #12] 11223 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 11224 001c 012B cmp r3, #1 11225 001e 01D1 bne .L527 11226 .loc 1 5264 3 is_stmt 0 discriminator 1 11227 0020 0223 movs r3, #2 11228 0022 EDE0 b .L528 11229 .L527: 11230 .loc 1 5264 3 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 291 11231 0024 FB68 ldr r3, [r7, #12] 11232 0026 0122 movs r2, #1 11233 0028 83F84020 strb r2, [r3, #64] 5265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */ 5267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ 11234 .loc 1 5267 8 is_stmt 1 discriminator 2 11235 002c 3B69 ldr r3, [r7, #16] 11236 002e 5B09 lsrs r3, r3, #5 11237 0030 03F00103 and r3, r3, #1 11238 .loc 1 5267 6 discriminator 2 11239 0034 002B cmp r3, #0 11240 0036 0AD0 beq .L529 5268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11241 .loc 1 5268 8 discriminator 1 11242 0038 7B68 ldr r3, [r7, #4] 11243 003a 5B09 lsrs r3, r3, #5 11244 003c 03F00103 and r3, r3, #1 5267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11245 .loc 1 5267 61 discriminator 1 11246 0040 002B cmp r3, #0 11247 0042 04D0 beq .L529 5269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */ 5271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, tmpITFlags); 11248 .loc 1 5271 5 11249 0044 3969 ldr r1, [r7, #16] 11250 0046 F868 ldr r0, [r7, #12] 11251 0048 FFF7FEFF bl I2C_ITSlaveCplt 11252 004c D3E0 b .L530 11253 .L529: 5272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 11254 .loc 1 5273 13 11255 004e 3B69 ldr r3, [r7, #16] 11256 0050 1B09 lsrs r3, r3, #4 11257 0052 03F00103 and r3, r3, #1 11258 .loc 1 5273 11 11259 0056 002B cmp r3, #0 11260 0058 4DD0 beq .L531 5274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11261 .loc 1 5274 13 discriminator 1 11262 005a 7B68 ldr r3, [r7, #4] 11263 005c 1B09 lsrs r3, r3, #4 11264 005e 03F00103 and r3, r3, #1 5273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11265 .loc 1 5273 63 discriminator 1 11266 0062 002B cmp r3, #0 11267 0064 47D0 beq .L531 5275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 5277: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 */ 5278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0*/ 5279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */ 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 11268 .loc 1 5280 13 11269 0066 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 292 11270 0068 5B8D ldrh r3, [r3, #42] @ movhi 11271 006a 9BB2 uxth r3, r3 11272 .loc 1 5280 8 11273 006c 002B cmp r3, #0 11274 006e 28D1 bne .L532 5281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) 11275 .loc 1 5282 16 11276 0070 FB68 ldr r3, [r7, #12] 11277 0072 93F84130 ldrb r3, [r3, #65] 11278 0076 DBB2 uxtb r3, r3 11279 .loc 1 5282 10 11280 0078 282B cmp r3, #40 11281 007a 08D1 bne .L533 11282 .loc 1 5282 49 discriminator 1 11283 007c 7B69 ldr r3, [r7, #20] 11284 007e B3F1007F cmp r3, #33554432 11285 0082 04D1 bne .L533 5283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for 5284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ 5285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 5287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); 11286 .loc 1 5287 9 11287 0084 3969 ldr r1, [r7, #16] 11288 0086 F868 ldr r0, [r7, #12] 11289 0088 FFF7FEFF bl I2C_ITListenCplt 11290 008c 32E0 b .L536 11291 .L533: 5288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME) 11292 .loc 1 5289 21 11293 008e FB68 ldr r3, [r7, #12] 11294 0090 93F84130 ldrb r3, [r3, #65] 11295 0094 DBB2 uxtb r3, r3 11296 .loc 1 5289 15 11297 0096 292B cmp r3, #41 11298 0098 0ED1 bne .L535 11299 .loc 1 5289 62 discriminator 1 11300 009a 7B69 ldr r3, [r7, #20] 11301 009c 13F5803F cmn r3, #65536 11302 00a0 0AD0 beq .L535 5290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11303 .loc 1 5292 9 11304 00a2 FB68 ldr r3, [r7, #12] 11305 00a4 1B68 ldr r3, [r3] 11306 00a6 1022 movs r2, #16 11307 00a8 DA61 str r2, [r3, #28] 5293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 11308 .loc 1 5295 9 11309 00aa F868 ldr r0, [r7, #12] 11310 00ac FFF7FEFF bl I2C_Flush_TXDR 5296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 293 5297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 11311 .loc 1 5299 9 11312 00b0 F868 ldr r0, [r7, #12] 11313 00b2 FFF7FEFF bl I2C_ITSlaveSeqCplt 11314 00b6 1DE0 b .L536 11315 .L535: 5300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11316 .loc 1 5304 9 11317 00b8 FB68 ldr r3, [r7, #12] 11318 00ba 1B68 ldr r3, [r3] 11319 00bc 1022 movs r2, #16 11320 00be DA61 str r2, [r3, #28] 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11321 .loc 1 5280 8 11322 00c0 96E0 b .L544 11323 .L532: 5305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5309: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*/ 5310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11324 .loc 1 5311 7 11325 00c2 FB68 ldr r3, [r7, #12] 11326 00c4 1B68 ldr r3, [r3] 11327 00c6 1022 movs r2, #16 11328 00c8 DA61 str r2, [r3, #28] 5312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 5314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 11329 .loc 1 5314 23 11330 00ca FB68 ldr r3, [r7, #12] 11331 00cc 5B6C ldr r3, [r3, #68] 11332 00ce 43F00402 orr r2, r3, #4 11333 00d2 FB68 ldr r3, [r7, #12] 11334 00d4 5A64 str r2, [r3, #68] 5315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) 11335 .loc 1 5316 10 11336 00d6 7B69 ldr r3, [r7, #20] 11337 00d8 002B cmp r3, #0 11338 00da 04D0 beq .L537 11339 .loc 1 5316 43 discriminator 1 11340 00dc 7B69 ldr r3, [r7, #20] 11341 00de B3F1807F cmp r3, #16777216 11342 00e2 40F08580 bne .L544 11343 .L537: 5317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 294 11344 .loc 1 5319 9 11345 00e6 FB68 ldr r3, [r7, #12] 11346 00e8 5B6C ldr r3, [r3, #68] 11347 00ea 1946 mov r1, r3 11348 00ec F868 ldr r0, [r7, #12] 11349 00ee FFF7FEFF bl I2C_ITError 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11350 .loc 1 5280 8 11351 00f2 7DE0 b .L544 11352 .L536: 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11353 .loc 1 5280 8 is_stmt 0 discriminator 1 11354 00f4 7CE0 b .L544 11355 .L531: 5320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ 11356 .loc 1 5323 13 is_stmt 1 11357 00f6 3B69 ldr r3, [r7, #16] 11358 00f8 9B08 lsrs r3, r3, #2 11359 00fa 03F00103 and r3, r3, #1 11360 .loc 1 5323 11 11361 00fe 002B cmp r3, #0 11362 0100 30D0 beq .L538 5324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 11363 .loc 1 5324 13 discriminator 1 11364 0102 7B68 ldr r3, [r7, #4] 11365 0104 9B08 lsrs r3, r3, #2 11366 0106 03F00103 and r3, r3, #1 5323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) 11367 .loc 1 5323 65 discriminator 1 11368 010a 002B cmp r3, #0 11369 010c 2AD0 beq .L538 5325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U) 11370 .loc 1 5326 13 11371 010e FB68 ldr r3, [r7, #12] 11372 0110 5B8D ldrh r3, [r3, #42] @ movhi 11373 0112 9BB2 uxth r3, r3 11374 .loc 1 5326 8 11375 0114 002B cmp r3, #0 11376 0116 18D0 beq .L539 5327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 5329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 11377 .loc 1 5329 38 11378 0118 FB68 ldr r3, [r7, #12] 11379 011a 1B68 ldr r3, [r3] 11380 .loc 1 5329 48 11381 011c 5A6A ldr r2, [r3, #36] 11382 .loc 1 5329 12 11383 011e FB68 ldr r3, [r7, #12] 11384 0120 5B6A ldr r3, [r3, #36] 11385 .loc 1 5329 25 11386 0122 D2B2 uxtb r2, r2 11387 .loc 1 5329 23 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 295 11388 0124 1A70 strb r2, [r3] 5330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 11389 .loc 1 5332 11 11390 0126 FB68 ldr r3, [r7, #12] 11391 0128 5B6A ldr r3, [r3, #36] 11392 .loc 1 5332 21 11393 012a 5A1C adds r2, r3, #1 11394 012c FB68 ldr r3, [r7, #12] 11395 012e 5A62 str r2, [r3, #36] 5333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 11396 .loc 1 5334 11 11397 0130 FB68 ldr r3, [r7, #12] 11398 0132 1B8D ldrh r3, [r3, #40] 11399 .loc 1 5334 21 11400 0134 013B subs r3, r3, #1 11401 0136 9AB2 uxth r2, r3 11402 0138 FB68 ldr r3, [r7, #12] 11403 013a 1A85 strh r2, [r3, #40] @ movhi 5335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 11404 .loc 1 5335 11 11405 013c FB68 ldr r3, [r7, #12] 11406 013e 5B8D ldrh r3, [r3, #42] @ movhi 11407 0140 9BB2 uxth r3, r3 11408 .loc 1 5335 22 11409 0142 013B subs r3, r3, #1 11410 0144 9AB2 uxth r2, r3 11411 0146 FB68 ldr r3, [r7, #12] 11412 0148 5A85 strh r2, [r3, #42] @ movhi 11413 .L539: 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 **** if ((hi2c->XferCount == 0U) && \ 11414 .loc 1 5338 14 11415 014a FB68 ldr r3, [r7, #12] 11416 014c 5B8D ldrh r3, [r3, #42] @ movhi 11417 014e 9BB2 uxth r3, r3 11418 .loc 1 5338 8 11419 0150 002B cmp r3, #0 11420 0152 4FD1 bne .L545 11421 .loc 1 5338 33 discriminator 1 11422 0154 7B69 ldr r3, [r7, #20] 11423 0156 13F5803F cmn r3, #65536 11424 015a 4BD0 beq .L545 5339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 5340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 11425 .loc 1 5342 7 11426 015c F868 ldr r0, [r7, #12] 11427 015e FFF7FEFF bl I2C_ITSlaveSeqCplt 5338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 11428 .loc 1 5338 8 11429 0162 47E0 b .L545 11430 .L538: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 296 5343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ 11431 .loc 1 5345 13 11432 0164 3B69 ldr r3, [r7, #16] 11433 0166 DB08 lsrs r3, r3, #3 11434 0168 03F00103 and r3, r3, #1 11435 .loc 1 5345 11 11436 016c 002B cmp r3, #0 11437 016e 0AD0 beq .L541 5346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 11438 .loc 1 5346 13 discriminator 1 11439 0170 7B68 ldr r3, [r7, #4] 11440 0172 DB08 lsrs r3, r3, #3 11441 0174 03F00103 and r3, r3, #1 5345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 11442 .loc 1 5345 65 discriminator 1 11443 0178 002B cmp r3, #0 11444 017a 04D0 beq .L541 5347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, tmpITFlags); 11445 .loc 1 5348 5 11446 017c 3969 ldr r1, [r7, #16] 11447 017e F868 ldr r0, [r7, #12] 11448 0180 FFF7FEFF bl I2C_ITAddrCplt 11449 0184 37E0 b .L530 11450 .L541: 5349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ 11451 .loc 1 5350 13 11452 0186 3B69 ldr r3, [r7, #16] 11453 0188 5B08 lsrs r3, r3, #1 11454 018a 03F00103 and r3, r3, #1 11455 .loc 1 5350 11 11456 018e 002B cmp r3, #0 11457 0190 31D0 beq .L530 5351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 11458 .loc 1 5351 13 discriminator 1 11459 0192 7B68 ldr r3, [r7, #4] 11460 0194 5B08 lsrs r3, r3, #1 11461 0196 03F00103 and r3, r3, #1 5350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 11462 .loc 1 5350 65 discriminator 1 11463 019a 002B cmp r3, #0 11464 019c 2BD0 beq .L530 5352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR only if XferCount not reach "0" */ 5354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* A TXIS flag can be set, during STOP treatment */ 5355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if all Data have already been sent */ 5356: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 */ 5357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U) 11465 .loc 1 5357 13 11466 019e FB68 ldr r3, [r7, #12] 11467 01a0 5B8D ldrh r3, [r3, #42] @ movhi 11468 01a2 9BB2 uxth r3, r3 11469 .loc 1 5357 8 11470 01a4 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 297 11471 01a6 18D0 beq .L542 5358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */ 5360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; 11472 .loc 1 5360 35 11473 01a8 FB68 ldr r3, [r7, #12] 11474 01aa 5B6A ldr r3, [r3, #36] 11475 .loc 1 5360 30 11476 01ac 1A78 ldrb r2, [r3] @ zero_extendqisi2 11477 .loc 1 5360 11 11478 01ae FB68 ldr r3, [r7, #12] 11479 01b0 1B68 ldr r3, [r3] 11480 .loc 1 5360 28 11481 01b2 9A62 str r2, [r3, #40] 5361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 5363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 11482 .loc 1 5363 11 11483 01b4 FB68 ldr r3, [r7, #12] 11484 01b6 5B6A ldr r3, [r3, #36] 11485 .loc 1 5363 21 11486 01b8 5A1C adds r2, r3, #1 11487 01ba FB68 ldr r3, [r7, #12] 11488 01bc 5A62 str r2, [r3, #36] 5364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 11489 .loc 1 5365 11 11490 01be FB68 ldr r3, [r7, #12] 11491 01c0 5B8D ldrh r3, [r3, #42] @ movhi 11492 01c2 9BB2 uxth r3, r3 11493 .loc 1 5365 22 11494 01c4 013B subs r3, r3, #1 11495 01c6 9AB2 uxth r2, r3 11496 01c8 FB68 ldr r3, [r7, #12] 11497 01ca 5A85 strh r2, [r3, #42] @ movhi 5366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 11498 .loc 1 5366 11 11499 01cc FB68 ldr r3, [r7, #12] 11500 01ce 1B8D ldrh r3, [r3, #40] 11501 .loc 1 5366 21 11502 01d0 013B subs r3, r3, #1 11503 01d2 9AB2 uxth r2, r3 11504 01d4 FB68 ldr r3, [r7, #12] 11505 01d6 1A85 strh r2, [r3, #40] @ movhi 11506 01d8 0DE0 b .L530 11507 .L542: 5367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) 11508 .loc 1 5370 10 11509 01da 7B69 ldr r3, [r7, #20] 11510 01dc B3F1807F cmp r3, #16777216 11511 01e0 02D0 beq .L543 11512 .loc 1 5370 42 discriminator 1 11513 01e2 7B69 ldr r3, [r7, #20] 11514 01e4 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 298 11515 01e6 06D1 bne .L530 11516 .L543: 5371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 11517 .loc 1 5374 9 11518 01e8 F868 ldr r0, [r7, #12] 11519 01ea FFF7FEFF bl I2C_ITSlaveSeqCplt 11520 01ee 02E0 b .L530 11521 .L544: 5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11522 .loc 1 5280 8 11523 01f0 00BF nop 11524 01f2 00E0 b .L530 11525 .L545: 5338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 11526 .loc 1 5338 8 11527 01f4 00BF nop 11528 .L530: 5375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11529 .loc 1 5384 3 11530 01f6 FB68 ldr r3, [r7, #12] 11531 01f8 0022 movs r2, #0 11532 01fa 83F84020 strb r2, [r3, #64] 5385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11533 .loc 1 5386 10 11534 01fe 0023 movs r3, #0 11535 .L528: 5387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11536 .loc 1 5387 1 11537 0200 1846 mov r0, r3 11538 0202 1837 adds r7, r7, #24 11539 .LCFI273: 11540 .cfi_def_cfa_offset 8 11541 0204 BD46 mov sp, r7 11542 .LCFI274: 11543 .cfi_def_cfa_register 13 11544 @ sp needed 11545 0206 80BD pop {r7, pc} 11546 .cfi_endproc 11547 .LFE181: 11549 .section .text.I2C_Master_ISR_DMA,"ax",%progbits 11550 .align 1 11551 .syntax unified 11552 .thumb 11553 .thumb_func ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 299 11555 I2C_Master_ISR_DMA: 11556 .LFB182: 5388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. 5391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11557 .loc 1 5399 1 11558 .cfi_startproc 11559 @ args = 0, pretend = 0, frame = 24 11560 @ frame_needed = 1, uses_anonymous_args = 0 11561 0000 80B5 push {r7, lr} 11562 .LCFI275: 11563 .cfi_def_cfa_offset 8 11564 .cfi_offset 7, -8 11565 .cfi_offset 14, -4 11566 0002 88B0 sub sp, sp, #32 11567 .LCFI276: 11568 .cfi_def_cfa_offset 40 11569 0004 02AF add r7, sp, #8 11570 .LCFI277: 11571 .cfi_def_cfa 7, 32 11572 0006 F860 str r0, [r7, #12] 11573 0008 B960 str r1, [r7, #8] 11574 000a 7A60 str r2, [r7, #4] 5400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress; 5401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode; 5402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 5404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 11575 .loc 1 5404 3 11576 000c FB68 ldr r3, [r7, #12] 11577 000e 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 11578 0012 012B cmp r3, #1 11579 0014 01D1 bne .L547 11580 .loc 1 5404 3 is_stmt 0 discriminator 1 11581 0016 0223 movs r3, #2 11582 0018 F0E0 b .L548 11583 .L547: 11584 .loc 1 5404 3 discriminator 2 11585 001a FB68 ldr r3, [r7, #12] 11586 001c 0122 movs r2, #1 11587 001e 83F84020 strb r2, [r3, #64] 5405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 11588 .loc 1 5406 8 is_stmt 1 discriminator 2 11589 0022 BB68 ldr r3, [r7, #8] 11590 0024 1B09 lsrs r3, r3, #4 11591 0026 03F00103 and r3, r3, #1 11592 .loc 1 5406 6 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 300 11593 002a 002B cmp r3, #0 11594 002c 17D0 beq .L549 5407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11595 .loc 1 5407 8 discriminator 1 11596 002e 7B68 ldr r3, [r7, #4] 11597 0030 1B09 lsrs r3, r3, #4 11598 0032 03F00103 and r3, r3, #1 5406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11599 .loc 1 5406 55 discriminator 1 11600 0036 002B cmp r3, #0 11601 0038 11D0 beq .L549 5408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11602 .loc 1 5410 5 11603 003a FB68 ldr r3, [r7, #12] 11604 003c 1B68 ldr r3, [r3] 11605 003e 1022 movs r2, #16 11606 0040 DA61 str r2, [r3, #28] 5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 5413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 11607 .loc 1 5413 21 11608 0042 FB68 ldr r3, [r7, #12] 11609 0044 5B6C ldr r3, [r3, #68] 11610 0046 43F00402 orr r2, r3, #4 11611 004a FB68 ldr r3, [r7, #12] 11612 004c 5A64 str r2, [r3, #68] 5414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 5416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ 5417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 5418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 11613 .loc 1 5418 5 11614 004e 2021 movs r1, #32 11615 0050 F868 ldr r0, [r7, #12] 11616 0052 FFF7FEFF bl I2C_Enable_IRQ 5419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 11617 .loc 1 5421 5 11618 0056 F868 ldr r0, [r7, #12] 11619 0058 FFF7FEFF bl I2C_Flush_TXDR 11620 005c C9E0 b .L550 11621 .L549: 5422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ 11622 .loc 1 5423 13 11623 005e BB68 ldr r3, [r7, #8] 11624 0060 DB09 lsrs r3, r3, #7 11625 0062 03F00103 and r3, r3, #1 11626 .loc 1 5423 11 11627 0066 002B cmp r3, #0 11628 0068 00F08180 beq .L551 5424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11629 .loc 1 5424 13 discriminator 1 11630 006c 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 301 11631 006e 9B09 lsrs r3, r3, #6 11632 0070 03F00103 and r3, r3, #1 5423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11633 .loc 1 5423 61 discriminator 1 11634 0074 002B cmp r3, #0 11635 0076 7AD0 beq .L551 5425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC interrupt */ 5427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); 11636 .loc 1 5427 5 11637 0078 FB68 ldr r3, [r7, #12] 11638 007a 1B68 ldr r3, [r3] 11639 007c 1A68 ldr r2, [r3] 11640 007e FB68 ldr r3, [r7, #12] 11641 0080 1B68 ldr r3, [r3] 11642 0082 22F04002 bic r2, r2, #64 11643 0086 1A60 str r2, [r3] 5428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 11644 .loc 1 5429 13 11645 0088 FB68 ldr r3, [r7, #12] 11646 008a 5B8D ldrh r3, [r3, #42] @ movhi 11647 008c 9BB2 uxth r3, r3 11648 .loc 1 5429 8 11649 008e 002B cmp r3, #0 11650 0090 5CD0 beq .L552 5430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Recover Slave address */ 5432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); 11651 .loc 1 5432 35 11652 0092 FB68 ldr r3, [r7, #12] 11653 0094 1B68 ldr r3, [r3] 11654 .loc 1 5432 45 11655 0096 5B68 ldr r3, [r3, #4] 11656 .loc 1 5432 20 11657 0098 9BB2 uxth r3, r3 11658 .loc 1 5432 18 11659 009a C3F30903 ubfx r3, r3, #0, #10 11660 009e 7B82 strh r3, [r7, #18] @ movhi 5433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ 5435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 11661 .loc 1 5435 15 11662 00a0 FB68 ldr r3, [r7, #12] 11663 00a2 5B8D ldrh r3, [r3, #42] @ movhi 11664 00a4 9BB2 uxth r3, r3 11665 .loc 1 5435 10 11666 00a6 FF2B cmp r3, #255 11667 00a8 14D9 bls .L553 5436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 11668 .loc 1 5438 13 11669 00aa FB68 ldr r3, [r7, #12] 11670 00ac 1B68 ldr r3, [r3] 11671 00ae 9B69 ldr r3, [r3, #24] 11672 00b0 1B0C lsrs r3, r3, #16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 302 11673 00b2 DBB2 uxtb r3, r3 11674 00b4 03F00103 and r3, r3, #1 11675 00b8 DBB2 uxtb r3, r3 11676 .loc 1 5438 12 11677 00ba 012B cmp r3, #1 11678 00bc 03D1 bne .L554 5439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 11679 .loc 1 5440 26 11680 00be FB68 ldr r3, [r7, #12] 11681 00c0 0122 movs r2, #1 11682 00c2 1A85 strh r2, [r3, #40] @ movhi 11683 00c4 02E0 b .L555 11684 .L554: 5441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 11685 .loc 1 5444 26 11686 00c6 FB68 ldr r3, [r7, #12] 11687 00c8 FF22 movs r2, #255 11688 00ca 1A85 strh r2, [r3, #40] @ movhi 11689 .L555: 5445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; 11690 .loc 1 5446 18 11691 00cc 4FF08073 mov r3, #16777216 11692 00d0 7B61 str r3, [r7, #20] 11693 00d2 10E0 b .L556 11694 .L553: 5447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 11695 .loc 1 5450 30 11696 00d4 FB68 ldr r3, [r7, #12] 11697 00d6 5B8D ldrh r3, [r3, #42] @ movhi 11698 00d8 9AB2 uxth r2, r3 11699 .loc 1 5450 24 11700 00da FB68 ldr r3, [r7, #12] 11701 00dc 1A85 strh r2, [r3, #40] @ movhi 5451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 11702 .loc 1 5451 17 11703 00de FB68 ldr r3, [r7, #12] 11704 00e0 DB6A ldr r3, [r3, #44] 11705 .loc 1 5451 12 11706 00e2 13F5803F cmn r3, #65536 11707 00e6 03D0 beq .L557 5452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions; 11708 .loc 1 5453 20 11709 00e8 FB68 ldr r3, [r7, #12] 11710 00ea DB6A ldr r3, [r3, #44] 11711 00ec 7B61 str r3, [r7, #20] 11712 00ee 02E0 b .L556 11713 .L557: 5454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 303 5455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; 11714 .loc 1 5457 20 11715 00f0 4FF00073 mov r3, #33554432 11716 00f4 7B61 str r3, [r7, #20] 11717 .L556: 5458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the new XferSize in Nbytes register */ 5462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); 11718 .loc 1 5462 57 11719 00f6 FB68 ldr r3, [r7, #12] 11720 00f8 1B8D ldrh r3, [r3, #40] 11721 .loc 1 5462 7 11722 00fa DAB2 uxtb r2, r3 11723 00fc 798A ldrh r1, [r7, #18] 11724 00fe 0023 movs r3, #0 11725 0100 0093 str r3, [sp] 11726 0102 7B69 ldr r3, [r7, #20] 11727 0104 F868 ldr r0, [r7, #12] 11728 0106 FFF7FEFF bl I2C_TransferConfig 5463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 11729 .loc 1 5465 23 11730 010a FB68 ldr r3, [r7, #12] 11731 010c 5B8D ldrh r3, [r3, #42] @ movhi 11732 010e 9AB2 uxth r2, r3 11733 .loc 1 5465 30 11734 0110 FB68 ldr r3, [r7, #12] 11735 0112 1B8D ldrh r3, [r3, #40] 11736 .loc 1 5465 23 11737 0114 D31A subs r3, r2, r3 11738 0116 9AB2 uxth r2, r3 11739 0118 FB68 ldr r3, [r7, #12] 11740 011a 5A85 strh r2, [r3, #42] @ movhi 5466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 11741 .loc 1 5468 15 11742 011c FB68 ldr r3, [r7, #12] 11743 011e 93F84130 ldrb r3, [r3, #65] 11744 0122 DBB2 uxtb r3, r3 11745 .loc 1 5468 10 11746 0124 222B cmp r3, #34 11747 0126 08D1 bne .L558 5469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 11748 .loc 1 5470 13 11749 0128 FB68 ldr r3, [r7, #12] 11750 012a 1B68 ldr r3, [r3] 11751 .loc 1 5470 29 11752 012c 1A68 ldr r2, [r3] 11753 .loc 1 5470 13 11754 012e FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 304 11755 0130 1B68 ldr r3, [r3] 11756 .loc 1 5470 29 11757 0132 42F40042 orr r2, r2, #32768 11758 0136 1A60 str r2, [r3] 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11759 .loc 1 5429 8 11760 0138 5BE0 b .L550 11761 .L558: 5471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 11762 .loc 1 5474 13 11763 013a FB68 ldr r3, [r7, #12] 11764 013c 1B68 ldr r3, [r3] 11765 .loc 1 5474 29 11766 013e 1A68 ldr r2, [r3] 11767 .loc 1 5474 13 11768 0140 FB68 ldr r3, [r7, #12] 11769 0142 1B68 ldr r3, [r3] 11770 .loc 1 5474 29 11771 0144 42F48042 orr r2, r2, #16384 11772 0148 1A60 str r2, [r3] 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11773 .loc 1 5429 8 11774 014a 52E0 b .L550 11775 .L552: 5475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ 5480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 11776 .loc 1 5480 11 11777 014c FB68 ldr r3, [r7, #12] 11778 014e 1B68 ldr r3, [r3] 11779 0150 5B68 ldr r3, [r3, #4] 11780 0152 03F00073 and r3, r3, #33554432 11781 .loc 1 5480 10 11782 0156 B3F1007F cmp r3, #33554432 11783 015a 03D0 beq .L560 5481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 11784 .loc 1 5483 9 11785 015c F868 ldr r0, [r7, #12] 11786 015e FFF7FEFF bl I2C_ITMasterSeqCplt 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11787 .loc 1 5429 8 11788 0162 46E0 b .L550 11789 .L560: 5484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 305 11790 .loc 1 5489 9 11791 0164 4021 movs r1, #64 11792 0166 F868 ldr r0, [r7, #12] 11793 0168 FFF7FEFF bl I2C_ITError 5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11794 .loc 1 5429 8 11795 016c 41E0 b .L550 11796 .L551: 5490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ 11797 .loc 1 5493 13 11798 016e BB68 ldr r3, [r7, #8] 11799 0170 9B09 lsrs r3, r3, #6 11800 0172 03F00103 and r3, r3, #1 11801 .loc 1 5493 11 11802 0176 002B cmp r3, #0 11803 0178 29D0 beq .L561 5494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11804 .loc 1 5494 13 discriminator 1 11805 017a 7B68 ldr r3, [r7, #4] 11806 017c 9B09 lsrs r3, r3, #6 11807 017e 03F00103 and r3, r3, #1 5493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 11808 .loc 1 5493 60 discriminator 1 11809 0182 002B cmp r3, #0 11810 0184 23D0 beq .L561 5495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 11811 .loc 1 5496 13 11812 0186 FB68 ldr r3, [r7, #12] 11813 0188 5B8D ldrh r3, [r3, #42] @ movhi 11814 018a 9BB2 uxth r3, r3 11815 .loc 1 5496 8 11816 018c 002B cmp r3, #0 11817 018e 19D1 bne .L562 5497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) 11818 .loc 1 5498 11 11819 0190 FB68 ldr r3, [r7, #12] 11820 0192 1B68 ldr r3, [r3] 11821 0194 5B68 ldr r3, [r3, #4] 11822 0196 03F00073 and r3, r3, #33554432 11823 .loc 1 5498 10 11824 019a B3F1007F cmp r3, #33554432 11825 019e 27D0 beq .L565 5499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ 5501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) 11826 .loc 1 5501 17 11827 01a0 FB68 ldr r3, [r7, #12] 11828 01a2 DB6A ldr r3, [r3, #44] 11829 .loc 1 5501 12 11830 01a4 13F5803F cmn r3, #65536 11831 01a8 08D1 bne .L564 5502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 306 5503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 5504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 11832 .loc 1 5504 15 11833 01aa FB68 ldr r3, [r7, #12] 11834 01ac 1B68 ldr r3, [r3] 11835 .loc 1 5504 31 11836 01ae 5A68 ldr r2, [r3, #4] 11837 .loc 1 5504 15 11838 01b0 FB68 ldr r3, [r7, #12] 11839 01b2 1B68 ldr r3, [r3] 11840 .loc 1 5504 31 11841 01b4 42F48042 orr r2, r2, #16384 11842 01b8 5A60 str r2, [r3, #4] 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11843 .loc 1 5496 8 11844 01ba 19E0 b .L565 11845 .L564: 5505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ 5509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); 11846 .loc 1 5509 11 11847 01bc F868 ldr r0, [r7, #12] 11848 01be FFF7FEFF bl I2C_ITMasterSeqCplt 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11849 .loc 1 5496 8 11850 01c2 15E0 b .L565 11851 .L562: 5510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ 5516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 11852 .loc 1 5517 7 11853 01c4 4021 movs r1, #64 11854 01c6 F868 ldr r0, [r7, #12] 11855 01c8 FFF7FEFF bl I2C_ITError 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11856 .loc 1 5496 8 11857 01cc 10E0 b .L565 11858 .L561: 5518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 11859 .loc 1 5520 13 11860 01ce BB68 ldr r3, [r7, #8] 11861 01d0 5B09 lsrs r3, r3, #5 11862 01d2 03F00103 and r3, r3, #1 11863 .loc 1 5520 11 11864 01d6 002B cmp r3, #0 11865 01d8 0BD0 beq .L550 5521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11866 .loc 1 5521 13 discriminator 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 307 11867 01da 7B68 ldr r3, [r7, #4] 11868 01dc 5B09 lsrs r3, r3, #5 11869 01de 03F00103 and r3, r3, #1 5520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 11870 .loc 1 5520 63 discriminator 1 11871 01e2 002B cmp r3, #0 11872 01e4 05D0 beq .L550 5522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); 11873 .loc 1 5524 5 11874 01e6 B968 ldr r1, [r7, #8] 11875 01e8 F868 ldr r0, [r7, #12] 11876 01ea FFF7FEFF bl I2C_ITMasterCplt 11877 01ee 00E0 b .L550 11878 .L565: 5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11879 .loc 1 5496 8 11880 01f0 00BF nop 11881 .L550: 5525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 11882 .loc 1 5532 3 11883 01f2 FB68 ldr r3, [r7, #12] 11884 01f4 0022 movs r2, #0 11885 01f6 83F84020 strb r2, [r3, #64] 5533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 11886 .loc 1 5534 10 11887 01fa 0023 movs r3, #0 11888 .L548: 5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 11889 .loc 1 5535 1 11890 01fc 1846 mov r0, r3 11891 01fe 1837 adds r7, r7, #24 11892 .LCFI278: 11893 .cfi_def_cfa_offset 8 11894 0200 BD46 mov sp, r7 11895 .LCFI279: 11896 .cfi_def_cfa_register 13 11897 @ sp needed 11898 0202 80BD pop {r7, pc} 11899 .cfi_endproc 11900 .LFE182: 11902 .section .text.I2C_Mem_ISR_DMA,"ax",%progbits 11903 .align 1 11904 .syntax unified 11905 .thumb 11906 .thumb_func 11908 I2C_Mem_ISR_DMA: 11909 .LFB183: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 308 5536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA. 5539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 11910 .loc 1 5547 1 11911 .cfi_startproc 11912 @ args = 0, pretend = 0, frame = 24 11913 @ frame_needed = 1, uses_anonymous_args = 0 11914 0000 80B5 push {r7, lr} 11915 .LCFI280: 11916 .cfi_def_cfa_offset 8 11917 .cfi_offset 7, -8 11918 .cfi_offset 14, -4 11919 0002 88B0 sub sp, sp, #32 11920 .LCFI281: 11921 .cfi_def_cfa_offset 40 11922 0004 02AF add r7, sp, #8 11923 .LCFI282: 11924 .cfi_def_cfa 7, 32 11925 0006 F860 str r0, [r7, #12] 11926 0008 B960 str r1, [r7, #8] 11927 000a 7A60 str r2, [r7, #4] 5548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; 11928 .loc 1 5548 12 11929 000c 944B ldr r3, .L588 11930 000e 7B61 str r3, [r7, #20] 5549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */ 5551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 11931 .loc 1 5551 3 11932 0010 FB68 ldr r3, [r7, #12] 11933 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 11934 0016 012B cmp r3, #1 11935 0018 01D1 bne .L567 11936 .loc 1 5551 3 is_stmt 0 discriminator 1 11937 001a 0223 movs r3, #2 11938 001c 39E1 b .L568 11939 .L567: 11940 .loc 1 5551 3 discriminator 2 11941 001e FB68 ldr r3, [r7, #12] 11942 0020 0122 movs r2, #1 11943 0022 83F84020 strb r2, [r3, #64] 5552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 11944 .loc 1 5553 8 is_stmt 1 discriminator 2 11945 0026 BB68 ldr r3, [r7, #8] 11946 0028 1B09 lsrs r3, r3, #4 11947 002a 03F00103 and r3, r3, #1 11948 .loc 1 5553 6 discriminator 2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 309 11949 002e 002B cmp r3, #0 11950 0030 17D0 beq .L569 5554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11951 .loc 1 5554 8 discriminator 1 11952 0032 7B68 ldr r3, [r7, #4] 11953 0034 1B09 lsrs r3, r3, #4 11954 0036 03F00103 and r3, r3, #1 5553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 11955 .loc 1 5553 55 discriminator 1 11956 003a 002B cmp r3, #0 11957 003c 11D0 beq .L569 5555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 11958 .loc 1 5557 5 11959 003e FB68 ldr r3, [r7, #12] 11960 0040 1B68 ldr r3, [r3] 11961 0042 1022 movs r2, #16 11962 0044 DA61 str r2, [r3, #28] 5558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */ 5560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 11963 .loc 1 5560 21 11964 0046 FB68 ldr r3, [r7, #12] 11965 0048 5B6C ldr r3, [r3, #68] 11966 004a 43F00402 orr r2, r3, #4 11967 004e FB68 ldr r3, [r7, #12] 11968 0050 5A64 str r2, [r3, #68] 5561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ 5563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ 5564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ 5565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 11969 .loc 1 5565 5 11970 0052 2021 movs r1, #32 11971 0054 F868 ldr r0, [r7, #12] 11972 0056 FFF7FEFF bl I2C_Enable_IRQ 5566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 11973 .loc 1 5568 5 11974 005a F868 ldr r0, [r7, #12] 11975 005c FFF7FEFF bl I2C_Flush_TXDR 11976 0060 12E1 b .L570 11977 .L569: 5569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ 11978 .loc 1 5570 13 11979 0062 BB68 ldr r3, [r7, #8] 11980 0064 5B08 lsrs r3, r3, #1 11981 0066 03F00103 and r3, r3, #1 11982 .loc 1 5570 11 11983 006a 002B cmp r3, #0 11984 006c 0FD0 beq .L571 5571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 11985 .loc 1 5571 13 discriminator 1 11986 006e 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 310 11987 0070 5B08 lsrs r3, r3, #1 11988 0072 03F00103 and r3, r3, #1 5570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) 11989 .loc 1 5570 62 discriminator 1 11990 0076 002B cmp r3, #0 11991 0078 09D0 beq .L571 5572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */ 5574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; 11992 .loc 1 5574 9 11993 007a FB68 ldr r3, [r7, #12] 11994 007c 1B68 ldr r3, [r3] 11995 .loc 1 5574 32 11996 007e FA68 ldr r2, [r7, #12] 11997 0080 126D ldr r2, [r2, #80] 11998 .loc 1 5574 26 11999 0082 9A62 str r2, [r3, #40] 5575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */ 5577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; 12000 .loc 1 5577 22 12001 0084 FB68 ldr r3, [r7, #12] 12002 0086 4FF0FF32 mov r2, #-1 12003 008a 1A65 str r2, [r3, #80] 12004 008c FCE0 b .L570 12005 .L571: 5578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ 12006 .loc 1 5579 13 12007 008e BB68 ldr r3, [r7, #8] 12008 0090 DB09 lsrs r3, r3, #7 12009 0092 03F00103 and r3, r3, #1 12010 .loc 1 5579 11 12011 0096 002B cmp r3, #0 12012 0098 6ED0 beq .L572 5580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 12013 .loc 1 5580 13 discriminator 1 12014 009a 7B68 ldr r3, [r7, #4] 12015 009c 9B09 lsrs r3, r3, #6 12016 009e 03F00103 and r3, r3, #1 5579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 12017 .loc 1 5579 61 discriminator 1 12018 00a2 002B cmp r3, #0 12019 00a4 68D0 beq .L572 5581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupt related to address step */ 5583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 12020 .loc 1 5583 5 12021 00a6 0121 movs r1, #1 12022 00a8 F868 ldr r0, [r7, #12] 12023 00aa FFF7FEFF bl I2C_Disable_IRQ 5584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable only Error interrupt */ 5586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 12024 .loc 1 5586 5 12025 00ae 1021 movs r1, #16 12026 00b0 F868 ldr r0, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 311 12027 00b2 FFF7FEFF bl I2C_Enable_IRQ 5587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 12028 .loc 1 5588 13 12029 00b6 FB68 ldr r3, [r7, #12] 12030 00b8 5B8D ldrh r3, [r3, #42] @ movhi 12031 00ba 9BB2 uxth r3, r3 12032 .loc 1 5588 8 12033 00bc 002B cmp r3, #0 12034 00be 56D0 beq .L573 5589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ 5591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 12035 .loc 1 5591 15 12036 00c0 FB68 ldr r3, [r7, #12] 12037 00c2 5B8D ldrh r3, [r3, #42] @ movhi 12038 00c4 9BB2 uxth r3, r3 12039 .loc 1 5591 10 12040 00c6 FF2B cmp r3, #255 12041 00c8 1ED9 bls .L574 5592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 12042 .loc 1 5594 13 12043 00ca FB68 ldr r3, [r7, #12] 12044 00cc 1B68 ldr r3, [r3] 12045 00ce 9B69 ldr r3, [r3, #24] 12046 00d0 1B0C lsrs r3, r3, #16 12047 00d2 DBB2 uxtb r3, r3 12048 00d4 03F00103 and r3, r3, #1 12049 00d8 DBB2 uxtb r3, r3 12050 .loc 1 5594 12 12051 00da 012B cmp r3, #1 12052 00dc 03D1 bne .L575 5595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 12053 .loc 1 5596 26 12054 00de FB68 ldr r3, [r7, #12] 12055 00e0 0122 movs r2, #1 12056 00e2 1A85 strh r2, [r3, #40] @ movhi 12057 00e4 02E0 b .L576 12058 .L575: 5597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 12059 .loc 1 5600 26 12060 00e6 FB68 ldr r3, [r7, #12] 12061 00e8 FF22 movs r2, #255 12062 00ea 1A85 strh r2, [r3, #40] @ movhi 12063 .L576: 5601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 12064 .loc 1 5602 48 12065 00ec FB68 ldr r3, [r7, #12] 12066 00ee DB6C ldr r3, [r3, #76] 12067 .loc 1 5602 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 312 12068 00f0 99B2 uxth r1, r3 12069 .loc 1 5602 75 12070 00f2 FB68 ldr r3, [r7, #12] 12071 00f4 1B8D ldrh r3, [r3, #40] 12072 .loc 1 5602 9 12073 00f6 DAB2 uxtb r2, r3 12074 00f8 0023 movs r3, #0 12075 00fa 0093 str r3, [sp] 12076 00fc 4FF08073 mov r3, #16777216 12077 0100 F868 ldr r0, [r7, #12] 12078 0102 FFF7FEFF bl I2C_TransferConfig 12079 0106 11E0 b .L577 12080 .L574: 5603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); 5604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 12081 .loc 1 5607 30 12082 0108 FB68 ldr r3, [r7, #12] 12083 010a 5B8D ldrh r3, [r3, #42] @ movhi 12084 010c 9AB2 uxth r2, r3 12085 .loc 1 5607 24 12086 010e FB68 ldr r3, [r7, #12] 12087 0110 1A85 strh r2, [r3, #40] @ movhi 5608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 12088 .loc 1 5608 48 12089 0112 FB68 ldr r3, [r7, #12] 12090 0114 DB6C ldr r3, [r3, #76] 12091 .loc 1 5608 9 12092 0116 99B2 uxth r1, r3 12093 .loc 1 5608 75 12094 0118 FB68 ldr r3, [r7, #12] 12095 011a 1B8D ldrh r3, [r3, #40] 12096 .loc 1 5608 9 12097 011c DAB2 uxtb r2, r3 12098 011e 0023 movs r3, #0 12099 0120 0093 str r3, [sp] 12100 0122 4FF00073 mov r3, #33554432 12101 0126 F868 ldr r0, [r7, #12] 12102 0128 FFF7FEFF bl I2C_TransferConfig 12103 .L577: 5609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); 5610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 12104 .loc 1 5613 23 12105 012c FB68 ldr r3, [r7, #12] 12106 012e 5B8D ldrh r3, [r3, #42] @ movhi 12107 0130 9AB2 uxth r2, r3 12108 .loc 1 5613 30 12109 0132 FB68 ldr r3, [r7, #12] 12110 0134 1B8D ldrh r3, [r3, #40] 12111 .loc 1 5613 23 12112 0136 D31A subs r3, r2, r3 12113 0138 9AB2 uxth r2, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 313 12114 013a FB68 ldr r3, [r7, #12] 12115 013c 5A85 strh r2, [r3, #42] @ movhi 5614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 12116 .loc 1 5616 15 12117 013e FB68 ldr r3, [r7, #12] 12118 0140 93F84130 ldrb r3, [r3, #65] 12119 0144 DBB2 uxtb r3, r3 12120 .loc 1 5616 10 12121 0146 222B cmp r3, #34 12122 0148 08D1 bne .L578 5617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 12123 .loc 1 5618 13 12124 014a FB68 ldr r3, [r7, #12] 12125 014c 1B68 ldr r3, [r3] 12126 .loc 1 5618 29 12127 014e 1A68 ldr r2, [r3] 12128 .loc 1 5618 13 12129 0150 FB68 ldr r3, [r7, #12] 12130 0152 1B68 ldr r3, [r3] 12131 .loc 1 5618 29 12132 0154 42F40042 orr r2, r2, #32768 12133 0158 1A60 str r2, [r3] 5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12134 .loc 1 5588 8 12135 015a 95E0 b .L570 12136 .L578: 5619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 12137 .loc 1 5622 13 12138 015c FB68 ldr r3, [r7, #12] 12139 015e 1B68 ldr r3, [r3] 12140 .loc 1 5622 29 12141 0160 1A68 ldr r2, [r3] 12142 .loc 1 5622 13 12143 0162 FB68 ldr r3, [r7, #12] 12144 0164 1B68 ldr r3, [r3] 12145 .loc 1 5622 29 12146 0166 42F48042 orr r2, r2, #16384 12147 016a 1A60 str r2, [r3] 5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12148 .loc 1 5588 8 12149 016c 8CE0 b .L570 12150 .L573: 5623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ 5628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); 12151 .loc 1 5629 7 12152 016e 4021 movs r1, #64 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 314 12153 0170 F868 ldr r0, [r7, #12] 12154 0172 FFF7FEFF bl I2C_ITError 5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12155 .loc 1 5588 8 12156 0176 87E0 b .L570 12157 .L572: 5630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ 12158 .loc 1 5632 13 12159 0178 BB68 ldr r3, [r7, #8] 12160 017a 9B09 lsrs r3, r3, #6 12161 017c 03F00103 and r3, r3, #1 12162 .loc 1 5632 11 12163 0180 002B cmp r3, #0 12164 0182 71D0 beq .L580 5633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 12165 .loc 1 5633 13 discriminator 1 12166 0184 7B68 ldr r3, [r7, #4] 12167 0186 9B09 lsrs r3, r3, #6 12168 0188 03F00103 and r3, r3, #1 5632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) 12169 .loc 1 5632 60 discriminator 1 12170 018c 002B cmp r3, #0 12171 018e 6BD0 beq .L580 5634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupt related to address step */ 5636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 12172 .loc 1 5636 5 12173 0190 0121 movs r1, #1 12174 0192 F868 ldr r0, [r7, #12] 12175 0194 FFF7FEFF bl I2C_Disable_IRQ 5637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable only Error and NACK interrupt for data transfer */ 5639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); 12176 .loc 1 5639 5 12177 0198 1021 movs r1, #16 12178 019a F868 ldr r0, [r7, #12] 12179 019c FFF7FEFF bl I2C_Enable_IRQ 5640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 12180 .loc 1 5641 13 12181 01a0 FB68 ldr r3, [r7, #12] 12182 01a2 93F84130 ldrb r3, [r3, #65] 12183 01a6 DBB2 uxtb r3, r3 12184 .loc 1 5641 8 12185 01a8 222B cmp r3, #34 12186 01aa 01D1 bne .L581 5642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; 12187 .loc 1 5643 17 12188 01ac 2D4B ldr r3, .L588+4 12189 01ae 7B61 str r3, [r7, #20] 12190 .L581: 5644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 315 12191 .loc 1 5646 13 12192 01b0 FB68 ldr r3, [r7, #12] 12193 01b2 5B8D ldrh r3, [r3, #42] @ movhi 12194 01b4 9BB2 uxth r3, r3 12195 .loc 1 5646 8 12196 01b6 FF2B cmp r3, #255 12197 01b8 1ED9 bls .L582 5647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 5649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 12198 .loc 1 5649 11 12199 01ba FB68 ldr r3, [r7, #12] 12200 01bc 1B68 ldr r3, [r3] 12201 01be 9B69 ldr r3, [r3, #24] 12202 01c0 1B0C lsrs r3, r3, #16 12203 01c2 DBB2 uxtb r3, r3 12204 01c4 03F00103 and r3, r3, #1 12205 01c8 DBB2 uxtb r3, r3 12206 .loc 1 5649 10 12207 01ca 012B cmp r3, #1 12208 01cc 03D1 bne .L583 5650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 12209 .loc 1 5651 24 12210 01ce FB68 ldr r3, [r7, #12] 12211 01d0 0122 movs r2, #1 12212 01d2 1A85 strh r2, [r3, #40] @ movhi 12213 01d4 02E0 b .L584 12214 .L583: 5652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 12215 .loc 1 5655 24 12216 01d6 FB68 ldr r3, [r7, #12] 12217 01d8 FF22 movs r2, #255 12218 01da 1A85 strh r2, [r3, #40] @ movhi 12219 .L584: 5656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ 5659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 12220 .loc 1 5659 46 12221 01dc FB68 ldr r3, [r7, #12] 12222 01de DB6C ldr r3, [r3, #76] 12223 .loc 1 5659 7 12224 01e0 99B2 uxth r1, r3 12225 .loc 1 5659 73 12226 01e2 FB68 ldr r3, [r7, #12] 12227 01e4 1B8D ldrh r3, [r3, #40] 12228 .loc 1 5659 7 12229 01e6 DAB2 uxtb r2, r3 12230 01e8 7B69 ldr r3, [r7, #20] 12231 01ea 0093 str r3, [sp] 12232 01ec 4FF08073 mov r3, #16777216 12233 01f0 F868 ldr r0, [r7, #12] 12234 01f2 FFF7FEFF bl I2C_TransferConfig ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 316 12235 01f6 11E0 b .L585 12236 .L582: 5660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); 5661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 12237 .loc 1 5664 28 12238 01f8 FB68 ldr r3, [r7, #12] 12239 01fa 5B8D ldrh r3, [r3, #42] @ movhi 12240 01fc 9AB2 uxth r2, r3 12241 .loc 1 5664 22 12242 01fe FB68 ldr r3, [r7, #12] 12243 0200 1A85 strh r2, [r3, #40] @ movhi 5665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ 5667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, 12244 .loc 1 5667 46 12245 0202 FB68 ldr r3, [r7, #12] 12246 0204 DB6C ldr r3, [r3, #76] 12247 .loc 1 5667 7 12248 0206 99B2 uxth r1, r3 12249 .loc 1 5667 73 12250 0208 FB68 ldr r3, [r7, #12] 12251 020a 1B8D ldrh r3, [r3, #40] 12252 .loc 1 5667 7 12253 020c DAB2 uxtb r2, r3 12254 020e 7B69 ldr r3, [r7, #20] 12255 0210 0093 str r3, [sp] 12256 0212 4FF00073 mov r3, #33554432 12257 0216 F868 ldr r0, [r7, #12] 12258 0218 FFF7FEFF bl I2C_TransferConfig 12259 .L585: 5668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); 5669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */ 5672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; 12260 .loc 1 5672 21 12261 021c FB68 ldr r3, [r7, #12] 12262 021e 5B8D ldrh r3, [r3, #42] @ movhi 12263 0220 9AB2 uxth r2, r3 12264 .loc 1 5672 28 12265 0222 FB68 ldr r3, [r7, #12] 12266 0224 1B8D ldrh r3, [r3, #40] 12267 .loc 1 5672 21 12268 0226 D31A subs r3, r2, r3 12269 0228 9AB2 uxth r2, r3 12270 022a FB68 ldr r3, [r7, #12] 12271 022c 5A85 strh r2, [r3, #42] @ movhi 5673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */ 5675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 12272 .loc 1 5675 13 12273 022e FB68 ldr r3, [r7, #12] 12274 0230 93F84130 ldrb r3, [r3, #65] 12275 0234 DBB2 uxtb r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 317 12276 .loc 1 5675 8 12277 0236 222B cmp r3, #34 12278 0238 08D1 bne .L586 5676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; 12279 .loc 1 5677 11 12280 023a FB68 ldr r3, [r7, #12] 12281 023c 1B68 ldr r3, [r3] 12282 .loc 1 5677 27 12283 023e 1A68 ldr r2, [r3] 12284 .loc 1 5677 11 12285 0240 FB68 ldr r3, [r7, #12] 12286 0242 1B68 ldr r3, [r3] 12287 .loc 1 5677 27 12288 0244 42F40042 orr r2, r2, #32768 12289 0248 1A60 str r2, [r3] 5675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12290 .loc 1 5675 8 12291 024a 1DE0 b .L570 12292 .L586: 5678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; 12293 .loc 1 5681 11 12294 024c FB68 ldr r3, [r7, #12] 12295 024e 1B68 ldr r3, [r3] 12296 .loc 1 5681 27 12297 0250 1A68 ldr r2, [r3] 12298 .loc 1 5681 11 12299 0252 FB68 ldr r3, [r7, #12] 12300 0254 1B68 ldr r3, [r3] 12301 .loc 1 5681 27 12302 0256 42F48042 orr r2, r2, #16384 12303 025a 1A60 str r2, [r3] 5675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12304 .loc 1 5675 8 12305 025c 14E0 b .L570 12306 .L589: 12307 025e 00BF .align 2 12308 .L588: 12309 0260 00200080 .word -2147475456 12310 0264 00240080 .word -2147474432 12311 .L580: 5682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 12312 .loc 1 5684 13 12313 0268 BB68 ldr r3, [r7, #8] 12314 026a 5B09 lsrs r3, r3, #5 12315 026c 03F00103 and r3, r3, #1 12316 .loc 1 5684 11 12317 0270 002B cmp r3, #0 12318 0272 09D0 beq .L570 5685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 12319 .loc 1 5685 13 discriminator 1 12320 0274 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 318 12321 0276 5B09 lsrs r3, r3, #5 12322 0278 03F00103 and r3, r3, #1 5684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 12323 .loc 1 5684 63 discriminator 1 12324 027c 002B cmp r3, #0 12325 027e 03D0 beq .L570 5686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */ 5688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); 12326 .loc 1 5688 5 12327 0280 B968 ldr r1, [r7, #8] 12328 0282 F868 ldr r0, [r7, #12] 12329 0284 FFF7FEFF bl I2C_ITMasterCplt 12330 .L570: 5689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 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 **** /* Process Unlocked */ 5696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 12331 .loc 1 5696 3 12332 0288 FB68 ldr r3, [r7, #12] 12333 028a 0022 movs r2, #0 12334 028c 83F84020 strb r2, [r3, #64] 5697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 12335 .loc 1 5698 10 12336 0290 0023 movs r3, #0 12337 .L568: 5699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12338 .loc 1 5699 1 12339 0292 1846 mov r0, r3 12340 0294 1837 adds r7, r7, #24 12341 .LCFI283: 12342 .cfi_def_cfa_offset 8 12343 0296 BD46 mov sp, r7 12344 .LCFI284: 12345 .cfi_def_cfa_register 13 12346 @ sp needed 12347 0298 80BD pop {r7, pc} 12348 .cfi_endproc 12349 .LFE183: 12351 029a 00BF .section .text.I2C_Slave_ISR_DMA,"ax",%progbits 12352 .align 1 12353 .syntax unified 12354 .thumb 12355 .thumb_func 12357 I2C_Slave_ISR_DMA: 12358 .LFB184: 5700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. 5703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 319 5706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. 5707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, 5710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources) 5711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12359 .loc 1 5711 1 12360 .cfi_startproc 12361 @ args = 0, pretend = 0, frame = 32 12362 @ frame_needed = 1, uses_anonymous_args = 0 12363 0000 80B5 push {r7, lr} 12364 .LCFI285: 12365 .cfi_def_cfa_offset 8 12366 .cfi_offset 7, -8 12367 .cfi_offset 14, -4 12368 0002 88B0 sub sp, sp, #32 12369 .LCFI286: 12370 .cfi_def_cfa_offset 40 12371 0004 00AF add r7, sp, #0 12372 .LCFI287: 12373 .cfi_def_cfa_register 7 12374 0006 F860 str r0, [r7, #12] 12375 0008 B960 str r1, [r7, #8] 12376 000a 7A60 str r2, [r7, #4] 5712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 12377 .loc 1 5712 12 12378 000c FB68 ldr r3, [r7, #12] 12379 000e DB6A ldr r3, [r3, #44] 12380 0010 BB61 str r3, [r7, #24] 5713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t treatdmanack = 0U; 12381 .loc 1 5713 12 12382 0012 0023 movs r3, #0 12383 0014 FB61 str r3, [r7, #28] 5714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; 5715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */ 5717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c); 12384 .loc 1 5717 3 12385 0016 FB68 ldr r3, [r7, #12] 12386 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 12387 001c 012B cmp r3, #1 12388 001e 01D1 bne .L591 12389 .loc 1 5717 3 is_stmt 0 discriminator 1 12390 0020 0223 movs r3, #2 12391 0022 CAE0 b .L592 12392 .L591: 12393 .loc 1 5717 3 discriminator 2 12394 0024 FB68 ldr r3, [r7, #12] 12395 0026 0122 movs r2, #1 12396 0028 83F84020 strb r2, [r3, #64] 5718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */ 5720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ 12397 .loc 1 5720 8 is_stmt 1 discriminator 2 12398 002c BB68 ldr r3, [r7, #8] 12399 002e 5B09 lsrs r3, r3, #5 12400 0030 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 320 12401 .loc 1 5720 6 discriminator 2 12402 0034 002B cmp r3, #0 12403 0036 0AD0 beq .L593 5721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 12404 .loc 1 5721 8 discriminator 1 12405 0038 7B68 ldr r3, [r7, #4] 12406 003a 5B09 lsrs r3, r3, #5 12407 003c 03F00103 and r3, r3, #1 5720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) 12408 .loc 1 5720 58 discriminator 1 12409 0040 002B cmp r3, #0 12410 0042 04D0 beq .L593 5722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */ 5724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, ITFlags); 12411 .loc 1 5724 5 12412 0044 B968 ldr r1, [r7, #8] 12413 0046 F868 ldr r0, [r7, #12] 12414 0048 FFF7FEFF bl I2C_ITSlaveCplt 12415 004c B0E0 b .L594 12416 .L593: 5725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ 12417 .loc 1 5726 13 12418 004e BB68 ldr r3, [r7, #8] 12419 0050 1B09 lsrs r3, r3, #4 12420 0052 03F00103 and r3, r3, #1 12421 .loc 1 5726 11 12422 0056 002B cmp r3, #0 12423 0058 00F09A80 beq .L595 5727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 12424 .loc 1 5727 13 discriminator 1 12425 005c 7B68 ldr r3, [r7, #4] 12426 005e 1B09 lsrs r3, r3, #4 12427 0060 03F00103 and r3, r3, #1 5726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) 12428 .loc 1 5726 60 discriminator 1 12429 0064 002B cmp r3, #0 12430 0066 00F09380 beq .L595 5728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 5730: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 */ 5731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0 */ 5732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */ 5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || 12431 .loc 1 5733 10 12432 006a 7B68 ldr r3, [r7, #4] 12433 006c 9B0B lsrs r3, r3, #14 12434 006e 03F00103 and r3, r3, #1 12435 .loc 1 5733 8 12436 0072 002B cmp r3, #0 12437 0074 05D1 bne .L596 5734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 12438 .loc 1 5734 10 discriminator 1 12439 0076 7B68 ldr r3, [r7, #4] 12440 0078 DB0B lsrs r3, r3, #15 12441 007a 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 321 5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 12442 .loc 1 5733 68 discriminator 1 12443 007e 002B cmp r3, #0 12444 0080 7FD0 beq .L597 12445 .L596: 5735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmarx, for MISRA compliance */ 5737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 12446 .loc 1 5737 15 12447 0082 FB68 ldr r3, [r7, #12] 12448 0084 DB6B ldr r3, [r3, #60] 12449 .loc 1 5737 10 12450 0086 002B cmp r3, #0 12451 0088 0DD0 beq .L598 5738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) 12452 .loc 1 5739 13 12453 008a 7B68 ldr r3, [r7, #4] 12454 008c DB0B lsrs r3, r3, #15 12455 008e 03F00103 and r3, r3, #1 12456 .loc 1 5739 12 12457 0092 002B cmp r3, #0 12458 0094 07D0 beq .L598 5740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) 12459 .loc 1 5741 15 12460 0096 FB68 ldr r3, [r7, #12] 12461 0098 DB6B ldr r3, [r3, #60] 12462 009a 1B68 ldr r3, [r3] 12463 009c 5B68 ldr r3, [r3, #4] 12464 .loc 1 5741 14 12465 009e 002B cmp r3, #0 12466 00a0 01D1 bne .L598 5742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U; 12467 .loc 1 5743 26 12468 00a2 0123 movs r3, #1 12469 00a4 FB61 str r3, [r7, #28] 12470 .L598: 5744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmatx, for MISRA compliance */ 5749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 12471 .loc 1 5749 15 12472 00a6 FB68 ldr r3, [r7, #12] 12473 00a8 9B6B ldr r3, [r3, #56] 12474 .loc 1 5749 10 12475 00aa 002B cmp r3, #0 12476 00ac 0DD0 beq .L599 5750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) 12477 .loc 1 5751 13 12478 00ae 7B68 ldr r3, [r7, #4] 12479 00b0 9B0B lsrs r3, r3, #14 12480 00b2 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 322 12481 .loc 1 5751 12 12482 00b6 002B cmp r3, #0 12483 00b8 07D0 beq .L599 5752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) 12484 .loc 1 5753 15 12485 00ba FB68 ldr r3, [r7, #12] 12486 00bc 9B6B ldr r3, [r3, #56] 12487 00be 1B68 ldr r3, [r3] 12488 00c0 5B68 ldr r3, [r3, #4] 12489 .loc 1 5753 14 12490 00c2 002B cmp r3, #0 12491 00c4 01D1 bne .L599 5754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U; 12492 .loc 1 5755 26 12493 00c6 0123 movs r3, #1 12494 00c8 FB61 str r3, [r7, #28] 12495 .L599: 5756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (treatdmanack == 1U) 12496 .loc 1 5760 10 12497 00ca FB69 ldr r3, [r7, #28] 12498 00cc 012B cmp r3, #1 12499 00ce 28D1 bne .L600 5761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) 12500 .loc 1 5762 18 12501 00d0 FB68 ldr r3, [r7, #12] 12502 00d2 93F84130 ldrb r3, [r3, #65] 12503 00d6 DBB2 uxtb r3, r3 12504 .loc 1 5762 12 12505 00d8 282B cmp r3, #40 12506 00da 08D1 bne .L601 12507 .loc 1 5762 51 discriminator 1 12508 00dc BB69 ldr r3, [r7, #24] 12509 00de B3F1007F cmp r3, #33554432 12510 00e2 04D1 bne .L601 5763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for 5764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ 5765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 5767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, ITFlags); 12511 .loc 1 5767 11 12512 00e4 B968 ldr r1, [r7, #8] 12513 00e6 F868 ldr r0, [r7, #12] 12514 00e8 FFF7FEFF bl I2C_ITListenCplt 12515 00ec 48E0 b .L604 12516 .L601: 5768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAM 12517 .loc 1 5769 23 12518 00ee FB68 ldr r3, [r7, #12] 12519 00f0 93F84130 ldrb r3, [r3, #65] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 323 12520 00f4 DBB2 uxtb r3, r3 12521 .loc 1 5769 17 12522 00f6 292B cmp r3, #41 12523 00f8 0ED1 bne .L603 12524 .loc 1 5769 64 discriminator 1 12525 00fa BB69 ldr r3, [r7, #24] 12526 00fc 13F5803F cmn r3, #65536 12527 0100 0AD0 beq .L603 5770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12528 .loc 1 5772 11 12529 0102 FB68 ldr r3, [r7, #12] 12530 0104 1B68 ldr r3, [r3] 12531 0106 1022 movs r2, #16 12532 0108 DA61 str r2, [r3, #28] 5773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 5775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 12533 .loc 1 5775 11 12534 010a F868 ldr r0, [r7, #12] 12535 010c FFF7FEFF bl I2C_Flush_TXDR 5776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 5778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 5779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 12536 .loc 1 5779 11 12537 0110 F868 ldr r0, [r7, #12] 12538 0112 FFF7FEFF bl I2C_ITSlaveSeqCplt 12539 0116 33E0 b .L604 12540 .L603: 5780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12541 .loc 1 5784 11 12542 0118 FB68 ldr r3, [r7, #12] 12543 011a 1B68 ldr r3, [r3] 12544 011c 1022 movs r2, #16 12545 011e DA61 str r2, [r3, #28] 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12546 .loc 1 5760 10 12547 0120 34E0 b .L611 12548 .L600: 5785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5789: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*/ 5790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 5791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12549 .loc 1 5791 9 12550 0122 FB68 ldr r3, [r7, #12] 12551 0124 1B68 ldr r3, [r3] 12552 0126 1022 movs r2, #16 12553 0128 DA61 str r2, [r3, #28] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 324 5792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 5794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 12554 .loc 1 5794 25 12555 012a FB68 ldr r3, [r7, #12] 12556 012c 5B6C ldr r3, [r3, #68] 12557 012e 43F00402 orr r2, r3, #4 12558 0132 FB68 ldr r3, [r7, #12] 12559 0134 5A64 str r2, [r3, #68] 5795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ 5797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpstate = hi2c->State; 12560 .loc 1 5797 18 12561 0136 FB68 ldr r3, [r7, #12] 12562 0138 93F84130 ldrb r3, [r3, #65] 12563 013c FB75 strb r3, [r7, #23] 5798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) 12564 .loc 1 5799 12 12565 013e BB69 ldr r3, [r7, #24] 12566 0140 002B cmp r3, #0 12567 0142 03D0 beq .L605 12568 .loc 1 5799 45 discriminator 1 12569 0144 BB69 ldr r3, [r7, #24] 12570 0146 B3F1807F cmp r3, #16777216 12571 014a 1FD1 bne .L611 12572 .L605: 5800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) 12573 .loc 1 5801 14 12574 014c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 12575 014e 212B cmp r3, #33 12576 0150 02D0 beq .L606 12577 .loc 1 5801 51 discriminator 1 12578 0152 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 12579 0154 292B cmp r3, #41 12580 0156 03D1 bne .L607 12581 .L606: 5802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 12582 .loc 1 5803 33 12583 0158 FB68 ldr r3, [r7, #12] 12584 015a 2122 movs r2, #33 12585 015c 1A63 str r2, [r3, #48] 12586 015e 08E0 b .L608 12587 .L607: 5804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN 12588 .loc 1 5805 19 12589 0160 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 12590 0162 222B cmp r3, #34 12591 0164 02D0 beq .L609 12592 .loc 1 5805 56 discriminator 1 12593 0166 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 12594 0168 2A2B cmp r3, #42 12595 016a 02D1 bne .L608 12596 .L609: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 325 5806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 12597 .loc 1 5807 33 12598 016c FB68 ldr r3, [r7, #12] 12599 016e 2222 movs r2, #34 12600 0170 1A63 str r2, [r3, #48] 12601 .L608: 5808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 5812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 5815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 12602 .loc 1 5815 11 12603 0172 FB68 ldr r3, [r7, #12] 12604 0174 5B6C ldr r3, [r3, #68] 12605 0176 1946 mov r1, r3 12606 0178 F868 ldr r0, [r7, #12] 12607 017a FFF7FEFF bl I2C_ITError 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12608 .loc 1 5760 10 12609 017e 05E0 b .L611 12610 .L604: 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12611 .loc 1 5760 10 is_stmt 0 discriminator 1 12612 0180 04E0 b .L611 12613 .L597: 5816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Only Clear NACK Flag, no DMA treatment is pending */ 5822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 12614 .loc 1 5822 7 is_stmt 1 12615 0182 FB68 ldr r3, [r7, #12] 12616 0184 1B68 ldr r3, [r3] 12617 0186 1022 movs r2, #16 12618 0188 DA61 str r2, [r3, #28] 5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 12619 .loc 1 5733 8 12620 018a 11E0 b .L594 12621 .L611: 5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12622 .loc 1 5760 10 12623 018c 00BF nop 5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) 12624 .loc 1 5733 8 12625 018e 0FE0 b .L594 12626 .L595: 5823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ 12627 .loc 1 5825 13 12628 0190 BB68 ldr r3, [r7, #8] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 326 12629 0192 DB08 lsrs r3, r3, #3 12630 0194 03F00103 and r3, r3, #1 12631 .loc 1 5825 11 12632 0198 002B cmp r3, #0 12633 019a 09D0 beq .L594 5826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 12634 .loc 1 5826 13 discriminator 1 12635 019c 7B68 ldr r3, [r7, #4] 12636 019e DB08 lsrs r3, r3, #3 12637 01a0 03F00103 and r3, r3, #1 5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) 12638 .loc 1 5825 62 discriminator 1 12639 01a4 002B cmp r3, #0 12640 01a6 03D0 beq .L594 5827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, ITFlags); 12641 .loc 1 5828 5 12642 01a8 B968 ldr r1, [r7, #8] 12643 01aa F868 ldr r0, [r7, #12] 12644 01ac FFF7FEFF bl I2C_ITAddrCplt 12645 .L594: 5829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 5833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 5836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 12646 .loc 1 5836 3 12647 01b0 FB68 ldr r3, [r7, #12] 12648 01b2 0022 movs r2, #0 12649 01b4 83F84020 strb r2, [r3, #64] 5837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 12650 .loc 1 5838 10 12651 01b8 0023 movs r3, #0 12652 .L592: 5839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12653 .loc 1 5839 1 12654 01ba 1846 mov r0, r3 12655 01bc 2037 adds r7, r7, #32 12656 .LCFI288: 12657 .cfi_def_cfa_offset 8 12658 01be BD46 mov sp, r7 12659 .LCFI289: 12660 .cfi_def_cfa_register 13 12661 @ sp needed 12662 01c0 80BD pop {r7, pc} 12663 .cfi_endproc 12664 .LFE184: 12666 .section .text.I2C_RequestMemoryWrite,"ax",%progbits 12667 .align 1 12668 .syntax unified 12669 .thumb 12670 .thumb_func 12672 I2C_RequestMemoryWrite: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 327 12673 .LFB185: 5840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for write reques 5843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 5846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 5847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 5848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 5849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 5850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 5851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 5854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t 5855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 5856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12674 .loc 1 5856 1 12675 .cfi_startproc 12676 @ args = 8, pretend = 0, frame = 16 12677 @ frame_needed = 1, uses_anonymous_args = 0 12678 0000 80B5 push {r7, lr} 12679 .LCFI290: 12680 .cfi_def_cfa_offset 8 12681 .cfi_offset 7, -8 12682 .cfi_offset 14, -4 12683 0002 86B0 sub sp, sp, #24 12684 .LCFI291: 12685 .cfi_def_cfa_offset 32 12686 0004 02AF add r7, sp, #8 12687 .LCFI292: 12688 .cfi_def_cfa 7, 24 12689 0006 F860 str r0, [r7, #12] 12690 0008 0846 mov r0, r1 12691 000a 1146 mov r1, r2 12692 000c 1A46 mov r2, r3 12693 000e 0346 mov r3, r0 @ movhi 12694 0010 7B81 strh r3, [r7, #10] @ movhi 12695 0012 0B46 mov r3, r1 @ movhi 12696 0014 3B81 strh r3, [r7, #8] @ movhi 12697 0016 1346 mov r3, r2 @ movhi 12698 0018 FB80 strh r3, [r7, #6] @ movhi 5857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI 12699 .loc 1 5857 3 12700 001a FB88 ldrh r3, [r7, #6] @ movhi 12701 001c DAB2 uxtb r2, r3 12702 001e 7989 ldrh r1, [r7, #10] 12703 0020 204B ldr r3, .L619 12704 0022 0093 str r3, [sp] 12705 0024 4FF08073 mov r3, #16777216 12706 0028 F868 ldr r0, [r7, #12] 12707 002a FFF7FEFF bl I2C_TransferConfig 5858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 12708 .loc 1 5860 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 328 12709 002e FA69 ldr r2, [r7, #28] 12710 0030 B969 ldr r1, [r7, #24] 12711 0032 F868 ldr r0, [r7, #12] 12712 0034 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 12713 0038 0346 mov r3, r0 12714 .loc 1 5860 6 12715 003a 002B cmp r3, #0 12716 003c 01D0 beq .L613 5861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12717 .loc 1 5862 12 12718 003e 0123 movs r3, #1 12719 0040 2CE0 b .L614 12720 .L613: 5863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 5866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 12721 .loc 1 5866 6 12722 0042 FB88 ldrh r3, [r7, #6] 12723 0044 012B cmp r3, #1 12724 0046 05D1 bne .L615 5867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */ 5869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 12725 .loc 1 5869 28 12726 0048 3B89 ldrh r3, [r7, #8] @ movhi 12727 004a DAB2 uxtb r2, r3 12728 .loc 1 5869 9 12729 004c FB68 ldr r3, [r7, #12] 12730 004e 1B68 ldr r3, [r3] 12731 .loc 1 5869 26 12732 0050 9A62 str r2, [r3, #40] 12733 0052 15E0 b .L616 12734 .L615: 5870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 5872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 5873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */ 5875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 12735 .loc 1 5875 28 12736 0054 3B89 ldrh r3, [r7, #8] 12737 0056 1B0A lsrs r3, r3, #8 12738 0058 9BB2 uxth r3, r3 12739 005a DAB2 uxtb r2, r3 12740 .loc 1 5875 9 12741 005c FB68 ldr r3, [r7, #12] 12742 005e 1B68 ldr r3, [r3] 12743 .loc 1 5875 26 12744 0060 9A62 str r2, [r3, #40] 5876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 12745 .loc 1 5878 9 12746 0062 FA69 ldr r2, [r7, #28] 12747 0064 B969 ldr r1, [r7, #24] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 329 12748 0066 F868 ldr r0, [r7, #12] 12749 0068 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 12750 006c 0346 mov r3, r0 12751 .loc 1 5878 8 12752 006e 002B cmp r3, #0 12753 0070 01D0 beq .L617 5879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12754 .loc 1 5880 14 12755 0072 0123 movs r3, #1 12756 0074 12E0 b .L614 12757 .L617: 5881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */ 5884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 12758 .loc 1 5884 28 12759 0076 3B89 ldrh r3, [r7, #8] @ movhi 12760 0078 DAB2 uxtb r2, r3 12761 .loc 1 5884 9 12762 007a FB68 ldr r3, [r7, #12] 12763 007c 1B68 ldr r3, [r3] 12764 .loc 1 5884 26 12765 007e 9A62 str r2, [r3, #40] 12766 .L616: 5885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */ 5888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) 12767 .loc 1 5888 7 12768 0080 FB69 ldr r3, [r7, #28] 12769 0082 0093 str r3, [sp] 12770 0084 BB69 ldr r3, [r7, #24] 12771 0086 0022 movs r2, #0 12772 0088 8021 movs r1, #128 12773 008a F868 ldr r0, [r7, #12] 12774 008c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 12775 0090 0346 mov r3, r0 12776 .loc 1 5888 6 12777 0092 002B cmp r3, #0 12778 0094 01D0 beq .L618 5889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12779 .loc 1 5890 12 12780 0096 0123 movs r3, #1 12781 0098 00E0 b .L614 12782 .L618: 5891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 12783 .loc 1 5893 10 12784 009a 0023 movs r3, #0 12785 .L614: 5894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12786 .loc 1 5894 1 12787 009c 1846 mov r0, r3 12788 009e 1037 adds r7, r7, #16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 330 12789 .LCFI293: 12790 .cfi_def_cfa_offset 8 12791 00a0 BD46 mov sp, r7 12792 .LCFI294: 12793 .cfi_def_cfa_register 13 12794 @ sp needed 12795 00a2 80BD pop {r7, pc} 12796 .L620: 12797 .align 2 12798 .L619: 12799 00a4 00200080 .word -2147475456 12800 .cfi_endproc 12801 .LFE185: 12803 .section .text.I2C_RequestMemoryRead,"ax",%progbits 12804 .align 1 12805 .syntax unified 12806 .thumb 12807 .thumb_func 12809 I2C_RequestMemoryRead: 12810 .LFB186: 5895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for read request 5898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 5899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 5900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value 5901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface 5902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address 5903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address 5904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 5905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 5906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 5907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 5909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T 5910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 5911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12811 .loc 1 5911 1 12812 .cfi_startproc 12813 @ args = 8, pretend = 0, frame = 16 12814 @ frame_needed = 1, uses_anonymous_args = 0 12815 0000 80B5 push {r7, lr} 12816 .LCFI295: 12817 .cfi_def_cfa_offset 8 12818 .cfi_offset 7, -8 12819 .cfi_offset 14, -4 12820 0002 86B0 sub sp, sp, #24 12821 .LCFI296: 12822 .cfi_def_cfa_offset 32 12823 0004 02AF add r7, sp, #8 12824 .LCFI297: 12825 .cfi_def_cfa 7, 24 12826 0006 F860 str r0, [r7, #12] 12827 0008 0846 mov r0, r1 12828 000a 1146 mov r1, r2 12829 000c 1A46 mov r2, r3 12830 000e 0346 mov r3, r0 @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 331 12831 0010 7B81 strh r3, [r7, #10] @ movhi 12832 0012 0B46 mov r3, r1 @ movhi 12833 0014 3B81 strh r3, [r7, #8] @ movhi 12834 0016 1346 mov r3, r2 @ movhi 12835 0018 FB80 strh r3, [r7, #6] @ movhi 5912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR 12836 .loc 1 5912 3 12837 001a FB88 ldrh r3, [r7, #6] @ movhi 12838 001c DAB2 uxtb r2, r3 12839 001e 7989 ldrh r1, [r7, #10] 12840 0020 204B ldr r3, .L628 12841 0022 0093 str r3, [sp] 12842 0024 0023 movs r3, #0 12843 0026 F868 ldr r0, [r7, #12] 12844 0028 FFF7FEFF bl I2C_TransferConfig 5913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 12845 .loc 1 5915 7 12846 002c FA69 ldr r2, [r7, #28] 12847 002e B969 ldr r1, [r7, #24] 12848 0030 F868 ldr r0, [r7, #12] 12849 0032 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 12850 0036 0346 mov r3, r0 12851 .loc 1 5915 6 12852 0038 002B cmp r3, #0 12853 003a 01D0 beq .L622 5916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12854 .loc 1 5917 12 12855 003c 0123 movs r3, #1 12856 003e 2CE0 b .L623 12857 .L622: 5918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */ 5921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) 12858 .loc 1 5921 6 12859 0040 FB88 ldrh r3, [r7, #6] 12860 0042 012B cmp r3, #1 12861 0044 05D1 bne .L624 5922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */ 5924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 12862 .loc 1 5924 28 12863 0046 3B89 ldrh r3, [r7, #8] @ movhi 12864 0048 DAB2 uxtb r2, r3 12865 .loc 1 5924 9 12866 004a FB68 ldr r3, [r7, #12] 12867 004c 1B68 ldr r3, [r3] 12868 .loc 1 5924 26 12869 004e 9A62 str r2, [r3, #40] 12870 0050 15E0 b .L625 12871 .L624: 5925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */ 5927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 332 5928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */ 5930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); 12872 .loc 1 5930 28 12873 0052 3B89 ldrh r3, [r7, #8] 12874 0054 1B0A lsrs r3, r3, #8 12875 0056 9BB2 uxth r3, r3 12876 0058 DAB2 uxtb r2, r3 12877 .loc 1 5930 9 12878 005a FB68 ldr r3, [r7, #12] 12879 005c 1B68 ldr r3, [r3] 12880 .loc 1 5930 26 12881 005e 9A62 str r2, [r3, #40] 5931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */ 5933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) 12882 .loc 1 5933 9 12883 0060 FA69 ldr r2, [r7, #28] 12884 0062 B969 ldr r1, [r7, #24] 12885 0064 F868 ldr r0, [r7, #12] 12886 0066 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout 12887 006a 0346 mov r3, r0 12888 .loc 1 5933 8 12889 006c 002B cmp r3, #0 12890 006e 01D0 beq .L626 5934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12891 .loc 1 5935 14 12892 0070 0123 movs r3, #1 12893 0072 12E0 b .L623 12894 .L626: 5936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */ 5939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); 12895 .loc 1 5939 28 12896 0074 3B89 ldrh r3, [r7, #8] @ movhi 12897 0076 DAB2 uxtb r2, r3 12898 .loc 1 5939 9 12899 0078 FB68 ldr r3, [r7, #12] 12900 007a 1B68 ldr r3, [r3] 12901 .loc 1 5939 26 12902 007c 9A62 str r2, [r3, #40] 12903 .L625: 5940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TC flag is set */ 5943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) 12904 .loc 1 5943 7 12905 007e FB69 ldr r3, [r7, #28] 12906 0080 0093 str r3, [sp] 12907 0082 BB69 ldr r3, [r7, #24] 12908 0084 0022 movs r2, #0 12909 0086 4021 movs r1, #64 12910 0088 F868 ldr r0, [r7, #12] 12911 008a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout 12912 008e 0346 mov r3, r0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 333 12913 .loc 1 5943 6 12914 0090 002B cmp r3, #0 12915 0092 01D0 beq .L627 5944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 12916 .loc 1 5945 12 12917 0094 0123 movs r3, #1 12918 0096 00E0 b .L623 12919 .L627: 5946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 5947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 12920 .loc 1 5948 10 12921 0098 0023 movs r3, #0 12922 .L623: 5949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 12923 .loc 1 5949 1 12924 009a 1846 mov r0, r3 12925 009c 1037 adds r7, r7, #16 12926 .LCFI298: 12927 .cfi_def_cfa_offset 8 12928 009e BD46 mov sp, r7 12929 .LCFI299: 12930 .cfi_def_cfa_register 13 12931 @ sp needed 12932 00a0 80BD pop {r7, pc} 12933 .L629: 12934 00a2 00BF .align 2 12935 .L628: 12936 00a4 00200080 .word -2147475456 12937 .cfi_endproc 12938 .LFE186: 12940 .section .text.I2C_ITAddrCplt,"ax",%progbits 12941 .align 1 12942 .syntax unified 12943 .thumb 12944 .thumb_func 12946 I2C_ITAddrCplt: 12947 .LFB187: 5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 5952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Address complete process callback. 5953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 5954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 5955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 5956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 5957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 5958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 12948 .loc 1 5958 1 12949 .cfi_startproc 12950 @ args = 0, pretend = 0, frame = 16 12951 @ frame_needed = 1, uses_anonymous_args = 0 12952 0000 80B5 push {r7, lr} 12953 .LCFI300: 12954 .cfi_def_cfa_offset 8 12955 .cfi_offset 7, -8 12956 .cfi_offset 14, -4 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 334 12957 0002 84B0 sub sp, sp, #16 12958 .LCFI301: 12959 .cfi_def_cfa_offset 24 12960 0004 00AF add r7, sp, #0 12961 .LCFI302: 12962 .cfi_def_cfa_register 7 12963 0006 7860 str r0, [r7, #4] 12964 0008 3960 str r1, [r7] 5959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint8_t transferdirection; 5960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t slaveaddrcode; 5961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd1code; 5962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd2code; 5963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ 5965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(ITFlags); 5966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of Listen state, need to inform upper layer of address match code event */ 5968: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) 12965 .loc 1 5968 22 12966 000a 7B68 ldr r3, [r7, #4] 12967 000c 93F84130 ldrb r3, [r3, #65] 12968 0010 DBB2 uxtb r3, r3 12969 .loc 1 5968 30 12970 0012 03F02803 and r3, r3, #40 12971 .loc 1 5968 6 12972 0016 282B cmp r3, #40 12973 0018 6AD1 bne .L631 5969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transferdirection = I2C_GET_DIR(hi2c); 12974 .loc 1 5970 25 12975 001a 7B68 ldr r3, [r7, #4] 12976 001c 1B68 ldr r3, [r3] 12977 001e 9B69 ldr r3, [r3, #24] 12978 0020 1B0C lsrs r3, r3, #16 12979 0022 DBB2 uxtb r3, r3 12980 .loc 1 5970 23 12981 0024 03F00103 and r3, r3, #1 12982 0028 FB73 strb r3, [r7, #15] 5971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); 12983 .loc 1 5971 25 12984 002a 7B68 ldr r3, [r7, #4] 12985 002c 1B68 ldr r3, [r3] 12986 002e 9B69 ldr r3, [r3, #24] 12987 0030 1B0C lsrs r3, r3, #16 12988 0032 9BB2 uxth r3, r3 12989 .loc 1 5971 23 12990 0034 03F0FE03 and r3, r3, #254 12991 0038 BB81 strh r3, [r7, #12] @ movhi 5972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); 12992 .loc 1 5972 25 12993 003a 7B68 ldr r3, [r7, #4] 12994 003c 1B68 ldr r3, [r3] 12995 003e 9B68 ldr r3, [r3, #8] 12996 0040 9BB2 uxth r3, r3 12997 .loc 1 5972 23 12998 0042 C3F30903 ubfx r3, r3, #0, #10 12999 0046 7B81 strh r3, [r7, #10] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 335 5973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); 13000 .loc 1 5973 25 13001 0048 7B68 ldr r3, [r7, #4] 13002 004a 1B68 ldr r3, [r3] 13003 004c DB68 ldr r3, [r3, #12] 13004 004e 9BB2 uxth r3, r3 13005 .loc 1 5973 23 13006 0050 03F0FE03 and r3, r3, #254 13007 0054 3B81 strh r3, [r7, #8] @ movhi 5974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bits addressing mode is selected */ 5976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) 13008 .loc 1 5976 19 13009 0056 7B68 ldr r3, [r7, #4] 13010 0058 DB68 ldr r3, [r3, #12] 13011 .loc 1 5976 8 13012 005a 022B cmp r3, #2 13013 005c 38D1 bne .L632 5977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) 13014 .loc 1 5978 44 13015 005e 7B89 ldrh r3, [r7, #10] 13016 0060 DB09 lsrs r3, r3, #7 13017 0062 9AB2 uxth r2, r3 13018 0064 BB89 ldrh r3, [r7, #12] @ movhi 13019 0066 5340 eors r3, r3, r2 13020 0068 9BB2 uxth r3, r3 13021 006a 03F00603 and r3, r3, #6 13022 .loc 1 5978 10 13023 006e 002B cmp r3, #0 13024 0070 1CD1 bne .L633 5979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = ownadd1code; 13025 .loc 1 5980 23 13026 0072 7B89 ldrh r3, [r7, #10] @ movhi 13027 0074 BB81 strh r3, [r7, #12] @ movhi 5981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount++; 13028 .loc 1 5981 13 13029 0076 7B68 ldr r3, [r7, #4] 13030 0078 9B6C ldr r3, [r3, #72] 13031 .loc 1 5981 29 13032 007a 5A1C adds r2, r3, #1 13033 007c 7B68 ldr r3, [r7, #4] 13034 007e 9A64 str r2, [r3, #72] 5982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) 13035 .loc 1 5982 17 13036 0080 7B68 ldr r3, [r7, #4] 13037 0082 9B6C ldr r3, [r3, #72] 13038 .loc 1 5982 12 13039 0084 022B cmp r3, #2 13040 0086 3BD1 bne .L635 5983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 5984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Address Event counter */ 5985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount = 0U; 13041 .loc 1 5985 32 13042 0088 7B68 ldr r3, [r7, #4] 13043 008a 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 336 13044 008c 9A64 str r2, [r3, #72] 5986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 5988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 13045 .loc 1 5988 11 13046 008e 7B68 ldr r3, [r7, #4] 13047 0090 1B68 ldr r3, [r3] 13048 0092 0822 movs r2, #8 13049 0094 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 **** /* Process Unlocked */ 5991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13050 .loc 1 5991 11 13051 0096 7B68 ldr r3, [r7, #4] 13052 0098 0022 movs r2, #0 13053 009a 83F84020 strb r2, [r3, #64] 5992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 5993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 5994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 5995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 5996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 5997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 13054 .loc 1 5997 11 13055 009e BA89 ldrh r2, [r7, #12] 13056 00a0 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 13057 00a2 1946 mov r1, r3 13058 00a4 7868 ldr r0, [r7, #4] 13059 00a6 FFF7FEFF bl HAL_I2C_AddrCallback 5998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 5999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 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 **** slaveaddrcode = ownadd2code; 6004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */ 6006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 6007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 6012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 6014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 6016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else 7 bits addressing mode is selected */ 6020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */ 6023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); 6024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 337 6027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */ 6029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); 6031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); 6033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Else clear address flag only */ 6037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */ 6040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); 6041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13060 .loc 1 6045 1 13061 00aa 29E0 b .L635 13062 .L633: 6003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13063 .loc 1 6003 23 13064 00ac 3B89 ldrh r3, [r7, #8] @ movhi 13065 00ae BB81 strh r3, [r7, #12] @ movhi 6006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13066 .loc 1 6006 9 13067 00b0 4FF40041 mov r1, #32768 13068 00b4 7868 ldr r0, [r7, #4] 13069 00b6 FFF7FEFF bl I2C_Disable_IRQ 6009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13070 .loc 1 6009 9 13071 00ba 7B68 ldr r3, [r7, #4] 13072 00bc 0022 movs r2, #0 13073 00be 83F84020 strb r2, [r3, #64] 6015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13074 .loc 1 6015 9 13075 00c2 BA89 ldrh r2, [r7, #12] 13076 00c4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 13077 00c6 1946 mov r1, r3 13078 00c8 7868 ldr r0, [r7, #4] 13079 00ca FFF7FEFF bl HAL_I2C_AddrCallback 13080 .loc 1 6045 1 13081 00ce 17E0 b .L635 13082 .L632: 6023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13083 .loc 1 6023 7 13084 00d0 4FF40041 mov r1, #32768 13085 00d4 7868 ldr r0, [r7, #4] 13086 00d6 FFF7FEFF bl I2C_Disable_IRQ 6026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13087 .loc 1 6026 7 13088 00da 7B68 ldr r3, [r7, #4] 13089 00dc 0022 movs r2, #0 13090 00de 83F84020 strb r2, [r3, #64] 6032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 338 13091 .loc 1 6032 7 13092 00e2 BA89 ldrh r2, [r7, #12] 13093 00e4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 13094 00e6 1946 mov r1, r3 13095 00e8 7868 ldr r0, [r7, #4] 13096 00ea FFF7FEFF bl HAL_I2C_AddrCallback 13097 .loc 1 6045 1 13098 00ee 07E0 b .L635 13099 .L631: 6040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13100 .loc 1 6040 5 13101 00f0 7B68 ldr r3, [r7, #4] 13102 00f2 1B68 ldr r3, [r3] 13103 00f4 0822 movs r2, #8 13104 00f6 DA61 str r2, [r3, #28] 6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13105 .loc 1 6043 5 13106 00f8 7B68 ldr r3, [r7, #4] 13107 00fa 0022 movs r2, #0 13108 00fc 83F84020 strb r2, [r3, #64] 13109 .L635: 13110 .loc 1 6045 1 13111 0100 00BF nop 13112 0102 1037 adds r7, r7, #16 13113 .LCFI303: 13114 .cfi_def_cfa_offset 8 13115 0104 BD46 mov sp, r7 13116 .LCFI304: 13117 .cfi_def_cfa_register 13 13118 @ sp needed 13119 0106 80BD pop {r7, pc} 13120 .cfi_endproc 13121 .LFE187: 13123 .section .text.I2C_ITMasterSeqCplt,"ax",%progbits 13124 .align 1 13125 .syntax unified 13126 .thumb 13127 .thumb_func 13129 I2C_ITMasterSeqCplt: 13130 .LFB188: 6046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master sequential complete process. 6049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) 6053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13131 .loc 1 6053 1 13132 .cfi_startproc 13133 @ args = 0, pretend = 0, frame = 8 13134 @ frame_needed = 1, uses_anonymous_args = 0 13135 0000 80B5 push {r7, lr} 13136 .LCFI305: 13137 .cfi_def_cfa_offset 8 13138 .cfi_offset 7, -8 13139 .cfi_offset 14, -4 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 339 13140 0002 82B0 sub sp, sp, #8 13141 .LCFI306: 13142 .cfi_def_cfa_offset 16 13143 0004 00AF add r7, sp, #0 13144 .LCFI307: 13145 .cfi_def_cfa_register 7 13146 0006 7860 str r0, [r7, #4] 6054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */ 6055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 13147 .loc 1 6055 14 13148 0008 7B68 ldr r3, [r7, #4] 13149 000a 0022 movs r2, #0 13150 000c 83F84220 strb r2, [r3, #66] 6056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No Generate Stop, to permit restart mode */ 6058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ 6059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 13151 .loc 1 6059 11 13152 0010 7B68 ldr r3, [r7, #4] 13153 0012 93F84130 ldrb r3, [r3, #65] 13154 0016 DBB2 uxtb r3, r3 13155 .loc 1 6059 6 13156 0018 212B cmp r3, #33 13157 001a 15D1 bne .L637 6060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 13158 .loc 1 6061 25 13159 001c 7B68 ldr r3, [r7, #4] 13160 001e 2022 movs r2, #32 13161 0020 83F84120 strb r2, [r3, #65] 6062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 13162 .loc 1 6062 25 13163 0024 7B68 ldr r3, [r7, #4] 13164 0026 1122 movs r2, #17 13165 0028 1A63 str r2, [r3, #48] 6063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 13166 .loc 1 6063 25 13167 002a 7B68 ldr r3, [r7, #4] 13168 002c 0022 movs r2, #0 13169 002e 5A63 str r2, [r3, #52] 6064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 6066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 13170 .loc 1 6066 5 13171 0030 0121 movs r1, #1 13172 0032 7868 ldr r0, [r7, #4] 13173 0034 FFF7FEFF bl I2C_Disable_IRQ 6067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13174 .loc 1 6069 5 13175 0038 7B68 ldr r3, [r7, #4] 13176 003a 0022 movs r2, #0 13177 003c 83F84020 strb r2, [r3, #64] 6070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 340 6073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); 6074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); 13178 .loc 1 6075 5 13179 0040 7868 ldr r0, [r7, #4] 13180 0042 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback 6076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ 6079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 6084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 6086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 6087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); 6094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); 6096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13181 .loc 1 6098 1 13182 0046 14E0 b .L639 13183 .L637: 6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 13184 .loc 1 6081 25 13185 0048 7B68 ldr r3, [r7, #4] 13186 004a 2022 movs r2, #32 13187 004c 83F84120 strb r2, [r3, #65] 6082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 13188 .loc 1 6082 25 13189 0050 7B68 ldr r3, [r7, #4] 13190 0052 1222 movs r2, #18 13191 0054 1A63 str r2, [r3, #48] 6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13192 .loc 1 6083 25 13193 0056 7B68 ldr r3, [r7, #4] 13194 0058 0022 movs r2, #0 13195 005a 5A63 str r2, [r3, #52] 6086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13196 .loc 1 6086 5 13197 005c 0221 movs r1, #2 13198 005e 7868 ldr r0, [r7, #4] 13199 0060 FFF7FEFF bl I2C_Disable_IRQ 6089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13200 .loc 1 6089 5 13201 0064 7B68 ldr r3, [r7, #4] 13202 0066 0022 movs r2, #0 13203 0068 83F84020 strb r2, [r3, #64] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 341 6095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13204 .loc 1 6095 5 13205 006c 7868 ldr r0, [r7, #4] 13206 006e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback 13207 .L639: 13208 .loc 1 6098 1 13209 0072 00BF nop 13210 0074 0837 adds r7, r7, #8 13211 .LCFI308: 13212 .cfi_def_cfa_offset 8 13213 0076 BD46 mov sp, r7 13214 .LCFI309: 13215 .cfi_def_cfa_register 13 13216 @ sp needed 13217 0078 80BD pop {r7, pc} 13218 .cfi_endproc 13219 .LFE188: 13221 .section .text.I2C_ITSlaveSeqCplt,"ax",%progbits 13222 .align 1 13223 .syntax unified 13224 .thumb 13225 .thumb_func 13227 I2C_ITSlaveSeqCplt: 13228 .LFB189: 6099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave sequential complete process. 6102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) 6106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13229 .loc 1 6106 1 13230 .cfi_startproc 13231 @ args = 0, pretend = 0, frame = 16 13232 @ frame_needed = 1, uses_anonymous_args = 0 13233 0000 80B5 push {r7, lr} 13234 .LCFI310: 13235 .cfi_def_cfa_offset 8 13236 .cfi_offset 7, -8 13237 .cfi_offset 14, -4 13238 0002 84B0 sub sp, sp, #16 13239 .LCFI311: 13240 .cfi_def_cfa_offset 24 13241 0004 00AF add r7, sp, #0 13242 .LCFI312: 13243 .cfi_def_cfa_register 7 13244 0006 7860 str r0, [r7, #4] 6107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); 13245 .loc 1 6107 26 13246 0008 7B68 ldr r3, [r7, #4] 13247 000a 1B68 ldr r3, [r3] 13248 .loc 1 6107 12 13249 000c 1B68 ldr r3, [r3] 13250 000e FB60 str r3, [r7, #12] 6108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 342 6110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 13251 .loc 1 6110 14 13252 0010 7B68 ldr r3, [r7, #4] 13253 0012 0022 movs r2, #0 13254 0014 83F84220 strb r2, [r3, #66] 6111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ 6113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) 13255 .loc 1 6113 7 13256 0018 FB68 ldr r3, [r7, #12] 13257 001a 9B0B lsrs r3, r3, #14 13258 001c 03F00103 and r3, r3, #1 13259 .loc 1 6113 6 13260 0020 002B cmp r3, #0 13261 0022 08D0 beq .L641 6114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 13262 .loc 1 6116 9 13263 0024 7B68 ldr r3, [r7, #4] 13264 0026 1B68 ldr r3, [r3] 13265 .loc 1 6116 25 13266 0028 1A68 ldr r2, [r3] 13267 .loc 1 6116 9 13268 002a 7B68 ldr r3, [r7, #4] 13269 002c 1B68 ldr r3, [r3] 13270 .loc 1 6116 25 13271 002e 22F48042 bic r2, r2, #16384 13272 0032 1A60 str r2, [r3] 13273 0034 0DE0 b .L642 13274 .L641: 6117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) 13275 .loc 1 6118 12 13276 0036 FB68 ldr r3, [r7, #12] 13277 0038 DB0B lsrs r3, r3, #15 13278 003a 03F00103 and r3, r3, #1 13279 .loc 1 6118 11 13280 003e 002B cmp r3, #0 13281 0040 07D0 beq .L642 6119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 13282 .loc 1 6121 9 13283 0042 7B68 ldr r3, [r7, #4] 13284 0044 1B68 ldr r3, [r3] 13285 .loc 1 6121 25 13286 0046 1A68 ldr r2, [r3] 13287 .loc 1 6121 9 13288 0048 7B68 ldr r3, [r7, #4] 13289 004a 1B68 ldr r3, [r3] 13290 .loc 1 6121 25 13291 004c 22F40042 bic r2, r2, #32768 13292 0050 1A60 str r2, [r3] 13293 .L642: 6122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 343 6124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) 13294 .loc 1 6128 11 13295 0052 7B68 ldr r3, [r7, #4] 13296 0054 93F84130 ldrb r3, [r3, #65] 13297 0058 DBB2 uxtb r3, r3 13298 .loc 1 6128 6 13299 005a 292B cmp r3, #41 13300 005c 12D1 bne .L643 6129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ 6131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 13301 .loc 1 6131 25 13302 005e 7B68 ldr r3, [r7, #4] 13303 0060 2822 movs r2, #40 13304 0062 83F84120 strb r2, [r3, #65] 6132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 13305 .loc 1 6132 25 13306 0066 7B68 ldr r3, [r7, #4] 13307 0068 2122 movs r2, #33 13308 006a 1A63 str r2, [r3, #48] 6133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 6135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 13309 .loc 1 6135 5 13310 006c 0121 movs r1, #1 13311 006e 7868 ldr r0, [r7, #4] 13312 0070 FFF7FEFF bl I2C_Disable_IRQ 6136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 13313 .loc 1 6138 5 13314 0074 7B68 ldr r3, [r7, #4] 13315 0076 0022 movs r2, #0 13316 0078 83F84020 strb r2, [r3, #64] 6139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); 6143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); 13317 .loc 1 6144 5 13318 007c 7868 ldr r0, [r7, #4] 13319 007e FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback 6145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) 6149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ 6151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 6152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 6153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 344 6155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 6156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); 6163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); 6165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 6170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13320 .loc 1 6171 1 13321 0082 17E0 b .L645 13322 .L643: 6148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13323 .loc 1 6148 16 13324 0084 7B68 ldr r3, [r7, #4] 13325 0086 93F84130 ldrb r3, [r3, #65] 13326 008a DBB2 uxtb r3, r3 6148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13327 .loc 1 6148 11 13328 008c 2A2B cmp r3, #42 13329 008e 11D1 bne .L645 6151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 13330 .loc 1 6151 25 13331 0090 7B68 ldr r3, [r7, #4] 13332 0092 2822 movs r2, #40 13333 0094 83F84120 strb r2, [r3, #65] 6152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13334 .loc 1 6152 25 13335 0098 7B68 ldr r3, [r7, #4] 13336 009a 2222 movs r2, #34 13337 009c 1A63 str r2, [r3, #48] 6155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13338 .loc 1 6155 5 13339 009e 0221 movs r1, #2 13340 00a0 7868 ldr r0, [r7, #4] 13341 00a2 FFF7FEFF bl I2C_Disable_IRQ 6158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13342 .loc 1 6158 5 13343 00a6 7B68 ldr r3, [r7, #4] 13344 00a8 0022 movs r2, #0 13345 00aa 83F84020 strb r2, [r3, #64] 6164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13346 .loc 1 6164 5 13347 00ae 7868 ldr r0, [r7, #4] 13348 00b0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback 13349 .L645: 13350 .loc 1 6171 1 13351 00b4 00BF nop 13352 00b6 1037 adds r7, r7, #16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 345 13353 .LCFI313: 13354 .cfi_def_cfa_offset 8 13355 00b8 BD46 mov sp, r7 13356 .LCFI314: 13357 .cfi_def_cfa_register 13 13358 @ sp needed 13359 00ba 80BD pop {r7, pc} 13360 .cfi_endproc 13361 .LFE189: 13363 .section .text.I2C_ITMasterCplt,"ax",%progbits 13364 .align 1 13365 .syntax unified 13366 .thumb 13367 .thumb_func 13369 I2C_ITMasterCplt: 13370 .LFB190: 6172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master complete process. 6175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 6177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 6180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13371 .loc 1 6180 1 13372 .cfi_startproc 13373 @ args = 0, pretend = 0, frame = 24 13374 @ frame_needed = 1, uses_anonymous_args = 0 13375 0000 80B5 push {r7, lr} 13376 .LCFI315: 13377 .cfi_def_cfa_offset 8 13378 .cfi_offset 7, -8 13379 .cfi_offset 14, -4 13380 0002 86B0 sub sp, sp, #24 13381 .LCFI316: 13382 .cfi_def_cfa_offset 32 13383 0004 00AF add r7, sp, #0 13384 .LCFI317: 13385 .cfi_def_cfa_register 7 13386 0006 7860 str r0, [r7, #4] 13387 0008 3960 str r1, [r7] 6181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror; 6182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 13388 .loc 1 6182 12 13389 000a 3B68 ldr r3, [r7] 13390 000c 7B61 str r3, [r7, #20] 6183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t tmpreg; 6184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 13391 .loc 1 6186 3 13392 000e 7B68 ldr r3, [r7, #4] 13393 0010 1B68 ldr r3, [r3] 13394 0012 2022 movs r2, #32 13395 0014 DA61 str r2, [r3, #28] 6187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 346 6188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 6189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 13396 .loc 1 6189 11 13397 0016 7B68 ldr r3, [r7, #4] 13398 0018 93F84130 ldrb r3, [r3, #65] 13399 001c DBB2 uxtb r3, r3 13400 .loc 1 6189 6 13401 001e 212B cmp r3, #33 13402 0020 07D1 bne .L647 6190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); 13403 .loc 1 6191 5 13404 0022 0121 movs r1, #1 13405 0024 7868 ldr r0, [r7, #4] 13406 0026 FFF7FEFF bl I2C_Disable_IRQ 6192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; 13407 .loc 1 6192 25 13408 002a 7B68 ldr r3, [r7, #4] 13409 002c 1122 movs r2, #17 13410 002e 1A63 str r2, [r3, #48] 13411 0030 0CE0 b .L648 13412 .L647: 6193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 13413 .loc 1 6194 16 13414 0032 7B68 ldr r3, [r7, #4] 13415 0034 93F84130 ldrb r3, [r3, #65] 13416 0038 DBB2 uxtb r3, r3 13417 .loc 1 6194 11 13418 003a 222B cmp r3, #34 13419 003c 06D1 bne .L648 6195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); 13420 .loc 1 6196 5 13421 003e 0221 movs r1, #2 13422 0040 7868 ldr r0, [r7, #4] 13423 0042 FFF7FEFF bl I2C_Disable_IRQ 6197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; 13424 .loc 1 6197 25 13425 0046 7B68 ldr r3, [r7, #4] 13426 0048 1222 movs r2, #18 13427 004a 1A63 str r2, [r3, #48] 13428 .L648: 6198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 6205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 13429 .loc 1 6205 3 13430 004c 7B68 ldr r3, [r7, #4] 13431 004e 1B68 ldr r3, [r3] 13432 0050 5968 ldr r1, [r3, #4] 13433 0052 7B68 ldr r3, [r7, #4] 13434 0054 1A68 ldr r2, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 347 13435 0056 4D4B ldr r3, .L658 13436 0058 0B40 ands r3, r3, r1 13437 005a 5360 str r3, [r2, #4] 6206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 13438 .loc 1 6208 23 13439 005c 7B68 ldr r3, [r7, #4] 13440 005e 0022 movs r2, #0 13441 0060 5A63 str r2, [r3, #52] 6209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 13442 .loc 1 6209 23 13443 0062 7B68 ldr r3, [r7, #4] 13444 0064 4A4A ldr r2, .L658+4 13445 0066 DA62 str r2, [r3, #44] 6210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) 13446 .loc 1 6211 7 13447 0068 7B69 ldr r3, [r7, #20] 13448 006a 1B09 lsrs r3, r3, #4 13449 006c 03F00103 and r3, r3, #1 13450 .loc 1 6211 6 13451 0070 002B cmp r3, #0 13452 0072 09D0 beq .L649 6212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 13453 .loc 1 6214 5 13454 0074 7B68 ldr r3, [r7, #4] 13455 0076 1B68 ldr r3, [r3] 13456 0078 1022 movs r2, #16 13457 007a DA61 str r2, [r3, #28] 6215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set acknowledge error code */ 6217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 13458 .loc 1 6217 21 13459 007c 7B68 ldr r3, [r7, #4] 13460 007e 5B6C ldr r3, [r3, #68] 13461 0080 43F00402 orr r2, r3, #4 13462 0084 7B68 ldr r3, [r7, #4] 13463 0086 5A64 str r2, [r3, #68] 13464 .L649: 6218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Fetch Last receive data if any */ 6221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) 13465 .loc 1 6221 12 13466 0088 7B68 ldr r3, [r7, #4] 13467 008a 93F84130 ldrb r3, [r3, #65] 13468 008e DBB2 uxtb r3, r3 13469 .loc 1 6221 6 13470 0090 602B cmp r3, #96 13471 0092 0BD1 bne .L650 13472 .loc 1 6221 48 discriminator 1 13473 0094 7B69 ldr r3, [r7, #20] 13474 0096 9B08 lsrs r3, r3, #2 13475 0098 03F00103 and r3, r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 348 13476 .loc 1 6221 44 discriminator 1 13477 009c 002B cmp r3, #0 13478 009e 05D0 beq .L650 6222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpreg = (uint8_t)hi2c->Instance->RXDR; 13479 .loc 1 6224 27 13480 00a0 7B68 ldr r3, [r7, #4] 13481 00a2 1B68 ldr r3, [r3] 13482 .loc 1 6224 37 13483 00a4 5B6A ldr r3, [r3, #36] 13484 .loc 1 6224 14 13485 00a6 DBB2 uxtb r3, r3 13486 .loc 1 6224 12 13487 00a8 FB60 str r3, [r7, #12] 6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(tmpreg); 13488 .loc 1 6225 5 13489 00aa FB68 ldr r3, [r7, #12] 13490 .L650: 6226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 13491 .loc 1 6229 3 13492 00ac 7868 ldr r0, [r7, #4] 13493 00ae FFF7FEFF bl I2C_Flush_TXDR 6230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ 6232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; 13494 .loc 1 6232 12 13495 00b2 7B68 ldr r3, [r7, #4] 13496 00b4 5B6C ldr r3, [r3, #68] 13497 00b6 3B61 str r3, [r7, #16] 6233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) 13498 .loc 1 6235 12 13499 00b8 7B68 ldr r3, [r7, #4] 13500 00ba 93F84130 ldrb r3, [r3, #65] 13501 00be DBB2 uxtb r3, r3 13502 .loc 1 6235 6 13503 00c0 602B cmp r3, #96 13504 00c2 02D0 beq .L651 13505 .loc 1 6235 44 discriminator 1 13506 00c4 3B69 ldr r3, [r7, #16] 13507 00c6 002B cmp r3, #0 13508 00c8 06D0 beq .L652 13509 .L651: 6236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 13510 .loc 1 6238 5 13511 00ca 7B68 ldr r3, [r7, #4] 13512 00cc 5B6C ldr r3, [r3, #68] 13513 00ce 1946 mov r1, r3 13514 00d0 7868 ldr r0, [r7, #4] 13515 00d2 FFF7FEFF bl I2C_ITError ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 349 6239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ 6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) 6242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) 6247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_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->MemTxCpltCallback(hi2c); 6256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemTxCpltCallback(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->Mode = HAL_I2C_MODE_NONE; 6263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); 6270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); 6272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ 6276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 6277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) 6282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback(hi2c); 6291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemRxCpltCallback(hi2c); 6293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 350 6296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 6298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); 6305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); 6307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 6313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 13516 .loc 1 6314 1 13517 00d6 54E0 b .L657 13518 .L652: 6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13519 .loc 1 6241 16 13520 00d8 7B68 ldr r3, [r7, #4] 13521 00da 93F84130 ldrb r3, [r3, #65] 13522 00de DBB2 uxtb r3, r3 6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13523 .loc 1 6241 11 13524 00e0 212B cmp r3, #33 13525 00e2 24D1 bne .L654 6243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 13526 .loc 1 6243 17 13527 00e4 7B68 ldr r3, [r7, #4] 13528 00e6 2022 movs r2, #32 13529 00e8 83F84120 strb r2, [r3, #65] 6244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13530 .loc 1 6244 25 13531 00ec 7B68 ldr r3, [r7, #4] 13532 00ee 0022 movs r2, #0 13533 00f0 1A63 str r2, [r3, #48] 6246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13534 .loc 1 6246 13 13535 00f2 7B68 ldr r3, [r7, #4] 13536 00f4 93F84230 ldrb r3, [r3, #66] 13537 00f8 DBB2 uxtb r3, r3 6246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13538 .loc 1 6246 8 13539 00fa 402B cmp r3, #64 13540 00fc 0BD1 bne .L655 6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13541 .loc 1 6248 18 13542 00fe 7B68 ldr r3, [r7, #4] 13543 0100 0022 movs r2, #0 13544 0102 83F84220 strb r2, [r3, #66] 6251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13545 .loc 1 6251 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 351 13546 0106 7B68 ldr r3, [r7, #4] 13547 0108 0022 movs r2, #0 13548 010a 83F84020 strb r2, [r3, #64] 6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13549 .loc 1 6257 7 13550 010e 7868 ldr r0, [r7, #4] 13551 0110 FFF7FEFF bl HAL_I2C_MemTxCpltCallback 13552 .loc 1 6314 1 13553 0114 35E0 b .L657 13554 .L655: 6262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13555 .loc 1 6262 18 13556 0116 7B68 ldr r3, [r7, #4] 13557 0118 0022 movs r2, #0 13558 011a 83F84220 strb r2, [r3, #66] 6265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13559 .loc 1 6265 7 13560 011e 7B68 ldr r3, [r7, #4] 13561 0120 0022 movs r2, #0 13562 0122 83F84020 strb r2, [r3, #64] 6271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13563 .loc 1 6271 7 13564 0126 7868 ldr r0, [r7, #4] 13565 0128 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback 13566 .loc 1 6314 1 13567 012c 29E0 b .L657 13568 .L654: 6276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13569 .loc 1 6276 16 13570 012e 7B68 ldr r3, [r7, #4] 13571 0130 93F84130 ldrb r3, [r3, #65] 13572 0134 DBB2 uxtb r3, r3 6276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13573 .loc 1 6276 11 13574 0136 222B cmp r3, #34 13575 0138 23D1 bne .L657 6278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 13576 .loc 1 6278 17 13577 013a 7B68 ldr r3, [r7, #4] 13578 013c 2022 movs r2, #32 13579 013e 83F84120 strb r2, [r3, #65] 6279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13580 .loc 1 6279 25 13581 0142 7B68 ldr r3, [r7, #4] 13582 0144 0022 movs r2, #0 13583 0146 1A63 str r2, [r3, #48] 6281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13584 .loc 1 6281 13 13585 0148 7B68 ldr r3, [r7, #4] 13586 014a 93F84230 ldrb r3, [r3, #66] 13587 014e DBB2 uxtb r3, r3 6281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13588 .loc 1 6281 8 13589 0150 402B cmp r3, #64 13590 0152 0BD1 bne .L656 6283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13591 .loc 1 6283 18 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 352 13592 0154 7B68 ldr r3, [r7, #4] 13593 0156 0022 movs r2, #0 13594 0158 83F84220 strb r2, [r3, #66] 6286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13595 .loc 1 6286 7 13596 015c 7B68 ldr r3, [r7, #4] 13597 015e 0022 movs r2, #0 13598 0160 83F84020 strb r2, [r3, #64] 6292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13599 .loc 1 6292 7 13600 0164 7868 ldr r0, [r7, #4] 13601 0166 FFF7FEFF bl HAL_I2C_MemRxCpltCallback 13602 .loc 1 6314 1 13603 016a 0AE0 b .L657 13604 .L656: 6297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13605 .loc 1 6297 18 13606 016c 7B68 ldr r3, [r7, #4] 13607 016e 0022 movs r2, #0 13608 0170 83F84220 strb r2, [r3, #66] 6300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 13609 .loc 1 6300 7 13610 0174 7B68 ldr r3, [r7, #4] 13611 0176 0022 movs r2, #0 13612 0178 83F84020 strb r2, [r3, #64] 6306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 13613 .loc 1 6306 7 13614 017c 7868 ldr r0, [r7, #4] 13615 017e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback 13616 .L657: 13617 .loc 1 6314 1 13618 0182 00BF nop 13619 0184 1837 adds r7, r7, #24 13620 .LCFI318: 13621 .cfi_def_cfa_offset 8 13622 0186 BD46 mov sp, r7 13623 .LCFI319: 13624 .cfi_def_cfa_register 13 13625 @ sp needed 13626 0188 80BD pop {r7, pc} 13627 .L659: 13628 018a 00BF .align 2 13629 .L658: 13630 018c 00E800FE .word -33495040 13631 0190 0000FFFF .word -65536 13632 .cfi_endproc 13633 .LFE190: 13635 .section .text.I2C_ITSlaveCplt,"ax",%progbits 13636 .align 1 13637 .syntax unified 13638 .thumb 13639 .thumb_func 13641 I2C_ITSlaveCplt: 13642 .LFB191: 6315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave complete process. ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 353 6318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 6320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 6323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 13643 .loc 1 6323 1 13644 .cfi_startproc 13645 @ args = 0, pretend = 0, frame = 24 13646 @ frame_needed = 1, uses_anonymous_args = 0 13647 0000 80B5 push {r7, lr} 13648 .LCFI320: 13649 .cfi_def_cfa_offset 8 13650 .cfi_offset 7, -8 13651 .cfi_offset 14, -4 13652 0002 86B0 sub sp, sp, #24 13653 .LCFI321: 13654 .cfi_def_cfa_offset 32 13655 0004 00AF add r7, sp, #0 13656 .LCFI322: 13657 .cfi_def_cfa_register 7 13658 0006 7860 str r0, [r7, #4] 13659 0008 3960 str r1, [r7] 6324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); 13660 .loc 1 6324 26 13661 000a 7B68 ldr r3, [r7, #4] 13662 000c 1B68 ldr r3, [r3] 13663 .loc 1 6324 12 13664 000e 1B68 ldr r3, [r3] 13665 0010 3B61 str r3, [r7, #16] 6325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; 13666 .loc 1 6325 12 13667 0012 3B68 ldr r3, [r7] 13668 0014 7B61 str r3, [r7, #20] 6326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 13669 .loc 1 6326 12 13670 0016 7B68 ldr r3, [r7, #4] 13671 0018 DB6A ldr r3, [r3, #44] 13672 001a FB60 str r3, [r7, #12] 6327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; 13673 .loc 1 6327 24 13674 001c 7B68 ldr r3, [r7, #4] 13675 001e 93F84130 ldrb r3, [r3, #65] 13676 0022 FB72 strb r3, [r7, #11] 6328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 13677 .loc 1 6330 3 13678 0024 7B68 ldr r3, [r7, #4] 13679 0026 1B68 ldr r3, [r3] 13680 0028 2022 movs r2, #32 13681 002a DA61 str r2, [r3, #28] 6331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ 6333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) 13682 .loc 1 6333 6 13683 002c FB7A ldrb r3, [r7, #11] @ zero_extendqisi2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 354 13684 002e 212B cmp r3, #33 13685 0030 02D0 beq .L661 13686 .loc 1 6333 43 discriminator 1 13687 0032 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2 13688 0034 292B cmp r3, #41 13689 0036 08D1 bne .L662 13690 .L661: 6334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); 13691 .loc 1 6335 5 13692 0038 48F20101 movw r1, #32769 13693 003c 7868 ldr r0, [r7, #4] 13694 003e FFF7FEFF bl I2C_Disable_IRQ 6336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; 13695 .loc 1 6336 25 13696 0042 7B68 ldr r3, [r7, #4] 13697 0044 2122 movs r2, #33 13698 0046 1A63 str r2, [r3, #48] 13699 0048 19E0 b .L663 13700 .L662: 6337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) 13701 .loc 1 6338 11 13702 004a FB7A ldrb r3, [r7, #11] @ zero_extendqisi2 13703 004c 222B cmp r3, #34 13704 004e 02D0 beq .L664 13705 .loc 1 6338 48 discriminator 1 13706 0050 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2 13707 0052 2A2B cmp r3, #42 13708 0054 08D1 bne .L665 13709 .L664: 6339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); 13710 .loc 1 6340 5 13711 0056 48F20201 movw r1, #32770 13712 005a 7868 ldr r0, [r7, #4] 13713 005c FFF7FEFF bl I2C_Disable_IRQ 6341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; 13714 .loc 1 6341 25 13715 0060 7B68 ldr r3, [r7, #4] 13716 0062 2222 movs r2, #34 13717 0064 1A63 str r2, [r3, #48] 13718 0066 0AE0 b .L663 13719 .L665: 6342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (tmpstate == HAL_I2C_STATE_LISTEN) 13720 .loc 1 6343 11 13721 0068 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2 13722 006a 282B cmp r3, #40 13723 006c 07D1 bne .L663 6344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); 13724 .loc 1 6345 5 13725 006e 48F20301 movw r1, #32771 13726 0072 7868 ldr r0, [r7, #4] 13727 0074 FFF7FEFF bl I2C_Disable_IRQ 6346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 355 13728 .loc 1 6346 25 13729 0078 7B68 ldr r3, [r7, #4] 13730 007a 0022 movs r2, #0 13731 007c 1A63 str r2, [r3, #48] 13732 .L663: 6347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 6351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */ 6354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 13733 .loc 1 6354 7 13734 007e 7B68 ldr r3, [r7, #4] 13735 0080 1B68 ldr r3, [r3] 13736 .loc 1 6354 23 13737 0082 5A68 ldr r2, [r3, #4] 13738 .loc 1 6354 7 13739 0084 7B68 ldr r3, [r7, #4] 13740 0086 1B68 ldr r3, [r3] 13741 .loc 1 6354 23 13742 0088 42F40042 orr r2, r2, #32768 13743 008c 5A60 str r2, [r3, #4] 6355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 6357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 13744 .loc 1 6357 3 13745 008e 7B68 ldr r3, [r7, #4] 13746 0090 1B68 ldr r3, [r3] 13747 0092 5968 ldr r1, [r3, #4] 13748 0094 7B68 ldr r3, [r7, #4] 13749 0096 1A68 ldr r2, [r3] 13750 0098 8C4B ldr r3, .L681 13751 009a 0B40 ands r3, r3, r1 13752 009c 5360 str r3, [r2, #4] 6358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 13753 .loc 1 6360 3 13754 009e 7868 ldr r0, [r7, #4] 13755 00a0 FFF7FEFF bl I2C_Flush_TXDR 6361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ 6363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) 13756 .loc 1 6363 7 13757 00a4 3B69 ldr r3, [r7, #16] 13758 00a6 9B0B lsrs r3, r3, #14 13759 00a8 03F00103 and r3, r3, #1 13760 .loc 1 6363 6 13761 00ac 002B cmp r3, #0 13762 00ae 13D0 beq .L666 6364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 13763 .loc 1 6366 9 13764 00b0 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 356 13765 00b2 1B68 ldr r3, [r3] 13766 .loc 1 6366 25 13767 00b4 1A68 ldr r2, [r3] 13768 .loc 1 6366 9 13769 00b6 7B68 ldr r3, [r7, #4] 13770 00b8 1B68 ldr r3, [r3] 13771 .loc 1 6366 25 13772 00ba 22F48042 bic r2, r2, #16384 13773 00be 1A60 str r2, [r3] 6367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 13774 .loc 1 6368 13 13775 00c0 7B68 ldr r3, [r7, #4] 13776 00c2 9B6B ldr r3, [r3, #56] 13777 .loc 1 6368 8 13778 00c4 002B cmp r3, #0 13779 00c6 20D0 beq .L667 6369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); 13780 .loc 1 6370 35 13781 00c8 7B68 ldr r3, [r7, #4] 13782 00ca 9B6B ldr r3, [r3, #56] 13783 00cc 1B68 ldr r3, [r3] 13784 00ce 5B68 ldr r3, [r3, #4] 13785 .loc 1 6370 25 13786 00d0 9AB2 uxth r2, r3 13787 .loc 1 6370 23 13788 00d2 7B68 ldr r3, [r7, #4] 13789 00d4 5A85 strh r2, [r3, #42] @ movhi 13790 00d6 18E0 b .L667 13791 .L666: 6371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) 13792 .loc 1 6373 12 13793 00d8 3B69 ldr r3, [r7, #16] 13794 00da DB0B lsrs r3, r3, #15 13795 00dc 03F00103 and r3, r3, #1 13796 .loc 1 6373 11 13797 00e0 002B cmp r3, #0 13798 00e2 12D0 beq .L667 6374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 13799 .loc 1 6376 9 13800 00e4 7B68 ldr r3, [r7, #4] 13801 00e6 1B68 ldr r3, [r3] 13802 .loc 1 6376 25 13803 00e8 1A68 ldr r2, [r3] 13804 .loc 1 6376 9 13805 00ea 7B68 ldr r3, [r7, #4] 13806 00ec 1B68 ldr r3, [r3] 13807 .loc 1 6376 25 13808 00ee 22F40042 bic r2, r2, #32768 13809 00f2 1A60 str r2, [r3] 6377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 357 13810 .loc 1 6378 13 13811 00f4 7B68 ldr r3, [r7, #4] 13812 00f6 DB6B ldr r3, [r3, #60] 13813 .loc 1 6378 8 13814 00f8 002B cmp r3, #0 13815 00fa 06D0 beq .L667 6379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); 13816 .loc 1 6380 35 13817 00fc 7B68 ldr r3, [r7, #4] 13818 00fe DB6B ldr r3, [r3, #60] 13819 0100 1B68 ldr r3, [r3] 13820 0102 5B68 ldr r3, [r3, #4] 13821 .loc 1 6380 25 13822 0104 9AB2 uxth r2, r3 13823 .loc 1 6380 23 13824 0106 7B68 ldr r3, [r7, #4] 13825 0108 5A85 strh r2, [r3, #42] @ movhi 13826 .L667: 6381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */ 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 **** /* Store Last receive data if any */ 6389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) 13827 .loc 1 6389 7 13828 010a 7B69 ldr r3, [r7, #20] 13829 010c 9B08 lsrs r3, r3, #2 13830 010e 03F00103 and r3, r3, #1 13831 .loc 1 6389 6 13832 0112 002B cmp r3, #0 13833 0114 20D0 beq .L668 6390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ 6392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; 13834 .loc 1 6392 16 13835 0116 7B69 ldr r3, [r7, #20] 13836 0118 23F00403 bic r3, r3, #4 13837 011c 7B61 str r3, [r7, #20] 6393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 13838 .loc 1 6395 36 13839 011e 7B68 ldr r3, [r7, #4] 13840 0120 1B68 ldr r3, [r3] 13841 .loc 1 6395 46 13842 0122 5A6A ldr r2, [r3, #36] 13843 .loc 1 6395 10 13844 0124 7B68 ldr r3, [r7, #4] 13845 0126 5B6A ldr r3, [r3, #36] 13846 .loc 1 6395 23 13847 0128 D2B2 uxtb r2, r2 13848 .loc 1 6395 21 13849 012a 1A70 strb r2, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 358 6396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 6398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 13850 .loc 1 6398 9 13851 012c 7B68 ldr r3, [r7, #4] 13852 012e 5B6A ldr r3, [r3, #36] 13853 .loc 1 6398 19 13854 0130 5A1C adds r2, r3, #1 13855 0132 7B68 ldr r3, [r7, #4] 13856 0134 5A62 str r2, [r3, #36] 6399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) 13857 .loc 1 6400 14 13858 0136 7B68 ldr r3, [r7, #4] 13859 0138 1B8D ldrh r3, [r3, #40] 13860 .loc 1 6400 8 13861 013a 002B cmp r3, #0 13862 013c 0CD0 beq .L668 6401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 13863 .loc 1 6402 11 13864 013e 7B68 ldr r3, [r7, #4] 13865 0140 1B8D ldrh r3, [r3, #40] 13866 .loc 1 6402 21 13867 0142 013B subs r3, r3, #1 13868 0144 9AB2 uxth r2, r3 13869 0146 7B68 ldr r3, [r7, #4] 13870 0148 1A85 strh r2, [r3, #40] @ movhi 6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 13871 .loc 1 6403 11 13872 014a 7B68 ldr r3, [r7, #4] 13873 014c 5B8D ldrh r3, [r3, #42] @ movhi 13874 014e 9BB2 uxth r3, r3 13875 .loc 1 6403 22 13876 0150 013B subs r3, r3, #1 13877 0152 9AB2 uxth r2, r3 13878 0154 7B68 ldr r3, [r7, #4] 13879 0156 5A85 strh r2, [r3, #42] @ movhi 13880 .L668: 6404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* All data are not transferred, so set error code accordingly */ 6408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U) 13881 .loc 1 6408 11 13882 0158 7B68 ldr r3, [r7, #4] 13883 015a 5B8D ldrh r3, [r3, #42] @ movhi 13884 015c 9BB2 uxth r3, r3 13885 .loc 1 6408 6 13886 015e 002B cmp r3, #0 13887 0160 05D0 beq .L669 6409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 6411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 13888 .loc 1 6411 21 13889 0162 7B68 ldr r3, [r7, #4] 13890 0164 5B6C ldr r3, [r3, #68] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 359 13891 0166 43F00402 orr r2, r3, #4 13892 016a 7B68 ldr r3, [r7, #4] 13893 016c 5A64 str r2, [r3, #68] 13894 .L669: 6412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ 13895 .loc 1 6414 8 13896 016e 7B69 ldr r3, [r7, #20] 13897 0170 1B09 lsrs r3, r3, #4 13898 0172 03F00103 and r3, r3, #1 13899 .loc 1 6414 6 13900 0176 002B cmp r3, #0 13901 0178 4AD0 beq .L670 6415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) 13902 .loc 1 6415 8 discriminator 1 13903 017a 3B69 ldr r3, [r7, #16] 13904 017c 1B09 lsrs r3, r3, #4 13905 017e 03F00103 and r3, r3, #1 6414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) 13906 .loc 1 6414 58 discriminator 1 13907 0182 002B cmp r3, #0 13908 0184 44D0 beq .L670 6416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */ 6418: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 */ 6419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0*/ 6420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */ 6421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 13909 .loc 1 6421 13 13910 0186 7B68 ldr r3, [r7, #4] 13911 0188 5B8D ldrh r3, [r3, #42] @ movhi 13912 018a 9BB2 uxth r3, r3 13913 .loc 1 6421 8 13914 018c 002B cmp r3, #0 13915 018e 28D1 bne .L671 6422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) 13916 .loc 1 6423 16 13917 0190 7B68 ldr r3, [r7, #4] 13918 0192 93F84130 ldrb r3, [r3, #65] 13919 0196 DBB2 uxtb r3, r3 13920 .loc 1 6423 10 13921 0198 282B cmp r3, #40 13922 019a 08D1 bne .L672 13923 .loc 1 6423 49 discriminator 1 13924 019c FB68 ldr r3, [r7, #12] 13925 019e B3F1007F cmp r3, #33554432 13926 01a2 04D1 bne .L672 6424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for 6425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ 6426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 6428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); 13927 .loc 1 6428 9 13928 01a4 7969 ldr r1, [r7, #20] 13929 01a6 7868 ldr r0, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 360 13930 01a8 FFF7FEFF bl I2C_ITListenCplt 13931 01ac 30E0 b .L670 13932 .L672: 6429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME) 13933 .loc 1 6430 21 13934 01ae 7B68 ldr r3, [r7, #4] 13935 01b0 93F84130 ldrb r3, [r3, #65] 13936 01b4 DBB2 uxtb r3, r3 13937 .loc 1 6430 15 13938 01b6 292B cmp r3, #41 13939 01b8 0ED1 bne .L674 13940 .loc 1 6430 62 discriminator 1 13941 01ba FB68 ldr r3, [r7, #12] 13942 01bc 13F5803F cmn r3, #65536 13943 01c0 0AD0 beq .L674 6431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 13944 .loc 1 6433 9 13945 01c2 7B68 ldr r3, [r7, #4] 13946 01c4 1B68 ldr r3, [r3] 13947 01c6 1022 movs r2, #16 13948 01c8 DA61 str r2, [r3, #28] 6434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 13949 .loc 1 6436 9 13950 01ca 7868 ldr r0, [r7, #4] 13951 01cc FFF7FEFF bl I2C_Flush_TXDR 6437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 6439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 6440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 13952 .loc 1 6440 9 13953 01d0 7868 ldr r0, [r7, #4] 13954 01d2 FFF7FEFF bl I2C_ITSlaveSeqCplt 13955 01d6 1BE0 b .L670 13956 .L674: 6441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 13957 .loc 1 6445 9 13958 01d8 7B68 ldr r3, [r7, #4] 13959 01da 1B68 ldr r3, [r3] 13960 01dc 1022 movs r2, #16 13961 01de DA61 str r2, [r3, #28] 13962 01e0 16E0 b .L670 13963 .L671: 6446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6450: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*/ 6451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 361 6452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 13964 .loc 1 6452 7 13965 01e2 7B68 ldr r3, [r7, #4] 13966 01e4 1B68 ldr r3, [r3] 13967 01e6 1022 movs r2, #16 13968 01e8 DA61 str r2, [r3, #28] 6453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 6455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 13969 .loc 1 6455 23 13970 01ea 7B68 ldr r3, [r7, #4] 13971 01ec 5B6C ldr r3, [r3, #68] 13972 01ee 43F00402 orr r2, r3, #4 13973 01f2 7B68 ldr r3, [r7, #4] 13974 01f4 5A64 str r2, [r3, #68] 6456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) 13975 .loc 1 6457 10 13976 01f6 FB68 ldr r3, [r7, #12] 13977 01f8 002B cmp r3, #0 13978 01fa 03D0 beq .L675 13979 .loc 1 6457 43 discriminator 1 13980 01fc FB68 ldr r3, [r7, #12] 13981 01fe B3F1807F cmp r3, #16777216 13982 0202 05D1 bne .L670 13983 .L675: 6458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 13984 .loc 1 6460 9 13985 0204 7B68 ldr r3, [r7, #4] 13986 0206 5B6C ldr r3, [r3, #68] 13987 0208 1946 mov r1, r3 13988 020a 7868 ldr r0, [r7, #4] 13989 020c FFF7FEFF bl I2C_ITError 13990 .L670: 6461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 13991 .loc 1 6465 14 13992 0210 7B68 ldr r3, [r7, #4] 13993 0212 0022 movs r2, #0 13994 0214 83F84220 strb r2, [r3, #66] 6466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 13995 .loc 1 6466 17 13996 0218 7B68 ldr r3, [r7, #4] 13997 021a 0022 movs r2, #0 13998 021c 5A63 str r2, [r3, #52] 6467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) 13999 .loc 1 6468 11 14000 021e 7B68 ldr r3, [r7, #4] 14001 0220 5B6C ldr r3, [r3, #68] 14002 .loc 1 6468 6 14003 0222 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 362 14004 0224 10D0 beq .L676 6469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); 14005 .loc 1 6471 5 14006 0226 7B68 ldr r3, [r7, #4] 14007 0228 5B6C ldr r3, [r3, #68] 14008 022a 1946 mov r1, r3 14009 022c 7868 ldr r0, [r7, #4] 14010 022e FFF7FEFF bl I2C_ITError 6472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) 14011 .loc 1 6474 13 14012 0232 7B68 ldr r3, [r7, #4] 14013 0234 93F84130 ldrb r3, [r3, #65] 14014 0238 DBB2 uxtb r3, r3 14015 .loc 1 6474 8 14016 023a 282B cmp r3, #40 14017 023c 41D1 bne .L680 6475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */ 6477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); 14018 .loc 1 6477 7 14019 023e 7969 ldr r1, [r7, #20] 14020 0240 7868 ldr r0, [r7, #4] 14021 0242 FFF7FEFF bl I2C_ITListenCplt 6478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) 6481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ 6483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 6484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 6486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); 6495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); 6497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) 6501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 363 6508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); 6511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); 6513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 6518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); 6526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); 6528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14022 .loc 1 6530 1 14023 0246 3CE0 b .L680 14024 .L676: 6480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14025 .loc 1 6480 16 14026 0248 7B68 ldr r3, [r7, #4] 14027 024a DB6A ldr r3, [r3, #44] 6480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14028 .loc 1 6480 11 14029 024c 13F5803F cmn r3, #65536 14030 0250 14D0 beq .L678 6483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14031 .loc 1 6483 5 14032 0252 7868 ldr r0, [r7, #4] 14033 0254 FFF7FEFF bl I2C_ITSlaveSeqCplt 6485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14034 .loc 1 6485 23 14035 0258 7B68 ldr r3, [r7, #4] 14036 025a 1D4A ldr r2, .L681+4 14037 025c DA62 str r2, [r3, #44] 6486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 14038 .loc 1 6486 17 14039 025e 7B68 ldr r3, [r7, #4] 14040 0260 2022 movs r2, #32 14041 0262 83F84120 strb r2, [r3, #65] 6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14042 .loc 1 6487 25 14043 0266 7B68 ldr r3, [r7, #4] 14044 0268 0022 movs r2, #0 14045 026a 1A63 str r2, [r3, #48] 6490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14046 .loc 1 6490 5 14047 026c 7B68 ldr r3, [r7, #4] 14048 026e 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 364 14049 0270 83F84020 strb r2, [r3, #64] 6496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 14050 .loc 1 6496 5 14051 0274 7868 ldr r0, [r7, #4] 14052 0276 FFF7FEFF bl HAL_I2C_ListenCpltCallback 14053 .loc 1 6530 1 14054 027a 22E0 b .L680 14055 .L678: 6500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14056 .loc 1 6500 16 14057 027c 7B68 ldr r3, [r7, #4] 14058 027e 93F84130 ldrb r3, [r3, #65] 14059 0282 DBB2 uxtb r3, r3 6500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14060 .loc 1 6500 11 14061 0284 222B cmp r3, #34 14062 0286 0ED1 bne .L679 6502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 14063 .loc 1 6502 17 14064 0288 7B68 ldr r3, [r7, #4] 14065 028a 2022 movs r2, #32 14066 028c 83F84120 strb r2, [r3, #65] 6503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14067 .loc 1 6503 25 14068 0290 7B68 ldr r3, [r7, #4] 14069 0292 0022 movs r2, #0 14070 0294 1A63 str r2, [r3, #48] 6506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14071 .loc 1 6506 5 14072 0296 7B68 ldr r3, [r7, #4] 14073 0298 0022 movs r2, #0 14074 029a 83F84020 strb r2, [r3, #64] 6512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 14075 .loc 1 6512 5 14076 029e 7868 ldr r0, [r7, #4] 14077 02a0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback 14078 .loc 1 6530 1 14079 02a4 0DE0 b .L680 14080 .L679: 6517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 14081 .loc 1 6517 17 14082 02a6 7B68 ldr r3, [r7, #4] 14083 02a8 2022 movs r2, #32 14084 02aa 83F84120 strb r2, [r3, #65] 6518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14085 .loc 1 6518 25 14086 02ae 7B68 ldr r3, [r7, #4] 14087 02b0 0022 movs r2, #0 14088 02b2 1A63 str r2, [r3, #48] 6521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14089 .loc 1 6521 5 14090 02b4 7B68 ldr r3, [r7, #4] 14091 02b6 0022 movs r2, #0 14092 02b8 83F84020 strb r2, [r3, #64] 6527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 14093 .loc 1 6527 5 14094 02bc 7868 ldr r0, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 365 14095 02be FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback 14096 .L680: 14097 .loc 1 6530 1 14098 02c2 00BF nop 14099 02c4 1837 adds r7, r7, #24 14100 .LCFI323: 14101 .cfi_def_cfa_offset 8 14102 02c6 BD46 mov sp, r7 14103 .LCFI324: 14104 .cfi_def_cfa_register 13 14105 @ sp needed 14106 02c8 80BD pop {r7, pc} 14107 .L682: 14108 02ca 00BF .align 2 14109 .L681: 14110 02cc 00E800FE .word -33495040 14111 02d0 0000FFFF .word -65536 14112 .cfi_endproc 14113 .LFE191: 14115 .section .text.I2C_ITListenCplt,"ax",%progbits 14116 .align 1 14117 .syntax unified 14118 .thumb 14119 .thumb_func 14121 I2C_ITListenCplt: 14122 .LFB192: 6531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Listen complete process. 6534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. 6536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) 6539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14123 .loc 1 6539 1 14124 .cfi_startproc 14125 @ args = 0, pretend = 0, frame = 8 14126 @ frame_needed = 1, uses_anonymous_args = 0 14127 0000 80B5 push {r7, lr} 14128 .LCFI325: 14129 .cfi_def_cfa_offset 8 14130 .cfi_offset 7, -8 14131 .cfi_offset 14, -4 14132 0002 82B0 sub sp, sp, #8 14133 .LCFI326: 14134 .cfi_def_cfa_offset 16 14135 0004 00AF add r7, sp, #0 14136 .LCFI327: 14137 .cfi_def_cfa_register 7 14138 0006 7860 str r0, [r7, #4] 14139 0008 3960 str r1, [r7] 6540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 14140 .loc 1 6541 21 14141 000a 7B68 ldr r3, [r7, #4] 14142 000c 264A ldr r2, .L685 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 366 14143 000e DA62 str r2, [r3, #44] 6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 14144 .loc 1 6542 23 14145 0010 7B68 ldr r3, [r7, #4] 14146 0012 0022 movs r2, #0 14147 0014 1A63 str r2, [r3, #48] 6543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14148 .loc 1 6543 15 14149 0016 7B68 ldr r3, [r7, #4] 14150 0018 2022 movs r2, #32 14151 001a 83F84120 strb r2, [r3, #65] 6544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 14152 .loc 1 6544 14 14153 001e 7B68 ldr r3, [r7, #4] 14154 0020 0022 movs r2, #0 14155 0022 83F84220 strb r2, [r3, #66] 6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 14156 .loc 1 6545 17 14157 0026 7B68 ldr r3, [r7, #4] 14158 0028 0022 movs r2, #0 14159 002a 5A63 str r2, [r3, #52] 6546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 6548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) 14160 .loc 1 6548 7 14161 002c 3B68 ldr r3, [r7] 14162 002e 9B08 lsrs r3, r3, #2 14163 0030 03F00103 and r3, r3, #1 14164 .loc 1 6548 6 14165 0034 002B cmp r3, #0 14166 0036 22D0 beq .L684 6549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */ 6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; 14167 .loc 1 6551 36 14168 0038 7B68 ldr r3, [r7, #4] 14169 003a 1B68 ldr r3, [r3] 14170 .loc 1 6551 46 14171 003c 5A6A ldr r2, [r3, #36] 14172 .loc 1 6551 10 14173 003e 7B68 ldr r3, [r7, #4] 14174 0040 5B6A ldr r3, [r3, #36] 14175 .loc 1 6551 23 14176 0042 D2B2 uxtb r2, r2 14177 .loc 1 6551 21 14178 0044 1A70 strb r2, [r3] 6552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */ 6554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++; 14179 .loc 1 6554 9 14180 0046 7B68 ldr r3, [r7, #4] 14181 0048 5B6A ldr r3, [r3, #36] 14182 .loc 1 6554 19 14183 004a 5A1C adds r2, r3, #1 14184 004c 7B68 ldr r3, [r7, #4] 14185 004e 5A62 str r2, [r3, #36] 6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 367 6556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) 14186 .loc 1 6556 14 14187 0050 7B68 ldr r3, [r7, #4] 14188 0052 1B8D ldrh r3, [r3, #40] 14189 .loc 1 6556 8 14190 0054 002B cmp r3, #0 14191 0056 12D0 beq .L684 6557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--; 14192 .loc 1 6558 11 14193 0058 7B68 ldr r3, [r7, #4] 14194 005a 1B8D ldrh r3, [r3, #40] 14195 .loc 1 6558 21 14196 005c 013B subs r3, r3, #1 14197 005e 9AB2 uxth r2, r3 14198 0060 7B68 ldr r3, [r7, #4] 14199 0062 1A85 strh r2, [r3, #40] @ movhi 6559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--; 14200 .loc 1 6559 11 14201 0064 7B68 ldr r3, [r7, #4] 14202 0066 5B8D ldrh r3, [r3, #42] @ movhi 14203 0068 9BB2 uxth r3, r3 14204 .loc 1 6559 22 14205 006a 013B subs r3, r3, #1 14206 006c 9AB2 uxth r2, r3 14207 006e 7B68 ldr r3, [r7, #4] 14208 0070 5A85 strh r2, [r3, #42] @ movhi 6560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ 6562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 14209 .loc 1 6562 23 14210 0072 7B68 ldr r3, [r7, #4] 14211 0074 5B6C ldr r3, [r3, #68] 14212 0076 43F00402 orr r2, r3, #4 14213 007a 7B68 ldr r3, [r7, #4] 14214 007c 5A64 str r2, [r3, #68] 14215 .L684: 6563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all Interrupts*/ 6567: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); 14216 .loc 1 6567 3 14217 007e 48F20301 movw r1, #32771 14218 0082 7868 ldr r0, [r7, #4] 14219 0084 FFF7FEFF bl I2C_Disable_IRQ 6568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */ 6570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 14220 .loc 1 6570 3 14221 0088 7B68 ldr r3, [r7, #4] 14222 008a 1B68 ldr r3, [r3] 14223 008c 1022 movs r2, #16 14224 008e DA61 str r2, [r3, #28] 6571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 368 14225 .loc 1 6573 3 14226 0090 7B68 ldr r3, [r7, #4] 14227 0092 0022 movs r2, #0 14228 0094 83F84020 strb r2, [r3, #64] 6574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ 6576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); 6578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); 14229 .loc 1 6579 3 14230 0098 7868 ldr r0, [r7, #4] 14231 009a FFF7FEFF bl HAL_I2C_ListenCpltCallback 6580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14232 .loc 1 6581 1 14233 009e 00BF nop 14234 00a0 0837 adds r7, r7, #8 14235 .LCFI328: 14236 .cfi_def_cfa_offset 8 14237 00a2 BD46 mov sp, r7 14238 .LCFI329: 14239 .cfi_def_cfa_register 13 14240 @ sp needed 14241 00a4 80BD pop {r7, pc} 14242 .L686: 14243 00a6 00BF .align 2 14244 .L685: 14245 00a8 0000FFFF .word -65536 14246 .cfi_endproc 14247 .LFE192: 14249 .section .text.I2C_ITError,"ax",%progbits 14250 .align 1 14251 .syntax unified 14252 .thumb 14253 .thumb_func 14255 I2C_ITError: 14256 .LFB193: 6582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C interrupts error process. 6585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ErrorCode Error code to handle. 6587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) 6590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14257 .loc 1 6590 1 14258 .cfi_startproc 14259 @ args = 0, pretend = 0, frame = 16 14260 @ frame_needed = 1, uses_anonymous_args = 0 14261 0000 80B5 push {r7, lr} 14262 .LCFI330: 14263 .cfi_def_cfa_offset 8 14264 .cfi_offset 7, -8 14265 .cfi_offset 14, -4 14266 0002 84B0 sub sp, sp, #16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 369 14267 .LCFI331: 14268 .cfi_def_cfa_offset 24 14269 0004 00AF add r7, sp, #0 14270 .LCFI332: 14271 .cfi_def_cfa_register 7 14272 0006 7860 str r0, [r7, #4] 14273 0008 3960 str r1, [r7] 6591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; 14274 .loc 1 6591 24 14275 000a 7B68 ldr r3, [r7, #4] 14276 000c 93F84130 ldrb r3, [r3, #65] 14277 0010 FB73 strb r3, [r7, #15] 6592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmppreviousstate; 6594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */ 6596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 14278 .loc 1 6596 23 14279 0012 7B68 ldr r3, [r7, #4] 14280 0014 0022 movs r2, #0 14281 0016 83F84220 strb r2, [r3, #66] 6597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; 14282 .loc 1 6597 23 14283 001a 7B68 ldr r3, [r7, #4] 14284 001c 6D4A ldr r2, .L707 14285 001e DA62 str r2, [r3, #44] 6598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = 0U; 14286 .loc 1 6598 23 14287 0020 7B68 ldr r3, [r7, #4] 14288 0022 0022 movs r2, #0 14289 0024 5A85 strh r2, [r3, #42] @ movhi 6599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set new error code */ 6601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= ErrorCode; 14290 .loc 1 6601 19 14291 0026 7B68 ldr r3, [r7, #4] 14292 0028 5A6C ldr r2, [r3, #68] 14293 002a 3B68 ldr r3, [r7] 14294 002c 1A43 orrs r2, r2, r3 14295 002e 7B68 ldr r3, [r7, #4] 14296 0030 5A64 str r2, [r3, #68] 6602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */ 6604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_LISTEN) || 14297 .loc 1 6604 6 14298 0032 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 14299 0034 282B cmp r3, #40 14300 0036 05D0 beq .L688 14301 .loc 1 6604 50 discriminator 1 14302 0038 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 14303 003a 292B cmp r3, #41 14304 003c 02D0 beq .L688 6605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || 14305 .loc 1 6605 50 14306 003e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 14307 0040 2A2B cmp r3, #42 14308 0042 0BD1 bne .L689 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 370 14309 .L688: 6606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) 6607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts, except interrupts related to LISTEN state */ 6609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); 14310 .loc 1 6609 5 14311 0044 0321 movs r1, #3 14312 0046 7868 ldr r0, [r7, #4] 14313 0048 FFF7FEFF bl I2C_Disable_IRQ 6610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* keep HAL_I2C_STATE_LISTEN if set */ 6612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; 14314 .loc 1 6612 25 14315 004c 7B68 ldr r3, [r7, #4] 14316 004e 2822 movs r2, #40 14317 0050 83F84120 strb r2, [r3, #65] 6613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; 14318 .loc 1 6613 25 14319 0054 7B68 ldr r3, [r7, #4] 14320 0056 604A ldr r2, .L707+4 14321 0058 5A63 str r2, [r3, #52] 14322 005a 30E0 b .L690 14323 .L689: 6614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts */ 6618: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); 14324 .loc 1 6618 5 14325 005c 48F20301 movw r1, #32771 14326 0060 7868 ldr r0, [r7, #4] 14327 0062 FFF7FEFF bl I2C_Disable_IRQ 6619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 6621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 14328 .loc 1 6621 5 14329 0066 7868 ldr r0, [r7, #4] 14330 0068 FFF7FEFF bl I2C_Flush_TXDR 6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If state is an abort treatment on going, don't change state */ 6624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This change will be do later */ 6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State != HAL_I2C_STATE_ABORT) 14331 .loc 1 6625 13 14332 006c 7B68 ldr r3, [r7, #4] 14333 006e 93F84130 ldrb r3, [r3, #65] 14334 0072 DBB2 uxtb r3, r3 14335 .loc 1 6625 8 14336 0074 602B cmp r3, #96 14337 0076 1FD0 beq .L691 6626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set HAL_I2C_STATE_READY */ 6628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14338 .loc 1 6628 27 14339 0078 7B68 ldr r3, [r7, #4] 14340 007a 2022 movs r2, #32 14341 007c 83F84120 strb r2, [r3, #65] 6629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 371 6630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a STOPF is detected */ 6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) 14342 .loc 1 6631 11 14343 0080 7B68 ldr r3, [r7, #4] 14344 0082 1B68 ldr r3, [r3] 14345 0084 9B69 ldr r3, [r3, #24] 14346 0086 03F02003 and r3, r3, #32 14347 .loc 1 6631 10 14348 008a 202B cmp r3, #32 14349 008c 14D1 bne .L691 6632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) 14350 .loc 1 6633 13 14351 008e 7B68 ldr r3, [r7, #4] 14352 0090 1B68 ldr r3, [r3] 14353 0092 9B69 ldr r3, [r3, #24] 14354 0094 03F01003 and r3, r3, #16 14355 .loc 1 6633 12 14356 0098 102B cmp r3, #16 14357 009a 09D1 bne .L692 6634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 14358 .loc 1 6635 11 14359 009c 7B68 ldr r3, [r7, #4] 14360 009e 1B68 ldr r3, [r3] 14361 00a0 1022 movs r2, #16 14362 00a2 DA61 str r2, [r3, #28] 6636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; 14363 .loc 1 6636 27 14364 00a4 7B68 ldr r3, [r7, #4] 14365 00a6 5B6C ldr r3, [r3, #68] 14366 00a8 43F00402 orr r2, r3, #4 14367 00ac 7B68 ldr r3, [r7, #4] 14368 00ae 5A64 str r2, [r3, #68] 14369 .L692: 6637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 6640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 14370 .loc 1 6640 9 14371 00b0 7B68 ldr r3, [r7, #4] 14372 00b2 1B68 ldr r3, [r3] 14373 00b4 2022 movs r2, #32 14374 00b6 DA61 str r2, [r3, #28] 14375 .L691: 6641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL; 14376 .loc 1 6644 25 14377 00b8 7B68 ldr r3, [r7, #4] 14378 00ba 0022 movs r2, #0 14379 00bc 5A63 str r2, [r3, #52] 14380 .L690: 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 **** /* Abort DMA TX transfer if any */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 372 6648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmppreviousstate = hi2c->PreviousState; 14381 .loc 1 6648 20 14382 00be 7B68 ldr r3, [r7, #4] 14383 00c0 1B6B ldr r3, [r3, #48] 14384 00c2 BB60 str r3, [r7, #8] 6649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ 14385 .loc 1 6650 12 14386 00c4 7B68 ldr r3, [r7, #4] 14387 00c6 9B6B ldr r3, [r3, #56] 14388 .loc 1 6650 6 14389 00c8 002B cmp r3, #0 14390 00ca 39D0 beq .L693 14391 .loc 1 6650 30 discriminator 1 14392 00cc BB68 ldr r3, [r7, #8] 14393 00ce 112B cmp r3, #17 14394 00d0 02D0 beq .L694 14395 .loc 1 6650 81 discriminator 2 14396 00d2 BB68 ldr r3, [r7, #8] 14397 00d4 212B cmp r3, #33 14398 00d6 33D1 bne .L693 14399 .L694: 6651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) 6652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) 14400 .loc 1 6653 14 14401 00d8 7B68 ldr r3, [r7, #4] 14402 00da 1B68 ldr r3, [r3] 14403 .loc 1 6653 24 14404 00dc 1B68 ldr r3, [r3] 14405 .loc 1 6653 30 14406 00de 03F48043 and r3, r3, #16384 14407 .loc 1 6653 8 14408 00e2 B3F5804F cmp r3, #16384 14409 00e6 07D1 bne .L695 6654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 14410 .loc 1 6655 11 14411 00e8 7B68 ldr r3, [r7, #4] 14412 00ea 1B68 ldr r3, [r3] 14413 .loc 1 6655 27 14414 00ec 1A68 ldr r2, [r3] 14415 .loc 1 6655 11 14416 00ee 7B68 ldr r3, [r7, #4] 14417 00f0 1B68 ldr r3, [r3] 14418 .loc 1 6655 27 14419 00f2 22F48042 bic r2, r2, #16384 14420 00f6 1A60 str r2, [r3] 14421 .L695: 6656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) 14422 .loc 1 6658 9 14423 00f8 7B68 ldr r3, [r7, #4] 14424 00fa 9B6B ldr r3, [r3, #56] 14425 00fc 1846 mov r0, r3 14426 00fe FFF7FEFF bl HAL_DMA_GetState ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 373 14427 0102 0346 mov r3, r0 14428 .loc 1 6658 8 14429 0104 012B cmp r3, #1 14430 0106 17D0 beq .L696 6659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 6661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 6662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; 14431 .loc 1 6662 11 14432 0108 7B68 ldr r3, [r7, #4] 14433 010a 9B6B ldr r3, [r3, #56] 14434 .loc 1 6662 39 14435 010c 334A ldr r2, .L707+8 14436 010e 5A63 str r2, [r3, #52] 6663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14437 .loc 1 6665 7 14438 0110 7B68 ldr r3, [r7, #4] 14439 0112 0022 movs r2, #0 14440 0114 83F84020 strb r2, [r3, #64] 6666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */ 6668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) 14441 .loc 1 6668 11 14442 0118 7B68 ldr r3, [r7, #4] 14443 011a 9B6B ldr r3, [r3, #56] 14444 011c 1846 mov r0, r3 14445 011e FFF7FEFF bl HAL_DMA_Abort_IT 14446 0122 0346 mov r3, r0 14447 .loc 1 6668 10 14448 0124 002B cmp r3, #0 14449 0126 4DD0 beq .L704 6669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ 6671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); 14450 .loc 1 6671 13 14451 0128 7B68 ldr r3, [r7, #4] 14452 012a 9B6B ldr r3, [r3, #56] 14453 .loc 1 6671 21 14454 012c 5B6B ldr r3, [r3, #52] 14455 .loc 1 6671 45 14456 012e 7A68 ldr r2, [r7, #4] 14457 0130 926B ldr r2, [r2, #56] 14458 .loc 1 6671 9 14459 0132 1046 mov r0, r2 14460 0134 9847 blx r3 14461 .LVL7: 6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14462 .loc 1 6658 8 14463 0136 45E0 b .L704 14464 .L696: 6672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 374 14465 .loc 1 6676 7 14466 0138 7868 ldr r0, [r7, #4] 14467 013a FFF7FEFF bl I2C_TreatErrorCallback 6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14468 .loc 1 6658 8 14469 013e 41E0 b .L704 14470 .L693: 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 **** /* Abort DMA RX transfer if any */ 6680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ 14471 .loc 1 6680 17 14472 0140 7B68 ldr r3, [r7, #4] 14473 0142 DB6B ldr r3, [r3, #60] 14474 .loc 1 6680 11 14475 0144 002B cmp r3, #0 14476 0146 39D0 beq .L699 14477 .loc 1 6680 35 discriminator 1 14478 0148 BB68 ldr r3, [r7, #8] 14479 014a 122B cmp r3, #18 14480 014c 02D0 beq .L700 14481 .loc 1 6680 86 discriminator 2 14482 014e BB68 ldr r3, [r7, #8] 14483 0150 222B cmp r3, #34 14484 0152 33D1 bne .L699 14485 .L700: 6681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) 6682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) 14486 .loc 1 6683 14 14487 0154 7B68 ldr r3, [r7, #4] 14488 0156 1B68 ldr r3, [r3] 14489 .loc 1 6683 24 14490 0158 1B68 ldr r3, [r3] 14491 .loc 1 6683 30 14492 015a 03F40043 and r3, r3, #32768 14493 .loc 1 6683 8 14494 015e B3F5004F cmp r3, #32768 14495 0162 07D1 bne .L701 6684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 14496 .loc 1 6685 11 14497 0164 7B68 ldr r3, [r7, #4] 14498 0166 1B68 ldr r3, [r3] 14499 .loc 1 6685 27 14500 0168 1A68 ldr r2, [r3] 14501 .loc 1 6685 11 14502 016a 7B68 ldr r3, [r7, #4] 14503 016c 1B68 ldr r3, [r3] 14504 .loc 1 6685 27 14505 016e 22F40042 bic r2, r2, #32768 14506 0172 1A60 str r2, [r3] 14507 .L701: 6686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) 14508 .loc 1 6688 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 375 14509 0174 7B68 ldr r3, [r7, #4] 14510 0176 DB6B ldr r3, [r3, #60] 14511 0178 1846 mov r0, r3 14512 017a FFF7FEFF bl HAL_DMA_GetState 14513 017e 0346 mov r3, r0 14514 .loc 1 6688 8 14515 0180 012B cmp r3, #1 14516 0182 17D0 beq .L702 6689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : 6691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ 6692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; 14517 .loc 1 6692 11 14518 0184 7B68 ldr r3, [r7, #4] 14519 0186 DB6B ldr r3, [r3, #60] 14520 .loc 1 6692 39 14521 0188 144A ldr r2, .L707+8 14522 018a 5A63 str r2, [r3, #52] 6693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14523 .loc 1 6695 7 14524 018c 7B68 ldr r3, [r7, #4] 14525 018e 0022 movs r2, #0 14526 0190 83F84020 strb r2, [r3, #64] 6696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */ 6698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) 14527 .loc 1 6698 11 14528 0194 7B68 ldr r3, [r7, #4] 14529 0196 DB6B ldr r3, [r3, #60] 14530 0198 1846 mov r0, r3 14531 019a FFF7FEFF bl HAL_DMA_Abort_IT 14532 019e 0346 mov r3, r0 14533 .loc 1 6698 10 14534 01a0 002B cmp r3, #0 14535 01a2 11D0 beq .L705 6699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ 6701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); 14536 .loc 1 6701 13 14537 01a4 7B68 ldr r3, [r7, #4] 14538 01a6 DB6B ldr r3, [r3, #60] 14539 .loc 1 6701 21 14540 01a8 5B6B ldr r3, [r3, #52] 14541 .loc 1 6701 45 14542 01aa 7A68 ldr r2, [r7, #4] 14543 01ac D26B ldr r2, [r2, #60] 14544 .loc 1 6701 9 14545 01ae 1046 mov r0, r2 14546 01b0 9847 blx r3 14547 .LVL8: 6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14548 .loc 1 6688 8 14549 01b2 09E0 b .L705 14550 .L702: 6702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 376 6703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 14551 .loc 1 6706 7 14552 01b4 7868 ldr r0, [r7, #4] 14553 01b6 FFF7FEFF bl I2C_TreatErrorCallback 6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14554 .loc 1 6688 8 14555 01ba 05E0 b .L705 14556 .L699: 6707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 14557 .loc 1 6711 5 14558 01bc 7868 ldr r0, [r7, #4] 14559 01be FFF7FEFF bl I2C_TreatErrorCallback 6712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14560 .loc 1 6713 1 14561 01c2 02E0 b .L706 14562 .L704: 6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14563 .loc 1 6658 8 14564 01c4 00BF nop 14565 01c6 00E0 b .L706 14566 .L705: 6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14567 .loc 1 6688 8 14568 01c8 00BF nop 14569 .L706: 14570 .loc 1 6713 1 14571 01ca 00BF nop 14572 01cc 1037 adds r7, r7, #16 14573 .LCFI333: 14574 .cfi_def_cfa_offset 8 14575 01ce BD46 mov sp, r7 14576 .LCFI334: 14577 .cfi_def_cfa_register 13 14578 @ sp needed 14579 01d0 80BD pop {r7, pc} 14580 .L708: 14581 01d2 00BF .align 2 14582 .L707: 14583 01d4 0000FFFF .word -65536 14584 01d8 00000000 .word I2C_Slave_ISR_IT 14585 01dc 00000000 .word I2C_DMAAbort 14586 .cfi_endproc 14587 .LFE193: 14589 .section .text.I2C_TreatErrorCallback,"ax",%progbits 14590 .align 1 14591 .syntax unified 14592 .thumb 14593 .thumb_func 14595 I2C_TreatErrorCallback: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 377 14596 .LFB194: 6714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Error callback treatment. 6717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) 6721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14597 .loc 1 6721 1 14598 .cfi_startproc 14599 @ args = 0, pretend = 0, frame = 8 14600 @ frame_needed = 1, uses_anonymous_args = 0 14601 0000 80B5 push {r7, lr} 14602 .LCFI335: 14603 .cfi_def_cfa_offset 8 14604 .cfi_offset 7, -8 14605 .cfi_offset 14, -4 14606 0002 82B0 sub sp, sp, #8 14607 .LCFI336: 14608 .cfi_def_cfa_offset 16 14609 0004 00AF add r7, sp, #0 14610 .LCFI337: 14611 .cfi_def_cfa_register 7 14612 0006 7860 str r0, [r7, #4] 6722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT) 14613 .loc 1 6722 11 14614 0008 7B68 ldr r3, [r7, #4] 14615 000a 93F84130 ldrb r3, [r3, #65] 14616 000e DBB2 uxtb r3, r3 14617 .loc 1 6722 6 14618 0010 602B cmp r3, #96 14619 0012 0ED1 bne .L710 6723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 14620 .loc 1 6724 17 14621 0014 7B68 ldr r3, [r7, #4] 14622 0016 2022 movs r2, #32 14623 0018 83F84120 strb r2, [r3, #65] 6725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 14624 .loc 1 6725 25 14625 001c 7B68 ldr r3, [r7, #4] 14626 001e 0022 movs r2, #0 14627 0020 1A63 str r2, [r3, #48] 6726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 14628 .loc 1 6728 5 14629 0022 7B68 ldr r3, [r7, #4] 14630 0024 0022 movs r2, #0 14631 0026 83F84020 strb r2, [r3, #64] 6729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback(hi2c); 6733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AbortCpltCallback(hi2c); ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 378 14632 .loc 1 6734 5 14633 002a 7868 ldr r0, [r7, #4] 14634 002c FFF7FEFF bl HAL_I2C_AbortCpltCallback 6735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; 6740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 6742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 6743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) 6746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback(hi2c); 6747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else 6748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ErrorCallback(hi2c); 6749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 6750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14635 .loc 1 6751 1 14636 0030 09E0 b .L712 14637 .L710: 6739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14638 .loc 1 6739 25 14639 0032 7B68 ldr r3, [r7, #4] 14640 0034 0022 movs r2, #0 14641 0036 1A63 str r2, [r3, #48] 6742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14642 .loc 1 6742 5 14643 0038 7B68 ldr r3, [r7, #4] 14644 003a 0022 movs r2, #0 14645 003c 83F84020 strb r2, [r3, #64] 6748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ 14646 .loc 1 6748 5 14647 0040 7868 ldr r0, [r7, #4] 14648 0042 FFF7FEFF bl HAL_I2C_ErrorCallback 14649 .L712: 14650 .loc 1 6751 1 14651 0046 00BF nop 14652 0048 0837 adds r7, r7, #8 14653 .LCFI338: 14654 .cfi_def_cfa_offset 8 14655 004a BD46 mov sp, r7 14656 .LCFI339: 14657 .cfi_def_cfa_register 13 14658 @ sp needed 14659 004c 80BD pop {r7, pc} 14660 .cfi_endproc 14661 .LFE194: 14663 .section .text.I2C_Flush_TXDR,"ax",%progbits 14664 .align 1 14665 .syntax unified 14666 .thumb 14667 .thumb_func 14669 I2C_Flush_TXDR: 14670 .LFB195: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 379 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 **** * @brief I2C Tx data register flush process. 6755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 6756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) 6759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14671 .loc 1 6759 1 14672 .cfi_startproc 14673 @ args = 0, pretend = 0, frame = 8 14674 @ frame_needed = 1, uses_anonymous_args = 0 14675 @ link register save eliminated. 14676 0000 80B4 push {r7} 14677 .LCFI340: 14678 .cfi_def_cfa_offset 4 14679 .cfi_offset 7, -4 14680 0002 83B0 sub sp, sp, #12 14681 .LCFI341: 14682 .cfi_def_cfa_offset 16 14683 0004 00AF add r7, sp, #0 14684 .LCFI342: 14685 .cfi_def_cfa_register 7 14686 0006 7860 str r0, [r7, #4] 6760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a pending TXIS flag is set */ 6761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write a dummy data in TXDR to clear it */ 6762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) 14687 .loc 1 6762 7 14688 0008 7B68 ldr r3, [r7, #4] 14689 000a 1B68 ldr r3, [r3] 14690 000c 9B69 ldr r3, [r3, #24] 14691 000e 03F00203 and r3, r3, #2 14692 .loc 1 6762 6 14693 0012 022B cmp r3, #2 14694 0014 03D1 bne .L714 6763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = 0x00U; 14695 .loc 1 6764 9 14696 0016 7B68 ldr r3, [r7, #4] 14697 0018 1B68 ldr r3, [r3] 14698 .loc 1 6764 26 14699 001a 0022 movs r2, #0 14700 001c 9A62 str r2, [r3, #40] 14701 .L714: 6765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register if not empty */ 6768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) 14702 .loc 1 6768 7 14703 001e 7B68 ldr r3, [r7, #4] 14704 0020 1B68 ldr r3, [r3] 14705 0022 9B69 ldr r3, [r3, #24] 14706 0024 03F00103 and r3, r3, #1 14707 .loc 1 6768 6 14708 0028 012B cmp r3, #1 14709 002a 07D0 beq .L716 6769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 380 6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); 14710 .loc 1 6770 5 14711 002c 7B68 ldr r3, [r7, #4] 14712 002e 1B68 ldr r3, [r3] 14713 0030 9A69 ldr r2, [r3, #24] 14714 0032 7B68 ldr r3, [r7, #4] 14715 0034 1B68 ldr r3, [r3] 14716 0036 42F00102 orr r2, r2, #1 14717 003a 9A61 str r2, [r3, #24] 14718 .L716: 6771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14719 .loc 1 6772 1 14720 003c 00BF nop 14721 003e 0C37 adds r7, r7, #12 14722 .LCFI343: 14723 .cfi_def_cfa_offset 4 14724 0040 BD46 mov sp, r7 14725 .LCFI344: 14726 .cfi_def_cfa_register 13 14727 @ sp needed 14728 0042 5DF8047B ldr r7, [sp], #4 14729 .LCFI345: 14730 .cfi_restore 7 14731 .cfi_def_cfa_offset 0 14732 0046 7047 bx lr 14733 .cfi_endproc 14734 .LFE195: 14736 .section .text.I2C_DMAMasterTransmitCplt,"ax",%progbits 14737 .align 1 14738 .syntax unified 14739 .thumb 14740 .thumb_func 14742 I2C_DMAMasterTransmitCplt: 14743 .LFB196: 6773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master transmit process complete callback. 6776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) 6780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14744 .loc 1 6780 1 14745 .cfi_startproc 14746 @ args = 0, pretend = 0, frame = 16 14747 @ frame_needed = 1, uses_anonymous_args = 0 14748 0000 80B5 push {r7, lr} 14749 .LCFI346: 14750 .cfi_def_cfa_offset 8 14751 .cfi_offset 7, -8 14752 .cfi_offset 14, -4 14753 0002 84B0 sub sp, sp, #16 14754 .LCFI347: 14755 .cfi_def_cfa_offset 24 14756 0004 00AF add r7, sp, #0 14757 .LCFI348: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 381 14758 .cfi_def_cfa_register 7 14759 0006 7860 str r0, [r7, #4] 6781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 14760 .loc 1 6782 22 14761 0008 7B68 ldr r3, [r7, #4] 14762 000a 5B6A ldr r3, [r3, #36] 14763 000c FB60 str r3, [r7, #12] 6783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; 14764 .loc 1 6785 7 14765 000e FB68 ldr r3, [r7, #12] 14766 0010 1B68 ldr r3, [r3] 14767 .loc 1 6785 23 14768 0012 1A68 ldr r2, [r3] 14769 .loc 1 6785 7 14770 0014 FB68 ldr r3, [r7, #12] 14771 0016 1B68 ldr r3, [r3] 14772 .loc 1 6785 23 14773 0018 22F48042 bic r2, r2, #16384 14774 001c 1A60 str r2, [r3] 6786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ 6788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 14775 .loc 1 6788 11 14776 001e FB68 ldr r3, [r7, #12] 14777 0020 5B8D ldrh r3, [r3, #42] @ movhi 14778 0022 9BB2 uxth r3, r3 14779 .loc 1 6788 6 14780 0024 002B cmp r3, #0 14781 0026 04D1 bne .L718 6789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */ 6791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 14782 .loc 1 6791 5 14783 0028 2021 movs r1, #32 14784 002a F868 ldr r0, [r7, #12] 14785 002c FFF7FEFF bl I2C_Enable_IRQ 6792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ 6794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */ 6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; 6798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */ 6800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 382 6810: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, 6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 6812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 6815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 6819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); 6820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14786 .loc 1 6822 1 14787 0030 2DE0 b .L723 14788 .L718: 6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14789 .loc 1 6797 20 14790 0032 FB68 ldr r3, [r7, #12] 14791 0034 5B6A ldr r3, [r3, #36] 6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14792 .loc 1 6797 27 14793 0036 FA68 ldr r2, [r7, #12] 14794 0038 128D ldrh r2, [r2, #40] 6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14795 .loc 1 6797 20 14796 003a 1A44 add r2, r2, r3 14797 003c FB68 ldr r3, [r7, #12] 14798 003e 5A62 str r2, [r3, #36] 6800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14799 .loc 1 6800 13 14800 0040 FB68 ldr r3, [r7, #12] 14801 0042 5B8D ldrh r3, [r3, #42] @ movhi 14802 0044 9BB2 uxth r3, r3 6800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14803 .loc 1 6800 8 14804 0046 FF2B cmp r3, #255 14805 0048 03D9 bls .L720 6802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14806 .loc 1 6802 22 14807 004a FB68 ldr r3, [r7, #12] 14808 004c FF22 movs r2, #255 14809 004e 1A85 strh r2, [r3, #40] @ movhi 14810 0050 04E0 b .L721 14811 .L720: 6806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14812 .loc 1 6806 28 14813 0052 FB68 ldr r3, [r7, #12] 14814 0054 5B8D ldrh r3, [r3, #42] @ movhi 14815 0056 9AB2 uxth r2, r3 6806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14816 .loc 1 6806 22 14817 0058 FB68 ldr r3, [r7, #12] 14818 005a 1A85 strh r2, [r3, #40] @ movhi 14819 .L721: 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14820 .loc 1 6810 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 383 14821 005c FB68 ldr r3, [r7, #12] 14822 005e 986B ldr r0, [r3, #56] 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14823 .loc 1 6810 54 14824 0060 FB68 ldr r3, [r7, #12] 14825 0062 5B6A ldr r3, [r3, #36] 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14826 .loc 1 6810 9 14827 0064 1946 mov r1, r3 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14828 .loc 1 6810 81 14829 0066 FB68 ldr r3, [r7, #12] 14830 0068 1B68 ldr r3, [r3] 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14831 .loc 1 6810 76 14832 006a 2833 adds r3, r3, #40 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14833 .loc 1 6810 9 14834 006c 1A46 mov r2, r3 6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14835 .loc 1 6811 30 14836 006e FB68 ldr r3, [r7, #12] 14837 0070 1B8D ldrh r3, [r3, #40] 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14838 .loc 1 6810 9 14839 0072 FFF7FEFF bl HAL_DMA_Start_IT 14840 0076 0346 mov r3, r0 6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 14841 .loc 1 6810 8 14842 0078 002B cmp r3, #0 14843 007a 04D0 beq .L722 6814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14844 .loc 1 6814 7 14845 007c 1021 movs r1, #16 14846 007e F868 ldr r0, [r7, #12] 14847 0080 FFF7FEFF bl I2C_ITError 14848 .loc 1 6822 1 14849 0084 03E0 b .L723 14850 .L722: 6819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14851 .loc 1 6819 7 14852 0086 4021 movs r1, #64 14853 0088 F868 ldr r0, [r7, #12] 14854 008a FFF7FEFF bl I2C_Enable_IRQ 14855 .L723: 14856 .loc 1 6822 1 14857 008e 00BF nop 14858 0090 1037 adds r7, r7, #16 14859 .LCFI349: 14860 .cfi_def_cfa_offset 8 14861 0092 BD46 mov sp, r7 14862 .LCFI350: 14863 .cfi_def_cfa_register 13 14864 @ sp needed 14865 0094 80BD pop {r7, pc} 14866 .cfi_endproc 14867 .LFE196: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 384 14869 .section .text.I2C_DMASlaveTransmitCplt,"ax",%progbits 14870 .align 1 14871 .syntax unified 14872 .thumb 14873 .thumb_func 14875 I2C_DMASlaveTransmitCplt: 14876 .LFB197: 6823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave transmit process complete callback. 6827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) 6831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14877 .loc 1 6831 1 14878 .cfi_startproc 14879 @ args = 0, pretend = 0, frame = 16 14880 @ frame_needed = 1, uses_anonymous_args = 0 14881 0000 80B5 push {r7, lr} 14882 .LCFI351: 14883 .cfi_def_cfa_offset 8 14884 .cfi_offset 7, -8 14885 .cfi_offset 14, -4 14886 0002 84B0 sub sp, sp, #16 14887 .LCFI352: 14888 .cfi_def_cfa_offset 24 14889 0004 00AF add r7, sp, #0 14890 .LCFI353: 14891 .cfi_def_cfa_register 7 14892 0006 7860 str r0, [r7, #4] 6832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 14893 .loc 1 6833 22 14894 0008 7B68 ldr r3, [r7, #4] 14895 000a 5B6A ldr r3, [r3, #36] 14896 000c FB60 str r3, [r7, #12] 6834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 14897 .loc 1 6834 12 14898 000e FB68 ldr r3, [r7, #12] 14899 0010 DB6A ldr r3, [r3, #44] 14900 0012 BB60 str r3, [r7, #8] 6835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) 14901 .loc 1 6836 6 14902 0014 BB68 ldr r3, [r7, #8] 14903 0016 B3F1807F cmp r3, #16777216 14904 001a 02D0 beq .L725 14905 .loc 1 6836 38 discriminator 1 14906 001c BB68 ldr r3, [r7, #8] 14907 001e 002B cmp r3, #0 14908 0020 0AD1 bne .L727 14909 .L725: 6837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 385 14910 .loc 1 6839 9 14911 0022 FB68 ldr r3, [r7, #12] 14912 0024 1B68 ldr r3, [r3] 14913 .loc 1 6839 25 14914 0026 1A68 ldr r2, [r3] 14915 .loc 1 6839 9 14916 0028 FB68 ldr r3, [r7, #12] 14917 002a 1B68 ldr r3, [r3] 14918 .loc 1 6839 25 14919 002c 22F48042 bic r2, r2, #16384 14920 0030 1A60 str r2, [r3] 6840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */ 6842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ 6843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 14921 .loc 1 6843 5 14922 0032 F868 ldr r0, [r7, #12] 14923 0034 FFF7FEFF bl I2C_ITSlaveSeqCplt 14924 .L727: 6844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ 6848: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 */ 6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ 6850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 14925 .loc 1 6851 1 14926 0038 00BF nop 14927 003a 1037 adds r7, r7, #16 14928 .LCFI354: 14929 .cfi_def_cfa_offset 8 14930 003c BD46 mov sp, r7 14931 .LCFI355: 14932 .cfi_def_cfa_register 13 14933 @ sp needed 14934 003e 80BD pop {r7, pc} 14935 .cfi_endproc 14936 .LFE197: 14938 .section .text.I2C_DMAMasterReceiveCplt,"ax",%progbits 14939 .align 1 14940 .syntax unified 14941 .thumb 14942 .thumb_func 14944 I2C_DMAMasterReceiveCplt: 14945 .LFB198: 6852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master receive process complete callback. 6856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) 6860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 14946 .loc 1 6860 1 14947 .cfi_startproc ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 386 14948 @ args = 0, pretend = 0, frame = 16 14949 @ frame_needed = 1, uses_anonymous_args = 0 14950 0000 80B5 push {r7, lr} 14951 .LCFI356: 14952 .cfi_def_cfa_offset 8 14953 .cfi_offset 7, -8 14954 .cfi_offset 14, -4 14955 0002 84B0 sub sp, sp, #16 14956 .LCFI357: 14957 .cfi_def_cfa_offset 24 14958 0004 00AF add r7, sp, #0 14959 .LCFI358: 14960 .cfi_def_cfa_register 7 14961 0006 7860 str r0, [r7, #4] 6861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 14962 .loc 1 6862 22 14963 0008 7B68 ldr r3, [r7, #4] 14964 000a 5B6A ldr r3, [r3, #36] 14965 000c FB60 str r3, [r7, #12] 6863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 14966 .loc 1 6865 7 14967 000e FB68 ldr r3, [r7, #12] 14968 0010 1B68 ldr r3, [r3] 14969 .loc 1 6865 23 14970 0012 1A68 ldr r2, [r3] 14971 .loc 1 6865 7 14972 0014 FB68 ldr r3, [r7, #12] 14973 0016 1B68 ldr r3, [r3] 14974 .loc 1 6865 23 14975 0018 22F40042 bic r2, r2, #32768 14976 001c 1A60 str r2, [r3] 6866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ 6868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U) 14977 .loc 1 6868 11 14978 001e FB68 ldr r3, [r7, #12] 14979 0020 5B8D ldrh r3, [r3, #42] @ movhi 14980 0022 9BB2 uxth r3, r3 14981 .loc 1 6868 6 14982 0024 002B cmp r3, #0 14983 0026 04D1 bne .L729 6869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */ 6871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); 14984 .loc 1 6871 5 14985 0028 2021 movs r1, #32 14986 002a F868 ldr r0, [r7, #12] 14987 002c FFF7FEFF bl I2C_Enable_IRQ 6872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ 6874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */ 6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 387 6878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */ 6880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) 6881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Errata workaround 170323 */ 6883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) 6884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 1U; 6886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; 6890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; 6895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */ 6898: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, 6899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 6900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 6903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 6907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); 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 **** } 14988 .loc 1 6910 1 14989 0030 3BE0 b .L735 14990 .L729: 6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14991 .loc 1 6877 20 14992 0032 FB68 ldr r3, [r7, #12] 14993 0034 5B6A ldr r3, [r3, #36] 6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14994 .loc 1 6877 27 14995 0036 FA68 ldr r2, [r7, #12] 14996 0038 128D ldrh r2, [r2, #40] 6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 14997 .loc 1 6877 20 14998 003a 1A44 add r2, r2, r3 14999 003c FB68 ldr r3, [r7, #12] 15000 003e 5A62 str r2, [r3, #36] 6880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15001 .loc 1 6880 13 15002 0040 FB68 ldr r3, [r7, #12] 15003 0042 5B8D ldrh r3, [r3, #42] @ movhi 15004 0044 9BB2 uxth r3, r3 6880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15005 .loc 1 6880 8 15006 0046 FF2B cmp r3, #255 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 388 15007 0048 11D9 bls .L731 6883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15008 .loc 1 6883 11 15009 004a FB68 ldr r3, [r7, #12] 15010 004c 1B68 ldr r3, [r3] 15011 004e 9B69 ldr r3, [r3, #24] 15012 0050 1B0C lsrs r3, r3, #16 15013 0052 DBB2 uxtb r3, r3 15014 0054 03F00103 and r3, r3, #1 15015 0058 DBB2 uxtb r3, r3 6883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15016 .loc 1 6883 10 15017 005a 012B cmp r3, #1 15018 005c 03D1 bne .L732 6885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15019 .loc 1 6885 24 15020 005e FB68 ldr r3, [r7, #12] 15021 0060 0122 movs r2, #1 15022 0062 1A85 strh r2, [r3, #40] @ movhi 15023 0064 08E0 b .L733 15024 .L732: 6889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15025 .loc 1 6889 24 15026 0066 FB68 ldr r3, [r7, #12] 15027 0068 FF22 movs r2, #255 15028 006a 1A85 strh r2, [r3, #40] @ movhi 15029 006c 04E0 b .L733 15030 .L731: 6894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15031 .loc 1 6894 28 15032 006e FB68 ldr r3, [r7, #12] 15033 0070 5B8D ldrh r3, [r3, #42] @ movhi 15034 0072 9AB2 uxth r2, r3 6894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15035 .loc 1 6894 22 15036 0074 FB68 ldr r3, [r7, #12] 15037 0076 1A85 strh r2, [r3, #40] @ movhi 15038 .L733: 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15039 .loc 1 6898 9 15040 0078 FB68 ldr r3, [r7, #12] 15041 007a D86B ldr r0, [r3, #60] 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15042 .loc 1 6898 55 15043 007c FB68 ldr r3, [r7, #12] 15044 007e 1B68 ldr r3, [r3] 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15045 .loc 1 6898 50 15046 0080 2433 adds r3, r3, #36 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15047 .loc 1 6898 9 15048 0082 1946 mov r1, r3 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15049 .loc 1 6898 87 15050 0084 FB68 ldr r3, [r7, #12] 15051 0086 5B6A ldr r3, [r3, #36] 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 389 15052 .loc 1 6898 9 15053 0088 1A46 mov r2, r3 6899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15054 .loc 1 6899 30 15055 008a FB68 ldr r3, [r7, #12] 15056 008c 1B8D ldrh r3, [r3, #40] 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15057 .loc 1 6898 9 15058 008e FFF7FEFF bl HAL_DMA_Start_IT 15059 0092 0346 mov r3, r0 6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) 15060 .loc 1 6898 8 15061 0094 002B cmp r3, #0 15062 0096 04D0 beq .L734 6902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15063 .loc 1 6902 7 15064 0098 1021 movs r1, #16 15065 009a F868 ldr r0, [r7, #12] 15066 009c FFF7FEFF bl I2C_ITError 15067 .loc 1 6910 1 15068 00a0 03E0 b .L735 15069 .L734: 6907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15070 .loc 1 6907 7 15071 00a2 4021 movs r1, #64 15072 00a4 F868 ldr r0, [r7, #12] 15073 00a6 FFF7FEFF bl I2C_Enable_IRQ 15074 .L735: 15075 .loc 1 6910 1 15076 00aa 00BF nop 15077 00ac 1037 adds r7, r7, #16 15078 .LCFI359: 15079 .cfi_def_cfa_offset 8 15080 00ae BD46 mov sp, r7 15081 .LCFI360: 15082 .cfi_def_cfa_register 13 15083 @ sp needed 15084 00b0 80BD pop {r7, pc} 15085 .cfi_endproc 15086 .LFE198: 15088 .section .text.I2C_DMASlaveReceiveCplt,"ax",%progbits 15089 .align 1 15090 .syntax unified 15091 .thumb 15092 .thumb_func 15094 I2C_DMASlaveReceiveCplt: 15095 .LFB199: 6911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave receive process complete callback. 6915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) 6919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15096 .loc 1 6919 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 390 15097 .cfi_startproc 15098 @ args = 0, pretend = 0, frame = 16 15099 @ frame_needed = 1, uses_anonymous_args = 0 15100 0000 80B5 push {r7, lr} 15101 .LCFI361: 15102 .cfi_def_cfa_offset 8 15103 .cfi_offset 7, -8 15104 .cfi_offset 14, -4 15105 0002 84B0 sub sp, sp, #16 15106 .LCFI362: 15107 .cfi_def_cfa_offset 24 15108 0004 00AF add r7, sp, #0 15109 .LCFI363: 15110 .cfi_def_cfa_register 7 15111 0006 7860 str r0, [r7, #4] 6920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 15112 .loc 1 6921 22 15113 0008 7B68 ldr r3, [r7, #4] 15114 000a 5B6A ldr r3, [r3, #36] 15115 000c FB60 str r3, [r7, #12] 6922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; 15116 .loc 1 6922 12 15117 000e FB68 ldr r3, [r7, #12] 15118 0010 DB6A ldr r3, [r3, #44] 15119 0012 BB60 str r3, [r7, #8] 6923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ 15120 .loc 1 6924 8 15121 0014 FB68 ldr r3, [r7, #12] 15122 0016 DB6B ldr r3, [r3, #60] 15123 0018 1B68 ldr r3, [r3] 15124 001a 5B68 ldr r3, [r3, #4] 15125 .loc 1 6924 6 15126 001c 002B cmp r3, #0 15127 001e 0ED1 bne .L738 15128 .loc 1 6924 53 discriminator 1 15129 0020 BB68 ldr r3, [r7, #8] 15130 0022 13F5803F cmn r3, #65536 15131 0026 0AD0 beq .L738 6925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) 6926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */ 6928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; 15132 .loc 1 6928 9 15133 0028 FB68 ldr r3, [r7, #12] 15134 002a 1B68 ldr r3, [r3] 15135 .loc 1 6928 25 15136 002c 1A68 ldr r2, [r3] 15137 .loc 1 6928 9 15138 002e FB68 ldr r3, [r7, #12] 15139 0030 1B68 ldr r3, [r3] 15140 .loc 1 6928 25 15141 0032 22F40042 bic r2, r2, #32768 15142 0036 1A60 str r2, [r3] 6929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 391 6931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); 15143 .loc 1 6931 5 15144 0038 F868 ldr r0, [r7, #12] 15145 003a FFF7FEFF bl I2C_ITSlaveSeqCplt 15146 .L738: 6932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 6934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ 6936: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 */ 6937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ 6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15147 .loc 1 6939 1 15148 003e 00BF nop 15149 0040 1037 adds r7, r7, #16 15150 .LCFI364: 15151 .cfi_def_cfa_offset 8 15152 0042 BD46 mov sp, r7 15153 .LCFI365: 15154 .cfi_def_cfa_register 13 15155 @ sp needed 15156 0044 80BD pop {r7, pc} 15157 .cfi_endproc 15158 .LFE199: 15160 .section .text.I2C_DMAError,"ax",%progbits 15161 .align 1 15162 .syntax unified 15163 .thumb 15164 .thumb_func 15166 I2C_DMAError: 15167 .LFB200: 6940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication error callback. 6944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle 6945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma) 6948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15168 .loc 1 6948 1 15169 .cfi_startproc 15170 @ args = 0, pretend = 0, frame = 16 15171 @ frame_needed = 1, uses_anonymous_args = 0 15172 0000 80B5 push {r7, lr} 15173 .LCFI366: 15174 .cfi_def_cfa_offset 8 15175 .cfi_offset 7, -8 15176 .cfi_offset 14, -4 15177 0002 84B0 sub sp, sp, #16 15178 .LCFI367: 15179 .cfi_def_cfa_offset 24 15180 0004 00AF add r7, sp, #0 15181 .LCFI368: 15182 .cfi_def_cfa_register 7 15183 0006 7860 str r0, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 392 6949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 15184 .loc 1 6950 22 15185 0008 7B68 ldr r3, [r7, #4] 15186 000a 5B6A ldr r3, [r3, #36] 15187 000c FB60 str r3, [r7, #12] 6951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Acknowledge */ 6953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; 15188 .loc 1 6953 7 15189 000e FB68 ldr r3, [r7, #12] 15190 0010 1B68 ldr r3, [r3] 15191 .loc 1 6953 23 15192 0012 5A68 ldr r2, [r3, #4] 15193 .loc 1 6953 7 15194 0014 FB68 ldr r3, [r7, #12] 15195 0016 1B68 ldr r3, [r3] 15196 .loc 1 6953 23 15197 0018 42F40042 orr r2, r2, #32768 15198 001c 5A60 str r2, [r3, #4] 6954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ 6956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); 15199 .loc 1 6956 3 15200 001e 1021 movs r1, #16 15201 0020 F868 ldr r0, [r7, #12] 15202 0022 FFF7FEFF bl I2C_ITError 6957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15203 .loc 1 6957 1 15204 0026 00BF nop 15205 0028 1037 adds r7, r7, #16 15206 .LCFI369: 15207 .cfi_def_cfa_offset 8 15208 002a BD46 mov sp, r7 15209 .LCFI370: 15210 .cfi_def_cfa_register 13 15211 @ sp needed 15212 002c 80BD pop {r7, pc} 15213 .cfi_endproc 15214 .LFE200: 15216 .section .text.I2C_DMAAbort,"ax",%progbits 15217 .align 1 15218 .syntax unified 15219 .thumb 15220 .thumb_func 15222 I2C_DMAAbort: 15223 .LFB201: 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 **** /** 6961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication abort callback 6962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * (To be called at end of DMA Abort procedure). 6963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle. 6964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 6965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) 6967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 393 15224 .loc 1 6967 1 15225 .cfi_startproc 15226 @ args = 0, pretend = 0, frame = 16 15227 @ frame_needed = 1, uses_anonymous_args = 0 15228 0000 80B5 push {r7, lr} 15229 .LCFI371: 15230 .cfi_def_cfa_offset 8 15231 .cfi_offset 7, -8 15232 .cfi_offset 14, -4 15233 0002 84B0 sub sp, sp, #16 15234 .LCFI372: 15235 .cfi_def_cfa_offset 24 15236 0004 00AF add r7, sp, #0 15237 .LCFI373: 15238 .cfi_def_cfa_register 7 15239 0006 7860 str r0, [r7, #4] 6968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ 6969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); 15240 .loc 1 6969 22 15241 0008 7B68 ldr r3, [r7, #4] 15242 000a 5B6A ldr r3, [r3, #36] 15243 000c FB60 str r3, [r7, #12] 6970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset AbortCpltCallback */ 6972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) 15244 .loc 1 6972 11 15245 000e FB68 ldr r3, [r7, #12] 15246 0010 9B6B ldr r3, [r3, #56] 15247 .loc 1 6972 6 15248 0012 002B cmp r3, #0 15249 0014 03D0 beq .L741 6973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; 15250 .loc 1 6974 9 15251 0016 FB68 ldr r3, [r7, #12] 15252 0018 9B6B ldr r3, [r3, #56] 15253 .loc 1 6974 37 15254 001a 0022 movs r2, #0 15255 001c 5A63 str r2, [r3, #52] 15256 .L741: 6975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) 15257 .loc 1 6976 11 15258 001e FB68 ldr r3, [r7, #12] 15259 0020 DB6B ldr r3, [r3, #60] 15260 .loc 1 6976 6 15261 0022 002B cmp r3, #0 15262 0024 03D0 beq .L742 6977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 6978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; 15263 .loc 1 6978 9 15264 0026 FB68 ldr r3, [r7, #12] 15265 0028 DB6B ldr r3, [r3, #60] 15266 .loc 1 6978 37 15267 002a 0022 movs r2, #0 15268 002c 5A63 str r2, [r3, #52] 15269 .L742: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 394 6979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 6980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); 15270 .loc 1 6981 3 15271 002e F868 ldr r0, [r7, #12] 15272 0030 FFF7FEFF bl I2C_TreatErrorCallback 6982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15273 .loc 1 6982 1 15274 0034 00BF nop 15275 0036 1037 adds r7, r7, #16 15276 .LCFI374: 15277 .cfi_def_cfa_offset 8 15278 0038 BD46 mov sp, r7 15279 .LCFI375: 15280 .cfi_def_cfa_register 13 15281 @ sp needed 15282 003a 80BD pop {r7, pc} 15283 .cfi_endproc 15284 .LFE201: 15286 .section .text.I2C_WaitOnFlagUntilTimeout,"ax",%progbits 15287 .align 1 15288 .syntax unified 15289 .thumb 15290 .thumb_func 15292 I2C_WaitOnFlagUntilTimeout: 15293 .LFB202: 6983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 6985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 6986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout. It waits 6987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * until a flag is no longer in the specified status. 6988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 6989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 6990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Flag Specifies the I2C flag to check. 6991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Status The actual Flag status (SET or RESET). 6992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 6993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 6994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 6995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 6996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta 6997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart) 6998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15294 .loc 1 6998 1 15295 .cfi_startproc 15296 @ args = 4, pretend = 0, frame = 16 15297 @ frame_needed = 1, uses_anonymous_args = 0 15298 0000 80B5 push {r7, lr} 15299 .LCFI376: 15300 .cfi_def_cfa_offset 8 15301 .cfi_offset 7, -8 15302 .cfi_offset 14, -4 15303 0002 84B0 sub sp, sp, #16 15304 .LCFI377: 15305 .cfi_def_cfa_offset 24 15306 0004 00AF add r7, sp, #0 15307 .LCFI378: 15308 .cfi_def_cfa_register 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 395 15309 0006 F860 str r0, [r7, #12] 15310 0008 B960 str r1, [r7, #8] 15311 000a 3B60 str r3, [r7] 15312 000c 1346 mov r3, r2 15313 000e FB71 strb r3, [r7, #7] 6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) 15314 .loc 1 6999 9 15315 0010 3BE0 b .L744 15316 .L748: 7000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 7002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 15317 .loc 1 7002 9 15318 0012 BA69 ldr r2, [r7, #24] 15319 0014 3968 ldr r1, [r7] 15320 0016 F868 ldr r0, [r7, #12] 15321 0018 FFF7FEFF bl I2C_IsErrorOccurred 15322 001c 0346 mov r3, r0 15323 .loc 1 7002 8 15324 001e 002B cmp r3, #0 15325 0020 01D0 beq .L745 7003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15326 .loc 1 7004 14 15327 0022 0123 movs r3, #1 15328 0024 41E0 b .L746 15329 .L745: 7005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 15330 .loc 1 7008 8 15331 0026 3B68 ldr r3, [r7] 15332 0028 B3F1FF3F cmp r3, #-1 15333 002c 2DD0 beq .L744 7009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 15334 .loc 1 7010 13 15335 002e FFF7FEFF bl HAL_GetTick 15336 0032 0246 mov r2, r0 15337 .loc 1 7010 27 15338 0034 BB69 ldr r3, [r7, #24] 15339 0036 D31A subs r3, r2, r3 15340 .loc 1 7010 10 15341 0038 3A68 ldr r2, [r7] 15342 003a 9A42 cmp r2, r3 15343 003c 02D3 bcc .L747 15344 .loc 1 7010 51 discriminator 1 15345 003e 3B68 ldr r3, [r7] 15346 0040 002B cmp r3, #0 15347 0042 22D1 bne .L744 15348 .L747: 7011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) 15349 .loc 1 7012 14 15350 0044 FB68 ldr r3, [r7, #12] 15351 0046 1B68 ldr r3, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 396 15352 0048 9A69 ldr r2, [r3, #24] 15353 004a BB68 ldr r3, [r7, #8] 15354 004c 1340 ands r3, r3, r2 15355 004e BA68 ldr r2, [r7, #8] 15356 0050 9A42 cmp r2, r3 15357 0052 0CBF ite eq 15358 0054 0123 moveq r3, #1 15359 0056 0023 movne r3, #0 15360 0058 DBB2 uxtb r3, r3 15361 005a 1A46 mov r2, r3 15362 .loc 1 7012 45 15363 005c FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 15364 .loc 1 7012 12 15365 005e 9A42 cmp r2, r3 15366 0060 13D1 bne .L744 7013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 15367 .loc 1 7014 27 15368 0062 FB68 ldr r3, [r7, #12] 15369 0064 5B6C ldr r3, [r3, #68] 15370 0066 43F02002 orr r2, r3, #32 15371 006a FB68 ldr r3, [r7, #12] 15372 006c 5A64 str r2, [r3, #68] 7015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 15373 .loc 1 7015 23 15374 006e FB68 ldr r3, [r7, #12] 15375 0070 2022 movs r2, #32 15376 0072 83F84120 strb r2, [r3, #65] 7016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 15377 .loc 1 7016 22 15378 0076 FB68 ldr r3, [r7, #12] 15379 0078 0022 movs r2, #0 15380 007a 83F84220 strb r2, [r3, #66] 7017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 15381 .loc 1 7019 11 15382 007e FB68 ldr r3, [r7, #12] 15383 0080 0022 movs r2, #0 15384 0082 83F84020 strb r2, [r3, #64] 7020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15385 .loc 1 7020 18 15386 0086 0123 movs r3, #1 15387 0088 0FE0 b .L746 15388 .L744: 6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15389 .loc 1 6999 10 15390 008a FB68 ldr r3, [r7, #12] 15391 008c 1B68 ldr r3, [r3] 15392 008e 9A69 ldr r2, [r3, #24] 15393 0090 BB68 ldr r3, [r7, #8] 15394 0092 1340 ands r3, r3, r2 15395 0094 BA68 ldr r2, [r7, #8] 15396 0096 9A42 cmp r2, r3 15397 0098 0CBF ite eq 15398 009a 0123 moveq r3, #1 15399 009c 0023 movne r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 397 15400 009e DBB2 uxtb r3, r3 15401 00a0 1A46 mov r2, r3 6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15402 .loc 1 6999 41 15403 00a2 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15404 .loc 1 6999 9 15405 00a4 9A42 cmp r2, r3 15406 00a6 B4D0 beq .L748 7021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 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 **** return HAL_OK; 15407 .loc 1 7025 10 15408 00a8 0023 movs r3, #0 15409 .L746: 7026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15410 .loc 1 7026 1 15411 00aa 1846 mov r0, r3 15412 00ac 1037 adds r7, r7, #16 15413 .LCFI379: 15414 .cfi_def_cfa_offset 8 15415 00ae BD46 mov sp, r7 15416 .LCFI380: 15417 .cfi_def_cfa_register 13 15418 @ sp needed 15419 00b0 80BD pop {r7, pc} 15420 .cfi_endproc 15421 .LFE202: 15423 .section .text.I2C_WaitOnTXISFlagUntilTimeout,"ax",%progbits 15424 .align 1 15425 .syntax unified 15426 .thumb 15427 .thumb_func 15429 I2C_WaitOnTXISFlagUntilTimeout: 15430 .LFB203: 7027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. 7030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 7033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 7034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 7035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 7037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 7038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15431 .loc 1 7038 1 15432 .cfi_startproc 15433 @ args = 0, pretend = 0, frame = 16 15434 @ frame_needed = 1, uses_anonymous_args = 0 15435 0000 80B5 push {r7, lr} 15436 .LCFI381: 15437 .cfi_def_cfa_offset 8 15438 .cfi_offset 7, -8 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 398 15439 .cfi_offset 14, -4 15440 0002 84B0 sub sp, sp, #16 15441 .LCFI382: 15442 .cfi_def_cfa_offset 24 15443 0004 00AF add r7, sp, #0 15444 .LCFI383: 15445 .cfi_def_cfa_register 7 15446 0006 F860 str r0, [r7, #12] 15447 0008 B960 str r1, [r7, #8] 15448 000a 7A60 str r2, [r7, #4] 7039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) 15449 .loc 1 7039 9 15450 000c 33E0 b .L750 15451 .L754: 7040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 7042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 15452 .loc 1 7042 9 15453 000e 7A68 ldr r2, [r7, #4] 15454 0010 B968 ldr r1, [r7, #8] 15455 0012 F868 ldr r0, [r7, #12] 15456 0014 FFF7FEFF bl I2C_IsErrorOccurred 15457 0018 0346 mov r3, r0 15458 .loc 1 7042 8 15459 001a 002B cmp r3, #0 15460 001c 01D0 beq .L751 7043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15461 .loc 1 7044 14 15462 001e 0123 movs r3, #1 15463 0020 31E0 b .L752 15464 .L751: 7045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 15465 .loc 1 7048 8 15466 0022 BB68 ldr r3, [r7, #8] 15467 0024 B3F1FF3F cmp r3, #-1 15468 0028 25D0 beq .L750 7049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 15469 .loc 1 7050 13 15470 002a FFF7FEFF bl HAL_GetTick 15471 002e 0246 mov r2, r0 15472 .loc 1 7050 27 15473 0030 7B68 ldr r3, [r7, #4] 15474 0032 D31A subs r3, r2, r3 15475 .loc 1 7050 10 15476 0034 BA68 ldr r2, [r7, #8] 15477 0036 9A42 cmp r2, r3 15478 0038 02D3 bcc .L753 15479 .loc 1 7050 51 discriminator 1 15480 003a BB68 ldr r3, [r7, #8] 15481 003c 002B cmp r3, #0 15482 003e 1AD1 bne .L750 15483 .L753: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 399 7051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) 15484 .loc 1 7052 14 15485 0040 FB68 ldr r3, [r7, #12] 15486 0042 1B68 ldr r3, [r3] 15487 0044 9B69 ldr r3, [r3, #24] 15488 0046 03F00203 and r3, r3, #2 15489 .loc 1 7052 12 15490 004a 022B cmp r3, #2 15491 004c 13D0 beq .L750 7053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 15492 .loc 1 7054 27 15493 004e FB68 ldr r3, [r7, #12] 15494 0050 5B6C ldr r3, [r3, #68] 15495 0052 43F02002 orr r2, r3, #32 15496 0056 FB68 ldr r3, [r7, #12] 15497 0058 5A64 str r2, [r3, #68] 7055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 15498 .loc 1 7055 23 15499 005a FB68 ldr r3, [r7, #12] 15500 005c 2022 movs r2, #32 15501 005e 83F84120 strb r2, [r3, #65] 7056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 15502 .loc 1 7056 22 15503 0062 FB68 ldr r3, [r7, #12] 15504 0064 0022 movs r2, #0 15505 0066 83F84220 strb r2, [r3, #66] 7057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 15506 .loc 1 7059 11 15507 006a FB68 ldr r3, [r7, #12] 15508 006c 0022 movs r2, #0 15509 006e 83F84020 strb r2, [r3, #64] 7060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15510 .loc 1 7061 18 15511 0072 0123 movs r3, #1 15512 0074 07E0 b .L752 15513 .L750: 7039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15514 .loc 1 7039 10 15515 0076 FB68 ldr r3, [r7, #12] 15516 0078 1B68 ldr r3, [r3] 15517 007a 9B69 ldr r3, [r3, #24] 15518 007c 03F00203 and r3, r3, #2 7039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15519 .loc 1 7039 9 15520 0080 022B cmp r3, #2 15521 0082 C4D1 bne .L754 7062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK; 15522 .loc 1 7066 10 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 400 15523 0084 0023 movs r3, #0 15524 .L752: 7067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15525 .loc 1 7067 1 15526 0086 1846 mov r0, r3 15527 0088 1037 adds r7, r7, #16 15528 .LCFI384: 15529 .cfi_def_cfa_offset 8 15530 008a BD46 mov sp, r7 15531 .LCFI385: 15532 .cfi_def_cfa_register 13 15533 @ sp needed 15534 008c 80BD pop {r7, pc} 15535 .cfi_endproc 15536 .LFE203: 15538 .section .text.I2C_WaitOnSTOPFlagUntilTimeout,"ax",%progbits 15539 .align 1 15540 .syntax unified 15541 .thumb 15542 .thumb_func 15544 I2C_WaitOnSTOPFlagUntilTimeout: 15545 .LFB204: 7068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. 7071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 7074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 7075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 7076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 7078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 7079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15546 .loc 1 7079 1 15547 .cfi_startproc 15548 @ args = 0, pretend = 0, frame = 16 15549 @ frame_needed = 1, uses_anonymous_args = 0 15550 0000 80B5 push {r7, lr} 15551 .LCFI386: 15552 .cfi_def_cfa_offset 8 15553 .cfi_offset 7, -8 15554 .cfi_offset 14, -4 15555 0002 84B0 sub sp, sp, #16 15556 .LCFI387: 15557 .cfi_def_cfa_offset 24 15558 0004 00AF add r7, sp, #0 15559 .LCFI388: 15560 .cfi_def_cfa_register 7 15561 0006 F860 str r0, [r7, #12] 15562 0008 B960 str r1, [r7, #8] 15563 000a 7A60 str r2, [r7, #4] 7080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) 15564 .loc 1 7080 9 15565 000c 2FE0 b .L756 15566 .L760: 7081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 401 7082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 7083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 15567 .loc 1 7083 9 15568 000e 7A68 ldr r2, [r7, #4] 15569 0010 B968 ldr r1, [r7, #8] 15570 0012 F868 ldr r0, [r7, #12] 15571 0014 FFF7FEFF bl I2C_IsErrorOccurred 15572 0018 0346 mov r3, r0 15573 .loc 1 7083 8 15574 001a 002B cmp r3, #0 15575 001c 01D0 beq .L757 7084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15576 .loc 1 7085 14 15577 001e 0123 movs r3, #1 15578 0020 2DE0 b .L758 15579 .L757: 7086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) 15580 .loc 1 7089 11 15581 0022 FFF7FEFF bl HAL_GetTick 15582 0026 0246 mov r2, r0 15583 .loc 1 7089 25 15584 0028 7B68 ldr r3, [r7, #4] 15585 002a D31A subs r3, r2, r3 15586 .loc 1 7089 8 15587 002c BA68 ldr r2, [r7, #8] 15588 002e 9A42 cmp r2, r3 15589 0030 02D3 bcc .L759 15590 .loc 1 7089 49 discriminator 1 15591 0032 BB68 ldr r3, [r7, #8] 15592 0034 002B cmp r3, #0 15593 0036 1AD1 bne .L756 15594 .L759: 7090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) 15595 .loc 1 7091 12 15596 0038 FB68 ldr r3, [r7, #12] 15597 003a 1B68 ldr r3, [r3] 15598 003c 9B69 ldr r3, [r3, #24] 15599 003e 03F02003 and r3, r3, #32 15600 .loc 1 7091 10 15601 0042 202B cmp r3, #32 15602 0044 13D0 beq .L756 7092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 15603 .loc 1 7093 25 15604 0046 FB68 ldr r3, [r7, #12] 15605 0048 5B6C ldr r3, [r3, #68] 15606 004a 43F02002 orr r2, r3, #32 15607 004e FB68 ldr r3, [r7, #12] 15608 0050 5A64 str r2, [r3, #68] 7094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 15609 .loc 1 7094 21 15610 0052 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 402 15611 0054 2022 movs r2, #32 15612 0056 83F84120 strb r2, [r3, #65] 7095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 15613 .loc 1 7095 20 15614 005a FB68 ldr r3, [r7, #12] 15615 005c 0022 movs r2, #0 15616 005e 83F84220 strb r2, [r3, #66] 7096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 15617 .loc 1 7098 9 15618 0062 FB68 ldr r3, [r7, #12] 15619 0064 0022 movs r2, #0 15620 0066 83F84020 strb r2, [r3, #64] 7099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR; 15621 .loc 1 7100 16 15622 006a 0123 movs r3, #1 15623 006c 07E0 b .L758 15624 .L756: 7080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15625 .loc 1 7080 10 15626 006e FB68 ldr r3, [r7, #12] 15627 0070 1B68 ldr r3, [r3] 15628 0072 9B69 ldr r3, [r3, #24] 15629 0074 03F02003 and r3, r3, #32 7080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15630 .loc 1 7080 9 15631 0078 202B cmp r3, #32 15632 007a C8D1 bne .L760 7101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 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 **** return HAL_OK; 15633 .loc 1 7104 10 15634 007c 0023 movs r3, #0 15635 .L758: 7105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15636 .loc 1 7105 1 15637 007e 1846 mov r0, r3 15638 0080 1037 adds r7, r7, #16 15639 .LCFI389: 15640 .cfi_def_cfa_offset 8 15641 0082 BD46 mov sp, r7 15642 .LCFI390: 15643 .cfi_def_cfa_register 13 15644 @ sp needed 15645 0084 80BD pop {r7, pc} 15646 .cfi_endproc 15647 .LFE204: 15649 .section .text.I2C_WaitOnRXNEFlagUntilTimeout,"ax",%progbits 15650 .align 1 15651 .syntax unified 15652 .thumb 15653 .thumb_func 15655 I2C_WaitOnRXNEFlagUntilTimeout: 15656 .LFB205: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 403 7106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. 7109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 7112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 7113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 7114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, 7116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart) 7117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15657 .loc 1 7117 1 15658 .cfi_startproc 15659 @ args = 0, pretend = 0, frame = 24 15660 @ frame_needed = 1, uses_anonymous_args = 0 15661 0000 80B5 push {r7, lr} 15662 .LCFI391: 15663 .cfi_def_cfa_offset 8 15664 .cfi_offset 7, -8 15665 .cfi_offset 14, -4 15666 0002 86B0 sub sp, sp, #24 15667 .LCFI392: 15668 .cfi_def_cfa_offset 32 15669 0004 00AF add r7, sp, #0 15670 .LCFI393: 15671 .cfi_def_cfa_register 7 15672 0006 F860 str r0, [r7, #12] 15673 0008 B960 str r1, [r7, #8] 15674 000a 7A60 str r2, [r7, #4] 7118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 15675 .loc 1 7118 21 15676 000c 0023 movs r3, #0 15677 000e FB75 strb r3, [r7, #23] 7119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) 15678 .loc 1 7120 9 15679 0010 71E0 b .L762 15680 .L769: 7121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */ 7123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) 15681 .loc 1 7123 9 15682 0012 7A68 ldr r2, [r7, #4] 15683 0014 B968 ldr r1, [r7, #8] 15684 0016 F868 ldr r0, [r7, #12] 15685 0018 FFF7FEFF bl I2C_IsErrorOccurred 15686 001c 0346 mov r3, r0 15687 .loc 1 7123 8 15688 001e 002B cmp r3, #0 15689 0020 01D0 beq .L763 7124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 15690 .loc 1 7125 14 15691 0022 0123 movs r3, #1 15692 0024 FB75 strb r3, [r7, #23] 15693 .L763: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 404 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 **** /* Check if a STOPF is detected */ 7129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) 15694 .loc 1 7129 10 15695 0026 FB68 ldr r3, [r7, #12] 15696 0028 1B68 ldr r3, [r3] 15697 002a 9B69 ldr r3, [r3, #24] 15698 002c 03F02003 and r3, r3, #32 15699 .loc 1 7129 8 15700 0030 202B cmp r3, #32 15701 0032 3BD1 bne .L764 15702 .loc 1 7129 59 discriminator 1 15703 0034 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 15704 0036 002B cmp r3, #0 15705 0038 38D1 bne .L764 7130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an RXNE is pending */ 7132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */ 7133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) 15706 .loc 1 7133 12 15707 003a FB68 ldr r3, [r7, #12] 15708 003c 1B68 ldr r3, [r3] 15709 003e 9B69 ldr r3, [r3, #24] 15710 0040 03F00403 and r3, r3, #4 15711 .loc 1 7133 10 15712 0044 042B cmp r3, #4 15713 0046 05D1 bne .L765 15714 .loc 1 7133 68 discriminator 1 15715 0048 FB68 ldr r3, [r7, #12] 15716 004a 1B8D ldrh r3, [r3, #40] 15717 .loc 1 7133 60 discriminator 1 15718 004c 002B cmp r3, #0 15719 004e 01D0 beq .L765 7134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return HAL_OK */ 7136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The Reading of data from RXDR will be done in caller function */ 7137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_OK; 15720 .loc 1 7137 16 15721 0050 0023 movs r3, #0 15722 0052 FB75 strb r3, [r7, #23] 15723 .L765: 7138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check a no-acknowledge have been detected */ 7141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) 15724 .loc 1 7141 11 15725 0054 FB68 ldr r3, [r7, #12] 15726 0056 1B68 ldr r3, [r3] 15727 0058 9B69 ldr r3, [r3, #24] 15728 005a 03F01003 and r3, r3, #16 15729 .loc 1 7141 10 15730 005e 102B cmp r3, #16 15731 0060 21D1 bne .L766 7142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 15732 .loc 1 7143 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 405 15733 0062 FB68 ldr r3, [r7, #12] 15734 0064 1B68 ldr r3, [r3] 15735 0066 1022 movs r2, #16 15736 0068 DA61 str r2, [r3, #28] 7144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_AF; 15737 .loc 1 7144 25 15738 006a FB68 ldr r3, [r7, #12] 15739 006c 0422 movs r2, #4 15740 006e 5A64 str r2, [r3, #68] 7145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 7147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 15741 .loc 1 7147 9 15742 0070 FB68 ldr r3, [r7, #12] 15743 0072 1B68 ldr r3, [r3] 15744 0074 2022 movs r2, #32 15745 0076 DA61 str r2, [r3, #28] 7148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 7150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 15746 .loc 1 7150 9 15747 0078 FB68 ldr r3, [r7, #12] 15748 007a 1B68 ldr r3, [r3] 15749 007c 5968 ldr r1, [r3, #4] 15750 007e FB68 ldr r3, [r7, #12] 15751 0080 1A68 ldr r2, [r3] 15752 0082 244B ldr r3, .L771 15753 0084 0B40 ands r3, r3, r1 15754 0086 5360 str r3, [r2, #4] 7151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 15755 .loc 1 7152 21 15756 0088 FB68 ldr r3, [r7, #12] 15757 008a 2022 movs r2, #32 15758 008c 83F84120 strb r2, [r3, #65] 7153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 15759 .loc 1 7153 20 15760 0090 FB68 ldr r3, [r7, #12] 15761 0092 0022 movs r2, #0 15762 0094 83F84220 strb r2, [r3, #66] 7154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 15763 .loc 1 7156 9 15764 0098 FB68 ldr r3, [r7, #12] 15765 009a 0022 movs r2, #0 15766 009c 83F84020 strb r2, [r3, #64] 7157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 15767 .loc 1 7158 16 15768 00a0 0123 movs r3, #1 15769 00a2 FB75 strb r3, [r7, #23] 15770 00a4 02E0 b .L764 15771 .L766: 7159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 7161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 406 7162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; 15772 .loc 1 7162 25 15773 00a6 FB68 ldr r3, [r7, #12] 15774 00a8 0022 movs r2, #0 15775 00aa 5A64 str r2, [r3, #68] 15776 .L764: 7163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) && (status == HAL_OK)) 15777 .loc 1 7167 12 15778 00ac FFF7FEFF bl HAL_GetTick 15779 00b0 0246 mov r2, r0 15780 .loc 1 7167 26 15781 00b2 7B68 ldr r3, [r7, #4] 15782 00b4 D31A subs r3, r2, r3 15783 .loc 1 7167 8 15784 00b6 BA68 ldr r2, [r7, #8] 15785 00b8 9A42 cmp r2, r3 15786 00ba 02D3 bcc .L767 15787 .loc 1 7167 50 discriminator 2 15788 00bc BB68 ldr r3, [r7, #8] 15789 00be 002B cmp r3, #0 15790 00c0 19D1 bne .L762 15791 .L767: 15792 .loc 1 7167 70 discriminator 3 15793 00c2 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 15794 00c4 002B cmp r3, #0 15795 00c6 16D1 bne .L762 7168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) 15796 .loc 1 7169 12 15797 00c8 FB68 ldr r3, [r7, #12] 15798 00ca 1B68 ldr r3, [r3] 15799 00cc 9B69 ldr r3, [r3, #24] 15800 00ce 03F00403 and r3, r3, #4 15801 .loc 1 7169 10 15802 00d2 042B cmp r3, #4 15803 00d4 0FD0 beq .L762 7170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; 15804 .loc 1 7171 25 15805 00d6 FB68 ldr r3, [r7, #12] 15806 00d8 5B6C ldr r3, [r3, #68] 15807 00da 43F02002 orr r2, r3, #32 15808 00de FB68 ldr r3, [r7, #12] 15809 00e0 5A64 str r2, [r3, #68] 7172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 15810 .loc 1 7172 21 15811 00e2 FB68 ldr r3, [r7, #12] 15812 00e4 2022 movs r2, #32 15813 00e6 83F84120 strb r2, [r3, #65] 7173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 15814 .loc 1 7175 9 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 407 15815 00ea FB68 ldr r3, [r7, #12] 15816 00ec 0022 movs r2, #0 15817 00ee 83F84020 strb r2, [r3, #64] 7176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 15818 .loc 1 7177 16 15819 00f2 0123 movs r3, #1 15820 00f4 FB75 strb r3, [r7, #23] 15821 .L762: 7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15822 .loc 1 7120 11 15823 00f6 FB68 ldr r3, [r7, #12] 15824 00f8 1B68 ldr r3, [r3] 15825 00fa 9B69 ldr r3, [r3, #24] 15826 00fc 03F00403 and r3, r3, #4 7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15827 .loc 1 7120 9 15828 0100 042B cmp r3, #4 15829 0102 02D0 beq .L768 7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15830 .loc 1 7120 61 discriminator 1 15831 0104 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 15832 0106 002B cmp r3, #0 15833 0108 83D0 beq .L769 15834 .L768: 7178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 15835 .loc 1 7181 10 15836 010a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 7182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 15837 .loc 1 7182 1 15838 010c 1846 mov r0, r3 15839 010e 1837 adds r7, r7, #24 15840 .LCFI394: 15841 .cfi_def_cfa_offset 8 15842 0110 BD46 mov sp, r7 15843 .LCFI395: 15844 .cfi_def_cfa_register 13 15845 @ sp needed 15846 0112 80BD pop {r7, pc} 15847 .L772: 15848 .align 2 15849 .L771: 15850 0114 00E800FE .word -33495040 15851 .cfi_endproc 15852 .LFE205: 15854 .section .text.I2C_IsErrorOccurred,"ax",%progbits 15855 .align 1 15856 .syntax unified 15857 .thumb 15858 .thumb_func 15860 I2C_IsErrorOccurred: 15861 .LFB206: 7183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 408 7185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles errors detection during an I2C Communication. 7186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration 7189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value 7190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status 7191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti 7193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15862 .loc 1 7193 1 15863 .cfi_startproc 15864 @ args = 0, pretend = 0, frame = 40 15865 @ frame_needed = 1, uses_anonymous_args = 0 15866 0000 80B5 push {r7, lr} 15867 .LCFI396: 15868 .cfi_def_cfa_offset 8 15869 .cfi_offset 7, -8 15870 .cfi_offset 14, -4 15871 0002 8AB0 sub sp, sp, #40 15872 .LCFI397: 15873 .cfi_def_cfa_offset 48 15874 0004 00AF add r7, sp, #0 15875 .LCFI398: 15876 .cfi_def_cfa_register 7 15877 0006 F860 str r0, [r7, #12] 15878 0008 B960 str r1, [r7, #8] 15879 000a 7A60 str r2, [r7, #4] 7194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; 15880 .loc 1 7194 21 15881 000c 0023 movs r3, #0 15882 000e 87F82730 strb r3, [r7, #39] 7195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; 15883 .loc 1 7195 27 15884 0012 FB68 ldr r3, [r7, #12] 15885 0014 1B68 ldr r3, [r3] 15886 .loc 1 7195 12 15887 0016 9B69 ldr r3, [r3, #24] 15888 0018 BB61 str r3, [r7, #24] 7196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t error_code = 0; 15889 .loc 1 7196 12 15890 001a 0023 movs r3, #0 15891 001c 3B62 str r3, [r7, #32] 7197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart = Tickstart; 15892 .loc 1 7197 12 15893 001e 7B68 ldr r3, [r7, #4] 15894 0020 FB61 str r3, [r7, #28] 7198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp1; 7199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp2; 7200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) 15895 .loc 1 7201 7 15896 0022 BB69 ldr r3, [r7, #24] 15897 0024 03F01003 and r3, r3, #16 15898 .loc 1 7201 6 15899 0028 002B cmp r3, #0 15900 002a 68D0 beq .L774 7202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 409 7203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACKF Flag */ 7204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); 15901 .loc 1 7204 5 15902 002c FB68 ldr r3, [r7, #12] 15903 002e 1B68 ldr r3, [r3] 15904 0030 1022 movs r2, #16 15905 0032 DA61 str r2, [r3, #28] 7205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP Flag is set or timeout occurred */ 7207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* AutoEnd should be initiate after AF */ 7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) 15906 .loc 1 7208 11 15907 0034 49E0 b .L775 15908 .L781: 7209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) 15909 .loc 1 7211 10 15910 0036 BB68 ldr r3, [r7, #8] 15911 0038 B3F1FF3F cmp r3, #-1 15912 003c 45D0 beq .L775 7212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) 15913 .loc 1 7213 15 15914 003e FFF7FEFF bl HAL_GetTick 15915 0042 0246 mov r2, r0 15916 .loc 1 7213 29 15917 0044 FB69 ldr r3, [r7, #28] 15918 0046 D31A subs r3, r2, r3 15919 .loc 1 7213 12 15920 0048 BA68 ldr r2, [r7, #8] 15921 004a 9A42 cmp r2, r3 15922 004c 02D3 bcc .L776 15923 .loc 1 7213 53 discriminator 1 15924 004e BB68 ldr r3, [r7, #8] 15925 0050 002B cmp r3, #0 15926 0052 3AD1 bne .L775 15927 .L776: 7214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); 15928 .loc 1 7215 33 15929 0054 FB68 ldr r3, [r7, #12] 15930 0056 1B68 ldr r3, [r3] 15931 .loc 1 7215 43 15932 0058 5B68 ldr r3, [r3, #4] 15933 .loc 1 7215 16 15934 005a 03F48043 and r3, r3, #16384 15935 005e 7B61 str r3, [r7, #20] 7216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = hi2c->Mode; 15936 .loc 1 7216 16 15937 0060 FB68 ldr r3, [r7, #12] 15938 0062 93F84230 ldrb r3, [r3, #66] 15939 0066 FB74 strb r3, [r7, #19] 7217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of I2C still busy, try to regenerate a STOP manually */ 7219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ 15940 .loc 1 7219 16 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 410 15941 0068 FB68 ldr r3, [r7, #12] 15942 006a 1B68 ldr r3, [r3] 15943 006c 9B69 ldr r3, [r3, #24] 15944 006e 03F40043 and r3, r3, #32768 15945 .loc 1 7219 14 15946 0072 B3F5004F cmp r3, #32768 15947 0076 21D1 bne .L778 15948 .loc 1 7219 66 discriminator 1 15949 0078 7B69 ldr r3, [r7, #20] 15950 007a B3F5804F cmp r3, #16384 15951 007e 1DD0 beq .L778 7220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ 15952 .loc 1 7220 38 15953 0080 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2 15954 0082 202B cmp r3, #32 15955 0084 1AD0 beq .L778 7221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp2 != HAL_I2C_MODE_SLAVE)) 7222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */ 7224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; 15956 .loc 1 7224 17 15957 0086 FB68 ldr r3, [r7, #12] 15958 0088 1B68 ldr r3, [r3] 15959 .loc 1 7224 33 15960 008a 5A68 ldr r2, [r3, #4] 15961 .loc 1 7224 17 15962 008c FB68 ldr r3, [r7, #12] 15963 008e 1B68 ldr r3, [r3] 15964 .loc 1 7224 33 15965 0090 42F48042 orr r2, r2, #16384 15966 0094 5A60 str r2, [r3, #4] 7225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Tick with new reference */ 7227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick(); 15967 .loc 1 7227 25 15968 0096 FFF7FEFF bl HAL_GetTick 15969 009a F861 str r0, [r7, #28] 7228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) 15970 .loc 1 7230 17 15971 009c 0EE0 b .L778 15972 .L779: 7231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */ 7233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) 15973 .loc 1 7233 18 15974 009e FFF7FEFF bl HAL_GetTick 15975 00a2 0246 mov r2, r0 15976 .loc 1 7233 32 15977 00a4 FB69 ldr r3, [r7, #28] 15978 00a6 D31A subs r3, r2, r3 15979 .loc 1 7233 16 15980 00a8 192B cmp r3, #25 15981 00aa 07D9 bls .L778 7234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_TIMEOUT; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 411 15982 .loc 1 7235 26 15983 00ac 3B6A ldr r3, [r7, #32] 15984 00ae 43F02003 orr r3, r3, #32 15985 00b2 3B62 str r3, [r7, #32] 7236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 15986 .loc 1 7237 22 15987 00b4 0123 movs r3, #1 15988 00b6 87F82730 strb r3, [r7, #39] 7238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break; 15989 .loc 1 7239 15 15990 00ba 06E0 b .L775 15991 .L778: 7230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15992 .loc 1 7230 18 15993 00bc FB68 ldr r3, [r7, #12] 15994 00be 1B68 ldr r3, [r3] 15995 00c0 9B69 ldr r3, [r3, #24] 15996 00c2 03F02003 and r3, r3, #32 7230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 15997 .loc 1 7230 17 15998 00c6 202B cmp r3, #32 15999 00c8 E9D1 bne .L779 16000 .L775: 7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16001 .loc 1 7208 13 16002 00ca FB68 ldr r3, [r7, #12] 16003 00cc 1B68 ldr r3, [r3] 16004 00ce 9B69 ldr r3, [r3, #24] 16005 00d0 03F02003 and r3, r3, #32 7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16006 .loc 1 7208 11 16007 00d4 202B cmp r3, #32 16008 00d6 03D0 beq .L780 7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16009 .loc 1 7208 64 discriminator 1 16010 00d8 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 16011 00dc 002B cmp r3, #0 16012 00de AAD0 beq .L781 16013 .L780: 7240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case STOP Flag is detected, clear it */ 7247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status == HAL_OK) 16014 .loc 1 7247 8 16015 00e0 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 16016 00e4 002B cmp r3, #0 16017 00e6 03D1 bne .L782 7248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */ 7250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); 16018 .loc 1 7250 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 412 16019 00e8 FB68 ldr r3, [r7, #12] 16020 00ea 1B68 ldr r3, [r3] 16021 00ec 2022 movs r2, #32 16022 00ee DA61 str r2, [r3, #28] 16023 .L782: 7251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_AF; 16024 .loc 1 7253 16 16025 00f0 3B6A ldr r3, [r7, #32] 16026 00f2 43F00403 orr r3, r3, #4 16027 00f6 3B62 str r3, [r7, #32] 7254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 16028 .loc 1 7255 12 16029 00f8 0123 movs r3, #1 16030 00fa 87F82730 strb r3, [r7, #39] 16031 .L774: 7256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Refresh Content of Status register */ 7259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** itflag = hi2c->Instance->ISR; 16032 .loc 1 7259 16 16033 00fe FB68 ldr r3, [r7, #12] 16034 0100 1B68 ldr r3, [r3] 16035 .loc 1 7259 10 16036 0102 9B69 ldr r3, [r3, #24] 16037 0104 BB61 str r3, [r7, #24] 7260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Then verify if an additional errors occurs */ 7262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a Bus error occurred */ 7263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) 16038 .loc 1 7263 7 16039 0106 BB69 ldr r3, [r7, #24] 16040 0108 03F48073 and r3, r3, #256 16041 .loc 1 7263 6 16042 010c 002B cmp r3, #0 16043 010e 0BD0 beq .L783 7264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_BERR; 16044 .loc 1 7265 16 16045 0110 3B6A ldr r3, [r7, #32] 16046 0112 43F00103 orr r3, r3, #1 16047 0116 3B62 str r3, [r7, #32] 7266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */ 7268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); 16048 .loc 1 7268 5 16049 0118 FB68 ldr r3, [r7, #12] 16050 011a 1B68 ldr r3, [r3] 16051 011c 4FF48072 mov r2, #256 16052 0120 DA61 str r2, [r3, #28] 7269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 16053 .loc 1 7270 12 16054 0122 0123 movs r3, #1 16055 0124 87F82730 strb r3, [r7, #39] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 413 16056 .L783: 7271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Over-Run/Under-Run error occurred */ 7274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) 16057 .loc 1 7274 7 16058 0128 BB69 ldr r3, [r7, #24] 16059 012a 03F48063 and r3, r3, #1024 16060 .loc 1 7274 6 16061 012e 002B cmp r3, #0 16062 0130 0BD0 beq .L784 7275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_OVR; 16063 .loc 1 7276 16 16064 0132 3B6A ldr r3, [r7, #32] 16065 0134 43F00803 orr r3, r3, #8 16066 0138 3B62 str r3, [r7, #32] 7277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */ 7279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); 16067 .loc 1 7279 5 16068 013a FB68 ldr r3, [r7, #12] 16069 013c 1B68 ldr r3, [r3] 16070 013e 4FF48062 mov r2, #1024 16071 0142 DA61 str r2, [r3, #28] 7280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; 16072 .loc 1 7281 12 16073 0144 0123 movs r3, #1 16074 0146 87F82730 strb r3, [r7, #39] 16075 .L784: 7282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Arbitration Loss error occurred */ 7285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) 16076 .loc 1 7285 7 16077 014a BB69 ldr r3, [r7, #24] 16078 014c 03F40073 and r3, r3, #512 16079 .loc 1 7285 6 16080 0150 002B cmp r3, #0 16081 0152 0BD0 beq .L785 7286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_ARLO; 16082 .loc 1 7287 16 16083 0154 3B6A ldr r3, [r7, #32] 16084 0156 43F00203 orr r3, r3, #2 16085 015a 3B62 str r3, [r7, #32] 7288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */ 7290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); 16086 .loc 1 7290 5 16087 015c FB68 ldr r3, [r7, #12] 16088 015e 1B68 ldr r3, [r3] 16089 0160 4FF40072 mov r2, #512 16090 0164 DA61 str r2, [r3, #28] 7291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR; ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 414 16091 .loc 1 7292 12 16092 0166 0123 movs r3, #1 16093 0168 87F82730 strb r3, [r7, #39] 16094 .L785: 7293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status != HAL_OK) 16095 .loc 1 7295 6 16096 016c 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 16097 0170 002B cmp r3, #0 16098 0172 1CD0 beq .L786 7296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */ 7298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); 16099 .loc 1 7298 5 16100 0174 F868 ldr r0, [r7, #12] 16101 0176 FFF7FEFF bl I2C_Flush_TXDR 7299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */ 7301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); 16102 .loc 1 7301 5 16103 017a FB68 ldr r3, [r7, #12] 16104 017c 1B68 ldr r3, [r3] 16105 017e 5968 ldr r1, [r3, #4] 16106 0180 FB68 ldr r3, [r7, #12] 16107 0182 1A68 ldr r2, [r3] 16108 0184 0D4B ldr r3, .L788 16109 0186 0B40 ands r3, r3, r1 16110 0188 5360 str r3, [r2, #4] 7302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= error_code; 16111 .loc 1 7303 21 16112 018a FB68 ldr r3, [r7, #12] 16113 018c 5A6C ldr r2, [r3, #68] 16114 018e 3B6A ldr r3, [r7, #32] 16115 0190 1A43 orrs r2, r2, r3 16116 0192 FB68 ldr r3, [r7, #12] 16117 0194 5A64 str r2, [r3, #68] 7304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; 16118 .loc 1 7304 17 16119 0196 FB68 ldr r3, [r7, #12] 16120 0198 2022 movs r2, #32 16121 019a 83F84120 strb r2, [r3, #65] 7305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; 16122 .loc 1 7305 16 16123 019e FB68 ldr r3, [r7, #12] 16124 01a0 0022 movs r2, #0 16125 01a2 83F84220 strb r2, [r3, #66] 7306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */ 7308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); 16126 .loc 1 7308 5 16127 01a6 FB68 ldr r3, [r7, #12] 16128 01a8 0022 movs r2, #0 16129 01aa 83F84020 strb r2, [r3, #64] 16130 .L786: 7309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 415 7310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status; 16131 .loc 1 7311 10 16132 01ae 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2 7312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16133 .loc 1 7312 1 16134 01b2 1846 mov r0, r3 16135 01b4 2837 adds r7, r7, #40 16136 .LCFI399: 16137 .cfi_def_cfa_offset 8 16138 01b6 BD46 mov sp, r7 16139 .LCFI400: 16140 .cfi_def_cfa_register 13 16141 @ sp needed 16142 01b8 80BD pop {r7, pc} 16143 .L789: 16144 01ba 00BF .align 2 16145 .L788: 16146 01bc 00E800FE .word -33495040 16147 .cfi_endproc 16148 .LFE206: 16150 .section .text.I2C_TransferConfig,"ax",%progbits 16151 .align 1 16152 .syntax unified 16153 .thumb 16154 .thumb_func 16156 I2C_TransferConfig: 16157 .LFB207: 7313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag ar 7316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 7317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Specifies the slave address to be programmed. 7318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Specifies the number of bytes to be programmed. 7319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter must be a value between 0 and 255. 7320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Mode New state of the I2C START condition generation. 7321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 7322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_RELOAD_MODE Enable Reload mode . 7323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. 7324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. 7325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Request New state of the I2C START condition generation. 7326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values: 7327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. 7328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). 7329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. 7330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. 7331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t 7334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Request) 7335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16158 .loc 1 7335 1 16159 .cfi_startproc 16160 @ args = 4, pretend = 0, frame = 24 16161 @ frame_needed = 1, uses_anonymous_args = 0 16162 0000 80B5 push {r7, lr} 16163 .LCFI401: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 416 16164 .cfi_def_cfa_offset 8 16165 .cfi_offset 7, -8 16166 .cfi_offset 14, -4 16167 0002 86B0 sub sp, sp, #24 16168 .LCFI402: 16169 .cfi_def_cfa_offset 32 16170 0004 00AF add r7, sp, #0 16171 .LCFI403: 16172 .cfi_def_cfa_register 7 16173 0006 F860 str r0, [r7, #12] 16174 0008 7B60 str r3, [r7, #4] 16175 000a 0B46 mov r3, r1 @ movhi 16176 000c 7B81 strh r3, [r7, #10] @ movhi 16177 000e 1346 mov r3, r2 16178 0010 7B72 strb r3, [r7, #9] 7336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */ 7337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 16179 .loc 1 7337 3 16180 0012 FB68 ldr r3, [r7, #12] 16181 0014 1B68 ldr r3, [r3] 16182 0016 2A4A ldr r2, .L794 16183 0018 9342 cmp r3, r2 16184 001a 09D0 beq .L791 16185 .loc 1 7337 3 is_stmt 0 discriminator 1 16186 001c FB68 ldr r3, [r7, #12] 16187 001e 1B68 ldr r3, [r3] 16188 0020 284A ldr r2, .L794+4 16189 0022 9342 cmp r3, r2 16190 0024 04D0 beq .L791 16191 .loc 1 7337 3 discriminator 2 16192 0026 41F6A941 movw r1, #7337 16193 002a 2748 ldr r0, .L794+8 16194 002c FFF7FEFF bl assert_failed 16195 .L791: 7338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_MODE(Mode)); 16196 .loc 1 7338 3 is_stmt 1 16197 0030 7B68 ldr r3, [r7, #4] 16198 0032 B3F1807F cmp r3, #16777216 16199 0036 0BD0 beq .L792 16200 .loc 1 7338 3 is_stmt 0 discriminator 1 16201 0038 7B68 ldr r3, [r7, #4] 16202 003a B3F1007F cmp r3, #33554432 16203 003e 07D0 beq .L792 16204 .loc 1 7338 3 discriminator 2 16205 0040 7B68 ldr r3, [r7, #4] 16206 0042 002B cmp r3, #0 16207 0044 04D0 beq .L792 16208 .loc 1 7338 3 discriminator 3 16209 0046 41F6AA41 movw r1, #7338 16210 004a 1F48 ldr r0, .L794+8 16211 004c FFF7FEFF bl assert_failed 16212 .L792: 7339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_REQUEST(Request)); 16213 .loc 1 7339 3 is_stmt 1 16214 0050 3B6A ldr r3, [r7, #32] 16215 0052 1E4A ldr r2, .L794+12 16216 0054 9342 cmp r3, r2 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 417 16217 0056 0FD0 beq .L793 16218 .loc 1 7339 3 is_stmt 0 discriminator 1 16219 0058 3B6A ldr r3, [r7, #32] 16220 005a 1D4A ldr r2, .L794+16 16221 005c 9342 cmp r3, r2 16222 005e 0BD0 beq .L793 16223 .loc 1 7339 3 discriminator 2 16224 0060 3B6A ldr r3, [r7, #32] 16225 0062 1C4A ldr r2, .L794+20 16226 0064 9342 cmp r3, r2 16227 0066 07D0 beq .L793 16228 .loc 1 7339 3 discriminator 3 16229 0068 3B6A ldr r3, [r7, #32] 16230 006a 002B cmp r3, #0 16231 006c 04D0 beq .L793 16232 .loc 1 7339 3 discriminator 4 16233 006e 41F6AB41 movw r1, #7339 16234 0072 1548 ldr r0, .L794+8 16235 0074 FFF7FEFF bl assert_failed 16236 .L793: 7340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ 7342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ 16237 .loc 1 7342 52 is_stmt 1 16238 0078 7B89 ldrh r3, [r7, #10] 16239 007a C3F30902 ubfx r2, r3, #0, #10 7343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 16240 .loc 1 7343 32 16241 007e 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2 16242 .loc 1 7343 47 16243 0080 1B04 lsls r3, r3, #16 16244 .loc 1 7343 70 16245 0082 03F47F03 and r3, r3, #16711680 7342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 16246 .loc 1 7342 68 16247 0086 1A43 orrs r2, r2, r3 16248 .loc 1 7343 88 16249 0088 7B68 ldr r3, [r7, #4] 16250 008a 1A43 orrs r2, r2, r3 7342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 16251 .loc 1 7342 19 16252 008c 3B6A ldr r3, [r7, #32] 16253 008e 1343 orrs r3, r3, r2 7342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ 16254 .loc 1 7342 12 16255 0090 23F00043 bic r3, r3, #-2147483648 16256 0094 7B61 str r3, [r7, #20] 7344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); 7345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* update CR2 register */ 7347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** MODIFY_REG(hi2c->Instance->CR2, \ 16257 .loc 1 7347 3 16258 0096 FB68 ldr r3, [r7, #12] 16259 0098 1B68 ldr r3, [r3] 16260 009a 5A68 ldr r2, [r3, #4] 16261 009c 3B6A ldr r3, [r7, #32] 16262 009e 5B0D lsrs r3, r3, #21 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 418 16263 00a0 03F48061 and r1, r3, #1024 16264 00a4 0C4B ldr r3, .L794+24 16265 00a6 0B43 orrs r3, r3, r1 16266 00a8 DB43 mvns r3, r3 16267 00aa 02EA0301 and r1, r2, r3 16268 00ae FB68 ldr r3, [r7, #12] 16269 00b0 1B68 ldr r3, [r3] 16270 00b2 7A69 ldr r2, [r7, #20] 16271 00b4 0A43 orrs r2, r2, r1 16272 00b6 5A60 str r2, [r3, #4] 7348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ 7349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ 7350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_CR2_START | I2C_CR2_STOP)), tmp); 7351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16273 .loc 1 7351 1 16274 00b8 00BF nop 16275 00ba 1837 adds r7, r7, #24 16276 .LCFI404: 16277 .cfi_def_cfa_offset 8 16278 00bc BD46 mov sp, r7 16279 .LCFI405: 16280 .cfi_def_cfa_register 13 16281 @ sp needed 16282 00be 80BD pop {r7, pc} 16283 .L795: 16284 .align 2 16285 .L794: 16286 00c0 00540040 .word 1073763328 16287 00c4 00580040 .word 1073764352 16288 00c8 00000000 .word .LC0 16289 00cc 00400080 .word -2147467264 16290 00d0 00240080 .word -2147474432 16291 00d4 00200080 .word -2147475456 16292 00d8 FF63FF03 .word 67068927 16293 .cfi_endproc 16294 .LFE207: 16296 .section .text.I2C_Enable_IRQ,"ax",%progbits 16297 .align 1 16298 .syntax unified 16299 .thumb 16300 .thumb_func 16302 I2C_Enable_IRQ: 16303 .LFB208: 7352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the enabling of Interrupts. 7355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. 7358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) 7361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16304 .loc 1 7361 1 16305 .cfi_startproc 16306 @ args = 0, pretend = 0, frame = 16 16307 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 419 16308 @ link register save eliminated. 16309 0000 80B4 push {r7} 16310 .LCFI406: 16311 .cfi_def_cfa_offset 4 16312 .cfi_offset 7, -4 16313 0002 85B0 sub sp, sp, #20 16314 .LCFI407: 16315 .cfi_def_cfa_offset 24 16316 0004 00AF add r7, sp, #0 16317 .LCFI408: 16318 .cfi_def_cfa_register 7 16319 0006 7860 str r0, [r7, #4] 16320 0008 0B46 mov r3, r1 16321 000a 7B80 strh r3, [r7, #2] @ movhi 7362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U; 16322 .loc 1 7362 12 16323 000c 0023 movs r3, #0 16324 000e FB60 str r3, [r7, #12] 7363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ 16325 .loc 1 7364 12 16326 0010 7B68 ldr r3, [r7, #4] 16327 0012 5B6B ldr r3, [r3, #52] 16328 .loc 1 7364 6 16329 0014 394A ldr r2, .L809 16330 0016 9342 cmp r3, r2 16331 0018 32D0 beq .L797 7365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 16332 .loc 1 7365 12 discriminator 1 16333 001a 7B68 ldr r3, [r7, #4] 16334 001c 5B6B ldr r3, [r3, #52] 7364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 16335 .loc 1 7364 45 discriminator 1 16336 001e 384A ldr r2, .L809+4 16337 0020 9342 cmp r3, r2 16338 0022 2DD0 beq .L797 7366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Mem_ISR_DMA)) 16339 .loc 1 7366 12 16340 0024 7B68 ldr r3, [r7, #4] 16341 0026 5B6B ldr r3, [r3, #52] 7365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ 16342 .loc 1 7365 44 16343 0028 364A ldr r2, .L809+8 16344 002a 9342 cmp r3, r2 16345 002c 28D0 beq .L797 7367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 16346 .loc 1 7368 49 16347 002e B7F90230 ldrsh r3, [r7, #2] 16348 .loc 1 7368 8 16349 0032 002B cmp r3, #0 16350 0034 03DA bge .L798 7369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ 7371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 16351 .loc 1 7371 14 16352 0036 FB68 ldr r3, [r7, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 420 16353 0038 43F0B803 orr r3, r3, #184 16354 003c FB60 str r3, [r7, #12] 16355 .L798: 7372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 16356 .loc 1 7374 27 16357 003e 7B88 ldrh r3, [r7, #2] 16358 0040 03F00103 and r3, r3, #1 16359 .loc 1 7374 8 16360 0044 002B cmp r3, #0 16361 0046 03D0 beq .L799 7375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ 7377: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; 16362 .loc 1 7377 14 16363 0048 FB68 ldr r3, [r7, #12] 16364 004a 43F0F203 orr r3, r3, #242 16365 004e FB60 str r3, [r7, #12] 16366 .L799: 7378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 16367 .loc 1 7380 27 16368 0050 7B88 ldrh r3, [r7, #2] 16369 0052 03F00203 and r3, r3, #2 16370 .loc 1 7380 8 16371 0056 002B cmp r3, #0 16372 0058 03D0 beq .L800 7381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ 7383: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; 16373 .loc 1 7383 14 16374 005a FB68 ldr r3, [r7, #12] 16375 005c 43F0F403 orr r3, r3, #244 16376 0060 FB60 str r3, [r7, #12] 16377 .L800: 7384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 16378 .loc 1 7386 8 16379 0062 7B88 ldrh r3, [r7, #2] 16380 0064 102B cmp r3, #16 16381 0066 03D1 bne .L801 7387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 7389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 16382 .loc 1 7389 14 16383 0068 FB68 ldr r3, [r7, #12] 16384 006a 43F09003 orr r3, r3, #144 16385 006e FB60 str r3, [r7, #12] 16386 .L801: 7390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) 16387 .loc 1 7392 8 16388 0070 7B88 ldrh r3, [r7, #2] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 421 16389 0072 202B cmp r3, #32 16390 0074 33D1 bne .L803 7393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; 16391 .loc 1 7395 14 16392 0076 FB68 ldr r3, [r7, #12] 16393 0078 43F02003 orr r3, r3, #32 16394 007c FB60 str r3, [r7, #12] 7392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16395 .loc 1 7392 8 16396 007e 2EE0 b .L803 16397 .L797: 7396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 7400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 16398 .loc 1 7401 49 16399 0080 B7F90230 ldrsh r3, [r7, #2] 16400 .loc 1 7401 8 16401 0084 002B cmp r3, #0 16402 0086 03DA bge .L804 7402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ 7404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 16403 .loc 1 7404 14 16404 0088 FB68 ldr r3, [r7, #12] 16405 008a 43F0B803 orr r3, r3, #184 16406 008e FB60 str r3, [r7, #12] 16407 .L804: 7405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 16408 .loc 1 7407 27 16409 0090 7B88 ldrh r3, [r7, #2] 16410 0092 03F00103 and r3, r3, #1 16411 .loc 1 7407 8 16412 0096 002B cmp r3, #0 16413 0098 03D0 beq .L805 7408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ 7410: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; 16414 .loc 1 7410 14 16415 009a FB68 ldr r3, [r7, #12] 16416 009c 43F0F203 orr r3, r3, #242 16417 00a0 FB60 str r3, [r7, #12] 16418 .L805: 7411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 16419 .loc 1 7413 27 16420 00a2 7B88 ldrh r3, [r7, #2] 16421 00a4 03F00203 and r3, r3, #2 16422 .loc 1 7413 8 16423 00a8 002B cmp r3, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 422 16424 00aa 03D0 beq .L806 7414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ 7416: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; 16425 .loc 1 7416 14 16426 00ac FB68 ldr r3, [r7, #12] 16427 00ae 43F0F403 orr r3, r3, #244 16428 00b2 FB60 str r3, [r7, #12] 16429 .L806: 7417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 16430 .loc 1 7419 8 16431 00b4 7B88 ldrh r3, [r7, #2] 16432 00b6 102B cmp r3, #16 16433 00b8 03D1 bne .L807 7420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ 7422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 16434 .loc 1 7422 14 16435 00ba FB68 ldr r3, [r7, #12] 16436 00bc 43F09003 orr r3, r3, #144 16437 00c0 FB60 str r3, [r7, #12] 16438 .L807: 7423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) 16439 .loc 1 7425 8 16440 00c2 7B88 ldrh r3, [r7, #2] 16441 00c4 202B cmp r3, #32 16442 00c6 03D1 bne .L808 7426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); 16443 .loc 1 7428 14 16444 00c8 FB68 ldr r3, [r7, #12] 16445 00ca 43F06003 orr r3, r3, #96 16446 00ce FB60 str r3, [r7, #12] 16447 .L808: 7429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT) 16448 .loc 1 7431 8 16449 00d0 7B88 ldrh r3, [r7, #2] 16450 00d2 402B cmp r3, #64 16451 00d4 03D1 bne .L803 7432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 7434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; 16452 .loc 1 7434 14 16453 00d6 FB68 ldr r3, [r7, #12] 16454 00d8 43F04003 orr r3, r3, #64 16455 00dc FB60 str r3, [r7, #12] 16456 .L803: 7435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 423 7438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable interrupts only at the end */ 7439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid the risk of I2C interrupt handle execution before */ 7440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all interrupts requested done */ 7441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE_IT(hi2c, tmpisr); 16457 .loc 1 7441 3 16458 00de 7B68 ldr r3, [r7, #4] 16459 00e0 1B68 ldr r3, [r3] 16460 00e2 1968 ldr r1, [r3] 16461 00e4 7B68 ldr r3, [r7, #4] 16462 00e6 1B68 ldr r3, [r3] 16463 00e8 FA68 ldr r2, [r7, #12] 16464 00ea 0A43 orrs r2, r2, r1 16465 00ec 1A60 str r2, [r3] 7442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16466 .loc 1 7442 1 16467 00ee 00BF nop 16468 00f0 1437 adds r7, r7, #20 16469 .LCFI409: 16470 .cfi_def_cfa_offset 4 16471 00f2 BD46 mov sp, r7 16472 .LCFI410: 16473 .cfi_def_cfa_register 13 16474 @ sp needed 16475 00f4 5DF8047B ldr r7, [sp], #4 16476 .LCFI411: 16477 .cfi_restore 7 16478 .cfi_def_cfa_offset 0 16479 00f8 7047 bx lr 16480 .L810: 16481 00fa 00BF .align 2 16482 .L809: 16483 00fc 00000000 .word I2C_Master_ISR_DMA 16484 0100 00000000 .word I2C_Slave_ISR_DMA 16485 0104 00000000 .word I2C_Mem_ISR_DMA 16486 .cfi_endproc 16487 .LFE208: 16489 .section .text.I2C_Disable_IRQ,"ax",%progbits 16490 .align 1 16491 .syntax unified 16492 .thumb 16493 .thumb_func 16495 I2C_Disable_IRQ: 16496 .LFB209: 7443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the disabling of Interrupts. 7446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 7447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C. 7448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. 7449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) 7452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16497 .loc 1 7452 1 16498 .cfi_startproc 16499 @ args = 0, pretend = 0, frame = 16 16500 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 424 16501 @ link register save eliminated. 16502 0000 80B4 push {r7} 16503 .LCFI412: 16504 .cfi_def_cfa_offset 4 16505 .cfi_offset 7, -4 16506 0002 85B0 sub sp, sp, #20 16507 .LCFI413: 16508 .cfi_def_cfa_offset 24 16509 0004 00AF add r7, sp, #0 16510 .LCFI414: 16511 .cfi_def_cfa_register 7 16512 0006 7860 str r0, [r7, #4] 16513 0008 0B46 mov r3, r1 16514 000a 7B80 strh r3, [r7, #2] @ movhi 7453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U; 16515 .loc 1 7453 12 16516 000c 0023 movs r3, #0 16517 000e FB60 str r3, [r7, #12] 7454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) 16518 .loc 1 7455 25 16519 0010 7B88 ldrh r3, [r7, #2] 16520 0012 03F00103 and r3, r3, #1 16521 .loc 1 7455 6 16522 0016 002B cmp r3, #0 16523 0018 0FD0 beq .L812 7456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and TXI interrupts */ 7458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_TXI; 16524 .loc 1 7458 12 16525 001a FB68 ldr r3, [r7, #12] 16526 001c 43F04203 orr r3, r3, #66 16527 0020 FB60 str r3, [r7, #12] 7459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7460: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) 16528 .loc 1 7460 24 16529 0022 7B68 ldr r3, [r7, #4] 16530 0024 93F84130 ldrb r3, [r3, #65] 16531 0028 DBB2 uxtb r3, r3 16532 .loc 1 7460 32 16533 002a 03F02803 and r3, r3, #40 16534 .loc 1 7460 8 16535 002e 282B cmp r3, #40 16536 0030 03D0 beq .L812 7461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ 7463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 16537 .loc 1 7463 14 16538 0032 FB68 ldr r3, [r7, #12] 16539 0034 43F0B003 orr r3, r3, #176 16540 0038 FB60 str r3, [r7, #12] 16541 .L812: 7464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) 16542 .loc 1 7467 25 ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 425 16543 003a 7B88 ldrh r3, [r7, #2] 16544 003c 03F00203 and r3, r3, #2 16545 .loc 1 7467 6 16546 0040 002B cmp r3, #0 16547 0042 0FD0 beq .L813 7468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and RXI interrupts */ 7470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_RXI; 16548 .loc 1 7470 12 16549 0044 FB68 ldr r3, [r7, #12] 16550 0046 43F04403 orr r3, r3, #68 16551 004a FB60 str r3, [r7, #12] 7471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7472: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) 16552 .loc 1 7472 24 16553 004c 7B68 ldr r3, [r7, #4] 16554 004e 93F84130 ldrb r3, [r3, #65] 16555 0052 DBB2 uxtb r3, r3 16556 .loc 1 7472 32 16557 0054 03F02803 and r3, r3, #40 16558 .loc 1 7472 8 16559 0058 282B cmp r3, #40 16560 005a 03D0 beq .L813 7473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ 7475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 16561 .loc 1 7475 14 16562 005c FB68 ldr r3, [r7, #12] 16563 005e 43F0B003 orr r3, r3, #176 16564 0062 FB60 str r3, [r7, #12] 16565 .L813: 7476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) 16566 .loc 1 7479 47 16567 0064 B7F90230 ldrsh r3, [r7, #2] 16568 .loc 1 7479 6 16569 0068 002B cmp r3, #0 16570 006a 03DA bge .L814 7480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR, NACK and STOP interrupts */ 7482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; 16571 .loc 1 7482 12 16572 006c FB68 ldr r3, [r7, #12] 16573 006e 43F0B803 orr r3, r3, #184 16574 0072 FB60 str r3, [r7, #12] 16575 .L814: 7483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) 16576 .loc 1 7485 6 16577 0074 7B88 ldrh r3, [r7, #2] 16578 0076 102B cmp r3, #16 16579 0078 03D1 bne .L815 7486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 426 7488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; 16580 .loc 1 7488 12 16581 007a FB68 ldr r3, [r7, #12] 16582 007c 43F09003 orr r3, r3, #144 16583 0080 FB60 str r3, [r7, #12] 16584 .L815: 7489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) 16585 .loc 1 7491 6 16586 0082 7B88 ldrh r3, [r7, #2] 16587 0084 202B cmp r3, #32 16588 0086 03D1 bne .L816 7492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */ 7494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; 16589 .loc 1 7494 12 16590 0088 FB68 ldr r3, [r7, #12] 16591 008a 43F02003 orr r3, r3, #32 16592 008e FB60 str r3, [r7, #12] 16593 .L816: 7495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT) 16594 .loc 1 7497 6 16595 0090 7B88 ldrh r3, [r7, #2] 16596 0092 402B cmp r3, #64 16597 0094 03D1 bne .L817 7498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */ 7500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; 16598 .loc 1 7500 12 16599 0096 FB68 ldr r3, [r7, #12] 16600 0098 43F04003 orr r3, r3, #64 16601 009c FB60 str r3, [r7, #12] 16602 .L817: 7501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable interrupts only at the end */ 7504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid a breaking situation like at "t" time */ 7505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all disable interrupts request are not done */ 7506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, tmpisr); 16603 .loc 1 7506 3 16604 009e 7B68 ldr r3, [r7, #4] 16605 00a0 1B68 ldr r3, [r3] 16606 00a2 1968 ldr r1, [r3] 16607 00a4 FB68 ldr r3, [r7, #12] 16608 00a6 DA43 mvns r2, r3 16609 00a8 7B68 ldr r3, [r7, #4] 16610 00aa 1B68 ldr r3, [r3] 16611 00ac 0A40 ands r2, r2, r1 16612 00ae 1A60 str r2, [r3] 7507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16613 .loc 1 7507 1 16614 00b0 00BF nop 16615 00b2 1437 adds r7, r7, #20 16616 .LCFI415: ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 427 16617 .cfi_def_cfa_offset 4 16618 00b4 BD46 mov sp, r7 16619 .LCFI416: 16620 .cfi_def_cfa_register 13 16621 @ sp needed 16622 00b6 5DF8047B ldr r7, [sp], #4 16623 .LCFI417: 16624 .cfi_restore 7 16625 .cfi_def_cfa_offset 0 16626 00ba 7047 bx lr 16627 .cfi_endproc 16628 .LFE209: 16630 .section .text.I2C_ConvertOtherXferOptions,"ax",%progbits 16631 .align 1 16632 .syntax unified 16633 .thumb 16634 .thumb_func 16636 I2C_ConvertOtherXferOptions: 16637 .LFB210: 7508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** 7509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** 7510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. 7511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle. 7512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None 7513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */ 7514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) 7515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16638 .loc 1 7515 1 16639 .cfi_startproc 16640 @ args = 0, pretend = 0, frame = 8 16641 @ frame_needed = 1, uses_anonymous_args = 0 16642 @ link register save eliminated. 16643 0000 80B4 push {r7} 16644 .LCFI418: 16645 .cfi_def_cfa_offset 4 16646 .cfi_offset 7, -4 16647 0002 83B0 sub sp, sp, #12 16648 .LCFI419: 16649 .cfi_def_cfa_offset 16 16650 0004 00AF add r7, sp, #0 16651 .LCFI420: 16652 .cfi_def_cfa_register 7 16653 0006 7860 str r0, [r7, #4] 7516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if user set XferOptions to I2C_OTHER_FRAME */ 7517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ 7518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_FRAME */ 7519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_OTHER_FRAME) 16654 .loc 1 7519 11 16655 0008 7B68 ldr r3, [r7, #4] 16656 000a DB6A ldr r3, [r3, #44] 16657 .loc 1 7519 6 16658 000c AA2B cmp r3, #170 16659 000e 03D1 bne .L819 7520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_FRAME; 16660 .loc 1 7521 23 16661 0010 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 428 16662 0012 0022 movs r2, #0 16663 0014 DA62 str r2, [r3, #44] 7522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ 7524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ 7525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* then generate a stop condition at the end of transfer */ 7526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ 7527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) 7528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; 7530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else 7532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 7533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */ 7534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 7535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16664 .loc 1 7535 1 16665 0016 08E0 b .L821 16666 .L819: 7527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16667 .loc 1 7527 16 16668 0018 7B68 ldr r3, [r7, #4] 16669 001a DB6A ldr r3, [r3, #44] 7527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** { 16670 .loc 1 7527 11 16671 001c B3F52A4F cmp r3, #43520 16672 0020 03D1 bne .L821 7529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } 16673 .loc 1 7529 23 16674 0022 7B68 ldr r3, [r7, #4] 16675 0024 4FF00072 mov r2, #33554432 16676 0028 DA62 str r2, [r3, #44] 16677 .L821: 16678 .loc 1 7535 1 16679 002a 00BF nop 16680 002c 0C37 adds r7, r7, #12 16681 .LCFI421: 16682 .cfi_def_cfa_offset 4 16683 002e BD46 mov sp, r7 16684 .LCFI422: 16685 .cfi_def_cfa_register 13 16686 @ sp needed 16687 0030 5DF8047B ldr r7, [sp], #4 16688 .LCFI423: 16689 .cfi_restore 7 16690 .cfi_def_cfa_offset 0 16691 0034 7047 bx lr 16692 .cfi_endproc 16693 .LFE210: 16695 .text 16696 .Letext0: 16697 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 16698 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 16699 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 16700 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 16701 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 16702 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 429 16703 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_i2c.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 430 DEFINED SYMBOLS *ABS*:00000000 stm32f3xx_hal_i2c.c C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:20 .rodata:00000000 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:25 .text.HAL_I2C_Init:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:31 .text.HAL_I2C_Init:00000000 HAL_I2C_Init C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:518 .text.HAL_I2C_MspInit:00000000 HAL_I2C_MspInit C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:398 .text.HAL_I2C_Init:00000234 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:405 .text.HAL_I2C_DeInit:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:411 .text.HAL_I2C_DeInit:00000000 HAL_I2C_DeInit C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:560 .text.HAL_I2C_MspDeInit:00000000 HAL_I2C_MspDeInit C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:505 .text.HAL_I2C_DeInit:0000007c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:512 .text.HAL_I2C_MspInit:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:554 .text.HAL_I2C_MspDeInit:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:596 .text.HAL_I2C_Master_Transmit:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:602 .text.HAL_I2C_Master_Transmit:00000000 HAL_I2C_Master_Transmit C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15292 .text.I2C_WaitOnFlagUntilTimeout:00000000 I2C_WaitOnFlagUntilTimeout C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16156 .text.I2C_TransferConfig:00000000 I2C_TransferConfig C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15429 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 I2C_WaitOnTXISFlagUntilTimeout C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15544 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 I2C_WaitOnSTOPFlagUntilTimeout C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:970 .text.HAL_I2C_Master_Transmit:00000228 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:976 .text.HAL_I2C_Master_Receive:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:982 .text.HAL_I2C_Master_Receive:00000000 HAL_I2C_Master_Receive C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15655 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 I2C_WaitOnRXNEFlagUntilTimeout C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:1301 .text.HAL_I2C_Master_Receive:000001e4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:1307 .text.HAL_I2C_Slave_Transmit:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:1313 .text.HAL_I2C_Slave_Transmit:00000000 HAL_I2C_Slave_Transmit C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14669 .text.I2C_Flush_TXDR:00000000 I2C_Flush_TXDR C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:1766 .text.HAL_I2C_Slave_Receive:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:1772 .text.HAL_I2C_Slave_Receive:00000000 HAL_I2C_Slave_Receive C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2148 .text.HAL_I2C_Master_Transmit_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2154 .text.HAL_I2C_Master_Transmit_IT:00000000 HAL_I2C_Master_Transmit_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16302 .text.I2C_Enable_IRQ:00000000 I2C_Enable_IRQ C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2360 .text.HAL_I2C_Master_Transmit_IT:00000124 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10300 .text.I2C_Master_ISR_IT:00000000 I2C_Master_ISR_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2367 .text.HAL_I2C_Master_Receive_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2373 .text.HAL_I2C_Master_Receive_IT:00000000 HAL_I2C_Master_Receive_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2523 .text.HAL_I2C_Master_Receive_IT:000000d4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2530 .text.HAL_I2C_Slave_Transmit_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2536 .text.HAL_I2C_Slave_Transmit_IT:00000000 HAL_I2C_Slave_Transmit_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2692 .text.HAL_I2C_Slave_Transmit_IT:000000d4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11194 .text.I2C_Slave_ISR_IT:00000000 I2C_Slave_ISR_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2698 .text.HAL_I2C_Slave_Receive_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2704 .text.HAL_I2C_Slave_Receive_IT:00000000 HAL_I2C_Slave_Receive_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2819 .text.HAL_I2C_Slave_Receive_IT:00000098 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2825 .text.HAL_I2C_Master_Transmit_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:2831 .text.HAL_I2C_Master_Transmit_DMA:00000000 HAL_I2C_Master_Transmit_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3187 .text.HAL_I2C_Master_Transmit_DMA:00000210 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11555 .text.I2C_Master_ISR_DMA:00000000 I2C_Master_ISR_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14742 .text.I2C_DMAMasterTransmitCplt:00000000 I2C_DMAMasterTransmitCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15166 .text.I2C_DMAError:00000000 I2C_DMAError C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3197 .text.HAL_I2C_Master_Receive_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3203 .text.HAL_I2C_Master_Receive_DMA:00000000 HAL_I2C_Master_Receive_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3506 .text.HAL_I2C_Master_Receive_DMA:000001c8 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14944 .text.I2C_DMAMasterReceiveCplt:00000000 I2C_DMAMasterReceiveCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3516 .text.HAL_I2C_Slave_Transmit_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3522 .text.HAL_I2C_Slave_Transmit_DMA:00000000 HAL_I2C_Slave_Transmit_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3837 .text.HAL_I2C_Slave_Transmit_DMA:000001c8 $d ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 431 C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12357 .text.I2C_Slave_ISR_DMA:00000000 I2C_Slave_ISR_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14875 .text.I2C_DMASlaveTransmitCplt:00000000 I2C_DMASlaveTransmitCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3845 .text.HAL_I2C_Slave_Receive_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:3851 .text.HAL_I2C_Slave_Receive_DMA:00000000 HAL_I2C_Slave_Receive_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4092 .text.HAL_I2C_Slave_Receive_DMA:0000015c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15094 .text.I2C_DMASlaveReceiveCplt:00000000 I2C_DMASlaveReceiveCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4100 .text.HAL_I2C_Mem_Write:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4106 .text.HAL_I2C_Mem_Write:00000000 HAL_I2C_Mem_Write C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12672 .text.I2C_RequestMemoryWrite:00000000 I2C_RequestMemoryWrite C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4477 .text.HAL_I2C_Mem_Write:0000023c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4483 .text.HAL_I2C_Mem_Read:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4489 .text.HAL_I2C_Mem_Read:00000000 HAL_I2C_Mem_Read C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12809 .text.I2C_RequestMemoryRead:00000000 I2C_RequestMemoryRead C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4865 .text.HAL_I2C_Mem_Read:00000244 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4872 .text.HAL_I2C_Mem_Write_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:4878 .text.HAL_I2C_Mem_Write_IT:00000000 HAL_I2C_Mem_Write_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5076 .text.HAL_I2C_Mem_Write_IT:0000011c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10736 .text.I2C_Mem_ISR_IT:00000000 I2C_Mem_ISR_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5084 .text.HAL_I2C_Mem_Read_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5090 .text.HAL_I2C_Mem_Read_IT:00000000 HAL_I2C_Mem_Read_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5284 .text.HAL_I2C_Mem_Read_IT:00000114 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5292 .text.HAL_I2C_Mem_Write_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5298 .text.HAL_I2C_Mem_Write_DMA:00000000 HAL_I2C_Mem_Write_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5611 .text.HAL_I2C_Mem_Write_DMA:000001d0 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11908 .text.I2C_Mem_ISR_DMA:00000000 I2C_Mem_ISR_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5621 .text.HAL_I2C_Mem_Read_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5627 .text.HAL_I2C_Mem_Read_DMA:00000000 HAL_I2C_Mem_Read_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5940 .text.HAL_I2C_Mem_Read_DMA:000001cc $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5950 .text.HAL_I2C_IsDeviceReady:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:5956 .text.HAL_I2C_IsDeviceReady:00000000 HAL_I2C_IsDeviceReady C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6258 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6264 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 HAL_I2C_Master_Seq_Transmit_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16636 .text.I2C_ConvertOtherXferOptions:00000000 I2C_ConvertOtherXferOptions C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6567 .text.HAL_I2C_Master_Seq_Transmit_IT:000001b8 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6574 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6580 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 HAL_I2C_Master_Seq_Transmit_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6976 .text.HAL_I2C_Master_Seq_Transmit_DMA:0000024c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:6983 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000260 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7069 .text.HAL_I2C_Master_Seq_Transmit_DMA:000002e4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7074 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7080 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 HAL_I2C_Master_Seq_Receive_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7304 .text.HAL_I2C_Master_Seq_Receive_IT:00000144 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7311 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7317 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 HAL_I2C_Master_Seq_Receive_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7694 .text.HAL_I2C_Master_Seq_Receive_DMA:00000238 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7704 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7710 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 HAL_I2C_Slave_Seq_Transmit_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16495 .text.I2C_Disable_IRQ:00000000 I2C_Disable_IRQ C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7985 .text.HAL_I2C_Slave_Seq_Transmit_IT:000001a0 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15222 .text.I2C_DMAAbort:00000000 I2C_DMAAbort C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7992 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:7998 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 HAL_I2C_Slave_Seq_Transmit_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8449 .text.HAL_I2C_Slave_Seq_Transmit_DMA:000002b8 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8456 .text.HAL_I2C_Slave_Seq_Transmit_DMA:000002cc $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8472 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8478 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 HAL_I2C_Slave_Seq_Receive_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8753 .text.HAL_I2C_Slave_Seq_Receive_IT:000001a0 $d ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 432 C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8760 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:8766 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 HAL_I2C_Slave_Seq_Receive_DMA C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9217 .text.HAL_I2C_Slave_Seq_Receive_DMA:000002b8 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9224 .text.HAL_I2C_Slave_Seq_Receive_DMA:000002cc $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9240 .text.HAL_I2C_EnableListen_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9246 .text.HAL_I2C_EnableListen_IT:00000000 HAL_I2C_EnableListen_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9303 .text.HAL_I2C_EnableListen_IT:0000003c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9308 .text.HAL_I2C_DisableListen_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9314 .text.HAL_I2C_DisableListen_IT:00000000 HAL_I2C_DisableListen_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9395 .text.HAL_I2C_Master_Abort_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9401 .text.HAL_I2C_Master_Abort_IT:00000000 HAL_I2C_Master_Abort_IT C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9520 .text.HAL_I2C_Master_Abort_IT:000000a4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9525 .text.HAL_I2C_EV_IRQHandler:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9531 .text.HAL_I2C_EV_IRQHandler:00000000 HAL_I2C_EV_IRQHandler C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9591 .text.HAL_I2C_ER_IRQHandler:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9597 .text.HAL_I2C_ER_IRQHandler:00000000 HAL_I2C_ER_IRQHandler C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14255 .text.I2C_ITError:00000000 I2C_ITError C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9734 .text.HAL_I2C_MasterTxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9740 .text.HAL_I2C_MasterTxCpltCallback:00000000 HAL_I2C_MasterTxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9776 .text.HAL_I2C_MasterRxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9782 .text.HAL_I2C_MasterRxCpltCallback:00000000 HAL_I2C_MasterRxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9818 .text.HAL_I2C_SlaveTxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9824 .text.HAL_I2C_SlaveTxCpltCallback:00000000 HAL_I2C_SlaveTxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9860 .text.HAL_I2C_SlaveRxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9866 .text.HAL_I2C_SlaveRxCpltCallback:00000000 HAL_I2C_SlaveRxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9902 .text.HAL_I2C_AddrCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9908 .text.HAL_I2C_AddrCallback:00000000 HAL_I2C_AddrCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9948 .text.HAL_I2C_ListenCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9954 .text.HAL_I2C_ListenCpltCallback:00000000 HAL_I2C_ListenCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9990 .text.HAL_I2C_MemTxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:9996 .text.HAL_I2C_MemTxCpltCallback:00000000 HAL_I2C_MemTxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10032 .text.HAL_I2C_MemRxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10038 .text.HAL_I2C_MemRxCpltCallback:00000000 HAL_I2C_MemRxCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10074 .text.HAL_I2C_ErrorCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10080 .text.HAL_I2C_ErrorCallback:00000000 HAL_I2C_ErrorCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10116 .text.HAL_I2C_AbortCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10122 .text.HAL_I2C_AbortCpltCallback:00000000 HAL_I2C_AbortCpltCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10158 .text.HAL_I2C_GetState:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10164 .text.HAL_I2C_GetState:00000000 HAL_I2C_GetState C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10204 .text.HAL_I2C_GetMode:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10210 .text.HAL_I2C_GetMode:00000000 HAL_I2C_GetMode C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10250 .text.HAL_I2C_GetError:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10256 .text.HAL_I2C_GetError:00000000 HAL_I2C_GetError C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10295 .text.I2C_Master_ISR_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13129 .text.I2C_ITMasterSeqCplt:00000000 I2C_ITMasterSeqCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13369 .text.I2C_ITMasterCplt:00000000 I2C_ITMasterCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:10731 .text.I2C_Mem_ISR_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11123 .text.I2C_Mem_ISR_IT:00000240 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11127 .text.I2C_Mem_ISR_IT:00000248 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11189 .text.I2C_Slave_ISR_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13641 .text.I2C_ITSlaveCplt:00000000 I2C_ITSlaveCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14121 .text.I2C_ITListenCplt:00000000 I2C_ITListenCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13227 .text.I2C_ITSlaveSeqCplt:00000000 I2C_ITSlaveSeqCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12946 .text.I2C_ITAddrCplt:00000000 I2C_ITAddrCplt C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11550 .text.I2C_Master_ISR_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:11903 .text.I2C_Mem_ISR_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12309 .text.I2C_Mem_ISR_DMA:00000260 $d ARM GAS C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s page 433 C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12313 .text.I2C_Mem_ISR_DMA:00000268 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12352 .text.I2C_Slave_ISR_DMA:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12667 .text.I2C_RequestMemoryWrite:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12799 .text.I2C_RequestMemoryWrite:000000a4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12804 .text.I2C_RequestMemoryRead:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12936 .text.I2C_RequestMemoryRead:000000a4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:12941 .text.I2C_ITAddrCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13124 .text.I2C_ITMasterSeqCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13222 .text.I2C_ITSlaveSeqCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13364 .text.I2C_ITMasterCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13630 .text.I2C_ITMasterCplt:0000018c $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:13636 .text.I2C_ITSlaveCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14110 .text.I2C_ITSlaveCplt:000002cc $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14116 .text.I2C_ITListenCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14245 .text.I2C_ITListenCplt:000000a8 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14250 .text.I2C_ITError:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14595 .text.I2C_TreatErrorCallback:00000000 I2C_TreatErrorCallback C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14583 .text.I2C_ITError:000001d4 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14590 .text.I2C_TreatErrorCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14664 .text.I2C_Flush_TXDR:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14737 .text.I2C_DMAMasterTransmitCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14870 .text.I2C_DMASlaveTransmitCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:14939 .text.I2C_DMAMasterReceiveCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15089 .text.I2C_DMASlaveReceiveCplt:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15161 .text.I2C_DMAError:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15217 .text.I2C_DMAAbort:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15287 .text.I2C_WaitOnFlagUntilTimeout:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15860 .text.I2C_IsErrorOccurred:00000000 I2C_IsErrorOccurred C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15424 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15539 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15650 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15850 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000114 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:15855 .text.I2C_IsErrorOccurred:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16146 .text.I2C_IsErrorOccurred:000001bc $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16151 .text.I2C_TransferConfig:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16286 .text.I2C_TransferConfig:000000c0 $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16297 .text.I2C_Enable_IRQ:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16483 .text.I2C_Enable_IRQ:000000fc $d C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16490 .text.I2C_Disable_IRQ:00000000 $t C:\Users\zl835\AppData\Local\Temp\cceYMt2U.s:16631 .text.I2C_ConvertOtherXferOptions:00000000 $t UNDEFINED SYMBOLS assert_failed HAL_GetTick HAL_DMA_Start_IT HAL_DMA_Abort_IT HAL_DMA_GetState