mv-bms/Software/build/stm32f3xx_hal_i2c.lst

23905 lines
1.3 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ARM GAS /tmp/cc5G5cqz.s page 1
1 .cpu cortex-m4
2 .arch armv7e-m
3 .fpu fpv4-sp-d16
4 .eabi_attribute 27, 1
5 .eabi_attribute 28, 1
6 .eabi_attribute 20, 1
7 .eabi_attribute 21, 1
8 .eabi_attribute 23, 3
9 .eabi_attribute 24, 1
10 .eabi_attribute 25, 1
11 .eabi_attribute 26, 1
12 .eabi_attribute 30, 6
13 .eabi_attribute 34, 1
14 .eabi_attribute 18, 4
15 .file "stm32f3xx_hal_i2c.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c"
20 .section .text.HAL_I2C_Init,"ax",%progbits
21 .align 1
22 .global HAL_I2C_Init
23 .syntax unified
24 .thumb
25 .thumb_func
27 HAL_I2C_Init:
28 .LFB130:
1:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ******************************************************************************
3:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @file stm32f3xx_hal_i2c.c
4:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @author MCD Application Team
5:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C HAL module driver.
6:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This file provides firmware functions to manage the following
7:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * functionalities of the Inter Integrated Circuit (I2C) peripheral:
8:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + Initialization and de-initialization functions
9:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + IO operation functions
10:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * + Peripheral State and Errors functions
11:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
12:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ******************************************************************************
13:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @attention
14:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
15:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * Copyright (c) 2016 STMicroelectronics.
16:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * All rights reserved.
17:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
18:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This software is licensed under terms that can be found in the LICENSE file
19:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in the root directory of this software component.
20:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * If no LICENSE file comes with this software, it is provided AS-IS.
21:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
22:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ******************************************************************************
23:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim
24:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ==============================================================================
25:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### How to use this driver #####
26:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ==============================================================================
27:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
28:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The I2C HAL driver can be used as follows:
29:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
30:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Declare a I2C_HandleTypeDef handle structure, for example:
ARM GAS /tmp/cc5G5cqz.s page 2
31:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef hi2c;
32:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
33:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API:
34:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) Enable the I2Cx interface clock
35:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) I2C pins configuration
36:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the clock for the I2C GPIOs
37:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure I2C pins as alternate function open-drain
38:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) NVIC configuration if you need to use interrupt process
39:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the I2Cx interrupt priority
40:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the NVIC I2C IRQ Channel
41:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (##) DMA Configuration if you need to use DMA process
42:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Declare a DMA_HandleTypeDef handle structure for
43:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the transmit or receive channel
44:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Enable the DMAx interface clock using
45:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the DMA handle parameters
46:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the DMA Tx or Rx channel
47:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle
48:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on
49:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the DMA Tx or Rx channel
50:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
51:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addres
52:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure
53:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
54:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level H
55:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API.
56:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
57:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceRead
58:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
59:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) For I2C IO and IO MEM operations, three operation modes are available within this driver :
60:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
61:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Polling mode IO operation ***
62:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =================================
63:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
64:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit(
65:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive()
66:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit()
67:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive()
68:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
69:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Polling mode IO MEM operation ***
70:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =====================================
71:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
72:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_W
73:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_
74:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
75:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
76:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode IO operation ***
77:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===================================
78:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
79:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Trans
80:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can
81:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()
82:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receiv
83:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can
84:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
85:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmi
86:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can
87:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()
ARM GAS /tmp/cc5G5cqz.s page 3
88:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_
89:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can
90:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
91:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
92:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback()
93:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
94:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
95:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
96:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
97:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication
98:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
99:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode or DMA mode IO sequential operation ***
101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ==========================================================
102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (@) These interfaces allow to manage a sequential transfer with a repeated start condition
104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** when a direction change during transfer
105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) A specific option field manage the different steps of a sequential transfer
107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Option field values are defined through I2C_XFEROPTIONS and are listed below:
108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfac
109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** no sequential mode
110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start con
111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and data to transfer without a final stop condition
112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a
113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** start condition, address and data to transfer without a final stop cond
114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** an then permit a call the same master sequential interface several time
115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit
116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_D
117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart
118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th
119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfer
120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if no direction change and without a final stop condition in both cases
121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart
122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th
123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfer
124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if no direction change and with a final stop condition in both cases
125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a re
126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** after several call of the same master sequential interface several time
127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (link with option I2C_FIRST_AND_NEXT_FRAME).
128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Usage can, transfer several bytes one by one using
129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT
130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT
131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA
132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA
133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME.
134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit
135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Receive sequence permit to call the opposite interface Receive or Tra
136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** without stopping the communication and so generate a restart conditio
137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart c
138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** each call of the same master sequential
139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** interface.
140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Usage can, transfer several bytes one by one with a restart with slave
141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** each bytes using
142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT
143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT
144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA
ARM GAS /tmp/cc5G5cqz.s page 4
145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA
146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** with option I2C_FIRST_FRAME then I2C_OTHER_FRAME.
147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to
148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** generation of STOP condition.
149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Different sequential I2C interfaces are listed below:
151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using
152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA()
153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is execut
154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltC
155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using
156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA()
157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed
158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_A
160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT()
163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_DisableListen_IT()
164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can
165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code to check the Address Match Code and the transmission direction reques
166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (Write/Read).
167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can
168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ListenCpltCallback()
169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using
170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA()
171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is execute
172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCa
173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using
174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA()
175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed a
176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback()
179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication
181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Interrupt mode IO MEM operation ***
183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =======================================
184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address
186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Write_IT()
187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can
188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()
189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address
190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Read_IT()
191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can
192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()
193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback()
195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** DMA mode IO operation ***
197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ==============================
198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using
200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Transmit_DMA()
201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can
ARM GAS /tmp/cc5G5cqz.s page 5
202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()
203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode (DMA) using
204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Master_Receive_DMA()
205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can
206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using
208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Transmit_DMA()
209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can
210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()
211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using
212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Slave_Receive_DMA()
213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can
214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback()
217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication
222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** DMA mode IO MEM operation ***
224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =================================
225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using
227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Write_DMA()
228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can
229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()
230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using
231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_Mem_Read_DMA()
232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can
233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()
234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback()
236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** I2C HAL driver macros list ***
239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ==================================
240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Below the list of most used macros in I2C HAL driver.
242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE: Enable the I2C peripheral
244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE: Disable the I2C peripheral
245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode
246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not
247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag
248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt
249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt
250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *** Callback registration ***
252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** =============================================
253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** allows the user to configure dynamically the driver callbacks.
256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback()
257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to register an interrupt callback.
258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
ARM GAS /tmp/cc5G5cqz.s page 6
259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Function HAL_I2C_RegisterCallback() allows to register following callbacks:
260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer.
262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer.
263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer.
264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode.
265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer.
266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer.
267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection.
268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process.
269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init.
270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit.
271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This function takes as parameters the HAL peripheral handle, the Callback ID
272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and a pointer to the user callback function.
273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCall
275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Use function HAL_I2C_UnRegisterCallback to reset a callback to the default
277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** weak function.
278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and the Callback ID.
280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This function allows to reset following callbacks:
281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer.
283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer.
284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer.
285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode.
286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer.
287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer.
288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection.
289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process.
290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init.
291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit.
292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback().
294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET
296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** all callbacks are set to the corresponding weak functions:
297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback().
298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Exception done for MspInit and MspDeInit functions that are
299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when
300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** these callbacks are null (not registered beforehand).
301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit()
302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only.
305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Exception done MspInit/MspDeInit functions that can be registered/unregistered
306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state,
307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Then, the user first registers the MspInit/MspDeInit user callbacks
309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit()
310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or HAL_I2C_Init() function.
311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** not defined, the callback registration feature is not available and all callbacks
314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** are set to the corresponding weak functions.
315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 7
316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (@) You can refer to the I2C HAL driver header file for more useful macros
318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim
320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Includes ------------------------------------------------------------------*/
323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #include "stm32f3xx_hal.h"
324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup STM32F3xx_HAL_Driver
326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C I2C
330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C HAL module driver
331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #ifdef HAL_I2C_MODULE_ENABLED
335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private typedef -----------------------------------------------------------*/
337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define ------------------------------------------------------------*/
338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Private_Define I2C Private Define
340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */
343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */
344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */
345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */
346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */
347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */
348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TC (25U) /*!< 25 ms */
349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */
350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */
351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */
352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define MAX_NBYTE_SIZE 255U
354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define SLAVE_ADDR_SHIFT 7U
355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define SLAVE_ADDR_MSK 0x06U
356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define for @ref PreviousState usage */
358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \
359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_STATE_BUSY_RX) & \
360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY))))
361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Mask State define, keep only RX and TX bits */
362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE))
363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Default Value */
364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER))
366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Master Busy TX, combinaison of State LSB and Mode enum */
367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER))
369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Master Busy RX, combinaison of State LSB and Mode enum */
370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE))
372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Slave Busy TX, combinaison of State LSB and Mode enum */
ARM GAS /tmp/cc5G5cqz.s page 8
373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE))
375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Slave Busy RX, combinaison of State LSB and Mode enum */
376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM))
378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Memory Busy TX, combinaison of State LSB and Mode enum */
379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM))
381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*!< Memory Busy RX, combinaison of State LSB and Mode enum */
382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define to centralize the enable/disable of Interrupts */
385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with
386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */
387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with
388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */
389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2
390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and @ref I2C_XFER_RX_IT */
391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of glo
393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and NACK treatment */
394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evene
395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of
396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private define Sequential Transfer Options default/reset value */
398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_NO_OPTION_FRAME (0xFFFF0000U)
399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private macros ------------------------------------------------------------*/
404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup I2C_Private_Macro
405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Macro to get remaining data to transfer on DMA side */
408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__)
409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private variables ---------------------------------------------------------*/
414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function prototypes -----------------------------------------------*/
415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Private_Functions I2C Private Functions
417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle DMA transfer */
420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma);
421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma);
422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma);
423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma);
424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma);
425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma);
426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle IT transfer */
429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
ARM GAS /tmp/cc5G5cqz.s page 9
430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c);
431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c);
432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags);
435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle IT transfer */
438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t
440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T
443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions for I2C transfer IRQ handler */
446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources);
458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to handle flags during polling transfer */
460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta
461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart);
462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart);
470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private functions to centralize the enable/disable of Interrupts */
472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to treat different error callback */
476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c);
477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to flush TXDR register */
479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c);
480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to handle start, restart or stop a transfer */
482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Request);
484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Private function to Convert Specific options */
486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c);
ARM GAS /tmp/cc5G5cqz.s page 10
487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Exported functions --------------------------------------------------------*/
492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions I2C Exported Functions
494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions
498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initialization and Configuration functions
499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim
501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### Initialization and de-initialization functions #####
503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..] This subsection provides a set of functions allowing to initialize and
505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** deinitialize the I2Cx peripheral:
506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) User must Implement HAL_I2C_MspInit() function in which he configures
508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ).
509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Call the function HAL_I2C_Init() to configure the selected device with
511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the selected configuration:
512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Clock Timing
513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 1
514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Addressing mode (Master, Slave)
515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Dual Addressing mode
516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 2
517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Own Address 2 Mask
518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) General call mode
519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Nostretch mode
520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (+) Call the function HAL_I2C_DeInit() to restore the default configuration
522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** of the selected I2Cx peripheral.
523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim
525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initializes the I2C according to the specified parameters
530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in the I2C_InitTypeDef and initialize the associated handle.
531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
29 .loc 1 536 1
30 .cfi_startproc
31 @ args = 0, pretend = 0, frame = 8
32 @ frame_needed = 1, uses_anonymous_args = 0
33 0000 80B5 push {r7, lr}
34 .cfi_def_cfa_offset 8
35 .cfi_offset 7, -8
ARM GAS /tmp/cc5G5cqz.s page 11
36 .cfi_offset 14, -4
37 0002 82B0 sub sp, sp, #8
38 .cfi_def_cfa_offset 16
39 0004 00AF add r7, sp, #0
40 .cfi_def_cfa_register 7
41 0006 7860 str r0, [r7, #4]
537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the I2C handle allocation */
538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c == NULL)
42 .loc 1 538 6
43 0008 7B68 ldr r3, [r7, #4]
44 000a 002B cmp r3, #0
45 000c 01D1 bne .L2
539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
46 .loc 1 540 12
47 000e 0123 movs r3, #1
48 0010 81E0 b .L3
49 .L2:
541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1));
546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode));
547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));
548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));
549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks));
550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));
551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode));
552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_RESET)
50 .loc 1 553 11
51 0012 7B68 ldr r3, [r7, #4]
52 0014 93F84130 ldrb r3, [r3, #65]
53 0018 DBB2 uxtb r3, r3
54 .loc 1 553 6
55 001a 002B cmp r3, #0
56 001c 06D1 bne .L4
554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Allocate lock resource and initialize it */
556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Lock = HAL_UNLOCKED;
57 .loc 1 556 16
58 001e 7B68 ldr r3, [r7, #4]
59 0020 0022 movs r2, #0
60 0022 83F84020 strb r2, [r3, #64]
557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the I2C Callback settings */
560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback
561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback
562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback
563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback
564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback
565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback
566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback
567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback
568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback
ARM GAS /tmp/cc5G5cqz.s page 12
569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback
570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->MspInitCallback == NULL)
572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */
574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback(hi2c);
578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MspInit(hi2c);
61 .loc 1 580 5
62 0026 7868 ldr r0, [r7, #4]
63 0028 FFF7FEFF bl HAL_I2C_MspInit
64 .L4:
581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY;
65 .loc 1 584 15
66 002c 7B68 ldr r3, [r7, #4]
67 002e 2422 movs r2, #36
68 0030 83F84120 strb r2, [r3, #65]
585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the selected I2C peripheral */
587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c);
69 .loc 1 587 3
70 0034 7B68 ldr r3, [r7, #4]
71 0036 1B68 ldr r3, [r3]
72 0038 1A68 ldr r2, [r3]
73 003a 7B68 ldr r3, [r7, #4]
74 003c 1B68 ldr r3, [r3]
75 003e 22F00102 bic r2, r2, #1
76 0042 1A60 str r2, [r3]
588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx TIMINGR Configuration ------------------*/
590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Frequency range */
591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK;
77 .loc 1 591 39
78 0044 7B68 ldr r3, [r7, #4]
79 0046 5A68 ldr r2, [r3, #4]
80 .loc 1 591 7
81 0048 7B68 ldr r3, [r7, #4]
82 004a 1B68 ldr r3, [r3]
83 .loc 1 591 47
84 004c 22F07062 bic r2, r2, #251658240
85 .loc 1 591 27
86 0050 1A61 str r2, [r3, #16]
592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx OAR1 Configuration ---------------------*/
594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Own Address1 before set the Own Address1 configuration */
595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN;
87 .loc 1 595 7
88 0052 7B68 ldr r3, [r7, #4]
89 0054 1B68 ldr r3, [r3]
90 .loc 1 595 17
ARM GAS /tmp/cc5G5cqz.s page 13
91 0056 9A68 ldr r2, [r3, #8]
92 .loc 1 595 7
93 0058 7B68 ldr r3, [r7, #4]
94 005a 1B68 ldr r3, [r3]
95 .loc 1 595 24
96 005c 22F40042 bic r2, r2, #32768
97 0060 9A60 str r2, [r3, #8]
596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Own Address1 and ack own address1 mode */
598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT)
98 .loc 1 598 17
99 0062 7B68 ldr r3, [r7, #4]
100 0064 DB68 ldr r3, [r3, #12]
101 .loc 1 598 6
102 0066 012B cmp r3, #1
103 0068 07D1 bne .L5
599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1);
104 .loc 1 600 56
105 006a 7B68 ldr r3, [r7, #4]
106 006c 9A68 ldr r2, [r3, #8]
107 .loc 1 600 9
108 006e 7B68 ldr r3, [r7, #4]
109 0070 1B68 ldr r3, [r3]
110 .loc 1 600 44
111 0072 42F40042 orr r2, r2, #32768
112 .loc 1 600 26
113 0076 9A60 str r2, [r3, #8]
114 0078 06E0 b .L6
115 .L5:
601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else /* I2C_ADDRESSINGMODE_10BIT */
603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1);
116 .loc 1 604 75
117 007a 7B68 ldr r3, [r7, #4]
118 007c 9A68 ldr r2, [r3, #8]
119 .loc 1 604 9
120 007e 7B68 ldr r3, [r7, #4]
121 0080 1B68 ldr r3, [r3]
122 .loc 1 604 63
123 0082 42F40442 orr r2, r2, #33792
124 .loc 1 604 26
125 0086 9A60 str r2, [r3, #8]
126 .L6:
605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx CR2 Configuration ----------------------*/
608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Addressing Master mode */
609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)
127 .loc 1 609 17
128 0088 7B68 ldr r3, [r7, #4]
129 008a DB68 ldr r3, [r3, #12]
130 .loc 1 609 6
131 008c 022B cmp r3, #2
132 008e 04D1 bne .L7
610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 14
611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 = (I2C_CR2_ADD10);
133 .loc 1 611 9
134 0090 7B68 ldr r3, [r7, #4]
135 0092 1B68 ldr r3, [r3]
136 .loc 1 611 25
137 0094 4FF40062 mov r2, #2048
138 0098 5A60 str r2, [r3, #4]
139 .L7:
612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */
614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK);
140 .loc 1 614 7
141 009a 7B68 ldr r3, [r7, #4]
142 009c 1B68 ldr r3, [r3]
143 .loc 1 614 17
144 009e 5B68 ldr r3, [r3, #4]
145 .loc 1 614 7
146 00a0 7A68 ldr r2, [r7, #4]
147 00a2 1268 ldr r2, [r2]
148 .loc 1 614 23
149 00a4 43F00073 orr r3, r3, #33554432
150 00a8 43F40043 orr r3, r3, #32768
151 00ac 5360 str r3, [r2, #4]
615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx OAR2 Configuration ---------------------*/
617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Own Address2 before set the Own Address2 configuration */
618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE;
152 .loc 1 618 7
153 00ae 7B68 ldr r3, [r7, #4]
154 00b0 1B68 ldr r3, [r3]
155 .loc 1 618 17
156 00b2 DA68 ldr r2, [r3, #12]
157 .loc 1 618 7
158 00b4 7B68 ldr r3, [r7, #4]
159 00b6 1B68 ldr r3, [r3]
160 .loc 1 618 24
161 00b8 22F40042 bic r2, r2, #32768
162 00bc DA60 str r2, [r3, #12]
619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Dual mode and Own Address2 */
621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \
163 .loc 1 621 37
164 00be 7B68 ldr r3, [r7, #4]
165 00c0 1A69 ldr r2, [r3, #16]
166 .loc 1 621 66
167 00c2 7B68 ldr r3, [r7, #4]
168 00c4 5B69 ldr r3, [r3, #20]
169 .loc 1 621 54
170 00c6 42EA0301 orr r1, r2, r3
622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8));
171 .loc 1 622 38
172 00ca 7B68 ldr r3, [r7, #4]
173 00cc 9B69 ldr r3, [r3, #24]
174 .loc 1 622 56
175 00ce 1A02 lsls r2, r3, #8
621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8));
176 .loc 1 621 7
ARM GAS /tmp/cc5G5cqz.s page 15
177 00d0 7B68 ldr r3, [r7, #4]
178 00d2 1B68 ldr r3, [r3]
621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8));
179 .loc 1 621 79
180 00d4 0A43 orrs r2, r2, r1
621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8));
181 .loc 1 621 24
182 00d6 DA60 str r2, [r3, #12]
623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /*---------------------------- I2Cx CR1 Configuration ----------------------*/
625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Configure I2Cx: Generalcall and NoStretch mode */
626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);
183 .loc 1 626 36
184 00d8 7B68 ldr r3, [r7, #4]
185 00da D969 ldr r1, [r3, #28]
186 .loc 1 626 65
187 00dc 7B68 ldr r3, [r7, #4]
188 00de 1A6A ldr r2, [r3, #32]
189 .loc 1 626 7
190 00e0 7B68 ldr r3, [r7, #4]
191 00e2 1B68 ldr r3, [r3]
192 .loc 1 626 53
193 00e4 0A43 orrs r2, r2, r1
194 .loc 1 626 23
195 00e6 1A60 str r2, [r3]
627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the selected I2C peripheral */
629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE(hi2c);
196 .loc 1 629 3
197 00e8 7B68 ldr r3, [r7, #4]
198 00ea 1B68 ldr r3, [r3]
199 00ec 1A68 ldr r2, [r3]
200 00ee 7B68 ldr r3, [r7, #4]
201 00f0 1B68 ldr r3, [r3]
202 00f2 42F00102 orr r2, r2, #1
203 00f6 1A60 str r2, [r3]
630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
204 .loc 1 631 19
205 00f8 7B68 ldr r3, [r7, #4]
206 00fa 0022 movs r2, #0
207 00fc 5A64 str r2, [r3, #68]
632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
208 .loc 1 632 15
209 00fe 7B68 ldr r3, [r7, #4]
210 0100 2022 movs r2, #32
211 0102 83F84120 strb r2, [r3, #65]
633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
212 .loc 1 633 23
213 0106 7B68 ldr r3, [r7, #4]
214 0108 0022 movs r2, #0
215 010a 1A63 str r2, [r3, #48]
634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
216 .loc 1 634 14
217 010c 7B68 ldr r3, [r7, #4]
218 010e 0022 movs r2, #0
219 0110 83F84220 strb r2, [r3, #66]
ARM GAS /tmp/cc5G5cqz.s page 16
635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
220 .loc 1 636 10
221 0114 0023 movs r3, #0
222 .L3:
637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
223 .loc 1 637 1
224 0116 1846 mov r0, r3
225 0118 0837 adds r7, r7, #8
226 .cfi_def_cfa_offset 8
227 011a BD46 mov sp, r7
228 .cfi_def_cfa_register 13
229 @ sp needed
230 011c 80BD pop {r7, pc}
231 .cfi_endproc
232 .LFE130:
234 .section .text.HAL_I2C_DeInit,"ax",%progbits
235 .align 1
236 .global HAL_I2C_DeInit
237 .syntax unified
238 .thumb
239 .thumb_func
241 HAL_I2C_DeInit:
242 .LFB131:
638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C peripheral.
641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
243 .loc 1 646 1
244 .cfi_startproc
245 @ args = 0, pretend = 0, frame = 8
246 @ frame_needed = 1, uses_anonymous_args = 0
247 0000 80B5 push {r7, lr}
248 .cfi_def_cfa_offset 8
249 .cfi_offset 7, -8
250 .cfi_offset 14, -4
251 0002 82B0 sub sp, sp, #8
252 .cfi_def_cfa_offset 16
253 0004 00AF add r7, sp, #0
254 .cfi_def_cfa_register 7
255 0006 7860 str r0, [r7, #4]
647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the I2C handle allocation */
648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c == NULL)
256 .loc 1 648 6
257 0008 7B68 ldr r3, [r7, #4]
258 000a 002B cmp r3, #0
259 000c 01D1 bne .L9
649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
260 .loc 1 650 12
261 000e 0123 movs r3, #1
262 0010 21E0 b .L10
ARM GAS /tmp/cc5G5cqz.s page 17
263 .L9:
651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY;
264 .loc 1 656 15
265 0012 7B68 ldr r3, [r7, #4]
266 0014 2422 movs r2, #36
267 0016 83F84120 strb r2, [r3, #65]
657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the I2C Peripheral Clock */
659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c);
268 .loc 1 659 3
269 001a 7B68 ldr r3, [r7, #4]
270 001c 1B68 ldr r3, [r3]
271 001e 1A68 ldr r2, [r3]
272 0020 7B68 ldr r3, [r7, #4]
273 0022 1B68 ldr r3, [r3]
274 0024 22F00102 bic r2, r2, #1
275 0028 1A60 str r2, [r3]
660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->MspDeInitCallback == NULL)
663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */
665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback(hi2c);
669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MspDeInit(hi2c);
276 .loc 1 671 3
277 002a 7868 ldr r0, [r7, #4]
278 002c FFF7FEFF bl HAL_I2C_MspDeInit
672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
279 .loc 1 674 19
280 0030 7B68 ldr r3, [r7, #4]
281 0032 0022 movs r2, #0
282 0034 5A64 str r2, [r3, #68]
675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET;
283 .loc 1 675 15
284 0036 7B68 ldr r3, [r7, #4]
285 0038 0022 movs r2, #0
286 003a 83F84120 strb r2, [r3, #65]
676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
287 .loc 1 676 23
288 003e 7B68 ldr r3, [r7, #4]
289 0040 0022 movs r2, #0
290 0042 1A63 str r2, [r3, #48]
677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
291 .loc 1 677 14
292 0044 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 18
293 0046 0022 movs r2, #0
294 0048 83F84220 strb r2, [r3, #66]
678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Release Lock */
680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
295 .loc 1 680 3
296 004c 7B68 ldr r3, [r7, #4]
297 004e 0022 movs r2, #0
298 0050 83F84020 strb r2, [r3, #64]
681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
299 .loc 1 682 10
300 0054 0023 movs r3, #0
301 .L10:
683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
302 .loc 1 683 1
303 0056 1846 mov r0, r3
304 0058 0837 adds r7, r7, #8
305 .cfi_def_cfa_offset 8
306 005a BD46 mov sp, r7
307 .cfi_def_cfa_register 13
308 @ sp needed
309 005c 80BD pop {r7, pc}
310 .cfi_endproc
311 .LFE131:
313 .section .text.HAL_I2C_MspInit,"ax",%progbits
314 .align 1
315 .weak HAL_I2C_MspInit
316 .syntax unified
317 .thumb
318 .thumb_func
320 HAL_I2C_MspInit:
321 .LFB132:
684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Initialize the I2C MSP.
687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
322 .loc 1 692 1
323 .cfi_startproc
324 @ args = 0, pretend = 0, frame = 8
325 @ frame_needed = 1, uses_anonymous_args = 0
326 @ link register save eliminated.
327 0000 80B4 push {r7}
328 .cfi_def_cfa_offset 4
329 .cfi_offset 7, -4
330 0002 83B0 sub sp, sp, #12
331 .cfi_def_cfa_offset 16
332 0004 00AF add r7, sp, #0
333 .cfi_def_cfa_register 7
334 0006 7860 str r0, [r7, #4]
693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
ARM GAS /tmp/cc5G5cqz.s page 19
695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspInit could be implemented in the user file
698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
335 .loc 1 699 1
336 0008 00BF nop
337 000a 0C37 adds r7, r7, #12
338 .cfi_def_cfa_offset 4
339 000c BD46 mov sp, r7
340 .cfi_def_cfa_register 13
341 @ sp needed
342 000e 5DF8047B ldr r7, [sp], #4
343 .cfi_restore 7
344 .cfi_def_cfa_offset 0
345 0012 7047 bx lr
346 .cfi_endproc
347 .LFE132:
349 .section .text.HAL_I2C_MspDeInit,"ax",%progbits
350 .align 1
351 .weak HAL_I2C_MspDeInit
352 .syntax unified
353 .thumb
354 .thumb_func
356 HAL_I2C_MspDeInit:
357 .LFB133:
700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DeInitialize the I2C MSP.
703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
358 .loc 1 708 1
359 .cfi_startproc
360 @ args = 0, pretend = 0, frame = 8
361 @ frame_needed = 1, uses_anonymous_args = 0
362 @ link register save eliminated.
363 0000 80B4 push {r7}
364 .cfi_def_cfa_offset 4
365 .cfi_offset 7, -4
366 0002 83B0 sub sp, sp, #12
367 .cfi_def_cfa_offset 16
368 0004 00AF add r7, sp, #0
369 .cfi_def_cfa_register 7
370 0006 7860 str r0, [r7, #4]
709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MspDeInit could be implemented in the user file
714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
371 .loc 1 715 1
372 0008 00BF nop
ARM GAS /tmp/cc5G5cqz.s page 20
373 000a 0C37 adds r7, r7, #12
374 .cfi_def_cfa_offset 4
375 000c BD46 mov sp, r7
376 .cfi_def_cfa_register 13
377 @ sp needed
378 000e 5DF8047B ldr r7, [sp], #4
379 .cfi_restore 7
380 .cfi_def_cfa_offset 0
381 0012 7047 bx lr
382 .cfi_endproc
383 .LFE133:
385 .section .text.HAL_I2C_Master_Transmit,"ax",%progbits
386 .align 1
387 .global HAL_I2C_Master_Transmit
388 .syntax unified
389 .thumb
390 .thumb_func
392 HAL_I2C_Master_Transmit:
393 .LFB134:
716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register a User I2C Callback
720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak predefined callback
721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RES
722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID.
723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be registered
726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values:
727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID
728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID
729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID
730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID
731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID
732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID
733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID
734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID
735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID
736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID
737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID
738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Callback function
739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb
742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** pI2C_CallbackTypeDef pCallback)
743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK;
745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL)
747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 21
754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State)
755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID)
757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = pCallback;
760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = pCallback;
764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = pCallback;
768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = pCallback;
772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID :
775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = pCallback;
776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = pCallback;
780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = pCallback;
784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID :
787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = pCallback;
788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID :
791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = pCallback;
792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID :
795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback;
796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID :
799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback;
800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default :
803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 22
811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State)
812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID)
814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID :
816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback;
817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID :
820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback;
821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default :
824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status;
842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Unregister an I2C Callback
846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * I2C callback is redirected to the weak predefined callback
847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_R
848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID.
849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param CallbackID ID of the callback to be unregistered
852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values:
853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values:
854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID
855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID
856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID
857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID
858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID
859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID
860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID
861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID
862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID
863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID
864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID
865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal
ARM GAS /tmp/cc5G5cqz.s page 23
868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK;
870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State)
872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID)
874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID :
876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallb
877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID :
880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallb
881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID :
884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallba
885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID :
888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallba
889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID :
892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallbac
893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID :
896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback
897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID :
900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback
901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID :
904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback
905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID :
908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback
909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID :
912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit
913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID :
916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit
917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default :
920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
ARM GAS /tmp/cc5G5cqz.s page 24
925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State)
929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** switch (CallbackID)
931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID :
933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit
934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID :
937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit
938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** default :
941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status;
959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Register the Slave Address Match I2C Callback
963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback
964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pCallback pointer to the Address Match Callback function
967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC
970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK;
972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (pCallback == NULL)
974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State)
ARM GAS /tmp/cc5G5cqz.s page 25
982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = pCallback;
984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status;
995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief UnRegister the Slave Address Match I2C Callback
999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined cal
1000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c)
1005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK;
1007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State)
1009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */
1011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update the error code */
1015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
1016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return error status */
1018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
1019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status;
1022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
1025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
1028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions
1031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Data transfers functions
1032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
1033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim
1034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
1035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### IO operation functions #####
1036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
1037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
1038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection provides a set of functions allowing to manage the I2C data
ARM GAS /tmp/cc5G5cqz.s page 26
1039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transfers.
1040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) There are two modes of transfer:
1042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) Blocking mode : The communication is performed in the polling mode.
1043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The status of all data processing is returned by the same function
1044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** after finishing transfer.
1045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) No-Blocking mode : The communication is performed using Interrupts
1046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** or DMA. These functions return the status of the transfer startup.
1047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** The end of the data processing will be indicated through the
1048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when
1049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** using DMA mode.
1050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) Blocking mode functions are :
1052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit()
1053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive()
1054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit()
1055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive()
1056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write()
1057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read()
1058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_IsDeviceReady()
1059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with Interrupt are :
1061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_IT()
1062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_IT()
1063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_IT()
1064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_IT()
1065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_IT()
1066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_IT()
1067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_IT()
1068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_IT()
1069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_IT()
1070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_IT()
1071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_EnableListen_IT()
1072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_DisableListen_IT()
1073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Abort_IT()
1074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) No-Blocking mode functions with DMA are :
1076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_DMA()
1077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_DMA()
1078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_DMA()
1079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_DMA()
1080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_DMA()
1081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_DMA()
1082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_DMA()
1083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_DMA()
1084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_DMA()
1085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_DMA()
1086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (#) A set of Transfer Complete Callbacks are provided in non Blocking mode:
1088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterTxCpltCallback()
1089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MasterRxCpltCallback()
1090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveTxCpltCallback()
1091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_SlaveRxCpltCallback()
1092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemTxCpltCallback()
1093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_MemRxCpltCallback()
1094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AddrCallback()
1095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ListenCpltCallback()
ARM GAS /tmp/cc5G5cqz.s page 27
1096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_ErrorCallback()
1097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (++) HAL_I2C_AbortCpltCallback()
1098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim
1100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
1101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in master mode an amount of data in blocking mode.
1105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
1108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
1109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
1112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD
1115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout)
1116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
394 .loc 1 1116 1
395 .cfi_startproc
396 @ args = 4, pretend = 0, frame = 24
397 @ frame_needed = 1, uses_anonymous_args = 0
398 0000 80B5 push {r7, lr}
399 .cfi_def_cfa_offset 8
400 .cfi_offset 7, -8
401 .cfi_offset 14, -4
402 0002 88B0 sub sp, sp, #32
403 .cfi_def_cfa_offset 40
404 0004 02AF add r7, sp, #8
405 .cfi_def_cfa 7, 32
406 0006 F860 str r0, [r7, #12]
407 0008 7A60 str r2, [r7, #4]
408 000a 1A46 mov r2, r3
409 000c 0B46 mov r3, r1 @ movhi
410 000e 7B81 strh r3, [r7, #10] @ movhi
411 0010 1346 mov r3, r2 @ movhi
412 0012 3B81 strh r3, [r7, #8] @ movhi
1117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
1118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
413 .loc 1 1119 11
414 0014 FB68 ldr r3, [r7, #12]
415 0016 93F84130 ldrb r3, [r3, #65]
416 001a DBB2 uxtb r3, r3
417 .loc 1 1119 6
418 001c 202B cmp r3, #32
419 001e 40F0DA80 bne .L14
1120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
420 .loc 1 1122 5
421 0022 FB68 ldr r3, [r7, #12]
422 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
423 0028 012B cmp r3, #1
ARM GAS /tmp/cc5G5cqz.s page 28
424 002a 01D1 bne .L15
425 .loc 1 1122 5 is_stmt 0 discriminator 1
426 002c 0223 movs r3, #2
427 .loc 1 1122 5
428 002e D3E0 b .L16
429 .L15:
430 .loc 1 1122 5 discriminator 2
431 0030 FB68 ldr r3, [r7, #12]
432 0032 0122 movs r2, #1
433 0034 83F84020 strb r2, [r3, #64]
1123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
1125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
434 .loc 1 1125 17 is_stmt 1
435 0038 FFF7FEFF bl HAL_GetTick
436 003c 7861 str r0, [r7, #20]
1126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK
437 .loc 1 1127 9
438 003e 7B69 ldr r3, [r7, #20]
439 0040 0093 str r3, [sp]
440 0042 1923 movs r3, #25
441 0044 0122 movs r2, #1
442 0046 4FF40041 mov r1, #32768
443 004a F868 ldr r0, [r7, #12]
444 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
445 0050 0346 mov r3, r0
446 .loc 1 1127 8 discriminator 1
447 0052 002B cmp r3, #0
448 0054 01D0 beq .L17
1128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
449 .loc 1 1129 14
450 0056 0123 movs r3, #1
451 0058 BEE0 b .L16
452 .L17:
1130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
453 .loc 1 1132 21
454 005a FB68 ldr r3, [r7, #12]
455 005c 2122 movs r2, #33
456 005e 83F84120 strb r2, [r3, #65]
1133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
457 .loc 1 1133 21
458 0062 FB68 ldr r3, [r7, #12]
459 0064 1022 movs r2, #16
460 0066 83F84220 strb r2, [r3, #66]
1134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
461 .loc 1 1134 21
462 006a FB68 ldr r3, [r7, #12]
463 006c 0022 movs r2, #0
464 006e 5A64 str r2, [r3, #68]
1135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
465 .loc 1 1137 21
ARM GAS /tmp/cc5G5cqz.s page 29
466 0070 FB68 ldr r3, [r7, #12]
467 0072 7A68 ldr r2, [r7, #4]
468 0074 5A62 str r2, [r3, #36]
1138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
469 .loc 1 1138 21
470 0076 FB68 ldr r3, [r7, #12]
471 0078 3A89 ldrh r2, [r7, #8] @ movhi
472 007a 5A85 strh r2, [r3, #42] @ movhi
1139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
473 .loc 1 1139 21
474 007c FB68 ldr r3, [r7, #12]
475 007e 0022 movs r2, #0
476 0080 5A63 str r2, [r3, #52]
1140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
1142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
1143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
477 .loc 1 1143 13
478 0082 FB68 ldr r3, [r7, #12]
479 0084 5B8D ldrh r3, [r3, #42] @ movhi
480 0086 9BB2 uxth r3, r3
481 .loc 1 1143 8
482 0088 FF2B cmp r3, #255
483 008a 0ED9 bls .L18
1144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
484 .loc 1 1145 22
485 008c FB68 ldr r3, [r7, #12]
486 008e FF22 movs r2, #255
487 0090 1A85 strh r2, [r3, #40] @ movhi
1146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
488 .loc 1 1146 57
489 0092 FB68 ldr r3, [r7, #12]
490 0094 1B8D ldrh r3, [r3, #40]
491 .loc 1 1146 7
492 0096 DAB2 uxtb r2, r3
493 0098 7989 ldrh r1, [r7, #10]
494 009a 514B ldr r3, .L27
495 009c 0093 str r3, [sp]
496 009e 4FF08073 mov r3, #16777216
497 00a2 F868 ldr r0, [r7, #12]
498 00a4 FFF7FEFF bl I2C_TransferConfig
499 00a8 6CE0 b .L20
500 .L18:
1147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE);
1148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
501 .loc 1 1151 28
502 00aa FB68 ldr r3, [r7, #12]
503 00ac 5B8D ldrh r3, [r3, #42] @ movhi
504 00ae 9AB2 uxth r2, r3
505 .loc 1 1151 22
506 00b0 FB68 ldr r3, [r7, #12]
507 00b2 1A85 strh r2, [r3, #40] @ movhi
1152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
ARM GAS /tmp/cc5G5cqz.s page 30
508 .loc 1 1152 57
509 00b4 FB68 ldr r3, [r7, #12]
510 00b6 1B8D ldrh r3, [r3, #40]
511 .loc 1 1152 7
512 00b8 DAB2 uxtb r2, r3
513 00ba 7989 ldrh r1, [r7, #10]
514 00bc 484B ldr r3, .L27
515 00be 0093 str r3, [sp]
516 00c0 4FF00073 mov r3, #33554432
517 00c4 F868 ldr r0, [r7, #12]
518 00c6 FFF7FEFF bl I2C_TransferConfig
1153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE);
1154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U)
519 .loc 1 1156 11
520 00ca 5BE0 b .L20
521 .L25:
1157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
1159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
522 .loc 1 1159 11
523 00cc 7A69 ldr r2, [r7, #20]
524 00ce 396A ldr r1, [r7, #32]
525 00d0 F868 ldr r0, [r7, #12]
526 00d2 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
527 00d6 0346 mov r3, r0
528 .loc 1 1159 10 discriminator 1
529 00d8 002B cmp r3, #0
530 00da 01D0 beq .L21
1160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
531 .loc 1 1161 16
532 00dc 0123 movs r3, #1
533 00de 7BE0 b .L16
534 .L21:
1162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
1164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
535 .loc 1 1164 35
536 00e0 FB68 ldr r3, [r7, #12]
537 00e2 5B6A ldr r3, [r3, #36]
538 .loc 1 1164 30
539 00e4 1A78 ldrb r2, [r3] @ zero_extendqisi2
540 .loc 1 1164 11
541 00e6 FB68 ldr r3, [r7, #12]
542 00e8 1B68 ldr r3, [r3]
543 .loc 1 1164 28
544 00ea 9A62 str r2, [r3, #40]
1165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
545 .loc 1 1167 11
546 00ec FB68 ldr r3, [r7, #12]
547 00ee 5B6A ldr r3, [r3, #36]
548 .loc 1 1167 21
549 00f0 5A1C adds r2, r3, #1
ARM GAS /tmp/cc5G5cqz.s page 31
550 00f2 FB68 ldr r3, [r7, #12]
551 00f4 5A62 str r2, [r3, #36]
1168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
552 .loc 1 1169 11
553 00f6 FB68 ldr r3, [r7, #12]
554 00f8 5B8D ldrh r3, [r3, #42] @ movhi
555 00fa 9BB2 uxth r3, r3
556 .loc 1 1169 22
557 00fc 013B subs r3, r3, #1
558 00fe 9AB2 uxth r2, r3
559 0100 FB68 ldr r3, [r7, #12]
560 0102 5A85 strh r2, [r3, #42] @ movhi
1170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
561 .loc 1 1170 11
562 0104 FB68 ldr r3, [r7, #12]
563 0106 1B8D ldrh r3, [r3, #40]
564 .loc 1 1170 21
565 0108 013B subs r3, r3, #1
566 010a 9AB2 uxth r2, r3
567 010c FB68 ldr r3, [r7, #12]
568 010e 1A85 strh r2, [r3, #40] @ movhi
1171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
569 .loc 1 1172 16
570 0110 FB68 ldr r3, [r7, #12]
571 0112 5B8D ldrh r3, [r3, #42] @ movhi
572 0114 9BB2 uxth r3, r3
573 .loc 1 1172 10
574 0116 002B cmp r3, #0
575 0118 34D0 beq .L20
576 .loc 1 1172 43 discriminator 1
577 011a FB68 ldr r3, [r7, #12]
578 011c 1B8D ldrh r3, [r3, #40]
579 .loc 1 1172 35 discriminator 1
580 011e 002B cmp r3, #0
581 0120 30D1 bne .L20
1173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */
1175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)
582 .loc 1 1175 13
583 0122 7B69 ldr r3, [r7, #20]
584 0124 0093 str r3, [sp]
585 0126 3B6A ldr r3, [r7, #32]
586 0128 0022 movs r2, #0
587 012a 8021 movs r1, #128
588 012c F868 ldr r0, [r7, #12]
589 012e FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
590 0132 0346 mov r3, r0
591 .loc 1 1175 12 discriminator 1
592 0134 002B cmp r3, #0
593 0136 01D0 beq .L23
1176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
594 .loc 1 1177 18
595 0138 0123 movs r3, #1
596 013a 4DE0 b .L16
ARM GAS /tmp/cc5G5cqz.s page 32
597 .L23:
1178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
598 .loc 1 1180 17
599 013c FB68 ldr r3, [r7, #12]
600 013e 5B8D ldrh r3, [r3, #42] @ movhi
601 0140 9BB2 uxth r3, r3
602 .loc 1 1180 12
603 0142 FF2B cmp r3, #255
604 0144 0ED9 bls .L24
1181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
605 .loc 1 1182 26
606 0146 FB68 ldr r3, [r7, #12]
607 0148 FF22 movs r2, #255
608 014a 1A85 strh r2, [r3, #40] @ movhi
1183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
609 .loc 1 1183 61
610 014c FB68 ldr r3, [r7, #12]
611 014e 1B8D ldrh r3, [r3, #40]
612 .loc 1 1183 11
613 0150 DAB2 uxtb r2, r3
614 0152 7989 ldrh r1, [r7, #10]
615 0154 0023 movs r3, #0
616 0156 0093 str r3, [sp]
617 0158 4FF08073 mov r3, #16777216
618 015c F868 ldr r0, [r7, #12]
619 015e FFF7FEFF bl I2C_TransferConfig
620 0162 0FE0 b .L20
621 .L24:
1184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
1185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
622 .loc 1 1188 32
623 0164 FB68 ldr r3, [r7, #12]
624 0166 5B8D ldrh r3, [r3, #42] @ movhi
625 0168 9AB2 uxth r2, r3
626 .loc 1 1188 26
627 016a FB68 ldr r3, [r7, #12]
628 016c 1A85 strh r2, [r3, #40] @ movhi
1189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
629 .loc 1 1189 61
630 016e FB68 ldr r3, [r7, #12]
631 0170 1B8D ldrh r3, [r3, #40]
632 .loc 1 1189 11
633 0172 DAB2 uxtb r2, r3
634 0174 7989 ldrh r1, [r7, #10]
635 0176 0023 movs r3, #0
636 0178 0093 str r3, [sp]
637 017a 4FF00073 mov r3, #33554432
638 017e F868 ldr r0, [r7, #12]
639 0180 FFF7FEFF bl I2C_TransferConfig
640 .L20:
1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 33
641 .loc 1 1156 16
642 0184 FB68 ldr r3, [r7, #12]
643 0186 5B8D ldrh r3, [r3, #42] @ movhi
644 0188 9BB2 uxth r3, r3
1156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
645 .loc 1 1156 28
646 018a 002B cmp r3, #0
647 018c 9ED1 bne .L25
1190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
1191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */
1196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */
1197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
648 .loc 1 1197 9
649 018e 7A69 ldr r2, [r7, #20]
650 0190 396A ldr r1, [r7, #32]
651 0192 F868 ldr r0, [r7, #12]
652 0194 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
653 0198 0346 mov r3, r0
654 .loc 1 1197 8 discriminator 1
655 019a 002B cmp r3, #0
656 019c 01D0 beq .L26
1198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
657 .loc 1 1199 14
658 019e 0123 movs r3, #1
659 01a0 1AE0 b .L16
660 .L26:
1200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
1203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
661 .loc 1 1203 5
662 01a2 FB68 ldr r3, [r7, #12]
663 01a4 1B68 ldr r3, [r3]
664 01a6 2022 movs r2, #32
665 01a8 DA61 str r2, [r3, #28]
1204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
1206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
666 .loc 1 1206 5
667 01aa FB68 ldr r3, [r7, #12]
668 01ac 1B68 ldr r3, [r3]
669 01ae 5968 ldr r1, [r3, #4]
670 01b0 FB68 ldr r3, [r7, #12]
671 01b2 1A68 ldr r2, [r3]
672 01b4 0B4B ldr r3, .L27+4
673 01b6 0B40 ands r3, r3, r1
674 01b8 5360 str r3, [r2, #4]
1207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
675 .loc 1 1208 17
676 01ba FB68 ldr r3, [r7, #12]
677 01bc 2022 movs r2, #32
ARM GAS /tmp/cc5G5cqz.s page 34
678 01be 83F84120 strb r2, [r3, #65]
1209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
679 .loc 1 1209 17
680 01c2 FB68 ldr r3, [r7, #12]
681 01c4 0022 movs r2, #0
682 01c6 83F84220 strb r2, [r3, #66]
1210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
683 .loc 1 1212 5
684 01ca FB68 ldr r3, [r7, #12]
685 01cc 0022 movs r2, #0
686 01ce 83F84020 strb r2, [r3, #64]
1213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
687 .loc 1 1214 12
688 01d2 0023 movs r3, #0
689 01d4 00E0 b .L16
690 .L14:
1215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
691 .loc 1 1218 12
692 01d6 0223 movs r3, #2
693 .L16:
1219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
694 .loc 1 1220 1
695 01d8 1846 mov r0, r3
696 01da 1837 adds r7, r7, #24
697 .cfi_def_cfa_offset 8
698 01dc BD46 mov sp, r7
699 .cfi_def_cfa_register 13
700 @ sp needed
701 01de 80BD pop {r7, pc}
702 .L28:
703 .align 2
704 .L27:
705 01e0 00200080 .word -2147475456
706 01e4 00E800FE .word -33495040
707 .cfi_endproc
708 .LFE134:
710 .section .text.HAL_I2C_Master_Receive,"ax",%progbits
711 .align 1
712 .global HAL_I2C_Master_Receive
713 .syntax unified
714 .thumb
715 .thumb_func
717 HAL_I2C_Master_Receive:
718 .LFB135:
1221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receives in master mode an amount of data in blocking mode.
1224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
ARM GAS /tmp/cc5G5cqz.s page 35
1227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
1228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
1231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa
1234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout)
1235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
719 .loc 1 1235 1
720 .cfi_startproc
721 @ args = 4, pretend = 0, frame = 24
722 @ frame_needed = 1, uses_anonymous_args = 0
723 0000 80B5 push {r7, lr}
724 .cfi_def_cfa_offset 8
725 .cfi_offset 7, -8
726 .cfi_offset 14, -4
727 0002 88B0 sub sp, sp, #32
728 .cfi_def_cfa_offset 40
729 0004 02AF add r7, sp, #8
730 .cfi_def_cfa 7, 32
731 0006 F860 str r0, [r7, #12]
732 0008 7A60 str r2, [r7, #4]
733 000a 1A46 mov r2, r3
734 000c 0B46 mov r3, r1 @ movhi
735 000e 7B81 strh r3, [r7, #10] @ movhi
736 0010 1346 mov r3, r2 @ movhi
737 0012 3B81 strh r3, [r7, #8] @ movhi
1236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
1237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
738 .loc 1 1238 11
739 0014 FB68 ldr r3, [r7, #12]
740 0016 93F84130 ldrb r3, [r3, #65]
741 001a DBB2 uxtb r3, r3
742 .loc 1 1238 6
743 001c 202B cmp r3, #32
744 001e 40F0DB80 bne .L30
1239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
745 .loc 1 1241 5
746 0022 FB68 ldr r3, [r7, #12]
747 0024 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
748 0028 012B cmp r3, #1
749 002a 01D1 bne .L31
750 .loc 1 1241 5 is_stmt 0 discriminator 1
751 002c 0223 movs r3, #2
752 .loc 1 1241 5
753 002e D4E0 b .L32
754 .L31:
755 .loc 1 1241 5 discriminator 2
756 0030 FB68 ldr r3, [r7, #12]
757 0032 0122 movs r2, #1
758 0034 83F84020 strb r2, [r3, #64]
1242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
ARM GAS /tmp/cc5G5cqz.s page 36
1244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
759 .loc 1 1244 17 is_stmt 1
760 0038 FFF7FEFF bl HAL_GetTick
761 003c 7861 str r0, [r7, #20]
1245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK
762 .loc 1 1246 9
763 003e 7B69 ldr r3, [r7, #20]
764 0040 0093 str r3, [sp]
765 0042 1923 movs r3, #25
766 0044 0122 movs r2, #1
767 0046 4FF40041 mov r1, #32768
768 004a F868 ldr r0, [r7, #12]
769 004c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
770 0050 0346 mov r3, r0
771 .loc 1 1246 8 discriminator 1
772 0052 002B cmp r3, #0
773 0054 01D0 beq .L33
1247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
774 .loc 1 1248 14
775 0056 0123 movs r3, #1
776 0058 BFE0 b .L32
777 .L33:
1249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
778 .loc 1 1251 21
779 005a FB68 ldr r3, [r7, #12]
780 005c 2222 movs r2, #34
781 005e 83F84120 strb r2, [r3, #65]
1252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
782 .loc 1 1252 21
783 0062 FB68 ldr r3, [r7, #12]
784 0064 1022 movs r2, #16
785 0066 83F84220 strb r2, [r3, #66]
1253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
786 .loc 1 1253 21
787 006a FB68 ldr r3, [r7, #12]
788 006c 0022 movs r2, #0
789 006e 5A64 str r2, [r3, #68]
1254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
790 .loc 1 1256 21
791 0070 FB68 ldr r3, [r7, #12]
792 0072 7A68 ldr r2, [r7, #4]
793 0074 5A62 str r2, [r3, #36]
1257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
794 .loc 1 1257 21
795 0076 FB68 ldr r3, [r7, #12]
796 0078 3A89 ldrh r2, [r7, #8] @ movhi
797 007a 5A85 strh r2, [r3, #42] @ movhi
1258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
798 .loc 1 1258 21
799 007c FB68 ldr r3, [r7, #12]
800 007e 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 37
801 0080 5A63 str r2, [r3, #52]
1259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
1261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
1262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
802 .loc 1 1262 13
803 0082 FB68 ldr r3, [r7, #12]
804 0084 5B8D ldrh r3, [r3, #42] @ movhi
805 0086 9BB2 uxth r3, r3
806 .loc 1 1262 8
807 0088 FF2B cmp r3, #255
808 008a 0ED9 bls .L34
1263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
809 .loc 1 1264 22
810 008c FB68 ldr r3, [r7, #12]
811 008e FF22 movs r2, #255
812 0090 1A85 strh r2, [r3, #40] @ movhi
1265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
813 .loc 1 1265 57
814 0092 FB68 ldr r3, [r7, #12]
815 0094 1B8D ldrh r3, [r3, #40]
816 .loc 1 1265 7
817 0096 DAB2 uxtb r2, r3
818 0098 7989 ldrh r1, [r7, #10]
819 009a 524B ldr r3, .L43
820 009c 0093 str r3, [sp]
821 009e 4FF08073 mov r3, #16777216
822 00a2 F868 ldr r0, [r7, #12]
823 00a4 FFF7FEFF bl I2C_TransferConfig
824 00a8 6DE0 b .L36
825 .L34:
1266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
1267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
826 .loc 1 1270 28
827 00aa FB68 ldr r3, [r7, #12]
828 00ac 5B8D ldrh r3, [r3, #42] @ movhi
829 00ae 9AB2 uxth r2, r3
830 .loc 1 1270 22
831 00b0 FB68 ldr r3, [r7, #12]
832 00b2 1A85 strh r2, [r3, #40] @ movhi
1271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
833 .loc 1 1271 57
834 00b4 FB68 ldr r3, [r7, #12]
835 00b6 1B8D ldrh r3, [r3, #40]
836 .loc 1 1271 7
837 00b8 DAB2 uxtb r2, r3
838 00ba 7989 ldrh r1, [r7, #10]
839 00bc 494B ldr r3, .L43
840 00be 0093 str r3, [sp]
841 00c0 4FF00073 mov r3, #33554432
842 00c4 F868 ldr r0, [r7, #12]
843 00c6 FFF7FEFF bl I2C_TransferConfig
1272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
ARM GAS /tmp/cc5G5cqz.s page 38
1273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U)
844 .loc 1 1275 11
845 00ca 5CE0 b .L36
846 .L41:
1276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */
1278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
847 .loc 1 1278 11
848 00cc 7A69 ldr r2, [r7, #20]
849 00ce 396A ldr r1, [r7, #32]
850 00d0 F868 ldr r0, [r7, #12]
851 00d2 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout
852 00d6 0346 mov r3, r0
853 .loc 1 1278 10 discriminator 1
854 00d8 002B cmp r3, #0
855 00da 01D0 beq .L37
1279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
856 .loc 1 1280 16
857 00dc 0123 movs r3, #1
858 00de 7CE0 b .L32
859 .L37:
1281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
1284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
860 .loc 1 1284 38
861 00e0 FB68 ldr r3, [r7, #12]
862 00e2 1B68 ldr r3, [r3]
863 .loc 1 1284 48
864 00e4 5A6A ldr r2, [r3, #36]
865 .loc 1 1284 12
866 00e6 FB68 ldr r3, [r7, #12]
867 00e8 5B6A ldr r3, [r3, #36]
868 .loc 1 1284 25
869 00ea D2B2 uxtb r2, r2
870 .loc 1 1284 23
871 00ec 1A70 strb r2, [r3]
1285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
872 .loc 1 1287 11
873 00ee FB68 ldr r3, [r7, #12]
874 00f0 5B6A ldr r3, [r3, #36]
875 .loc 1 1287 21
876 00f2 5A1C adds r2, r3, #1
877 00f4 FB68 ldr r3, [r7, #12]
878 00f6 5A62 str r2, [r3, #36]
1288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
879 .loc 1 1289 11
880 00f8 FB68 ldr r3, [r7, #12]
881 00fa 1B8D ldrh r3, [r3, #40]
882 .loc 1 1289 21
883 00fc 013B subs r3, r3, #1
ARM GAS /tmp/cc5G5cqz.s page 39
884 00fe 9AB2 uxth r2, r3
885 0100 FB68 ldr r3, [r7, #12]
886 0102 1A85 strh r2, [r3, #40] @ movhi
1290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
887 .loc 1 1290 11
888 0104 FB68 ldr r3, [r7, #12]
889 0106 5B8D ldrh r3, [r3, #42] @ movhi
890 0108 9BB2 uxth r3, r3
891 .loc 1 1290 22
892 010a 013B subs r3, r3, #1
893 010c 9AB2 uxth r2, r3
894 010e FB68 ldr r3, [r7, #12]
895 0110 5A85 strh r2, [r3, #42] @ movhi
1291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
896 .loc 1 1292 16
897 0112 FB68 ldr r3, [r7, #12]
898 0114 5B8D ldrh r3, [r3, #42] @ movhi
899 0116 9BB2 uxth r3, r3
900 .loc 1 1292 10
901 0118 002B cmp r3, #0
902 011a 34D0 beq .L36
903 .loc 1 1292 43 discriminator 1
904 011c FB68 ldr r3, [r7, #12]
905 011e 1B8D ldrh r3, [r3, #40]
906 .loc 1 1292 35 discriminator 1
907 0120 002B cmp r3, #0
908 0122 30D1 bne .L36
1293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */
1295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)
909 .loc 1 1295 13
910 0124 7B69 ldr r3, [r7, #20]
911 0126 0093 str r3, [sp]
912 0128 3B6A ldr r3, [r7, #32]
913 012a 0022 movs r2, #0
914 012c 8021 movs r1, #128
915 012e F868 ldr r0, [r7, #12]
916 0130 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
917 0134 0346 mov r3, r0
918 .loc 1 1295 12 discriminator 1
919 0136 002B cmp r3, #0
920 0138 01D0 beq .L39
1296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
921 .loc 1 1297 18
922 013a 0123 movs r3, #1
923 013c 4DE0 b .L32
924 .L39:
1298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
925 .loc 1 1300 17
926 013e FB68 ldr r3, [r7, #12]
927 0140 5B8D ldrh r3, [r3, #42] @ movhi
928 0142 9BB2 uxth r3, r3
929 .loc 1 1300 12
ARM GAS /tmp/cc5G5cqz.s page 40
930 0144 FF2B cmp r3, #255
931 0146 0ED9 bls .L40
1301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
932 .loc 1 1302 26
933 0148 FB68 ldr r3, [r7, #12]
934 014a FF22 movs r2, #255
935 014c 1A85 strh r2, [r3, #40] @ movhi
1303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
936 .loc 1 1303 61
937 014e FB68 ldr r3, [r7, #12]
938 0150 1B8D ldrh r3, [r3, #40]
939 .loc 1 1303 11
940 0152 DAB2 uxtb r2, r3
941 0154 7989 ldrh r1, [r7, #10]
942 0156 0023 movs r3, #0
943 0158 0093 str r3, [sp]
944 015a 4FF08073 mov r3, #16777216
945 015e F868 ldr r0, [r7, #12]
946 0160 FFF7FEFF bl I2C_TransferConfig
947 0164 0FE0 b .L36
948 .L40:
1304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
1305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
949 .loc 1 1308 32
950 0166 FB68 ldr r3, [r7, #12]
951 0168 5B8D ldrh r3, [r3, #42] @ movhi
952 016a 9AB2 uxth r2, r3
953 .loc 1 1308 26
954 016c FB68 ldr r3, [r7, #12]
955 016e 1A85 strh r2, [r3, #40] @ movhi
1309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
956 .loc 1 1309 61
957 0170 FB68 ldr r3, [r7, #12]
958 0172 1B8D ldrh r3, [r3, #40]
959 .loc 1 1309 11
960 0174 DAB2 uxtb r2, r3
961 0176 7989 ldrh r1, [r7, #10]
962 0178 0023 movs r3, #0
963 017a 0093 str r3, [sp]
964 017c 4FF00073 mov r3, #33554432
965 0180 F868 ldr r0, [r7, #12]
966 0182 FFF7FEFF bl I2C_TransferConfig
967 .L36:
1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
968 .loc 1 1275 16
969 0186 FB68 ldr r3, [r7, #12]
970 0188 5B8D ldrh r3, [r3, #42] @ movhi
971 018a 9BB2 uxth r3, r3
1275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
972 .loc 1 1275 28
973 018c 002B cmp r3, #0
974 018e 9DD1 bne .L41
1310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
ARM GAS /tmp/cc5G5cqz.s page 41
1311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */
1316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set */
1317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
975 .loc 1 1317 9
976 0190 7A69 ldr r2, [r7, #20]
977 0192 396A ldr r1, [r7, #32]
978 0194 F868 ldr r0, [r7, #12]
979 0196 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
980 019a 0346 mov r3, r0
981 .loc 1 1317 8 discriminator 1
982 019c 002B cmp r3, #0
983 019e 01D0 beq .L42
1318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
984 .loc 1 1319 14
985 01a0 0123 movs r3, #1
986 01a2 1AE0 b .L32
987 .L42:
1320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
1323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
988 .loc 1 1323 5
989 01a4 FB68 ldr r3, [r7, #12]
990 01a6 1B68 ldr r3, [r3]
991 01a8 2022 movs r2, #32
992 01aa DA61 str r2, [r3, #28]
1324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
1326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
993 .loc 1 1326 5
994 01ac FB68 ldr r3, [r7, #12]
995 01ae 1B68 ldr r3, [r3]
996 01b0 5968 ldr r1, [r3, #4]
997 01b2 FB68 ldr r3, [r7, #12]
998 01b4 1A68 ldr r2, [r3]
999 01b6 0C4B ldr r3, .L43+4
1000 01b8 0B40 ands r3, r3, r1
1001 01ba 5360 str r3, [r2, #4]
1327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
1002 .loc 1 1328 17
1003 01bc FB68 ldr r3, [r7, #12]
1004 01be 2022 movs r2, #32
1005 01c0 83F84120 strb r2, [r3, #65]
1329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
1006 .loc 1 1329 17
1007 01c4 FB68 ldr r3, [r7, #12]
1008 01c6 0022 movs r2, #0
1009 01c8 83F84220 strb r2, [r3, #66]
1330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
ARM GAS /tmp/cc5G5cqz.s page 42
1010 .loc 1 1332 5
1011 01cc FB68 ldr r3, [r7, #12]
1012 01ce 0022 movs r2, #0
1013 01d0 83F84020 strb r2, [r3, #64]
1333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
1014 .loc 1 1334 12
1015 01d4 0023 movs r3, #0
1016 01d6 00E0 b .L32
1017 .L30:
1335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
1018 .loc 1 1338 12
1019 01d8 0223 movs r3, #2
1020 .L32:
1339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1021 .loc 1 1340 1
1022 01da 1846 mov r0, r3
1023 01dc 1837 adds r7, r7, #24
1024 .cfi_def_cfa_offset 8
1025 01de BD46 mov sp, r7
1026 .cfi_def_cfa_register 13
1027 @ sp needed
1028 01e0 80BD pop {r7, pc}
1029 .L44:
1030 01e2 00BF .align 2
1031 .L43:
1032 01e4 00240080 .word -2147474432
1033 01e8 00E800FE .word -33495040
1034 .cfi_endproc
1035 .LFE135:
1037 .section .text.HAL_I2C_Slave_Transmit,"ax",%progbits
1038 .align 1
1039 .global HAL_I2C_Slave_Transmit
1040 .syntax unified
1041 .thumb
1042 .thumb_func
1044 HAL_I2C_Slave_Transmit:
1045 .LFB136:
1341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmits in slave mode an amount of data in blocking mode.
1344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
1349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
1352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout)
1353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1046 .loc 1 1353 1
1047 .cfi_startproc
ARM GAS /tmp/cc5G5cqz.s page 43
1048 @ args = 0, pretend = 0, frame = 24
1049 @ frame_needed = 1, uses_anonymous_args = 0
1050 0000 80B5 push {r7, lr}
1051 .cfi_def_cfa_offset 8
1052 .cfi_offset 7, -8
1053 .cfi_offset 14, -4
1054 0002 88B0 sub sp, sp, #32
1055 .cfi_def_cfa_offset 40
1056 0004 02AF add r7, sp, #8
1057 .cfi_def_cfa 7, 32
1058 0006 F860 str r0, [r7, #12]
1059 0008 B960 str r1, [r7, #8]
1060 000a 3B60 str r3, [r7]
1061 000c 1346 mov r3, r2 @ movhi
1062 000e FB80 strh r3, [r7, #6] @ movhi
1354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
1355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
1063 .loc 1 1356 11
1064 0010 FB68 ldr r3, [r7, #12]
1065 0012 93F84130 ldrb r3, [r3, #65]
1066 0016 DBB2 uxtb r3, r3
1067 .loc 1 1356 6
1068 0018 202B cmp r3, #32
1069 001a 40F02081 bne .L46
1357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
1070 .loc 1 1358 8
1071 001e BB68 ldr r3, [r7, #8]
1072 0020 002B cmp r3, #0
1073 0022 02D0 beq .L47
1074 .loc 1 1358 25 discriminator 1
1075 0024 FB88 ldrh r3, [r7, #6]
1076 0026 002B cmp r3, #0
1077 0028 05D1 bne .L48
1078 .L47:
1359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
1079 .loc 1 1360 23
1080 002a FB68 ldr r3, [r7, #12]
1081 002c 4FF40072 mov r2, #512
1082 0030 5A64 str r2, [r3, #68]
1361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1083 .loc 1 1361 15
1084 0032 0123 movs r3, #1
1085 0034 14E1 b .L49
1086 .L48:
1362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
1087 .loc 1 1364 5
1088 0036 FB68 ldr r3, [r7, #12]
1089 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
1090 003c 012B cmp r3, #1
1091 003e 01D1 bne .L50
1092 .loc 1 1364 5 is_stmt 0 discriminator 1
1093 0040 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 44
1094 .loc 1 1364 5
1095 0042 0DE1 b .L49
1096 .L50:
1097 .loc 1 1364 5 discriminator 2
1098 0044 FB68 ldr r3, [r7, #12]
1099 0046 0122 movs r2, #1
1100 0048 83F84020 strb r2, [r3, #64]
1365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
1367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
1101 .loc 1 1367 17 is_stmt 1
1102 004c FFF7FEFF bl HAL_GetTick
1103 0050 7861 str r0, [r7, #20]
1368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
1104 .loc 1 1369 21
1105 0052 FB68 ldr r3, [r7, #12]
1106 0054 2122 movs r2, #33
1107 0056 83F84120 strb r2, [r3, #65]
1370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
1108 .loc 1 1370 21
1109 005a FB68 ldr r3, [r7, #12]
1110 005c 2022 movs r2, #32
1111 005e 83F84220 strb r2, [r3, #66]
1371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
1112 .loc 1 1371 21
1113 0062 FB68 ldr r3, [r7, #12]
1114 0064 0022 movs r2, #0
1115 0066 5A64 str r2, [r3, #68]
1372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
1116 .loc 1 1374 21
1117 0068 FB68 ldr r3, [r7, #12]
1118 006a BA68 ldr r2, [r7, #8]
1119 006c 5A62 str r2, [r3, #36]
1375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
1120 .loc 1 1375 21
1121 006e FB68 ldr r3, [r7, #12]
1122 0070 FA88 ldrh r2, [r7, #6] @ movhi
1123 0072 5A85 strh r2, [r3, #42] @ movhi
1376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
1124 .loc 1 1376 21
1125 0074 FB68 ldr r3, [r7, #12]
1126 0076 0022 movs r2, #0
1127 0078 5A63 str r2, [r3, #52]
1377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
1379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
1128 .loc 1 1379 9
1129 007a FB68 ldr r3, [r7, #12]
1130 007c 1B68 ldr r3, [r3]
1131 .loc 1 1379 19
1132 007e 5A68 ldr r2, [r3, #4]
1133 .loc 1 1379 9
1134 0080 FB68 ldr r3, [r7, #12]
1135 0082 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 45
1136 .loc 1 1379 25
1137 0084 22F40042 bic r2, r2, #32768
1138 0088 5A60 str r2, [r3, #4]
1380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */
1382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)
1139 .loc 1 1382 9
1140 008a 7B69 ldr r3, [r7, #20]
1141 008c 0093 str r3, [sp]
1142 008e 3B68 ldr r3, [r7]
1143 0090 0022 movs r2, #0
1144 0092 0821 movs r1, #8
1145 0094 F868 ldr r0, [r7, #12]
1146 0096 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1147 009a 0346 mov r3, r0
1148 .loc 1 1382 8 discriminator 1
1149 009c 002B cmp r3, #0
1150 009e 09D0 beq .L51
1383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1151 .loc 1 1385 11
1152 00a0 FB68 ldr r3, [r7, #12]
1153 00a2 1B68 ldr r3, [r3]
1154 .loc 1 1385 21
1155 00a4 5A68 ldr r2, [r3, #4]
1156 .loc 1 1385 11
1157 00a6 FB68 ldr r3, [r7, #12]
1158 00a8 1B68 ldr r3, [r3]
1159 .loc 1 1385 27
1160 00aa 42F40042 orr r2, r2, #32768
1161 00ae 5A60 str r2, [r3, #4]
1386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1162 .loc 1 1386 14
1163 00b0 0123 movs r3, #1
1164 00b2 D5E0 b .L49
1165 .L51:
1387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */
1390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE)
1166 .loc 1 1390 19
1167 00b4 FB68 ldr r3, [r7, #12]
1168 00b6 1B6A ldr r3, [r3, #32]
1169 .loc 1 1390 8
1170 00b8 B3F5003F cmp r3, #131072
1171 00bc 11D1 bne .L52
1391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */
1393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
1394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
1172 .loc 1 1394 35
1173 00be FB68 ldr r3, [r7, #12]
1174 00c0 5B6A ldr r3, [r3, #36]
1175 .loc 1 1394 30
1176 00c2 1A78 ldrb r2, [r3] @ zero_extendqisi2
1177 .loc 1 1394 11
ARM GAS /tmp/cc5G5cqz.s page 46
1178 00c4 FB68 ldr r3, [r7, #12]
1179 00c6 1B68 ldr r3, [r3]
1180 .loc 1 1394 28
1181 00c8 9A62 str r2, [r3, #40]
1395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
1182 .loc 1 1397 11
1183 00ca FB68 ldr r3, [r7, #12]
1184 00cc 5B6A ldr r3, [r3, #36]
1185 .loc 1 1397 21
1186 00ce 5A1C adds r2, r3, #1
1187 00d0 FB68 ldr r3, [r7, #12]
1188 00d2 5A62 str r2, [r3, #36]
1398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
1189 .loc 1 1399 11
1190 00d4 FB68 ldr r3, [r7, #12]
1191 00d6 5B8D ldrh r3, [r3, #42] @ movhi
1192 00d8 9BB2 uxth r3, r3
1193 .loc 1 1399 22
1194 00da 013B subs r3, r3, #1
1195 00dc 9AB2 uxth r2, r3
1196 00de FB68 ldr r3, [r7, #12]
1197 00e0 5A85 strh r2, [r3, #42] @ movhi
1198 .L52:
1400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */
1403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
1199 .loc 1 1403 5
1200 00e2 FB68 ldr r3, [r7, #12]
1201 00e4 1B68 ldr r3, [r3]
1202 00e6 0822 movs r2, #8
1203 00e8 DA61 str r2, [r3, #28]
1404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bit addressing mode is selected */
1406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)
1204 .loc 1 1406 19
1205 00ea FB68 ldr r3, [r7, #12]
1206 00ec DB68 ldr r3, [r3, #12]
1207 .loc 1 1406 8
1208 00ee 022B cmp r3, #2
1209 00f0 18D1 bne .L53
1407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */
1409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)
1210 .loc 1 1409 11
1211 00f2 7B69 ldr r3, [r7, #20]
1212 00f4 0093 str r3, [sp]
1213 00f6 3B68 ldr r3, [r7]
1214 00f8 0022 movs r2, #0
1215 00fa 0821 movs r1, #8
1216 00fc F868 ldr r0, [r7, #12]
1217 00fe FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1218 0102 0346 mov r3, r0
1219 .loc 1 1409 10 discriminator 1
ARM GAS /tmp/cc5G5cqz.s page 47
1220 0104 002B cmp r3, #0
1221 0106 09D0 beq .L54
1410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1222 .loc 1 1412 13
1223 0108 FB68 ldr r3, [r7, #12]
1224 010a 1B68 ldr r3, [r3]
1225 .loc 1 1412 23
1226 010c 5A68 ldr r2, [r3, #4]
1227 .loc 1 1412 13
1228 010e FB68 ldr r3, [r7, #12]
1229 0110 1B68 ldr r3, [r3]
1230 .loc 1 1412 29
1231 0112 42F40042 orr r2, r2, #32768
1232 0116 5A60 str r2, [r3, #4]
1413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1233 .loc 1 1413 16
1234 0118 0123 movs r3, #1
1235 011a A1E0 b .L49
1236 .L54:
1414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */
1417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
1237 .loc 1 1417 7
1238 011c FB68 ldr r3, [r7, #12]
1239 011e 1B68 ldr r3, [r3]
1240 0120 0822 movs r2, #8
1241 0122 DA61 str r2, [r3, #28]
1242 .L53:
1418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is set Transmitter mode */
1421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK)
1243 .loc 1 1421 9
1244 0124 7B69 ldr r3, [r7, #20]
1245 0126 0093 str r3, [sp]
1246 0128 3B68 ldr r3, [r7]
1247 012a 0022 movs r2, #0
1248 012c 4FF48031 mov r1, #65536
1249 0130 F868 ldr r0, [r7, #12]
1250 0132 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1251 0136 0346 mov r3, r0
1252 .loc 1 1421 8 discriminator 1
1253 0138 002B cmp r3, #0
1254 013a 2DD0 beq .L56
1422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1255 .loc 1 1424 11
1256 013c FB68 ldr r3, [r7, #12]
1257 013e 1B68 ldr r3, [r3]
1258 .loc 1 1424 21
1259 0140 5A68 ldr r2, [r3, #4]
1260 .loc 1 1424 11
1261 0142 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 48
1262 0144 1B68 ldr r3, [r3]
1263 .loc 1 1424 27
1264 0146 42F40042 orr r2, r2, #32768
1265 014a 5A60 str r2, [r3, #4]
1425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1266 .loc 1 1425 14
1267 014c 0123 movs r3, #1
1268 014e 87E0 b .L49
1269 .L58:
1426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U)
1429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
1431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
1270 .loc 1 1431 11
1271 0150 7A69 ldr r2, [r7, #20]
1272 0152 3968 ldr r1, [r7]
1273 0154 F868 ldr r0, [r7, #12]
1274 0156 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
1275 015a 0346 mov r3, r0
1276 .loc 1 1431 10 discriminator 1
1277 015c 002B cmp r3, #0
1278 015e 09D0 beq .L57
1432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1279 .loc 1 1434 13
1280 0160 FB68 ldr r3, [r7, #12]
1281 0162 1B68 ldr r3, [r3]
1282 .loc 1 1434 23
1283 0164 5A68 ldr r2, [r3, #4]
1284 .loc 1 1434 13
1285 0166 FB68 ldr r3, [r7, #12]
1286 0168 1B68 ldr r3, [r3]
1287 .loc 1 1434 29
1288 016a 42F40042 orr r2, r2, #32768
1289 016e 5A60 str r2, [r3, #4]
1435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1290 .loc 1 1435 16
1291 0170 0123 movs r3, #1
1292 0172 75E0 b .L49
1293 .L57:
1436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
1439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
1294 .loc 1 1439 35
1295 0174 FB68 ldr r3, [r7, #12]
1296 0176 5B6A ldr r3, [r3, #36]
1297 .loc 1 1439 30
1298 0178 1A78 ldrb r2, [r3] @ zero_extendqisi2
1299 .loc 1 1439 11
1300 017a FB68 ldr r3, [r7, #12]
1301 017c 1B68 ldr r3, [r3]
1302 .loc 1 1439 28
1303 017e 9A62 str r2, [r3, #40]
ARM GAS /tmp/cc5G5cqz.s page 49
1440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
1304 .loc 1 1442 11
1305 0180 FB68 ldr r3, [r7, #12]
1306 0182 5B6A ldr r3, [r3, #36]
1307 .loc 1 1442 21
1308 0184 5A1C adds r2, r3, #1
1309 0186 FB68 ldr r3, [r7, #12]
1310 0188 5A62 str r2, [r3, #36]
1443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
1311 .loc 1 1444 11
1312 018a FB68 ldr r3, [r7, #12]
1313 018c 5B8D ldrh r3, [r3, #42] @ movhi
1314 018e 9BB2 uxth r3, r3
1315 .loc 1 1444 22
1316 0190 013B subs r3, r3, #1
1317 0192 9AB2 uxth r2, r3
1318 0194 FB68 ldr r3, [r7, #12]
1319 0196 5A85 strh r2, [r3, #42] @ movhi
1320 .L56:
1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1321 .loc 1 1428 16
1322 0198 FB68 ldr r3, [r7, #12]
1323 019a 5B8D ldrh r3, [r3, #42] @ movhi
1324 019c 9BB2 uxth r3, r3
1428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1325 .loc 1 1428 28
1326 019e 002B cmp r3, #0
1327 01a0 D6D1 bne .L58
1445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until AF flag is set */
1448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK)
1328 .loc 1 1448 9
1329 01a2 7B69 ldr r3, [r7, #20]
1330 01a4 0093 str r3, [sp]
1331 01a6 3B68 ldr r3, [r7]
1332 01a8 0022 movs r2, #0
1333 01aa 1021 movs r1, #16
1334 01ac F868 ldr r0, [r7, #12]
1335 01ae FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1336 01b2 0346 mov r3, r0
1337 .loc 1 1448 8 discriminator 1
1338 01b4 002B cmp r3, #0
1339 01b6 09D0 beq .L59
1449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1340 .loc 1 1451 11
1341 01b8 FB68 ldr r3, [r7, #12]
1342 01ba 1B68 ldr r3, [r3]
1343 .loc 1 1451 21
1344 01bc 5A68 ldr r2, [r3, #4]
1345 .loc 1 1451 11
1346 01be FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 50
1347 01c0 1B68 ldr r3, [r3]
1348 .loc 1 1451 27
1349 01c2 42F40042 orr r2, r2, #32768
1350 01c6 5A60 str r2, [r3, #4]
1452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1351 .loc 1 1452 14
1352 01c8 0123 movs r3, #1
1353 01ca 49E0 b .L49
1354 .L59:
1453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
1456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
1355 .loc 1 1456 5
1356 01cc F868 ldr r0, [r7, #12]
1357 01ce FFF7FEFF bl I2C_Flush_TXDR
1457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear AF flag */
1459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
1358 .loc 1 1459 5
1359 01d2 FB68 ldr r3, [r7, #12]
1360 01d4 1B68 ldr r3, [r3]
1361 01d6 1022 movs r2, #16
1362 01d8 DA61 str r2, [r3, #28]
1460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP flag is set */
1462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
1363 .loc 1 1462 9
1364 01da 7A69 ldr r2, [r7, #20]
1365 01dc 3968 ldr r1, [r7]
1366 01de F868 ldr r0, [r7, #12]
1367 01e0 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
1368 01e4 0346 mov r3, r0
1369 .loc 1 1462 8 discriminator 1
1370 01e6 002B cmp r3, #0
1371 01e8 09D0 beq .L60
1463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1372 .loc 1 1465 11
1373 01ea FB68 ldr r3, [r7, #12]
1374 01ec 1B68 ldr r3, [r3]
1375 .loc 1 1465 21
1376 01ee 5A68 ldr r2, [r3, #4]
1377 .loc 1 1465 11
1378 01f0 FB68 ldr r3, [r7, #12]
1379 01f2 1B68 ldr r3, [r3]
1380 .loc 1 1465 27
1381 01f4 42F40042 orr r2, r2, #32768
1382 01f8 5A60 str r2, [r3, #4]
1466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1383 .loc 1 1467 14
1384 01fa 0123 movs r3, #1
1385 01fc 30E0 b .L49
1386 .L60:
1468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 51
1469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */
1471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
1387 .loc 1 1471 5
1388 01fe FB68 ldr r3, [r7, #12]
1389 0200 1B68 ldr r3, [r3]
1390 0202 2022 movs r2, #32
1391 0204 DA61 str r2, [r3, #28]
1472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */
1474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)
1392 .loc 1 1474 9
1393 0206 7B69 ldr r3, [r7, #20]
1394 0208 0093 str r3, [sp]
1395 020a 3B68 ldr r3, [r7]
1396 020c 0122 movs r2, #1
1397 020e 4FF40041 mov r1, #32768
1398 0212 F868 ldr r0, [r7, #12]
1399 0214 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1400 0218 0346 mov r3, r0
1401 .loc 1 1474 8 discriminator 1
1402 021a 002B cmp r3, #0
1403 021c 09D0 beq .L61
1475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1404 .loc 1 1477 11
1405 021e FB68 ldr r3, [r7, #12]
1406 0220 1B68 ldr r3, [r3]
1407 .loc 1 1477 21
1408 0222 5A68 ldr r2, [r3, #4]
1409 .loc 1 1477 11
1410 0224 FB68 ldr r3, [r7, #12]
1411 0226 1B68 ldr r3, [r3]
1412 .loc 1 1477 27
1413 0228 42F40042 orr r2, r2, #32768
1414 022c 5A60 str r2, [r3, #4]
1478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1415 .loc 1 1478 14
1416 022e 0123 movs r3, #1
1417 0230 16E0 b .L49
1418 .L61:
1479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1419 .loc 1 1482 9
1420 0232 FB68 ldr r3, [r7, #12]
1421 0234 1B68 ldr r3, [r3]
1422 .loc 1 1482 19
1423 0236 5A68 ldr r2, [r3, #4]
1424 .loc 1 1482 9
1425 0238 FB68 ldr r3, [r7, #12]
1426 023a 1B68 ldr r3, [r3]
1427 .loc 1 1482 25
1428 023c 42F40042 orr r2, r2, #32768
1429 0240 5A60 str r2, [r3, #4]
ARM GAS /tmp/cc5G5cqz.s page 52
1483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
1430 .loc 1 1484 17
1431 0242 FB68 ldr r3, [r7, #12]
1432 0244 2022 movs r2, #32
1433 0246 83F84120 strb r2, [r3, #65]
1485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
1434 .loc 1 1485 17
1435 024a FB68 ldr r3, [r7, #12]
1436 024c 0022 movs r2, #0
1437 024e 83F84220 strb r2, [r3, #66]
1486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
1438 .loc 1 1488 5
1439 0252 FB68 ldr r3, [r7, #12]
1440 0254 0022 movs r2, #0
1441 0256 83F84020 strb r2, [r3, #64]
1489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
1442 .loc 1 1490 12
1443 025a 0023 movs r3, #0
1444 025c 00E0 b .L49
1445 .L46:
1491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
1446 .loc 1 1494 12
1447 025e 0223 movs r3, #2
1448 .L49:
1495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1449 .loc 1 1496 1
1450 0260 1846 mov r0, r3
1451 0262 1837 adds r7, r7, #24
1452 .cfi_def_cfa_offset 8
1453 0264 BD46 mov sp, r7
1454 .cfi_def_cfa_register 13
1455 @ sp needed
1456 0266 80BD pop {r7, pc}
1457 .cfi_endproc
1458 .LFE136:
1460 .section .text.HAL_I2C_Slave_Receive,"ax",%progbits
1461 .align 1
1462 .global HAL_I2C_Slave_Receive
1463 .syntax unified
1464 .thumb
1465 .thumb_func
1467 HAL_I2C_Slave_Receive:
1468 .LFB137:
1497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in blocking mode
1500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
ARM GAS /tmp/cc5G5cqz.s page 53
1503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
1505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
1508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout)
1509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1469 .loc 1 1509 1
1470 .cfi_startproc
1471 @ args = 0, pretend = 0, frame = 24
1472 @ frame_needed = 1, uses_anonymous_args = 0
1473 0000 80B5 push {r7, lr}
1474 .cfi_def_cfa_offset 8
1475 .cfi_offset 7, -8
1476 .cfi_offset 14, -4
1477 0002 88B0 sub sp, sp, #32
1478 .cfi_def_cfa_offset 40
1479 0004 02AF add r7, sp, #8
1480 .cfi_def_cfa 7, 32
1481 0006 F860 str r0, [r7, #12]
1482 0008 B960 str r1, [r7, #8]
1483 000a 3B60 str r3, [r7]
1484 000c 1346 mov r3, r2 @ movhi
1485 000e FB80 strh r3, [r7, #6] @ movhi
1510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
1511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
1486 .loc 1 1512 11
1487 0010 FB68 ldr r3, [r7, #12]
1488 0012 93F84130 ldrb r3, [r3, #65]
1489 0016 DBB2 uxtb r3, r3
1490 .loc 1 1512 6
1491 0018 202B cmp r3, #32
1492 001a 40F0FC80 bne .L63
1513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
1493 .loc 1 1514 8
1494 001e BB68 ldr r3, [r7, #8]
1495 0020 002B cmp r3, #0
1496 0022 02D0 beq .L64
1497 .loc 1 1514 25 discriminator 1
1498 0024 FB88 ldrh r3, [r7, #6]
1499 0026 002B cmp r3, #0
1500 0028 05D1 bne .L65
1501 .L64:
1515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
1502 .loc 1 1516 23
1503 002a FB68 ldr r3, [r7, #12]
1504 002c 4FF40072 mov r2, #512
1505 0030 5A64 str r2, [r3, #68]
1517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1506 .loc 1 1517 15
1507 0032 0123 movs r3, #1
1508 0034 F0E0 b .L66
1509 .L65:
1518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 54
1519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
1510 .loc 1 1520 5
1511 0036 FB68 ldr r3, [r7, #12]
1512 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
1513 003c 012B cmp r3, #1
1514 003e 01D1 bne .L67
1515 .loc 1 1520 5 is_stmt 0 discriminator 1
1516 0040 0223 movs r3, #2
1517 .loc 1 1520 5
1518 0042 E9E0 b .L66
1519 .L67:
1520 .loc 1 1520 5 discriminator 2
1521 0044 FB68 ldr r3, [r7, #12]
1522 0046 0122 movs r2, #1
1523 0048 83F84020 strb r2, [r3, #64]
1521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
1523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
1524 .loc 1 1523 17 is_stmt 1
1525 004c FFF7FEFF bl HAL_GetTick
1526 0050 7861 str r0, [r7, #20]
1524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
1527 .loc 1 1525 21
1528 0052 FB68 ldr r3, [r7, #12]
1529 0054 2222 movs r2, #34
1530 0056 83F84120 strb r2, [r3, #65]
1526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
1531 .loc 1 1526 21
1532 005a FB68 ldr r3, [r7, #12]
1533 005c 2022 movs r2, #32
1534 005e 83F84220 strb r2, [r3, #66]
1527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
1535 .loc 1 1527 21
1536 0062 FB68 ldr r3, [r7, #12]
1537 0064 0022 movs r2, #0
1538 0066 5A64 str r2, [r3, #68]
1528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
1539 .loc 1 1530 21
1540 0068 FB68 ldr r3, [r7, #12]
1541 006a BA68 ldr r2, [r7, #8]
1542 006c 5A62 str r2, [r3, #36]
1531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
1543 .loc 1 1531 21
1544 006e FB68 ldr r3, [r7, #12]
1545 0070 FA88 ldrh r2, [r7, #6] @ movhi
1546 0072 5A85 strh r2, [r3, #42] @ movhi
1532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
1547 .loc 1 1532 26
1548 0074 FB68 ldr r3, [r7, #12]
1549 0076 5B8D ldrh r3, [r3, #42] @ movhi
1550 0078 9AB2 uxth r2, r3
1551 .loc 1 1532 20
1552 007a FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 55
1553 007c 1A85 strh r2, [r3, #40] @ movhi
1533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
1554 .loc 1 1533 21
1555 007e FB68 ldr r3, [r7, #12]
1556 0080 0022 movs r2, #0
1557 0082 5A63 str r2, [r3, #52]
1534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
1536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
1558 .loc 1 1536 9
1559 0084 FB68 ldr r3, [r7, #12]
1560 0086 1B68 ldr r3, [r3]
1561 .loc 1 1536 19
1562 0088 5A68 ldr r2, [r3, #4]
1563 .loc 1 1536 9
1564 008a FB68 ldr r3, [r7, #12]
1565 008c 1B68 ldr r3, [r3]
1566 .loc 1 1536 25
1567 008e 22F40042 bic r2, r2, #32768
1568 0092 5A60 str r2, [r3, #4]
1537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until ADDR flag is set */
1539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK)
1569 .loc 1 1539 9
1570 0094 7B69 ldr r3, [r7, #20]
1571 0096 0093 str r3, [sp]
1572 0098 3B68 ldr r3, [r7]
1573 009a 0022 movs r2, #0
1574 009c 0821 movs r1, #8
1575 009e F868 ldr r0, [r7, #12]
1576 00a0 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1577 00a4 0346 mov r3, r0
1578 .loc 1 1539 8 discriminator 1
1579 00a6 002B cmp r3, #0
1580 00a8 09D0 beq .L68
1540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1581 .loc 1 1542 11
1582 00aa FB68 ldr r3, [r7, #12]
1583 00ac 1B68 ldr r3, [r3]
1584 .loc 1 1542 21
1585 00ae 5A68 ldr r2, [r3, #4]
1586 .loc 1 1542 11
1587 00b0 FB68 ldr r3, [r7, #12]
1588 00b2 1B68 ldr r3, [r3]
1589 .loc 1 1542 27
1590 00b4 42F40042 orr r2, r2, #32768
1591 00b8 5A60 str r2, [r3, #4]
1543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1592 .loc 1 1543 14
1593 00ba 0123 movs r3, #1
1594 00bc ACE0 b .L66
1595 .L68:
1544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */
ARM GAS /tmp/cc5G5cqz.s page 56
1547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
1596 .loc 1 1547 5
1597 00be FB68 ldr r3, [r7, #12]
1598 00c0 1B68 ldr r3, [r3]
1599 00c2 0822 movs r2, #8
1600 00c4 DA61 str r2, [r3, #28]
1548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until DIR flag is reset Receiver mode */
1550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK)
1601 .loc 1 1550 9
1602 00c6 7B69 ldr r3, [r7, #20]
1603 00c8 0093 str r3, [sp]
1604 00ca 3B68 ldr r3, [r7]
1605 00cc 0122 movs r2, #1
1606 00ce 4FF48031 mov r1, #65536
1607 00d2 F868 ldr r0, [r7, #12]
1608 00d4 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1609 00d8 0346 mov r3, r0
1610 .loc 1 1550 8 discriminator 1
1611 00da 002B cmp r3, #0
1612 00dc 54D0 beq .L70
1551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1613 .loc 1 1553 11
1614 00de FB68 ldr r3, [r7, #12]
1615 00e0 1B68 ldr r3, [r3]
1616 .loc 1 1553 21
1617 00e2 5A68 ldr r2, [r3, #4]
1618 .loc 1 1553 11
1619 00e4 FB68 ldr r3, [r7, #12]
1620 00e6 1B68 ldr r3, [r3]
1621 .loc 1 1553 27
1622 00e8 42F40042 orr r2, r2, #32768
1623 00ec 5A60 str r2, [r3, #4]
1554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1624 .loc 1 1554 14
1625 00ee 0123 movs r3, #1
1626 00f0 92E0 b .L66
1627 .L73:
1555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (hi2c->XferCount > 0U)
1558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */
1560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
1628 .loc 1 1560 11
1629 00f2 7A69 ldr r2, [r7, #20]
1630 00f4 3968 ldr r1, [r7]
1631 00f6 F868 ldr r0, [r7, #12]
1632 00f8 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout
1633 00fc 0346 mov r3, r0
1634 .loc 1 1560 10 discriminator 1
1635 00fe 002B cmp r3, #0
1636 0100 29D0 beq .L71
1561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
ARM GAS /tmp/cc5G5cqz.s page 57
1563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1637 .loc 1 1563 13
1638 0102 FB68 ldr r3, [r7, #12]
1639 0104 1B68 ldr r3, [r3]
1640 .loc 1 1563 23
1641 0106 5A68 ldr r2, [r3, #4]
1642 .loc 1 1563 13
1643 0108 FB68 ldr r3, [r7, #12]
1644 010a 1B68 ldr r3, [r3]
1645 .loc 1 1563 29
1646 010c 42F40042 orr r2, r2, #32768
1647 0110 5A60 str r2, [r3, #4]
1564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */
1566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET)
1648 .loc 1 1566 13
1649 0112 FB68 ldr r3, [r7, #12]
1650 0114 1B68 ldr r3, [r3]
1651 0116 9B69 ldr r3, [r3, #24]
1652 0118 03F00403 and r3, r3, #4
1653 .loc 1 1566 12
1654 011c 042B cmp r3, #4
1655 011e 18D1 bne .L72
1567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
1569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
1656 .loc 1 1569 42
1657 0120 FB68 ldr r3, [r7, #12]
1658 0122 1B68 ldr r3, [r3]
1659 .loc 1 1569 52
1660 0124 5A6A ldr r2, [r3, #36]
1661 .loc 1 1569 16
1662 0126 FB68 ldr r3, [r7, #12]
1663 0128 5B6A ldr r3, [r3, #36]
1664 .loc 1 1569 29
1665 012a D2B2 uxtb r2, r2
1666 .loc 1 1569 27
1667 012c 1A70 strb r2, [r3]
1570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
1668 .loc 1 1572 15
1669 012e FB68 ldr r3, [r7, #12]
1670 0130 5B6A ldr r3, [r3, #36]
1671 .loc 1 1572 25
1672 0132 5A1C adds r2, r3, #1
1673 0134 FB68 ldr r3, [r7, #12]
1674 0136 5A62 str r2, [r3, #36]
1573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
1675 .loc 1 1574 15
1676 0138 FB68 ldr r3, [r7, #12]
1677 013a 5B8D ldrh r3, [r3, #42] @ movhi
1678 013c 9BB2 uxth r3, r3
1679 .loc 1 1574 26
1680 013e 013B subs r3, r3, #1
1681 0140 9AB2 uxth r2, r3
ARM GAS /tmp/cc5G5cqz.s page 58
1682 0142 FB68 ldr r3, [r7, #12]
1683 0144 5A85 strh r2, [r3, #42] @ movhi
1575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
1684 .loc 1 1575 15
1685 0146 FB68 ldr r3, [r7, #12]
1686 0148 1B8D ldrh r3, [r3, #40]
1687 .loc 1 1575 25
1688 014a 013B subs r3, r3, #1
1689 014c 9AB2 uxth r2, r3
1690 014e FB68 ldr r3, [r7, #12]
1691 0150 1A85 strh r2, [r3, #40] @ movhi
1692 .L72:
1576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1693 .loc 1 1578 16
1694 0152 0123 movs r3, #1
1695 0154 60E0 b .L66
1696 .L71:
1579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
1582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
1697 .loc 1 1582 38
1698 0156 FB68 ldr r3, [r7, #12]
1699 0158 1B68 ldr r3, [r3]
1700 .loc 1 1582 48
1701 015a 5A6A ldr r2, [r3, #36]
1702 .loc 1 1582 12
1703 015c FB68 ldr r3, [r7, #12]
1704 015e 5B6A ldr r3, [r3, #36]
1705 .loc 1 1582 25
1706 0160 D2B2 uxtb r2, r2
1707 .loc 1 1582 23
1708 0162 1A70 strb r2, [r3]
1583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
1709 .loc 1 1585 11
1710 0164 FB68 ldr r3, [r7, #12]
1711 0166 5B6A ldr r3, [r3, #36]
1712 .loc 1 1585 21
1713 0168 5A1C adds r2, r3, #1
1714 016a FB68 ldr r3, [r7, #12]
1715 016c 5A62 str r2, [r3, #36]
1586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
1716 .loc 1 1587 11
1717 016e FB68 ldr r3, [r7, #12]
1718 0170 5B8D ldrh r3, [r3, #42] @ movhi
1719 0172 9BB2 uxth r3, r3
1720 .loc 1 1587 22
1721 0174 013B subs r3, r3, #1
1722 0176 9AB2 uxth r2, r3
1723 0178 FB68 ldr r3, [r7, #12]
1724 017a 5A85 strh r2, [r3, #42] @ movhi
1588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
ARM GAS /tmp/cc5G5cqz.s page 59
1725 .loc 1 1588 11
1726 017c FB68 ldr r3, [r7, #12]
1727 017e 1B8D ldrh r3, [r3, #40]
1728 .loc 1 1588 21
1729 0180 013B subs r3, r3, #1
1730 0182 9AB2 uxth r2, r3
1731 0184 FB68 ldr r3, [r7, #12]
1732 0186 1A85 strh r2, [r3, #40] @ movhi
1733 .L70:
1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1734 .loc 1 1557 16
1735 0188 FB68 ldr r3, [r7, #12]
1736 018a 5B8D ldrh r3, [r3, #42] @ movhi
1737 018c 9BB2 uxth r3, r3
1557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1738 .loc 1 1557 28
1739 018e 002B cmp r3, #0
1740 0190 AFD1 bne .L73
1589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP flag is set */
1592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
1741 .loc 1 1592 9
1742 0192 7A69 ldr r2, [r7, #20]
1743 0194 3968 ldr r1, [r7]
1744 0196 F868 ldr r0, [r7, #12]
1745 0198 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
1746 019c 0346 mov r3, r0
1747 .loc 1 1592 8 discriminator 1
1748 019e 002B cmp r3, #0
1749 01a0 09D0 beq .L74
1593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1750 .loc 1 1595 11
1751 01a2 FB68 ldr r3, [r7, #12]
1752 01a4 1B68 ldr r3, [r3]
1753 .loc 1 1595 21
1754 01a6 5A68 ldr r2, [r3, #4]
1755 .loc 1 1595 11
1756 01a8 FB68 ldr r3, [r7, #12]
1757 01aa 1B68 ldr r3, [r3]
1758 .loc 1 1595 27
1759 01ac 42F40042 orr r2, r2, #32768
1760 01b0 5A60 str r2, [r3, #4]
1596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1761 .loc 1 1596 14
1762 01b2 0123 movs r3, #1
1763 01b4 30E0 b .L66
1764 .L74:
1597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP flag */
1600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
1765 .loc 1 1600 5
1766 01b6 FB68 ldr r3, [r7, #12]
1767 01b8 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 60
1768 01ba 2022 movs r2, #32
1769 01bc DA61 str r2, [r3, #28]
1601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until BUSY flag is reset */
1603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)
1770 .loc 1 1603 9
1771 01be 7B69 ldr r3, [r7, #20]
1772 01c0 0093 str r3, [sp]
1773 01c2 3B68 ldr r3, [r7]
1774 01c4 0122 movs r2, #1
1775 01c6 4FF40041 mov r1, #32768
1776 01ca F868 ldr r0, [r7, #12]
1777 01cc FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
1778 01d0 0346 mov r3, r0
1779 .loc 1 1603 8 discriminator 1
1780 01d2 002B cmp r3, #0
1781 01d4 09D0 beq .L75
1604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1782 .loc 1 1606 11
1783 01d6 FB68 ldr r3, [r7, #12]
1784 01d8 1B68 ldr r3, [r3]
1785 .loc 1 1606 21
1786 01da 5A68 ldr r2, [r3, #4]
1787 .loc 1 1606 11
1788 01dc FB68 ldr r3, [r7, #12]
1789 01de 1B68 ldr r3, [r3]
1790 .loc 1 1606 27
1791 01e0 42F40042 orr r2, r2, #32768
1792 01e4 5A60 str r2, [r3, #4]
1607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1793 .loc 1 1607 14
1794 01e6 0123 movs r3, #1
1795 01e8 16E0 b .L66
1796 .L75:
1608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
1611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
1797 .loc 1 1611 9
1798 01ea FB68 ldr r3, [r7, #12]
1799 01ec 1B68 ldr r3, [r3]
1800 .loc 1 1611 19
1801 01ee 5A68 ldr r2, [r3, #4]
1802 .loc 1 1611 9
1803 01f0 FB68 ldr r3, [r7, #12]
1804 01f2 1B68 ldr r3, [r3]
1805 .loc 1 1611 25
1806 01f4 42F40042 orr r2, r2, #32768
1807 01f8 5A60 str r2, [r3, #4]
1612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
1808 .loc 1 1613 17
1809 01fa FB68 ldr r3, [r7, #12]
1810 01fc 2022 movs r2, #32
1811 01fe 83F84120 strb r2, [r3, #65]
ARM GAS /tmp/cc5G5cqz.s page 61
1614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
1812 .loc 1 1614 17
1813 0202 FB68 ldr r3, [r7, #12]
1814 0204 0022 movs r2, #0
1815 0206 83F84220 strb r2, [r3, #66]
1615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
1816 .loc 1 1617 5
1817 020a FB68 ldr r3, [r7, #12]
1818 020c 0022 movs r2, #0
1819 020e 83F84020 strb r2, [r3, #64]
1618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
1820 .loc 1 1619 12
1821 0212 0023 movs r3, #0
1822 0214 00E0 b .L66
1823 .L63:
1620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
1824 .loc 1 1623 12
1825 0216 0223 movs r3, #2
1826 .L66:
1624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1827 .loc 1 1625 1
1828 0218 1846 mov r0, r3
1829 021a 1837 adds r7, r7, #24
1830 .cfi_def_cfa_offset 8
1831 021c BD46 mov sp, r7
1832 .cfi_def_cfa_register 13
1833 @ sp needed
1834 021e 80BD pop {r7, pc}
1835 .cfi_endproc
1836 .LFE137:
1838 .section .text.HAL_I2C_Master_Transmit_IT,"ax",%progbits
1839 .align 1
1840 .global HAL_I2C_Master_Transmit_IT
1841 .syntax unified
1842 .thumb
1843 .thumb_func
1845 HAL_I2C_Master_Transmit_IT:
1846 .LFB138:
1626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt
1629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
1632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
1633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t
ARM GAS /tmp/cc5G5cqz.s page 62
1638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size)
1639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1847 .loc 1 1639 1
1848 .cfi_startproc
1849 @ args = 0, pretend = 0, frame = 24
1850 @ frame_needed = 1, uses_anonymous_args = 0
1851 0000 80B5 push {r7, lr}
1852 .cfi_def_cfa_offset 8
1853 .cfi_offset 7, -8
1854 .cfi_offset 14, -4
1855 0002 88B0 sub sp, sp, #32
1856 .cfi_def_cfa_offset 40
1857 0004 02AF add r7, sp, #8
1858 .cfi_def_cfa 7, 32
1859 0006 F860 str r0, [r7, #12]
1860 0008 7A60 str r2, [r7, #4]
1861 000a 1A46 mov r2, r3
1862 000c 0B46 mov r3, r1 @ movhi
1863 000e 7B81 strh r3, [r7, #10] @ movhi
1864 0010 1346 mov r3, r2 @ movhi
1865 0012 3B81 strh r3, [r7, #8] @ movhi
1640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
1641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
1866 .loc 1 1642 11
1867 0014 FB68 ldr r3, [r7, #12]
1868 0016 93F84130 ldrb r3, [r3, #65]
1869 001a DBB2 uxtb r3, r3
1870 .loc 1 1642 6
1871 001c 202B cmp r3, #32
1872 001e 53D1 bne .L77
1643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
1873 .loc 1 1644 9
1874 0020 FB68 ldr r3, [r7, #12]
1875 0022 1B68 ldr r3, [r3]
1876 0024 9B69 ldr r3, [r3, #24]
1877 0026 03F40043 and r3, r3, #32768
1878 .loc 1 1644 8
1879 002a B3F5004F cmp r3, #32768
1880 002e 01D1 bne .L78
1645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
1881 .loc 1 1646 14
1882 0030 0223 movs r3, #2
1883 0032 4AE0 b .L79
1884 .L78:
1647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
1885 .loc 1 1650 5
1886 0034 FB68 ldr r3, [r7, #12]
1887 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
1888 003a 012B cmp r3, #1
1889 003c 01D1 bne .L80
1890 .loc 1 1650 5 is_stmt 0 discriminator 1
ARM GAS /tmp/cc5G5cqz.s page 63
1891 003e 0223 movs r3, #2
1892 .loc 1 1650 5
1893 0040 43E0 b .L79
1894 .L80:
1895 .loc 1 1650 5 discriminator 2
1896 0042 FB68 ldr r3, [r7, #12]
1897 0044 0122 movs r2, #1
1898 0046 83F84020 strb r2, [r3, #64]
1651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
1899 .loc 1 1652 23 is_stmt 1
1900 004a FB68 ldr r3, [r7, #12]
1901 004c 2122 movs r2, #33
1902 004e 83F84120 strb r2, [r3, #65]
1653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
1903 .loc 1 1653 23
1904 0052 FB68 ldr r3, [r7, #12]
1905 0054 1022 movs r2, #16
1906 0056 83F84220 strb r2, [r3, #66]
1654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
1907 .loc 1 1654 23
1908 005a FB68 ldr r3, [r7, #12]
1909 005c 0022 movs r2, #0
1910 005e 5A64 str r2, [r3, #68]
1655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
1911 .loc 1 1657 23
1912 0060 FB68 ldr r3, [r7, #12]
1913 0062 7A68 ldr r2, [r7, #4]
1914 0064 5A62 str r2, [r3, #36]
1658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
1915 .loc 1 1658 23
1916 0066 FB68 ldr r3, [r7, #12]
1917 0068 3A89 ldrh r2, [r7, #8] @ movhi
1918 006a 5A85 strh r2, [r3, #42] @ movhi
1659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
1919 .loc 1 1659 23
1920 006c FB68 ldr r3, [r7, #12]
1921 006e 194A ldr r2, .L83
1922 0070 DA62 str r2, [r3, #44]
1660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
1923 .loc 1 1660 23
1924 0072 FB68 ldr r3, [r7, #12]
1925 0074 184A ldr r2, .L83+4
1926 0076 5A63 str r2, [r3, #52]
1661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
1927 .loc 1 1662 13
1928 0078 FB68 ldr r3, [r7, #12]
1929 007a 5B8D ldrh r3, [r3, #42] @ movhi
1930 007c 9BB2 uxth r3, r3
1931 .loc 1 1662 8
1932 007e FF2B cmp r3, #255
1933 0080 06D9 bls .L81
1663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
ARM GAS /tmp/cc5G5cqz.s page 64
1934 .loc 1 1664 22
1935 0082 FB68 ldr r3, [r7, #12]
1936 0084 FF22 movs r2, #255
1937 0086 1A85 strh r2, [r3, #40] @ movhi
1665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
1938 .loc 1 1665 16
1939 0088 4FF08073 mov r3, #16777216
1940 008c 7B61 str r3, [r7, #20]
1941 008e 07E0 b .L82
1942 .L81:
1666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
1943 .loc 1 1669 28
1944 0090 FB68 ldr r3, [r7, #12]
1945 0092 5B8D ldrh r3, [r3, #42] @ movhi
1946 0094 9AB2 uxth r2, r3
1947 .loc 1 1669 22
1948 0096 FB68 ldr r3, [r7, #12]
1949 0098 1A85 strh r2, [r3, #40] @ movhi
1670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE;
1950 .loc 1 1670 16
1951 009a 4FF00073 mov r3, #33554432
1952 009e 7B61 str r3, [r7, #20]
1953 .L82:
1671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
1674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */
1675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRIT
1954 .loc 1 1675 55
1955 00a0 FB68 ldr r3, [r7, #12]
1956 00a2 1B8D ldrh r3, [r3, #40]
1957 .loc 1 1675 5
1958 00a4 DAB2 uxtb r2, r3
1959 00a6 7989 ldrh r1, [r7, #10]
1960 00a8 0C4B ldr r3, .L83+8
1961 00aa 0093 str r3, [sp]
1962 00ac 7B69 ldr r3, [r7, #20]
1963 00ae F868 ldr r0, [r7, #12]
1964 00b0 FFF7FEFF bl I2C_TransferConfig
1676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
1965 .loc 1 1678 5
1966 00b4 FB68 ldr r3, [r7, #12]
1967 00b6 0022 movs r2, #0
1968 00b8 83F84020 strb r2, [r3, #64]
1679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
1681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
1682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
1683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
1685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
1686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
ARM GAS /tmp/cc5G5cqz.s page 65
1687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
1688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
1969 .loc 1 1688 5
1970 00bc 0121 movs r1, #1
1971 00be F868 ldr r0, [r7, #12]
1972 00c0 FFF7FEFF bl I2C_Enable_IRQ
1689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
1973 .loc 1 1690 12
1974 00c4 0023 movs r3, #0
1975 00c6 00E0 b .L79
1976 .L77:
1691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
1977 .loc 1 1694 12
1978 00c8 0223 movs r3, #2
1979 .L79:
1695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1980 .loc 1 1696 1
1981 00ca 1846 mov r0, r3
1982 00cc 1837 adds r7, r7, #24
1983 .cfi_def_cfa_offset 8
1984 00ce BD46 mov sp, r7
1985 .cfi_def_cfa_register 13
1986 @ sp needed
1987 00d0 80BD pop {r7, pc}
1988 .L84:
1989 00d2 00BF .align 2
1990 .L83:
1991 00d4 0000FFFF .word -65536
1992 00d8 00000000 .word I2C_Master_ISR_IT
1993 00dc 00200080 .word -2147475456
1994 .cfi_endproc
1995 .LFE138:
1997 .section .text.HAL_I2C_Master_Receive_IT,"ax",%progbits
1998 .align 1
1999 .global HAL_I2C_Master_Receive_IT
2000 .syntax unified
2001 .thumb
2002 .thumb_func
2004 HAL_I2C_Master_Receive_IT:
2005 .LFB139:
1697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt
1700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
1703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
1704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *
ARM GAS /tmp/cc5G5cqz.s page 66
1709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size)
1710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2006 .loc 1 1710 1
2007 .cfi_startproc
2008 @ args = 0, pretend = 0, frame = 24
2009 @ frame_needed = 1, uses_anonymous_args = 0
2010 0000 80B5 push {r7, lr}
2011 .cfi_def_cfa_offset 8
2012 .cfi_offset 7, -8
2013 .cfi_offset 14, -4
2014 0002 88B0 sub sp, sp, #32
2015 .cfi_def_cfa_offset 40
2016 0004 02AF add r7, sp, #8
2017 .cfi_def_cfa 7, 32
2018 0006 F860 str r0, [r7, #12]
2019 0008 7A60 str r2, [r7, #4]
2020 000a 1A46 mov r2, r3
2021 000c 0B46 mov r3, r1 @ movhi
2022 000e 7B81 strh r3, [r7, #10] @ movhi
2023 0010 1346 mov r3, r2 @ movhi
2024 0012 3B81 strh r3, [r7, #8] @ movhi
1711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
1712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
2025 .loc 1 1713 11
2026 0014 FB68 ldr r3, [r7, #12]
2027 0016 93F84130 ldrb r3, [r3, #65]
2028 001a DBB2 uxtb r3, r3
2029 .loc 1 1713 6
2030 001c 202B cmp r3, #32
2031 001e 53D1 bne .L86
1714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
2032 .loc 1 1715 9
2033 0020 FB68 ldr r3, [r7, #12]
2034 0022 1B68 ldr r3, [r3]
2035 0024 9B69 ldr r3, [r3, #24]
2036 0026 03F40043 and r3, r3, #32768
2037 .loc 1 1715 8
2038 002a B3F5004F cmp r3, #32768
2039 002e 01D1 bne .L87
1716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2040 .loc 1 1717 14
2041 0030 0223 movs r3, #2
2042 0032 4AE0 b .L88
2043 .L87:
1718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
2044 .loc 1 1721 5
2045 0034 FB68 ldr r3, [r7, #12]
2046 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
2047 003a 012B cmp r3, #1
2048 003c 01D1 bne .L89
2049 .loc 1 1721 5 is_stmt 0 discriminator 1
ARM GAS /tmp/cc5G5cqz.s page 67
2050 003e 0223 movs r3, #2
2051 .loc 1 1721 5
2052 0040 43E0 b .L88
2053 .L89:
2054 .loc 1 1721 5 discriminator 2
2055 0042 FB68 ldr r3, [r7, #12]
2056 0044 0122 movs r2, #1
2057 0046 83F84020 strb r2, [r3, #64]
1722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
2058 .loc 1 1723 23 is_stmt 1
2059 004a FB68 ldr r3, [r7, #12]
2060 004c 2222 movs r2, #34
2061 004e 83F84120 strb r2, [r3, #65]
1724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
2062 .loc 1 1724 23
2063 0052 FB68 ldr r3, [r7, #12]
2064 0054 1022 movs r2, #16
2065 0056 83F84220 strb r2, [r3, #66]
1725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
2066 .loc 1 1725 23
2067 005a FB68 ldr r3, [r7, #12]
2068 005c 0022 movs r2, #0
2069 005e 5A64 str r2, [r3, #68]
1726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
2070 .loc 1 1728 23
2071 0060 FB68 ldr r3, [r7, #12]
2072 0062 7A68 ldr r2, [r7, #4]
2073 0064 5A62 str r2, [r3, #36]
1729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
2074 .loc 1 1729 23
2075 0066 FB68 ldr r3, [r7, #12]
2076 0068 3A89 ldrh r2, [r7, #8] @ movhi
2077 006a 5A85 strh r2, [r3, #42] @ movhi
1730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
2078 .loc 1 1730 23
2079 006c FB68 ldr r3, [r7, #12]
2080 006e 194A ldr r2, .L92
2081 0070 DA62 str r2, [r3, #44]
1731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
2082 .loc 1 1731 23
2083 0072 FB68 ldr r3, [r7, #12]
2084 0074 184A ldr r2, .L92+4
2085 0076 5A63 str r2, [r3, #52]
1732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
2086 .loc 1 1733 13
2087 0078 FB68 ldr r3, [r7, #12]
2088 007a 5B8D ldrh r3, [r3, #42] @ movhi
2089 007c 9BB2 uxth r3, r3
2090 .loc 1 1733 8
2091 007e FF2B cmp r3, #255
2092 0080 06D9 bls .L90
1734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
ARM GAS /tmp/cc5G5cqz.s page 68
2093 .loc 1 1735 22
2094 0082 FB68 ldr r3, [r7, #12]
2095 0084 FF22 movs r2, #255
2096 0086 1A85 strh r2, [r3, #40] @ movhi
1736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
2097 .loc 1 1736 16
2098 0088 4FF08073 mov r3, #16777216
2099 008c 7B61 str r3, [r7, #20]
2100 008e 07E0 b .L91
2101 .L90:
1737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
2102 .loc 1 1740 28
2103 0090 FB68 ldr r3, [r7, #12]
2104 0092 5B8D ldrh r3, [r3, #42] @ movhi
2105 0094 9AB2 uxth r2, r3
2106 .loc 1 1740 22
2107 0096 FB68 ldr r3, [r7, #12]
2108 0098 1A85 strh r2, [r3, #40] @ movhi
1741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE;
2109 .loc 1 1741 16
2110 009a 4FF00073 mov r3, #33554432
2111 009e 7B61 str r3, [r7, #20]
2112 .L91:
1742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
1745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */
1746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ
2113 .loc 1 1746 55
2114 00a0 FB68 ldr r3, [r7, #12]
2115 00a2 1B8D ldrh r3, [r3, #40]
2116 .loc 1 1746 5
2117 00a4 DAB2 uxtb r2, r3
2118 00a6 7989 ldrh r1, [r7, #10]
2119 00a8 0C4B ldr r3, .L92+8
2120 00aa 0093 str r3, [sp]
2121 00ac 7B69 ldr r3, [r7, #20]
2122 00ae F868 ldr r0, [r7, #12]
2123 00b0 FFF7FEFF bl I2C_TransferConfig
1747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2124 .loc 1 1749 5
2125 00b4 FB68 ldr r3, [r7, #12]
2126 00b6 0022 movs r2, #0
2127 00b8 83F84020 strb r2, [r3, #64]
1750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
1752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
1753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
1754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */
1756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
1757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
ARM GAS /tmp/cc5G5cqz.s page 69
1758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
1759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
2128 .loc 1 1759 5
2129 00bc 0221 movs r1, #2
2130 00be F868 ldr r0, [r7, #12]
2131 00c0 FFF7FEFF bl I2C_Enable_IRQ
1760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
2132 .loc 1 1761 12
2133 00c4 0023 movs r3, #0
2134 00c6 00E0 b .L88
2135 .L86:
1762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2136 .loc 1 1765 12
2137 00c8 0223 movs r3, #2
2138 .L88:
1766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2139 .loc 1 1767 1
2140 00ca 1846 mov r0, r3
2141 00cc 1837 adds r7, r7, #24
2142 .cfi_def_cfa_offset 8
2143 00ce BD46 mov sp, r7
2144 .cfi_def_cfa_register 13
2145 @ sp needed
2146 00d0 80BD pop {r7, pc}
2147 .L93:
2148 00d2 00BF .align 2
2149 .L92:
2150 00d4 0000FFFF .word -65536
2151 00d8 00000000 .word I2C_Master_ISR_IT
2152 00dc 00240080 .word -2147474432
2153 .cfi_endproc
2154 .LFE139:
2156 .section .text.HAL_I2C_Slave_Transmit_IT,"ax",%progbits
2157 .align 1
2158 .global HAL_I2C_Slave_Transmit_IT
2159 .syntax unified
2160 .thumb
2161 .thumb_func
2163 HAL_I2C_Slave_Transmit_IT:
2164 .LFB140:
1768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt
1771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
1778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2165 .loc 1 1778 1
ARM GAS /tmp/cc5G5cqz.s page 70
2166 .cfi_startproc
2167 @ args = 0, pretend = 0, frame = 16
2168 @ frame_needed = 1, uses_anonymous_args = 0
2169 0000 80B5 push {r7, lr}
2170 .cfi_def_cfa_offset 8
2171 .cfi_offset 7, -8
2172 .cfi_offset 14, -4
2173 0002 84B0 sub sp, sp, #16
2174 .cfi_def_cfa_offset 24
2175 0004 00AF add r7, sp, #0
2176 .cfi_def_cfa_register 7
2177 0006 F860 str r0, [r7, #12]
2178 0008 B960 str r1, [r7, #8]
2179 000a 1346 mov r3, r2
2180 000c FB80 strh r3, [r7, #6] @ movhi
1779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
2181 .loc 1 1779 11
2182 000e FB68 ldr r3, [r7, #12]
2183 0010 93F84130 ldrb r3, [r3, #65]
2184 0014 DBB2 uxtb r3, r3
2185 .loc 1 1779 6
2186 0016 202B cmp r3, #32
2187 0018 56D1 bne .L95
1780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
2188 .loc 1 1782 5
2189 001a FB68 ldr r3, [r7, #12]
2190 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
2191 0020 012B cmp r3, #1
2192 0022 01D1 bne .L96
2193 .loc 1 1782 5 is_stmt 0 discriminator 1
2194 0024 0223 movs r3, #2
2195 .loc 1 1782 5
2196 0026 50E0 b .L97
2197 .L96:
2198 .loc 1 1782 5 discriminator 2
2199 0028 FB68 ldr r3, [r7, #12]
2200 002a 0122 movs r2, #1
2201 002c 83F84020 strb r2, [r3, #64]
1783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
2202 .loc 1 1784 23 is_stmt 1
2203 0030 FB68 ldr r3, [r7, #12]
2204 0032 2122 movs r2, #33
2205 0034 83F84120 strb r2, [r3, #65]
1785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
2206 .loc 1 1785 23
2207 0038 FB68 ldr r3, [r7, #12]
2208 003a 2022 movs r2, #32
2209 003c 83F84220 strb r2, [r3, #66]
1786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
2210 .loc 1 1786 23
2211 0040 FB68 ldr r3, [r7, #12]
2212 0042 0022 movs r2, #0
2213 0044 5A64 str r2, [r3, #68]
1787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 71
1788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
1789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
2214 .loc 1 1789 9
2215 0046 FB68 ldr r3, [r7, #12]
2216 0048 1B68 ldr r3, [r3]
2217 .loc 1 1789 19
2218 004a 5A68 ldr r2, [r3, #4]
2219 .loc 1 1789 9
2220 004c FB68 ldr r3, [r7, #12]
2221 004e 1B68 ldr r3, [r3]
2222 .loc 1 1789 25
2223 0050 22F40042 bic r2, r2, #32768
2224 0054 5A60 str r2, [r3, #4]
1790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
2225 .loc 1 1792 23
2226 0056 FB68 ldr r3, [r7, #12]
2227 0058 BA68 ldr r2, [r7, #8]
2228 005a 5A62 str r2, [r3, #36]
1793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
2229 .loc 1 1793 23
2230 005c FB68 ldr r3, [r7, #12]
2231 005e FA88 ldrh r2, [r7, #6] @ movhi
2232 0060 5A85 strh r2, [r3, #42] @ movhi
1794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
2233 .loc 1 1794 29
2234 0062 FB68 ldr r3, [r7, #12]
2235 0064 5B8D ldrh r3, [r3, #42] @ movhi
2236 0066 9AB2 uxth r2, r3
2237 .loc 1 1794 23
2238 0068 FB68 ldr r3, [r7, #12]
2239 006a 1A85 strh r2, [r3, #40] @ movhi
1795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
2240 .loc 1 1795 23
2241 006c FB68 ldr r3, [r7, #12]
2242 006e 194A ldr r2, .L99
2243 0070 DA62 str r2, [r3, #44]
1796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
2244 .loc 1 1796 23
2245 0072 FB68 ldr r3, [r7, #12]
2246 0074 184A ldr r2, .L99+4
2247 0076 5A63 str r2, [r3, #52]
1797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */
1799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE)
2248 .loc 1 1799 19
2249 0078 FB68 ldr r3, [r7, #12]
2250 007a 1B6A ldr r3, [r3, #32]
2251 .loc 1 1799 8
2252 007c B3F5003F cmp r3, #131072
2253 0080 17D1 bne .L98
1800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */
1802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
1803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
2254 .loc 1 1803 35
ARM GAS /tmp/cc5G5cqz.s page 72
2255 0082 FB68 ldr r3, [r7, #12]
2256 0084 5B6A ldr r3, [r3, #36]
2257 .loc 1 1803 30
2258 0086 1A78 ldrb r2, [r3] @ zero_extendqisi2
2259 .loc 1 1803 11
2260 0088 FB68 ldr r3, [r7, #12]
2261 008a 1B68 ldr r3, [r3]
2262 .loc 1 1803 28
2263 008c 9A62 str r2, [r3, #40]
1804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
1806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
2264 .loc 1 1806 11
2265 008e FB68 ldr r3, [r7, #12]
2266 0090 5B6A ldr r3, [r3, #36]
2267 .loc 1 1806 21
2268 0092 5A1C adds r2, r3, #1
2269 0094 FB68 ldr r3, [r7, #12]
2270 0096 5A62 str r2, [r3, #36]
1807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
2271 .loc 1 1808 11
2272 0098 FB68 ldr r3, [r7, #12]
2273 009a 5B8D ldrh r3, [r3, #42] @ movhi
2274 009c 9BB2 uxth r3, r3
2275 .loc 1 1808 22
2276 009e 013B subs r3, r3, #1
2277 00a0 9AB2 uxth r2, r3
2278 00a2 FB68 ldr r3, [r7, #12]
2279 00a4 5A85 strh r2, [r3, #42] @ movhi
1809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
2280 .loc 1 1809 11
2281 00a6 FB68 ldr r3, [r7, #12]
2282 00a8 1B8D ldrh r3, [r3, #40]
2283 .loc 1 1809 21
2284 00aa 013B subs r3, r3, #1
2285 00ac 9AB2 uxth r2, r3
2286 00ae FB68 ldr r3, [r7, #12]
2287 00b0 1A85 strh r2, [r3, #40] @ movhi
2288 .L98:
1810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2289 .loc 1 1813 5
2290 00b2 FB68 ldr r3, [r7, #12]
2291 00b4 0022 movs r2, #0
2292 00b6 83F84020 strb r2, [r3, #64]
1814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
1816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
1817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
1818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
1820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
1821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
1822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
ARM GAS /tmp/cc5G5cqz.s page 73
1823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
2293 .loc 1 1823 5
2294 00ba 48F20101 movw r1, #32769
2295 00be F868 ldr r0, [r7, #12]
2296 00c0 FFF7FEFF bl I2C_Enable_IRQ
1824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
2297 .loc 1 1825 12
2298 00c4 0023 movs r3, #0
2299 00c6 00E0 b .L97
2300 .L95:
1826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2301 .loc 1 1829 12
2302 00c8 0223 movs r3, #2
2303 .L97:
1830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2304 .loc 1 1831 1
2305 00ca 1846 mov r0, r3
2306 00cc 1037 adds r7, r7, #16
2307 .cfi_def_cfa_offset 8
2308 00ce BD46 mov sp, r7
2309 .cfi_def_cfa_register 13
2310 @ sp needed
2311 00d0 80BD pop {r7, pc}
2312 .L100:
2313 00d2 00BF .align 2
2314 .L99:
2315 00d4 0000FFFF .word -65536
2316 00d8 00000000 .word I2C_Slave_ISR_IT
2317 .cfi_endproc
2318 .LFE140:
2320 .section .text.HAL_I2C_Slave_Receive_IT,"ax",%progbits
2321 .align 1
2322 .global HAL_I2C_Slave_Receive_IT
2323 .syntax unified
2324 .thumb
2325 .thumb_func
2327 HAL_I2C_Slave_Receive_IT:
2328 .LFB141:
1832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt
1835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
1842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2329 .loc 1 1842 1
2330 .cfi_startproc
2331 @ args = 0, pretend = 0, frame = 16
ARM GAS /tmp/cc5G5cqz.s page 74
2332 @ frame_needed = 1, uses_anonymous_args = 0
2333 0000 80B5 push {r7, lr}
2334 .cfi_def_cfa_offset 8
2335 .cfi_offset 7, -8
2336 .cfi_offset 14, -4
2337 0002 84B0 sub sp, sp, #16
2338 .cfi_def_cfa_offset 24
2339 0004 00AF add r7, sp, #0
2340 .cfi_def_cfa_register 7
2341 0006 F860 str r0, [r7, #12]
2342 0008 B960 str r1, [r7, #8]
2343 000a 1346 mov r3, r2
2344 000c FB80 strh r3, [r7, #6] @ movhi
1843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
2345 .loc 1 1843 11
2346 000e FB68 ldr r3, [r7, #12]
2347 0010 93F84130 ldrb r3, [r3, #65]
2348 0014 DBB2 uxtb r3, r3
2349 .loc 1 1843 6
2350 0016 202B cmp r3, #32
2351 0018 39D1 bne .L102
1844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
2352 .loc 1 1846 5
2353 001a FB68 ldr r3, [r7, #12]
2354 001c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
2355 0020 012B cmp r3, #1
2356 0022 01D1 bne .L103
2357 .loc 1 1846 5 is_stmt 0 discriminator 1
2358 0024 0223 movs r3, #2
2359 .loc 1 1846 5
2360 0026 33E0 b .L104
2361 .L103:
2362 .loc 1 1846 5 discriminator 2
2363 0028 FB68 ldr r3, [r7, #12]
2364 002a 0122 movs r2, #1
2365 002c 83F84020 strb r2, [r3, #64]
1847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
2366 .loc 1 1848 23 is_stmt 1
2367 0030 FB68 ldr r3, [r7, #12]
2368 0032 2222 movs r2, #34
2369 0034 83F84120 strb r2, [r3, #65]
1849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
2370 .loc 1 1849 23
2371 0038 FB68 ldr r3, [r7, #12]
2372 003a 2022 movs r2, #32
2373 003c 83F84220 strb r2, [r3, #66]
1850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
2374 .loc 1 1850 23
2375 0040 FB68 ldr r3, [r7, #12]
2376 0042 0022 movs r2, #0
2377 0044 5A64 str r2, [r3, #68]
1851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
1853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
ARM GAS /tmp/cc5G5cqz.s page 75
2378 .loc 1 1853 9
2379 0046 FB68 ldr r3, [r7, #12]
2380 0048 1B68 ldr r3, [r3]
2381 .loc 1 1853 19
2382 004a 5A68 ldr r2, [r3, #4]
2383 .loc 1 1853 9
2384 004c FB68 ldr r3, [r7, #12]
2385 004e 1B68 ldr r3, [r3]
2386 .loc 1 1853 25
2387 0050 22F40042 bic r2, r2, #32768
2388 0054 5A60 str r2, [r3, #4]
1854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
2389 .loc 1 1856 23
2390 0056 FB68 ldr r3, [r7, #12]
2391 0058 BA68 ldr r2, [r7, #8]
2392 005a 5A62 str r2, [r3, #36]
1857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
2393 .loc 1 1857 23
2394 005c FB68 ldr r3, [r7, #12]
2395 005e FA88 ldrh r2, [r7, #6] @ movhi
2396 0060 5A85 strh r2, [r3, #42] @ movhi
1858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
2397 .loc 1 1858 29
2398 0062 FB68 ldr r3, [r7, #12]
2399 0064 5B8D ldrh r3, [r3, #42] @ movhi
2400 0066 9AB2 uxth r2, r3
2401 .loc 1 1858 23
2402 0068 FB68 ldr r3, [r7, #12]
2403 006a 1A85 strh r2, [r3, #40] @ movhi
1859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
2404 .loc 1 1859 23
2405 006c FB68 ldr r3, [r7, #12]
2406 006e 0A4A ldr r2, .L105
2407 0070 DA62 str r2, [r3, #44]
1860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
2408 .loc 1 1860 23
2409 0072 FB68 ldr r3, [r7, #12]
2410 0074 094A ldr r2, .L105+4
2411 0076 5A63 str r2, [r3, #52]
1861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2412 .loc 1 1863 5
2413 0078 FB68 ldr r3, [r7, #12]
2414 007a 0022 movs r2, #0
2415 007c 83F84020 strb r2, [r3, #64]
1864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
1866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
1867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
1868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */
1870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
1871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
1872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
ARM GAS /tmp/cc5G5cqz.s page 76
1873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
2416 .loc 1 1873 5
2417 0080 48F20201 movw r1, #32770
2418 0084 F868 ldr r0, [r7, #12]
2419 0086 FFF7FEFF bl I2C_Enable_IRQ
1874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
2420 .loc 1 1875 12
2421 008a 0023 movs r3, #0
2422 008c 00E0 b .L104
2423 .L102:
1876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2424 .loc 1 1879 12
2425 008e 0223 movs r3, #2
2426 .L104:
1880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2427 .loc 1 1881 1
2428 0090 1846 mov r0, r3
2429 0092 1037 adds r7, r7, #16
2430 .cfi_def_cfa_offset 8
2431 0094 BD46 mov sp, r7
2432 .cfi_def_cfa_register 13
2433 @ sp needed
2434 0096 80BD pop {r7, pc}
2435 .L106:
2436 .align 2
2437 .L105:
2438 0098 0000FFFF .word -65536
2439 009c 00000000 .word I2C_Slave_ISR_IT
2440 .cfi_endproc
2441 .LFE141:
2443 .section .text.HAL_I2C_Master_Transmit_DMA,"ax",%progbits
2444 .align 1
2445 .global HAL_I2C_Master_Transmit_DMA
2446 .syntax unified
2447 .thumb
2448 .thumb_func
2450 HAL_I2C_Master_Transmit_DMA:
2451 .LFB142:
1882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
1884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with DMA
1885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
1886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
1887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
1888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
1889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
1890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
1891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
1892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
1893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t
1894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size)
1895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 77
2452 .loc 1 1895 1
2453 .cfi_startproc
2454 @ args = 0, pretend = 0, frame = 24
2455 @ frame_needed = 1, uses_anonymous_args = 0
2456 0000 80B5 push {r7, lr}
2457 .cfi_def_cfa_offset 8
2458 .cfi_offset 7, -8
2459 .cfi_offset 14, -4
2460 0002 88B0 sub sp, sp, #32
2461 .cfi_def_cfa_offset 40
2462 0004 02AF add r7, sp, #8
2463 .cfi_def_cfa 7, 32
2464 0006 F860 str r0, [r7, #12]
2465 0008 7A60 str r2, [r7, #4]
2466 000a 1A46 mov r2, r3
2467 000c 0B46 mov r3, r1 @ movhi
2468 000e 7B81 strh r3, [r7, #10] @ movhi
2469 0010 1346 mov r3, r2 @ movhi
2470 0012 3B81 strh r3, [r7, #8] @ movhi
1896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
1897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
1898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
2471 .loc 1 1899 11
2472 0014 FB68 ldr r3, [r7, #12]
2473 0016 93F84130 ldrb r3, [r3, #65]
2474 001a DBB2 uxtb r3, r3
2475 .loc 1 1899 6
2476 001c 202B cmp r3, #32
2477 001e 40F0CD80 bne .L108
1900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
2478 .loc 1 1901 9
2479 0022 FB68 ldr r3, [r7, #12]
2480 0024 1B68 ldr r3, [r3]
2481 0026 9B69 ldr r3, [r3, #24]
2482 0028 03F40043 and r3, r3, #32768
2483 .loc 1 1901 8
2484 002c B3F5004F cmp r3, #32768
2485 0030 01D1 bne .L109
1902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2486 .loc 1 1903 14
2487 0032 0223 movs r3, #2
2488 0034 C3E0 b .L110
2489 .L109:
1904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
1907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
2490 .loc 1 1907 5
2491 0036 FB68 ldr r3, [r7, #12]
2492 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
2493 003c 012B cmp r3, #1
2494 003e 01D1 bne .L111
2495 .loc 1 1907 5 is_stmt 0 discriminator 1
2496 0040 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 78
2497 .loc 1 1907 5
2498 0042 BCE0 b .L110
2499 .L111:
2500 .loc 1 1907 5 discriminator 2
2501 0044 FB68 ldr r3, [r7, #12]
2502 0046 0122 movs r2, #1
2503 0048 83F84020 strb r2, [r3, #64]
1908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
2504 .loc 1 1909 23 is_stmt 1
2505 004c FB68 ldr r3, [r7, #12]
2506 004e 2122 movs r2, #33
2507 0050 83F84120 strb r2, [r3, #65]
1910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
2508 .loc 1 1910 23
2509 0054 FB68 ldr r3, [r7, #12]
2510 0056 1022 movs r2, #16
2511 0058 83F84220 strb r2, [r3, #66]
1911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
2512 .loc 1 1911 23
2513 005c FB68 ldr r3, [r7, #12]
2514 005e 0022 movs r2, #0
2515 0060 5A64 str r2, [r3, #68]
1912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
1914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
2516 .loc 1 1914 23
2517 0062 FB68 ldr r3, [r7, #12]
2518 0064 7A68 ldr r2, [r7, #4]
2519 0066 5A62 str r2, [r3, #36]
1915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
2520 .loc 1 1915 23
2521 0068 FB68 ldr r3, [r7, #12]
2522 006a 3A89 ldrh r2, [r7, #8] @ movhi
2523 006c 5A85 strh r2, [r3, #42] @ movhi
1916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
2524 .loc 1 1916 23
2525 006e FB68 ldr r3, [r7, #12]
2526 0070 554A ldr r2, .L120
2527 0072 DA62 str r2, [r3, #44]
1917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA;
2528 .loc 1 1917 23
2529 0074 FB68 ldr r3, [r7, #12]
2530 0076 554A ldr r2, .L120+4
2531 0078 5A63 str r2, [r3, #52]
1918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
2532 .loc 1 1919 13
2533 007a FB68 ldr r3, [r7, #12]
2534 007c 5B8D ldrh r3, [r3, #42] @ movhi
2535 007e 9BB2 uxth r3, r3
2536 .loc 1 1919 8
2537 0080 FF2B cmp r3, #255
2538 0082 06D9 bls .L112
1920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
2539 .loc 1 1921 22
ARM GAS /tmp/cc5G5cqz.s page 79
2540 0084 FB68 ldr r3, [r7, #12]
2541 0086 FF22 movs r2, #255
2542 0088 1A85 strh r2, [r3, #40] @ movhi
1922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
2543 .loc 1 1922 16
2544 008a 4FF08073 mov r3, #16777216
2545 008e 7B61 str r3, [r7, #20]
2546 0090 07E0 b .L113
2547 .L112:
1923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
2548 .loc 1 1926 28
2549 0092 FB68 ldr r3, [r7, #12]
2550 0094 5B8D ldrh r3, [r3, #42] @ movhi
2551 0096 9AB2 uxth r2, r3
2552 .loc 1 1926 22
2553 0098 FB68 ldr r3, [r7, #12]
2554 009a 1A85 strh r2, [r3, #40] @ movhi
1927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE;
2555 .loc 1 1927 16
2556 009c 4FF00073 mov r3, #33554432
2557 00a0 7B61 str r3, [r7, #20]
2558 .L113:
1928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U)
2559 .loc 1 1930 13
2560 00a2 FB68 ldr r3, [r7, #12]
2561 00a4 1B8D ldrh r3, [r3, #40]
2562 .loc 1 1930 8
2563 00a6 002B cmp r3, #0
2564 00a8 70D0 beq .L114
1931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
2565 .loc 1 1932 15
2566 00aa FB68 ldr r3, [r7, #12]
2567 00ac 9B6B ldr r3, [r3, #56]
2568 .loc 1 1932 10
2569 00ae 002B cmp r3, #0
2570 00b0 20D0 beq .L115
1933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
1935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;
2571 .loc 1 1935 13
2572 00b2 FB68 ldr r3, [r7, #12]
2573 00b4 9B6B ldr r3, [r3, #56]
2574 .loc 1 1935 40
2575 00b6 464A ldr r2, .L120+8
2576 00b8 9A62 str r2, [r3, #40]
1936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
1938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
2577 .loc 1 1938 13
2578 00ba FB68 ldr r3, [r7, #12]
2579 00bc 9B6B ldr r3, [r3, #56]
ARM GAS /tmp/cc5G5cqz.s page 80
2580 .loc 1 1938 41
2581 00be 454A ldr r2, .L120+12
2582 00c0 1A63 str r2, [r3, #48]
1939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
1941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL;
2583 .loc 1 1941 13
2584 00c2 FB68 ldr r3, [r7, #12]
2585 00c4 9B6B ldr r3, [r3, #56]
2586 .loc 1 1941 44
2587 00c6 0022 movs r2, #0
2588 00c8 DA62 str r2, [r3, #44]
1942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
2589 .loc 1 1942 13
2590 00ca FB68 ldr r3, [r7, #12]
2591 00cc 9B6B ldr r3, [r3, #56]
2592 .loc 1 1942 41
2593 00ce 0022 movs r2, #0
2594 00d0 5A63 str r2, [r3, #52]
1943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
1945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->
2595 .loc 1 1945 25
2596 00d2 FB68 ldr r3, [r7, #12]
2597 00d4 986B ldr r0, [r3, #56]
2598 00d6 7968 ldr r1, [r7, #4]
2599 .loc 1 1945 88
2600 00d8 FB68 ldr r3, [r7, #12]
2601 00da 1B68 ldr r3, [r3]
2602 .loc 1 1945 83
2603 00dc 2833 adds r3, r3, #40
2604 .loc 1 1945 25
2605 00de 1A46 mov r2, r3
1946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
2606 .loc 1 1946 46
2607 00e0 FB68 ldr r3, [r7, #12]
2608 00e2 1B8D ldrh r3, [r3, #40]
1945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
2609 .loc 1 1945 25
2610 00e4 FFF7FEFF bl HAL_DMA_Start_IT
2611 00e8 0346 mov r3, r0
2612 00ea FB74 strb r3, [r7, #19]
1947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
1951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
1952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
1953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
1956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
1959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
1961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 81
1962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
2613 .loc 1 1963 10
2614 00ec FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
2615 00ee 002B cmp r3, #0
2616 00f0 38D1 bne .L117
2617 00f2 13E0 b .L119
2618 .L115:
1951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2619 .loc 1 1951 25
2620 00f4 FB68 ldr r3, [r7, #12]
2621 00f6 2022 movs r2, #32
2622 00f8 83F84120 strb r2, [r3, #65]
1952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2623 .loc 1 1952 25
2624 00fc FB68 ldr r3, [r7, #12]
2625 00fe 0022 movs r2, #0
2626 0100 83F84220 strb r2, [r3, #66]
1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2627 .loc 1 1955 13
2628 0104 FB68 ldr r3, [r7, #12]
2629 0106 5B6C ldr r3, [r3, #68]
1955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2630 .loc 1 1955 25
2631 0108 43F08002 orr r2, r3, #128
2632 010c FB68 ldr r3, [r7, #12]
2633 010e 5A64 str r2, [r3, #68]
1958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2634 .loc 1 1958 9
2635 0110 FB68 ldr r3, [r7, #12]
2636 0112 0022 movs r2, #0
2637 0114 83F84020 strb r2, [r3, #64]
1960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2638 .loc 1 1960 16
2639 0118 0123 movs r3, #1
2640 011a 50E0 b .L110
2641 .L119:
1964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
1966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART
1967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_
2642 .loc 1 1967 59
2643 011c FB68 ldr r3, [r7, #12]
2644 011e 1B8D ldrh r3, [r3, #40]
2645 .loc 1 1967 9
2646 0120 DAB2 uxtb r2, r3
2647 0122 7989 ldrh r1, [r7, #10]
2648 0124 2C4B ldr r3, .L120+16
2649 0126 0093 str r3, [sp]
2650 0128 7B69 ldr r3, [r7, #20]
2651 012a F868 ldr r0, [r7, #12]
2652 012c FFF7FEFF bl I2C_TransferConfig
1968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
1970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
2653 .loc 1 1970 13
2654 0130 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 82
2655 0132 5B8D ldrh r3, [r3, #42] @ movhi
2656 0134 9AB2 uxth r2, r3
2657 .loc 1 1970 32
2658 0136 FB68 ldr r3, [r7, #12]
2659 0138 1B8D ldrh r3, [r3, #40]
2660 .loc 1 1970 25
2661 013a D31A subs r3, r2, r3
2662 013c 9AB2 uxth r2, r3
2663 013e FB68 ldr r3, [r7, #12]
2664 0140 5A85 strh r2, [r3, #42] @ movhi
1971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2665 .loc 1 1973 9
2666 0142 FB68 ldr r3, [r7, #12]
2667 0144 0022 movs r2, #0
2668 0146 83F84020 strb r2, [r3, #64]
1974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
1976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
1977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
1978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
1979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2669 .loc 1 1979 9
2670 014a 1021 movs r1, #16
2671 014c F868 ldr r0, [r7, #12]
2672 014e FFF7FEFF bl I2C_Enable_IRQ
1980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
1982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
2673 .loc 1 1982 13
2674 0152 FB68 ldr r3, [r7, #12]
2675 0154 1B68 ldr r3, [r3]
2676 .loc 1 1982 23
2677 0156 1A68 ldr r2, [r3]
2678 .loc 1 1982 13
2679 0158 FB68 ldr r3, [r7, #12]
2680 015a 1B68 ldr r3, [r3]
2681 .loc 1 1982 29
2682 015c 42F48042 orr r2, r2, #16384
2683 0160 1A60 str r2, [r3]
2684 0162 29E0 b .L118
2685 .L117:
1983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
1985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
1986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
1987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
2686 .loc 1 1987 25
2687 0164 FB68 ldr r3, [r7, #12]
2688 0166 2022 movs r2, #32
2689 0168 83F84120 strb r2, [r3, #65]
1988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2690 .loc 1 1988 25
2691 016c FB68 ldr r3, [r7, #12]
2692 016e 0022 movs r2, #0
2693 0170 83F84220 strb r2, [r3, #66]
ARM GAS /tmp/cc5G5cqz.s page 83
1989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
1991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
2694 .loc 1 1991 13
2695 0174 FB68 ldr r3, [r7, #12]
2696 0176 5B6C ldr r3, [r3, #68]
2697 .loc 1 1991 25
2698 0178 43F01002 orr r2, r3, #16
2699 017c FB68 ldr r3, [r7, #12]
2700 017e 5A64 str r2, [r3, #68]
1992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
1994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2701 .loc 1 1994 9
2702 0180 FB68 ldr r3, [r7, #12]
2703 0182 0022 movs r2, #0
2704 0184 83F84020 strb r2, [r3, #64]
1995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
1996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2705 .loc 1 1996 16
2706 0188 0123 movs r3, #1
2707 018a 18E0 b .L110
2708 .L114:
1997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
1999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */
2002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
2709 .loc 1 2002 21
2710 018c FB68 ldr r3, [r7, #12]
2711 018e 134A ldr r2, .L120+20
2712 0190 5A63 str r2, [r3, #52]
2003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
2005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */
2006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
2713 .loc 1 2006 57
2714 0192 FB68 ldr r3, [r7, #12]
2715 0194 1B8D ldrh r3, [r3, #40]
2716 .loc 1 2006 7
2717 0196 DAB2 uxtb r2, r3
2718 0198 7989 ldrh r1, [r7, #10]
2719 019a 0F4B ldr r3, .L120+16
2720 019c 0093 str r3, [sp]
2721 019e 4FF00073 mov r3, #33554432
2722 01a2 F868 ldr r0, [r7, #12]
2723 01a4 FFF7FEFF bl I2C_TransferConfig
2007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE);
2008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2724 .loc 1 2010 7
2725 01a8 FB68 ldr r3, [r7, #12]
2726 01aa 0022 movs r2, #0
2727 01ac 83F84020 strb r2, [r3, #64]
2011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 84
2012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
2016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
2017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
2018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
2019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
2728 .loc 1 2019 7
2729 01b0 0121 movs r1, #1
2730 01b2 F868 ldr r0, [r7, #12]
2731 01b4 FFF7FEFF bl I2C_Enable_IRQ
2732 .L118:
2020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
2733 .loc 1 2022 12
2734 01b8 0023 movs r3, #0
2735 01ba 00E0 b .L110
2736 .L108:
2023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2737 .loc 1 2026 12
2738 01bc 0223 movs r3, #2
2739 .L110:
2027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2740 .loc 1 2028 1
2741 01be 1846 mov r0, r3
2742 01c0 1837 adds r7, r7, #24
2743 .cfi_def_cfa_offset 8
2744 01c2 BD46 mov sp, r7
2745 .cfi_def_cfa_register 13
2746 @ sp needed
2747 01c4 80BD pop {r7, pc}
2748 .L121:
2749 01c6 00BF .align 2
2750 .L120:
2751 01c8 0000FFFF .word -65536
2752 01cc 00000000 .word I2C_Master_ISR_DMA
2753 01d0 00000000 .word I2C_DMAMasterTransmitCplt
2754 01d4 00000000 .word I2C_DMAError
2755 01d8 00200080 .word -2147475456
2756 01dc 00000000 .word I2C_Master_ISR_IT
2757 .cfi_endproc
2758 .LFE142:
2760 .section .text.HAL_I2C_Master_Receive_DMA,"ax",%progbits
2761 .align 1
2762 .global HAL_I2C_Master_Receive_DMA
2763 .syntax unified
2764 .thumb
2765 .thumb_func
2767 HAL_I2C_Master_Receive_DMA:
2768 .LFB143:
2029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 85
2030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with DMA
2032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t
2041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size)
2042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2769 .loc 1 2042 1
2770 .cfi_startproc
2771 @ args = 0, pretend = 0, frame = 24
2772 @ frame_needed = 1, uses_anonymous_args = 0
2773 0000 80B5 push {r7, lr}
2774 .cfi_def_cfa_offset 8
2775 .cfi_offset 7, -8
2776 .cfi_offset 14, -4
2777 0002 88B0 sub sp, sp, #32
2778 .cfi_def_cfa_offset 40
2779 0004 02AF add r7, sp, #8
2780 .cfi_def_cfa 7, 32
2781 0006 F860 str r0, [r7, #12]
2782 0008 7A60 str r2, [r7, #4]
2783 000a 1A46 mov r2, r3
2784 000c 0B46 mov r3, r1 @ movhi
2785 000e 7B81 strh r3, [r7, #10] @ movhi
2786 0010 1346 mov r3, r2 @ movhi
2787 0012 3B81 strh r3, [r7, #8] @ movhi
2043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
2044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
2045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
2788 .loc 1 2046 11
2789 0014 FB68 ldr r3, [r7, #12]
2790 0016 93F84130 ldrb r3, [r3, #65]
2791 001a DBB2 uxtb r3, r3
2792 .loc 1 2046 6
2793 001c 202B cmp r3, #32
2794 001e 40F0CD80 bne .L123
2047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
2795 .loc 1 2048 9
2796 0022 FB68 ldr r3, [r7, #12]
2797 0024 1B68 ldr r3, [r3]
2798 0026 9B69 ldr r3, [r3, #24]
2799 0028 03F40043 and r3, r3, #32768
2800 .loc 1 2048 8
2801 002c B3F5004F cmp r3, #32768
2802 0030 01D1 bne .L124
2049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
2803 .loc 1 2050 14
2804 0032 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 86
2805 0034 C3E0 b .L125
2806 .L124:
2051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
2807 .loc 1 2054 5
2808 0036 FB68 ldr r3, [r7, #12]
2809 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
2810 003c 012B cmp r3, #1
2811 003e 01D1 bne .L126
2812 .loc 1 2054 5 is_stmt 0 discriminator 1
2813 0040 0223 movs r3, #2
2814 .loc 1 2054 5
2815 0042 BCE0 b .L125
2816 .L126:
2817 .loc 1 2054 5 discriminator 2
2818 0044 FB68 ldr r3, [r7, #12]
2819 0046 0122 movs r2, #1
2820 0048 83F84020 strb r2, [r3, #64]
2055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
2821 .loc 1 2056 23 is_stmt 1
2822 004c FB68 ldr r3, [r7, #12]
2823 004e 2222 movs r2, #34
2824 0050 83F84120 strb r2, [r3, #65]
2057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
2825 .loc 1 2057 23
2826 0054 FB68 ldr r3, [r7, #12]
2827 0056 1022 movs r2, #16
2828 0058 83F84220 strb r2, [r3, #66]
2058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
2829 .loc 1 2058 23
2830 005c FB68 ldr r3, [r7, #12]
2831 005e 0022 movs r2, #0
2832 0060 5A64 str r2, [r3, #68]
2059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
2833 .loc 1 2061 23
2834 0062 FB68 ldr r3, [r7, #12]
2835 0064 7A68 ldr r2, [r7, #4]
2836 0066 5A62 str r2, [r3, #36]
2062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
2837 .loc 1 2062 23
2838 0068 FB68 ldr r3, [r7, #12]
2839 006a 3A89 ldrh r2, [r7, #8] @ movhi
2840 006c 5A85 strh r2, [r3, #42] @ movhi
2063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
2841 .loc 1 2063 23
2842 006e FB68 ldr r3, [r7, #12]
2843 0070 554A ldr r2, .L135
2844 0072 DA62 str r2, [r3, #44]
2064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA;
2845 .loc 1 2064 23
2846 0074 FB68 ldr r3, [r7, #12]
2847 0076 554A ldr r2, .L135+4
ARM GAS /tmp/cc5G5cqz.s page 87
2848 0078 5A63 str r2, [r3, #52]
2065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
2849 .loc 1 2066 13
2850 007a FB68 ldr r3, [r7, #12]
2851 007c 5B8D ldrh r3, [r3, #42] @ movhi
2852 007e 9BB2 uxth r3, r3
2853 .loc 1 2066 8
2854 0080 FF2B cmp r3, #255
2855 0082 06D9 bls .L127
2067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
2856 .loc 1 2068 22
2857 0084 FB68 ldr r3, [r7, #12]
2858 0086 FF22 movs r2, #255
2859 0088 1A85 strh r2, [r3, #40] @ movhi
2069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
2860 .loc 1 2069 16
2861 008a 4FF08073 mov r3, #16777216
2862 008e 7B61 str r3, [r7, #20]
2863 0090 07E0 b .L128
2864 .L127:
2070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
2865 .loc 1 2073 28
2866 0092 FB68 ldr r3, [r7, #12]
2867 0094 5B8D ldrh r3, [r3, #42] @ movhi
2868 0096 9AB2 uxth r2, r3
2869 .loc 1 2073 22
2870 0098 FB68 ldr r3, [r7, #12]
2871 009a 1A85 strh r2, [r3, #40] @ movhi
2074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE;
2872 .loc 1 2074 16
2873 009c 4FF00073 mov r3, #33554432
2874 00a0 7B61 str r3, [r7, #20]
2875 .L128:
2075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U)
2876 .loc 1 2077 13
2877 00a2 FB68 ldr r3, [r7, #12]
2878 00a4 1B8D ldrh r3, [r3, #40]
2879 .loc 1 2077 8
2880 00a6 002B cmp r3, #0
2881 00a8 70D0 beq .L129
2078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
2882 .loc 1 2079 15
2883 00aa FB68 ldr r3, [r7, #12]
2884 00ac DB6B ldr r3, [r3, #60]
2885 .loc 1 2079 10
2886 00ae 002B cmp r3, #0
2887 00b0 20D0 beq .L130
2080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
ARM GAS /tmp/cc5G5cqz.s page 88
2082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;
2888 .loc 1 2082 13
2889 00b2 FB68 ldr r3, [r7, #12]
2890 00b4 DB6B ldr r3, [r3, #60]
2891 .loc 1 2082 40
2892 00b6 464A ldr r2, .L135+8
2893 00b8 9A62 str r2, [r3, #40]
2083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
2085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
2894 .loc 1 2085 13
2895 00ba FB68 ldr r3, [r7, #12]
2896 00bc DB6B ldr r3, [r3, #60]
2897 .loc 1 2085 41
2898 00be 454A ldr r2, .L135+12
2899 00c0 1A63 str r2, [r3, #48]
2086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
2088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL;
2900 .loc 1 2088 13
2901 00c2 FB68 ldr r3, [r7, #12]
2902 00c4 DB6B ldr r3, [r3, #60]
2903 .loc 1 2088 44
2904 00c6 0022 movs r2, #0
2905 00c8 DA62 str r2, [r3, #44]
2089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
2906 .loc 1 2089 13
2907 00ca FB68 ldr r3, [r7, #12]
2908 00cc DB6B ldr r3, [r3, #60]
2909 .loc 1 2089 41
2910 00ce 0022 movs r2, #0
2911 00d0 5A63 str r2, [r3, #52]
2090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
2092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p
2912 .loc 1 2092 25
2913 00d2 FB68 ldr r3, [r7, #12]
2914 00d4 D86B ldr r0, [r3, #60]
2915 .loc 1 2092 71
2916 00d6 FB68 ldr r3, [r7, #12]
2917 00d8 1B68 ldr r3, [r3]
2918 .loc 1 2092 66
2919 00da 2433 adds r3, r3, #36
2920 .loc 1 2092 25
2921 00dc 1946 mov r1, r3
2922 00de 7A68 ldr r2, [r7, #4]
2093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
2923 .loc 1 2093 46
2924 00e0 FB68 ldr r3, [r7, #12]
2925 00e2 1B8D ldrh r3, [r3, #40]
2092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
2926 .loc 1 2092 25
2927 00e4 FFF7FEFF bl HAL_DMA_Start_IT
2928 00e8 0346 mov r3, r0
2929 00ea FB74 strb r3, [r7, #19]
2094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
ARM GAS /tmp/cc5G5cqz.s page 89
2096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
2099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
2103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
2930 .loc 1 2110 10
2931 00ec FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
2932 00ee 002B cmp r3, #0
2933 00f0 38D1 bne .L132
2934 00f2 13E0 b .L134
2935 .L130:
2098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2936 .loc 1 2098 25
2937 00f4 FB68 ldr r3, [r7, #12]
2938 00f6 2022 movs r2, #32
2939 00f8 83F84120 strb r2, [r3, #65]
2099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2940 .loc 1 2099 25
2941 00fc FB68 ldr r3, [r7, #12]
2942 00fe 0022 movs r2, #0
2943 0100 83F84220 strb r2, [r3, #66]
2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2944 .loc 1 2102 13
2945 0104 FB68 ldr r3, [r7, #12]
2946 0106 5B6C ldr r3, [r3, #68]
2102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2947 .loc 1 2102 25
2948 0108 43F08002 orr r2, r3, #128
2949 010c FB68 ldr r3, [r7, #12]
2950 010e 5A64 str r2, [r3, #68]
2105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2951 .loc 1 2105 9
2952 0110 FB68 ldr r3, [r7, #12]
2953 0112 0022 movs r2, #0
2954 0114 83F84020 strb r2, [r3, #64]
2107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2955 .loc 1 2107 16
2956 0118 0123 movs r3, #1
2957 011a 50E0 b .L125
2958 .L134:
2111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
2113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART *
2114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_
2959 .loc 1 2114 59
2960 011c FB68 ldr r3, [r7, #12]
2961 011e 1B8D ldrh r3, [r3, #40]
ARM GAS /tmp/cc5G5cqz.s page 90
2962 .loc 1 2114 9
2963 0120 DAB2 uxtb r2, r3
2964 0122 7989 ldrh r1, [r7, #10]
2965 0124 2C4B ldr r3, .L135+16
2966 0126 0093 str r3, [sp]
2967 0128 7B69 ldr r3, [r7, #20]
2968 012a F868 ldr r0, [r7, #12]
2969 012c FFF7FEFF bl I2C_TransferConfig
2115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
2117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
2970 .loc 1 2117 13
2971 0130 FB68 ldr r3, [r7, #12]
2972 0132 5B8D ldrh r3, [r3, #42] @ movhi
2973 0134 9AB2 uxth r2, r3
2974 .loc 1 2117 32
2975 0136 FB68 ldr r3, [r7, #12]
2976 0138 1B8D ldrh r3, [r3, #40]
2977 .loc 1 2117 25
2978 013a D31A subs r3, r2, r3
2979 013c 9AB2 uxth r2, r3
2980 013e FB68 ldr r3, [r7, #12]
2981 0140 5A85 strh r2, [r3, #42] @ movhi
2118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2982 .loc 1 2120 9
2983 0142 FB68 ldr r3, [r7, #12]
2984 0144 0022 movs r2, #0
2985 0146 83F84020 strb r2, [r3, #64]
2121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
2126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
2986 .loc 1 2126 9
2987 014a 1021 movs r1, #16
2988 014c F868 ldr r0, [r7, #12]
2989 014e FFF7FEFF bl I2C_Enable_IRQ
2127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
2129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
2990 .loc 1 2129 13
2991 0152 FB68 ldr r3, [r7, #12]
2992 0154 1B68 ldr r3, [r3]
2993 .loc 1 2129 23
2994 0156 1A68 ldr r2, [r3]
2995 .loc 1 2129 13
2996 0158 FB68 ldr r3, [r7, #12]
2997 015a 1B68 ldr r3, [r3]
2998 .loc 1 2129 29
2999 015c 42F40042 orr r2, r2, #32768
3000 0160 1A60 str r2, [r3]
3001 0162 29E0 b .L133
3002 .L132:
2130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 91
2131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3003 .loc 1 2134 25
3004 0164 FB68 ldr r3, [r7, #12]
3005 0166 2022 movs r2, #32
3006 0168 83F84120 strb r2, [r3, #65]
2135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3007 .loc 1 2135 25
3008 016c FB68 ldr r3, [r7, #12]
3009 016e 0022 movs r2, #0
3010 0170 83F84220 strb r2, [r3, #66]
2136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
3011 .loc 1 2138 13
3012 0174 FB68 ldr r3, [r7, #12]
3013 0176 5B6C ldr r3, [r3, #68]
3014 .loc 1 2138 25
3015 0178 43F01002 orr r2, r3, #16
3016 017c FB68 ldr r3, [r7, #12]
3017 017e 5A64 str r2, [r3, #68]
2139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3018 .loc 1 2141 9
3019 0180 FB68 ldr r3, [r7, #12]
3020 0182 0022 movs r2, #0
3021 0184 83F84020 strb r2, [r3, #64]
2142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3022 .loc 1 2143 16
3023 0188 0123 movs r3, #1
3024 018a 18E0 b .L125
3025 .L129:
2144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */
2149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
3026 .loc 1 2149 21
3027 018c FB68 ldr r3, [r7, #12]
3028 018e 134A ldr r2, .L135+20
3029 0190 5A63 str r2, [r3, #52]
2150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
2152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */
2153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
3030 .loc 1 2153 57
3031 0192 FB68 ldr r3, [r7, #12]
3032 0194 1B8D ldrh r3, [r3, #40]
3033 .loc 1 2153 7
3034 0196 DAB2 uxtb r2, r3
3035 0198 7989 ldrh r1, [r7, #10]
3036 019a 0F4B ldr r3, .L135+16
ARM GAS /tmp/cc5G5cqz.s page 92
3037 019c 0093 str r3, [sp]
3038 019e 4FF00073 mov r3, #33554432
3039 01a2 F868 ldr r0, [r7, #12]
3040 01a4 FFF7FEFF bl I2C_TransferConfig
2154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
2155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3041 .loc 1 2157 7
3042 01a8 FB68 ldr r3, [r7, #12]
3043 01aa 0022 movs r2, #0
3044 01ac 83F84020 strb r2, [r3, #64]
2158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
2163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
2164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
2165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
2166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
3045 .loc 1 2166 7
3046 01b0 0121 movs r1, #1
3047 01b2 F868 ldr r0, [r7, #12]
3048 01b4 FFF7FEFF bl I2C_Enable_IRQ
3049 .L133:
2167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
3050 .loc 1 2169 12
3051 01b8 0023 movs r3, #0
3052 01ba 00E0 b .L125
3053 .L123:
2170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
3054 .loc 1 2173 12
3055 01bc 0223 movs r3, #2
3056 .L125:
2174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3057 .loc 1 2175 1
3058 01be 1846 mov r0, r3
3059 01c0 1837 adds r7, r7, #24
3060 .cfi_def_cfa_offset 8
3061 01c2 BD46 mov sp, r7
3062 .cfi_def_cfa_register 13
3063 @ sp needed
3064 01c4 80BD pop {r7, pc}
3065 .L136:
3066 01c6 00BF .align 2
3067 .L135:
3068 01c8 0000FFFF .word -65536
3069 01cc 00000000 .word I2C_Master_ISR_DMA
3070 01d0 00000000 .word I2C_DMAMasterReceiveCplt
3071 01d4 00000000 .word I2C_DMAError
ARM GAS /tmp/cc5G5cqz.s page 93
3072 01d8 00240080 .word -2147474432
3073 01dc 00000000 .word I2C_Master_ISR_IT
3074 .cfi_endproc
3075 .LFE143:
3077 .section .text.HAL_I2C_Slave_Transmit_DMA,"ax",%progbits
3078 .align 1
3079 .global HAL_I2C_Slave_Transmit_DMA
3080 .syntax unified
3081 .thumb
3082 .thumb_func
3084 HAL_I2C_Slave_Transmit_DMA:
3085 .LFB144:
2176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA
2179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size
2186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3086 .loc 1 2186 1
3087 .cfi_startproc
3088 @ args = 0, pretend = 0, frame = 24
3089 @ frame_needed = 1, uses_anonymous_args = 0
3090 0000 80B5 push {r7, lr}
3091 .cfi_def_cfa_offset 8
3092 .cfi_offset 7, -8
3093 .cfi_offset 14, -4
3094 0002 86B0 sub sp, sp, #24
3095 .cfi_def_cfa_offset 32
3096 0004 00AF add r7, sp, #0
3097 .cfi_def_cfa_register 7
3098 0006 F860 str r0, [r7, #12]
3099 0008 B960 str r1, [r7, #8]
3100 000a 1346 mov r3, r2
3101 000c FB80 strh r3, [r7, #6] @ movhi
2187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
2188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
3102 .loc 1 2189 11
3103 000e FB68 ldr r3, [r7, #12]
3104 0010 93F84130 ldrb r3, [r3, #65]
3105 0014 DBB2 uxtb r3, r3
3106 .loc 1 2189 6
3107 0016 202B cmp r3, #32
3108 0018 40F0D180 bne .L138
2190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
3109 .loc 1 2191 8
3110 001c BB68 ldr r3, [r7, #8]
3111 001e 002B cmp r3, #0
3112 0020 02D0 beq .L139
3113 .loc 1 2191 25 discriminator 1
3114 0022 FB88 ldrh r3, [r7, #6]
ARM GAS /tmp/cc5G5cqz.s page 94
3115 0024 002B cmp r3, #0
3116 0026 05D1 bne .L140
3117 .L139:
2192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
3118 .loc 1 2193 23
3119 0028 FB68 ldr r3, [r7, #12]
3120 002a 4FF40072 mov r2, #512
3121 002e 5A64 str r2, [r3, #68]
2194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3122 .loc 1 2194 15
3123 0030 0123 movs r3, #1
3124 0032 C5E0 b .L141
3125 .L140:
2195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
3126 .loc 1 2197 5
3127 0034 FB68 ldr r3, [r7, #12]
3128 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
3129 003a 012B cmp r3, #1
3130 003c 01D1 bne .L142
3131 .loc 1 2197 5 is_stmt 0 discriminator 1
3132 003e 0223 movs r3, #2
3133 .loc 1 2197 5
3134 0040 BEE0 b .L141
3135 .L142:
3136 .loc 1 2197 5 discriminator 2
3137 0042 FB68 ldr r3, [r7, #12]
3138 0044 0122 movs r2, #1
3139 0046 83F84020 strb r2, [r3, #64]
2198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
3140 .loc 1 2199 23 is_stmt 1
3141 004a FB68 ldr r3, [r7, #12]
3142 004c 2122 movs r2, #33
3143 004e 83F84120 strb r2, [r3, #65]
2200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
3144 .loc 1 2200 23
3145 0052 FB68 ldr r3, [r7, #12]
3146 0054 2022 movs r2, #32
3147 0056 83F84220 strb r2, [r3, #66]
2201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
3148 .loc 1 2201 23
3149 005a FB68 ldr r3, [r7, #12]
3150 005c 0022 movs r2, #0
3151 005e 5A64 str r2, [r3, #68]
2202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
3152 .loc 1 2204 23
3153 0060 FB68 ldr r3, [r7, #12]
3154 0062 BA68 ldr r2, [r7, #8]
3155 0064 5A62 str r2, [r3, #36]
2205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
3156 .loc 1 2205 23
3157 0066 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 95
3158 0068 FA88 ldrh r2, [r7, #6] @ movhi
3159 006a 5A85 strh r2, [r3, #42] @ movhi
2206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
3160 .loc 1 2206 29
3161 006c FB68 ldr r3, [r7, #12]
3162 006e 5B8D ldrh r3, [r3, #42] @ movhi
3163 0070 9AB2 uxth r2, r3
3164 .loc 1 2206 23
3165 0072 FB68 ldr r3, [r7, #12]
3166 0074 1A85 strh r2, [r3, #40] @ movhi
2207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
3167 .loc 1 2207 23
3168 0076 FB68 ldr r3, [r7, #12]
3169 0078 534A ldr r2, .L150
3170 007a DA62 str r2, [r3, #44]
2208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA;
3171 .loc 1 2208 23
3172 007c FB68 ldr r3, [r7, #12]
3173 007e 534A ldr r2, .L150+4
3174 0080 5A63 str r2, [r3, #52]
2209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX data if no stretch enable */
2211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE)
3175 .loc 1 2211 19
3176 0082 FB68 ldr r3, [r7, #12]
3177 0084 1B6A ldr r3, [r3, #32]
3178 .loc 1 2211 8
3179 0086 B3F5003F cmp r3, #131072
3180 008a 17D1 bne .L143
2212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Preload TX register */
2214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
2215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
3181 .loc 1 2215 35
3182 008c FB68 ldr r3, [r7, #12]
3183 008e 5B6A ldr r3, [r3, #36]
3184 .loc 1 2215 30
3185 0090 1A78 ldrb r2, [r3] @ zero_extendqisi2
3186 .loc 1 2215 11
3187 0092 FB68 ldr r3, [r7, #12]
3188 0094 1B68 ldr r3, [r3]
3189 .loc 1 2215 28
3190 0096 9A62 str r2, [r3, #40]
2216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
2218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
3191 .loc 1 2218 11
3192 0098 FB68 ldr r3, [r7, #12]
3193 009a 5B6A ldr r3, [r3, #36]
3194 .loc 1 2218 21
3195 009c 5A1C adds r2, r3, #1
3196 009e FB68 ldr r3, [r7, #12]
3197 00a0 5A62 str r2, [r3, #36]
2219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
3198 .loc 1 2220 11
3199 00a2 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 96
3200 00a4 5B8D ldrh r3, [r3, #42] @ movhi
3201 00a6 9BB2 uxth r3, r3
3202 .loc 1 2220 22
3203 00a8 013B subs r3, r3, #1
3204 00aa 9AB2 uxth r2, r3
3205 00ac FB68 ldr r3, [r7, #12]
3206 00ae 5A85 strh r2, [r3, #42] @ movhi
2221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
3207 .loc 1 2221 11
3208 00b0 FB68 ldr r3, [r7, #12]
3209 00b2 1B8D ldrh r3, [r3, #40]
3210 .loc 1 2221 21
3211 00b4 013B subs r3, r3, #1
3212 00b6 9AB2 uxth r2, r3
3213 00b8 FB68 ldr r3, [r7, #12]
3214 00ba 1A85 strh r2, [r3, #40] @ movhi
3215 .L143:
2222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U)
3216 .loc 1 2224 13
3217 00bc FB68 ldr r3, [r7, #12]
3218 00be 5B8D ldrh r3, [r3, #42] @ movhi
3219 00c0 9BB2 uxth r3, r3
3220 .loc 1 2224 8
3221 00c2 002B cmp r3, #0
3222 00c4 68D0 beq .L144
2225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
3223 .loc 1 2226 15
3224 00c6 FB68 ldr r3, [r7, #12]
3225 00c8 9B6B ldr r3, [r3, #56]
3226 .loc 1 2226 10
3227 00ca 002B cmp r3, #0
3228 00cc 22D0 beq .L145
2227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
2229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;
3229 .loc 1 2229 13
3230 00ce FB68 ldr r3, [r7, #12]
3231 00d0 9B6B ldr r3, [r3, #56]
3232 .loc 1 2229 40
3233 00d2 3F4A ldr r2, .L150+8
3234 00d4 9A62 str r2, [r3, #40]
2230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
2232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
3235 .loc 1 2232 13
3236 00d6 FB68 ldr r3, [r7, #12]
3237 00d8 9B6B ldr r3, [r3, #56]
3238 .loc 1 2232 41
3239 00da 3E4A ldr r2, .L150+12
3240 00dc 1A63 str r2, [r3, #48]
2233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
2235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL;
3241 .loc 1 2235 13
ARM GAS /tmp/cc5G5cqz.s page 97
3242 00de FB68 ldr r3, [r7, #12]
3243 00e0 9B6B ldr r3, [r3, #56]
3244 .loc 1 2235 44
3245 00e2 0022 movs r2, #0
3246 00e4 DA62 str r2, [r3, #44]
2236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
3247 .loc 1 2236 13
3248 00e6 FB68 ldr r3, [r7, #12]
3249 00e8 9B6B ldr r3, [r3, #56]
3250 .loc 1 2236 41
3251 00ea 0022 movs r2, #0
3252 00ec 5A63 str r2, [r3, #52]
2237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx,
3253 .loc 1 2239 25
3254 00ee FB68 ldr r3, [r7, #12]
3255 00f0 986B ldr r0, [r3, #56]
2240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
3256 .loc 1 2240 56
3257 00f2 FB68 ldr r3, [r7, #12]
3258 00f4 5B6A ldr r3, [r3, #36]
2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
3259 .loc 1 2239 25
3260 00f6 1946 mov r1, r3
3261 .loc 1 2240 83
3262 00f8 FB68 ldr r3, [r7, #12]
3263 00fa 1B68 ldr r3, [r3]
3264 .loc 1 2240 78
3265 00fc 2833 adds r3, r3, #40
2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
3266 .loc 1 2239 25
3267 00fe 1A46 mov r2, r3
2241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
3268 .loc 1 2241 46
3269 0100 FB68 ldr r3, [r7, #12]
3270 0102 1B8D ldrh r3, [r3, #40]
2239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
3271 .loc 1 2239 25
3272 0104 FFF7FEFF bl HAL_DMA_Start_IT
3273 0108 0346 mov r3, r0
3274 010a FB75 strb r3, [r7, #23]
2242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
2247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
2251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 98
2257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
3275 .loc 1 2258 10
3276 010c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
3277 010e 002B cmp r3, #0
3278 0110 2ED1 bne .L147
3279 0112 13E0 b .L149
3280 .L145:
2246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3281 .loc 1 2246 25
3282 0114 FB68 ldr r3, [r7, #12]
3283 0116 2822 movs r2, #40
3284 0118 83F84120 strb r2, [r3, #65]
2247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3285 .loc 1 2247 25
3286 011c FB68 ldr r3, [r7, #12]
3287 011e 0022 movs r2, #0
3288 0120 83F84220 strb r2, [r3, #66]
2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3289 .loc 1 2250 13
3290 0124 FB68 ldr r3, [r7, #12]
3291 0126 5B6C ldr r3, [r3, #68]
2250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3292 .loc 1 2250 25
3293 0128 43F08002 orr r2, r3, #128
3294 012c FB68 ldr r3, [r7, #12]
3295 012e 5A64 str r2, [r3, #68]
2253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3296 .loc 1 2253 9
3297 0130 FB68 ldr r3, [r7, #12]
3298 0132 0022 movs r2, #0
3299 0134 83F84020 strb r2, [r3, #64]
2255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3300 .loc 1 2255 16
3301 0138 0123 movs r3, #1
3302 013a 41E0 b .L141
3303 .L149:
2259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
2261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
3304 .loc 1 2261 13
3305 013c FB68 ldr r3, [r7, #12]
3306 013e 1B68 ldr r3, [r3]
3307 .loc 1 2261 23
3308 0140 5A68 ldr r2, [r3, #4]
3309 .loc 1 2261 13
3310 0142 FB68 ldr r3, [r7, #12]
3311 0144 1B68 ldr r3, [r3]
3312 .loc 1 2261 29
3313 0146 22F40042 bic r2, r2, #32768
3314 014a 5A60 str r2, [r3, #4]
2262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3315 .loc 1 2264 9
3316 014c FB68 ldr r3, [r7, #12]
3317 014e 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 99
3318 0150 83F84020 strb r2, [r3, #64]
2265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */
2270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3319 .loc 1 2270 9
3320 0154 4FF40041 mov r1, #32768
3321 0158 F868 ldr r0, [r7, #12]
3322 015a FFF7FEFF bl I2C_Enable_IRQ
2271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
2273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
3323 .loc 1 2273 13
3324 015e FB68 ldr r3, [r7, #12]
3325 0160 1B68 ldr r3, [r3]
3326 .loc 1 2273 23
3327 0162 1A68 ldr r2, [r3]
3328 .loc 1 2273 13
3329 0164 FB68 ldr r3, [r7, #12]
3330 0166 1B68 ldr r3, [r3]
3331 .loc 1 2273 29
3332 0168 42F48042 orr r2, r2, #16384
3333 016c 1A60 str r2, [r3]
3334 016e 24E0 b .L148
3335 .L147:
2274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
3336 .loc 1 2278 25
3337 0170 FB68 ldr r3, [r7, #12]
3338 0172 2822 movs r2, #40
3339 0174 83F84120 strb r2, [r3, #65]
2279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3340 .loc 1 2279 25
3341 0178 FB68 ldr r3, [r7, #12]
3342 017a 0022 movs r2, #0
3343 017c 83F84220 strb r2, [r3, #66]
2280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
3344 .loc 1 2282 13
3345 0180 FB68 ldr r3, [r7, #12]
3346 0182 5B6C ldr r3, [r3, #68]
3347 .loc 1 2282 25
3348 0184 43F01002 orr r2, r3, #16
3349 0188 FB68 ldr r3, [r7, #12]
3350 018a 5A64 str r2, [r3, #68]
2283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3351 .loc 1 2285 9
3352 018c FB68 ldr r3, [r7, #12]
3353 018e 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 100
3354 0190 83F84020 strb r2, [r3, #64]
2286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3355 .loc 1 2287 16
3356 0194 0123 movs r3, #1
3357 0196 13E0 b .L141
3358 .L144:
2288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
2293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
3359 .loc 1 2293 11
3360 0198 FB68 ldr r3, [r7, #12]
3361 019a 1B68 ldr r3, [r3]
3362 .loc 1 2293 21
3363 019c 5A68 ldr r2, [r3, #4]
3364 .loc 1 2293 11
3365 019e FB68 ldr r3, [r7, #12]
3366 01a0 1B68 ldr r3, [r3]
3367 .loc 1 2293 27
3368 01a2 22F40042 bic r2, r2, #32768
3369 01a6 5A60 str r2, [r3, #4]
2294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3370 .loc 1 2296 7
3371 01a8 FB68 ldr r3, [r7, #12]
3372 01aa 0022 movs r2, #0
3373 01ac 83F84020 strb r2, [r3, #64]
2297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */
2302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3374 .loc 1 2302 7
3375 01b0 4FF40041 mov r1, #32768
3376 01b4 F868 ldr r0, [r7, #12]
3377 01b6 FFF7FEFF bl I2C_Enable_IRQ
3378 .L148:
2303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
3379 .loc 1 2305 12
3380 01ba 0023 movs r3, #0
3381 01bc 00E0 b .L141
3382 .L138:
2306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
3383 .loc 1 2309 12
3384 01be 0223 movs r3, #2
3385 .L141:
2310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 101
2311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3386 .loc 1 2311 1
3387 01c0 1846 mov r0, r3
3388 01c2 1837 adds r7, r7, #24
3389 .cfi_def_cfa_offset 8
3390 01c4 BD46 mov sp, r7
3391 .cfi_def_cfa_register 13
3392 @ sp needed
3393 01c6 80BD pop {r7, pc}
3394 .L151:
3395 .align 2
3396 .L150:
3397 01c8 0000FFFF .word -65536
3398 01cc 00000000 .word I2C_Slave_ISR_DMA
3399 01d0 00000000 .word I2C_DMASlaveTransmitCplt
3400 01d4 00000000 .word I2C_DMAError
3401 .cfi_endproc
3402 .LFE144:
3404 .section .text.HAL_I2C_Slave_Receive_DMA,"ax",%progbits
3405 .align 1
3406 .global HAL_I2C_Slave_Receive_DMA
3407 .syntax unified
3408 .thumb
3409 .thumb_func
3411 HAL_I2C_Slave_Receive_DMA:
3412 .LFB145:
2312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with DMA
2315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
2322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3413 .loc 1 2322 1
3414 .cfi_startproc
3415 @ args = 0, pretend = 0, frame = 24
3416 @ frame_needed = 1, uses_anonymous_args = 0
3417 0000 80B5 push {r7, lr}
3418 .cfi_def_cfa_offset 8
3419 .cfi_offset 7, -8
3420 .cfi_offset 14, -4
3421 0002 86B0 sub sp, sp, #24
3422 .cfi_def_cfa_offset 32
3423 0004 00AF add r7, sp, #0
3424 .cfi_def_cfa_register 7
3425 0006 F860 str r0, [r7, #12]
3426 0008 B960 str r1, [r7, #8]
3427 000a 1346 mov r3, r2
3428 000c FB80 strh r3, [r7, #6] @ movhi
2323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
2324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
3429 .loc 1 2325 11
ARM GAS /tmp/cc5G5cqz.s page 102
3430 000e FB68 ldr r3, [r7, #12]
3431 0010 93F84130 ldrb r3, [r3, #65]
3432 0014 DBB2 uxtb r3, r3
3433 .loc 1 2325 6
3434 0016 202B cmp r3, #32
3435 0018 40F09B80 bne .L153
2326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
3436 .loc 1 2327 8
3437 001c BB68 ldr r3, [r7, #8]
3438 001e 002B cmp r3, #0
3439 0020 02D0 beq .L154
3440 .loc 1 2327 25 discriminator 1
3441 0022 FB88 ldrh r3, [r7, #6]
3442 0024 002B cmp r3, #0
3443 0026 05D1 bne .L155
3444 .L154:
2328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
3445 .loc 1 2329 23
3446 0028 FB68 ldr r3, [r7, #12]
3447 002a 4FF40072 mov r2, #512
3448 002e 5A64 str r2, [r3, #68]
2330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3449 .loc 1 2330 15
3450 0030 0123 movs r3, #1
3451 0032 8FE0 b .L156
3452 .L155:
2331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
3453 .loc 1 2333 5
3454 0034 FB68 ldr r3, [r7, #12]
3455 0036 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
3456 003a 012B cmp r3, #1
3457 003c 01D1 bne .L157
3458 .loc 1 2333 5 is_stmt 0 discriminator 1
3459 003e 0223 movs r3, #2
3460 .loc 1 2333 5
3461 0040 88E0 b .L156
3462 .L157:
3463 .loc 1 2333 5 discriminator 2
3464 0042 FB68 ldr r3, [r7, #12]
3465 0044 0122 movs r2, #1
3466 0046 83F84020 strb r2, [r3, #64]
2334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
3467 .loc 1 2335 23 is_stmt 1
3468 004a FB68 ldr r3, [r7, #12]
3469 004c 2222 movs r2, #34
3470 004e 83F84120 strb r2, [r3, #65]
2336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
3471 .loc 1 2336 23
3472 0052 FB68 ldr r3, [r7, #12]
3473 0054 2022 movs r2, #32
3474 0056 83F84220 strb r2, [r3, #66]
2337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
ARM GAS /tmp/cc5G5cqz.s page 103
3475 .loc 1 2337 23
3476 005a FB68 ldr r3, [r7, #12]
3477 005c 0022 movs r2, #0
3478 005e 5A64 str r2, [r3, #68]
2338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
3479 .loc 1 2340 23
3480 0060 FB68 ldr r3, [r7, #12]
3481 0062 BA68 ldr r2, [r7, #8]
3482 0064 5A62 str r2, [r3, #36]
2341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
3483 .loc 1 2341 23
3484 0066 FB68 ldr r3, [r7, #12]
3485 0068 FA88 ldrh r2, [r7, #6] @ movhi
3486 006a 5A85 strh r2, [r3, #42] @ movhi
2342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
3487 .loc 1 2342 29
3488 006c FB68 ldr r3, [r7, #12]
3489 006e 5B8D ldrh r3, [r3, #42] @ movhi
3490 0070 9AB2 uxth r2, r3
3491 .loc 1 2342 23
3492 0072 FB68 ldr r3, [r7, #12]
3493 0074 1A85 strh r2, [r3, #40] @ movhi
2343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
3494 .loc 1 2343 23
3495 0076 FB68 ldr r3, [r7, #12]
3496 0078 384A ldr r2, .L163
3497 007a DA62 str r2, [r3, #44]
2344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA;
3498 .loc 1 2344 23
3499 007c FB68 ldr r3, [r7, #12]
3500 007e 384A ldr r2, .L163+4
3501 0080 5A63 str r2, [r3, #52]
2345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
3502 .loc 1 2346 13
3503 0082 FB68 ldr r3, [r7, #12]
3504 0084 DB6B ldr r3, [r3, #60]
3505 .loc 1 2346 8
3506 0086 002B cmp r3, #0
3507 0088 20D0 beq .L158
2347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
2349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;
3508 .loc 1 2349 11
3509 008a FB68 ldr r3, [r7, #12]
3510 008c DB6B ldr r3, [r3, #60]
3511 .loc 1 2349 38
3512 008e 354A ldr r2, .L163+8
3513 0090 9A62 str r2, [r3, #40]
2350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
2352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
3514 .loc 1 2352 11
3515 0092 FB68 ldr r3, [r7, #12]
3516 0094 DB6B ldr r3, [r3, #60]
ARM GAS /tmp/cc5G5cqz.s page 104
3517 .loc 1 2352 39
3518 0096 344A ldr r2, .L163+12
3519 0098 1A63 str r2, [r3, #48]
2353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
2355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL;
3520 .loc 1 2355 11
3521 009a FB68 ldr r3, [r7, #12]
3522 009c DB6B ldr r3, [r3, #60]
3523 .loc 1 2355 42
3524 009e 0022 movs r2, #0
3525 00a0 DA62 str r2, [r3, #44]
2356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
3526 .loc 1 2356 11
3527 00a2 FB68 ldr r3, [r7, #12]
3528 00a4 DB6B ldr r3, [r3, #60]
3529 .loc 1 2356 39
3530 00a6 0022 movs r2, #0
3531 00a8 5A63 str r2, [r3, #52]
2357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
2359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa
3532 .loc 1 2359 23
3533 00aa FB68 ldr r3, [r7, #12]
3534 00ac D86B ldr r0, [r3, #60]
3535 .loc 1 2359 69
3536 00ae FB68 ldr r3, [r7, #12]
3537 00b0 1B68 ldr r3, [r3]
3538 .loc 1 2359 64
3539 00b2 2433 adds r3, r3, #36
3540 .loc 1 2359 23
3541 00b4 1946 mov r1, r3
3542 00b6 BA68 ldr r2, [r7, #8]
2360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
3543 .loc 1 2360 44
3544 00b8 FB68 ldr r3, [r7, #12]
3545 00ba 1B8D ldrh r3, [r3, #40]
2359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
3546 .loc 1 2359 23
3547 00bc FFF7FEFF bl HAL_DMA_Start_IT
3548 00c0 0346 mov r3, r0
3549 00c2 FB75 strb r3, [r7, #23]
2361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
2366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
2370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 105
2376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
3550 .loc 1 2377 8
3551 00c4 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
3552 00c6 002B cmp r3, #0
3553 00c8 2FD1 bne .L160
3554 00ca 13E0 b .L162
3555 .L158:
2365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3556 .loc 1 2365 23
3557 00cc FB68 ldr r3, [r7, #12]
3558 00ce 2822 movs r2, #40
3559 00d0 83F84120 strb r2, [r3, #65]
2366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3560 .loc 1 2366 23
3561 00d4 FB68 ldr r3, [r7, #12]
3562 00d6 0022 movs r2, #0
3563 00d8 83F84220 strb r2, [r3, #66]
2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3564 .loc 1 2369 11
3565 00dc FB68 ldr r3, [r7, #12]
3566 00de 5B6C ldr r3, [r3, #68]
2369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3567 .loc 1 2369 23
3568 00e0 43F08002 orr r2, r3, #128
3569 00e4 FB68 ldr r3, [r7, #12]
3570 00e6 5A64 str r2, [r3, #68]
2372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3571 .loc 1 2372 7
3572 00e8 FB68 ldr r3, [r7, #12]
3573 00ea 0022 movs r2, #0
3574 00ec 83F84020 strb r2, [r3, #64]
2374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3575 .loc 1 2374 14
3576 00f0 0123 movs r3, #1
3577 00f2 2FE0 b .L156
3578 .L162:
2378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
2380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
3579 .loc 1 2380 11
3580 00f4 FB68 ldr r3, [r7, #12]
3581 00f6 1B68 ldr r3, [r3]
3582 .loc 1 2380 21
3583 00f8 5A68 ldr r2, [r3, #4]
3584 .loc 1 2380 11
3585 00fa FB68 ldr r3, [r7, #12]
3586 00fc 1B68 ldr r3, [r3]
3587 .loc 1 2380 27
3588 00fe 22F40042 bic r2, r2, #32768
3589 0102 5A60 str r2, [r3, #4]
2381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3590 .loc 1 2383 7
3591 0104 FB68 ldr r3, [r7, #12]
3592 0106 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 106
3593 0108 83F84020 strb r2, [r3, #64]
2384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */
2389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
3594 .loc 1 2389 7
3595 010c 4FF40041 mov r1, #32768
3596 0110 F868 ldr r0, [r7, #12]
3597 0112 FFF7FEFF bl I2C_Enable_IRQ
2390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
2392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
3598 .loc 1 2392 11
3599 0116 FB68 ldr r3, [r7, #12]
3600 0118 1B68 ldr r3, [r3]
3601 .loc 1 2392 21
3602 011a 1A68 ldr r2, [r3]
3603 .loc 1 2392 11
3604 011c FB68 ldr r3, [r7, #12]
3605 011e 1B68 ldr r3, [r3]
3606 .loc 1 2392 27
3607 0120 42F40042 orr r2, r2, #32768
3608 0124 1A60 str r2, [r3]
2393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
2398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
2402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
3609 .loc 1 2409 12
3610 0126 0023 movs r3, #0
3611 0128 14E0 b .L156
3612 .L160:
2397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3613 .loc 1 2397 23
3614 012a FB68 ldr r3, [r7, #12]
3615 012c 2822 movs r2, #40
3616 012e 83F84120 strb r2, [r3, #65]
2398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3617 .loc 1 2398 23
3618 0132 FB68 ldr r3, [r7, #12]
3619 0134 0022 movs r2, #0
3620 0136 83F84220 strb r2, [r3, #66]
2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 107
3621 .loc 1 2401 11
3622 013a FB68 ldr r3, [r7, #12]
3623 013c 5B6C ldr r3, [r3, #68]
2401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3624 .loc 1 2401 23
3625 013e 43F01002 orr r2, r3, #16
3626 0142 FB68 ldr r3, [r7, #12]
3627 0144 5A64 str r2, [r3, #68]
2404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3628 .loc 1 2404 7
3629 0146 FB68 ldr r3, [r7, #12]
3630 0148 0022 movs r2, #0
3631 014a 83F84020 strb r2, [r3, #64]
2406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3632 .loc 1 2406 14
3633 014e 0123 movs r3, #1
3634 0150 00E0 b .L156
3635 .L153:
2410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
3636 .loc 1 2413 12
3637 0152 0223 movs r3, #2
3638 .L156:
2414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3639 .loc 1 2415 1
3640 0154 1846 mov r0, r3
3641 0156 1837 adds r7, r7, #24
3642 .cfi_def_cfa_offset 8
3643 0158 BD46 mov sp, r7
3644 .cfi_def_cfa_register 13
3645 @ sp needed
3646 015a 80BD pop {r7, pc}
3647 .L164:
3648 .align 2
3649 .L163:
3650 015c 0000FFFF .word -65536
3651 0160 00000000 .word I2C_Slave_ISR_DMA
3652 0164 00000000 .word I2C_DMASlaveReceiveCplt
3653 0168 00000000 .word I2C_DMAError
3654 .cfi_endproc
3655 .LFE145:
3657 .section .text.HAL_I2C_Mem_Write,"ax",%progbits
3658 .align 1
3659 .global HAL_I2C_Mem_Write
3660 .syntax unified
3661 .thumb
3662 .thumb_func
3664 HAL_I2C_Mem_Write:
3665 .LFB146:
2416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in blocking mode to a specific memory address
2419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
ARM GAS /tmp/cc5G5cqz.s page 108
2421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
2424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
2425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
2428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre
2431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Ti
2432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3666 .loc 1 2432 1
3667 .cfi_startproc
3668 @ args = 12, pretend = 0, frame = 24
3669 @ frame_needed = 1, uses_anonymous_args = 0
3670 0000 80B5 push {r7, lr}
3671 .cfi_def_cfa_offset 8
3672 .cfi_offset 7, -8
3673 .cfi_offset 14, -4
3674 0002 88B0 sub sp, sp, #32
3675 .cfi_def_cfa_offset 40
3676 0004 02AF add r7, sp, #8
3677 .cfi_def_cfa 7, 32
3678 0006 F860 str r0, [r7, #12]
3679 0008 0846 mov r0, r1
3680 000a 1146 mov r1, r2
3681 000c 1A46 mov r2, r3
3682 000e 0346 mov r3, r0 @ movhi
3683 0010 7B81 strh r3, [r7, #10] @ movhi
3684 0012 0B46 mov r3, r1 @ movhi
3685 0014 3B81 strh r3, [r7, #8] @ movhi
3686 0016 1346 mov r3, r2 @ movhi
3687 0018 FB80 strh r3, [r7, #6] @ movhi
2433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
2434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
2436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
2437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
3688 .loc 1 2438 11
3689 001a FB68 ldr r3, [r7, #12]
3690 001c 93F84130 ldrb r3, [r3, #65]
3691 0020 DBB2 uxtb r3, r3
3692 .loc 1 2438 6
3693 0022 202B cmp r3, #32
3694 0024 40F0F980 bne .L166
2439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
3695 .loc 1 2440 8
3696 0028 3B6A ldr r3, [r7, #32]
3697 002a 002B cmp r3, #0
3698 002c 02D0 beq .L167
3699 .loc 1 2440 25 discriminator 1
3700 002e BB8C ldrh r3, [r7, #36]
3701 0030 002B cmp r3, #0
3702 0032 05D1 bne .L168
ARM GAS /tmp/cc5G5cqz.s page 109
3703 .L167:
2441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
3704 .loc 1 2442 23
3705 0034 FB68 ldr r3, [r7, #12]
3706 0036 4FF40072 mov r2, #512
3707 003a 5A64 str r2, [r3, #68]
2443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3708 .loc 1 2443 15
3709 003c 0123 movs r3, #1
3710 003e EDE0 b .L169
3711 .L168:
2444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
3712 .loc 1 2447 5
3713 0040 FB68 ldr r3, [r7, #12]
3714 0042 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
3715 0046 012B cmp r3, #1
3716 0048 01D1 bne .L170
3717 .loc 1 2447 5 is_stmt 0 discriminator 1
3718 004a 0223 movs r3, #2
3719 .loc 1 2447 5
3720 004c E6E0 b .L169
3721 .L170:
3722 .loc 1 2447 5 discriminator 2
3723 004e FB68 ldr r3, [r7, #12]
3724 0050 0122 movs r2, #1
3725 0052 83F84020 strb r2, [r3, #64]
2448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
2450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
3726 .loc 1 2450 17 is_stmt 1
3727 0056 FFF7FEFF bl HAL_GetTick
3728 005a 7861 str r0, [r7, #20]
2451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK
3729 .loc 1 2452 9
3730 005c 7B69 ldr r3, [r7, #20]
3731 005e 0093 str r3, [sp]
3732 0060 1923 movs r3, #25
3733 0062 0122 movs r2, #1
3734 0064 4FF40041 mov r1, #32768
3735 0068 F868 ldr r0, [r7, #12]
3736 006a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
3737 006e 0346 mov r3, r0
3738 .loc 1 2452 8 discriminator 1
3739 0070 002B cmp r3, #0
3740 0072 01D0 beq .L171
2453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3741 .loc 1 2454 14
3742 0074 0123 movs r3, #1
3743 0076 D1E0 b .L169
3744 .L171:
2455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 110
2456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
3745 .loc 1 2457 21
3746 0078 FB68 ldr r3, [r7, #12]
3747 007a 2122 movs r2, #33
3748 007c 83F84120 strb r2, [r3, #65]
2458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
3749 .loc 1 2458 21
3750 0080 FB68 ldr r3, [r7, #12]
3751 0082 4022 movs r2, #64
3752 0084 83F84220 strb r2, [r3, #66]
2459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
3753 .loc 1 2459 21
3754 0088 FB68 ldr r3, [r7, #12]
3755 008a 0022 movs r2, #0
3756 008c 5A64 str r2, [r3, #68]
2460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
3757 .loc 1 2462 21
3758 008e FB68 ldr r3, [r7, #12]
3759 0090 3A6A ldr r2, [r7, #32]
3760 0092 5A62 str r2, [r3, #36]
2463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
3761 .loc 1 2463 21
3762 0094 FB68 ldr r3, [r7, #12]
3763 0096 BA8C ldrh r2, [r7, #36] @ movhi
3764 0098 5A85 strh r2, [r3, #42] @ movhi
2464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
3765 .loc 1 2464 21
3766 009a FB68 ldr r3, [r7, #12]
3767 009c 0022 movs r2, #0
3768 009e 5A63 str r2, [r3, #52]
2465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
2467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL
3769 .loc 1 2467 9
3770 00a0 F888 ldrh r0, [r7, #6]
3771 00a2 3A89 ldrh r2, [r7, #8]
3772 00a4 7989 ldrh r1, [r7, #10]
3773 00a6 7B69 ldr r3, [r7, #20]
3774 00a8 0193 str r3, [sp, #4]
3775 00aa BB6A ldr r3, [r7, #40]
3776 00ac 0093 str r3, [sp]
3777 00ae 0346 mov r3, r0
3778 00b0 F868 ldr r0, [r7, #12]
3779 00b2 FFF7FEFF bl I2C_RequestMemoryWrite
3780 00b6 0346 mov r3, r0
3781 .loc 1 2467 8 discriminator 1
3782 00b8 002B cmp r3, #0
3783 00ba 05D0 beq .L172
2468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3784 .loc 1 2470 7
3785 00bc FB68 ldr r3, [r7, #12]
3786 00be 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 111
3787 00c0 83F84020 strb r2, [r3, #64]
2471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3788 .loc 1 2471 14
3789 00c4 0123 movs r3, #1
3790 00c6 A9E0 b .L169
3791 .L172:
2472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */
2475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
3792 .loc 1 2475 13
3793 00c8 FB68 ldr r3, [r7, #12]
3794 00ca 5B8D ldrh r3, [r3, #42] @ movhi
3795 00cc 9BB2 uxth r3, r3
3796 .loc 1 2475 8
3797 00ce FF2B cmp r3, #255
3798 00d0 0ED9 bls .L173
2476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
3799 .loc 1 2477 22
3800 00d2 FB68 ldr r3, [r7, #12]
3801 00d4 FF22 movs r2, #255
3802 00d6 1A85 strh r2, [r3, #40] @ movhi
2478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST
3803 .loc 1 2478 57
3804 00d8 FB68 ldr r3, [r7, #12]
3805 00da 1B8D ldrh r3, [r3, #40]
3806 .loc 1 2478 7
3807 00dc DAB2 uxtb r2, r3
3808 00de 7989 ldrh r1, [r7, #10]
3809 00e0 0023 movs r3, #0
3810 00e2 0093 str r3, [sp]
3811 00e4 4FF08073 mov r3, #16777216
3812 00e8 F868 ldr r0, [r7, #12]
3813 00ea FFF7FEFF bl I2C_TransferConfig
3814 00ee 0FE0 b .L179
3815 .L173:
2479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
3816 .loc 1 2482 28
3817 00f0 FB68 ldr r3, [r7, #12]
3818 00f2 5B8D ldrh r3, [r3, #42] @ movhi
3819 00f4 9AB2 uxth r2, r3
3820 .loc 1 2482 22
3821 00f6 FB68 ldr r3, [r7, #12]
3822 00f8 1A85 strh r2, [r3, #40] @ movhi
2483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS
3823 .loc 1 2483 57
3824 00fa FB68 ldr r3, [r7, #12]
3825 00fc 1B8D ldrh r3, [r3, #40]
3826 .loc 1 2483 7
3827 00fe DAB2 uxtb r2, r3
3828 0100 7989 ldrh r1, [r7, #10]
3829 0102 0023 movs r3, #0
3830 0104 0093 str r3, [sp]
ARM GAS /tmp/cc5G5cqz.s page 112
3831 0106 4FF00073 mov r3, #33554432
3832 010a F868 ldr r0, [r7, #12]
3833 010c FFF7FEFF bl I2C_TransferConfig
3834 .L179:
2484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do
2487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
2489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
3835 .loc 1 2489 11
3836 0110 7A69 ldr r2, [r7, #20]
3837 0112 B96A ldr r1, [r7, #40]
3838 0114 F868 ldr r0, [r7, #12]
3839 0116 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
3840 011a 0346 mov r3, r0
3841 .loc 1 2489 10 discriminator 1
3842 011c 002B cmp r3, #0
3843 011e 01D0 beq .L175
2490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3844 .loc 1 2491 16
3845 0120 0123 movs r3, #1
3846 0122 7BE0 b .L169
3847 .L175:
2492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
2495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
3848 .loc 1 2495 35
3849 0124 FB68 ldr r3, [r7, #12]
3850 0126 5B6A ldr r3, [r3, #36]
3851 .loc 1 2495 30
3852 0128 1A78 ldrb r2, [r3] @ zero_extendqisi2
3853 .loc 1 2495 11
3854 012a FB68 ldr r3, [r7, #12]
3855 012c 1B68 ldr r3, [r3]
3856 .loc 1 2495 28
3857 012e 9A62 str r2, [r3, #40]
2496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
2498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
3858 .loc 1 2498 11
3859 0130 FB68 ldr r3, [r7, #12]
3860 0132 5B6A ldr r3, [r3, #36]
3861 .loc 1 2498 21
3862 0134 5A1C adds r2, r3, #1
3863 0136 FB68 ldr r3, [r7, #12]
3864 0138 5A62 str r2, [r3, #36]
2499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
3865 .loc 1 2500 11
3866 013a FB68 ldr r3, [r7, #12]
3867 013c 5B8D ldrh r3, [r3, #42] @ movhi
3868 013e 9BB2 uxth r3, r3
3869 .loc 1 2500 22
3870 0140 013B subs r3, r3, #1
ARM GAS /tmp/cc5G5cqz.s page 113
3871 0142 9AB2 uxth r2, r3
3872 0144 FB68 ldr r3, [r7, #12]
3873 0146 5A85 strh r2, [r3, #42] @ movhi
2501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
3874 .loc 1 2501 11
3875 0148 FB68 ldr r3, [r7, #12]
3876 014a 1B8D ldrh r3, [r3, #40]
3877 .loc 1 2501 21
3878 014c 013B subs r3, r3, #1
3879 014e 9AB2 uxth r2, r3
3880 0150 FB68 ldr r3, [r7, #12]
3881 0152 1A85 strh r2, [r3, #40] @ movhi
2502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
3882 .loc 1 2503 16
3883 0154 FB68 ldr r3, [r7, #12]
3884 0156 5B8D ldrh r3, [r3, #42] @ movhi
3885 0158 9BB2 uxth r3, r3
3886 .loc 1 2503 10
3887 015a 002B cmp r3, #0
3888 015c 34D0 beq .L176
3889 .loc 1 2503 43 discriminator 1
3890 015e FB68 ldr r3, [r7, #12]
3891 0160 1B8D ldrh r3, [r3, #40]
3892 .loc 1 2503 35 discriminator 1
3893 0162 002B cmp r3, #0
3894 0164 30D1 bne .L176
2504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */
2506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)
3895 .loc 1 2506 13
3896 0166 7B69 ldr r3, [r7, #20]
3897 0168 0093 str r3, [sp]
3898 016a BB6A ldr r3, [r7, #40]
3899 016c 0022 movs r2, #0
3900 016e 8021 movs r1, #128
3901 0170 F868 ldr r0, [r7, #12]
3902 0172 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
3903 0176 0346 mov r3, r0
3904 .loc 1 2506 12 discriminator 1
3905 0178 002B cmp r3, #0
3906 017a 01D0 beq .L177
2507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3907 .loc 1 2508 18
3908 017c 0123 movs r3, #1
3909 017e 4DE0 b .L169
3910 .L177:
2509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
3911 .loc 1 2511 17
3912 0180 FB68 ldr r3, [r7, #12]
3913 0182 5B8D ldrh r3, [r3, #42] @ movhi
3914 0184 9BB2 uxth r3, r3
3915 .loc 1 2511 12
3916 0186 FF2B cmp r3, #255
ARM GAS /tmp/cc5G5cqz.s page 114
3917 0188 0ED9 bls .L178
2512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
3918 .loc 1 2513 26
3919 018a FB68 ldr r3, [r7, #12]
3920 018c FF22 movs r2, #255
3921 018e 1A85 strh r2, [r3, #40] @ movhi
2514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
3922 .loc 1 2514 61
3923 0190 FB68 ldr r3, [r7, #12]
3924 0192 1B8D ldrh r3, [r3, #40]
3925 .loc 1 2514 11
3926 0194 DAB2 uxtb r2, r3
3927 0196 7989 ldrh r1, [r7, #10]
3928 0198 0023 movs r3, #0
3929 019a 0093 str r3, [sp]
3930 019c 4FF08073 mov r3, #16777216
3931 01a0 F868 ldr r0, [r7, #12]
3932 01a2 FFF7FEFF bl I2C_TransferConfig
3933 01a6 0FE0 b .L176
3934 .L178:
2515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
2516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
3935 .loc 1 2519 32
3936 01a8 FB68 ldr r3, [r7, #12]
3937 01aa 5B8D ldrh r3, [r3, #42] @ movhi
3938 01ac 9AB2 uxth r2, r3
3939 .loc 1 2519 26
3940 01ae FB68 ldr r3, [r7, #12]
3941 01b0 1A85 strh r2, [r3, #40] @ movhi
2520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
3942 .loc 1 2520 61
3943 01b2 FB68 ldr r3, [r7, #12]
3944 01b4 1B8D ldrh r3, [r3, #40]
3945 .loc 1 2520 11
3946 01b6 DAB2 uxtb r2, r3
3947 01b8 7989 ldrh r1, [r7, #10]
3948 01ba 0023 movs r3, #0
3949 01bc 0093 str r3, [sp]
3950 01be 4FF00073 mov r3, #33554432
3951 01c2 F868 ldr r0, [r7, #12]
3952 01c4 FFF7FEFF bl I2C_TransferConfig
3953 .L176:
2521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
2522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U);
3954 .loc 1 2525 18
3955 01c8 FB68 ldr r3, [r7, #12]
3956 01ca 5B8D ldrh r3, [r3, #42] @ movhi
3957 01cc 9BB2 uxth r3, r3
3958 .loc 1 2525 30
3959 01ce 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 115
3960 01d0 9ED1 bne .L179
2526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */
2528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */
2529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
3961 .loc 1 2529 9
3962 01d2 7A69 ldr r2, [r7, #20]
3963 01d4 B96A ldr r1, [r7, #40]
3964 01d6 F868 ldr r0, [r7, #12]
3965 01d8 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
3966 01dc 0346 mov r3, r0
3967 .loc 1 2529 8 discriminator 1
3968 01de 002B cmp r3, #0
3969 01e0 01D0 beq .L180
2530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3970 .loc 1 2531 14
3971 01e2 0123 movs r3, #1
3972 01e4 1AE0 b .L169
3973 .L180:
2532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
2535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
3974 .loc 1 2535 5
3975 01e6 FB68 ldr r3, [r7, #12]
3976 01e8 1B68 ldr r3, [r3]
3977 01ea 2022 movs r2, #32
3978 01ec DA61 str r2, [r3, #28]
2536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
2538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
3979 .loc 1 2538 5
3980 01ee FB68 ldr r3, [r7, #12]
3981 01f0 1B68 ldr r3, [r3]
3982 01f2 5968 ldr r1, [r3, #4]
3983 01f4 FB68 ldr r3, [r7, #12]
3984 01f6 1A68 ldr r2, [r3]
3985 01f8 0A4B ldr r3, .L181
3986 01fa 0B40 ands r3, r3, r1
3987 01fc 5360 str r3, [r2, #4]
2539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3988 .loc 1 2540 17
3989 01fe FB68 ldr r3, [r7, #12]
3990 0200 2022 movs r2, #32
3991 0202 83F84120 strb r2, [r3, #65]
2541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3992 .loc 1 2541 17
3993 0206 FB68 ldr r3, [r7, #12]
3994 0208 0022 movs r2, #0
3995 020a 83F84220 strb r2, [r3, #66]
2542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3996 .loc 1 2544 5
3997 020e FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 116
3998 0210 0022 movs r2, #0
3999 0212 83F84020 strb r2, [r3, #64]
2545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
4000 .loc 1 2546 12
4001 0216 0023 movs r3, #0
4002 0218 00E0 b .L169
4003 .L166:
2547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4004 .loc 1 2550 12
4005 021a 0223 movs r3, #2
4006 .L169:
2551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4007 .loc 1 2552 1
4008 021c 1846 mov r0, r3
4009 021e 1837 adds r7, r7, #24
4010 .cfi_def_cfa_offset 8
4011 0220 BD46 mov sp, r7
4012 .cfi_def_cfa_register 13
4013 @ sp needed
4014 0222 80BD pop {r7, pc}
4015 .L182:
4016 .align 2
4017 .L181:
4018 0224 00E800FE .word -33495040
4019 .cfi_endproc
4020 .LFE146:
4022 .section .text.HAL_I2C_Mem_Read,"ax",%progbits
4023 .align 1
4024 .global HAL_I2C_Mem_Read
4025 .syntax unified
4026 .thumb
4027 .thumb_func
4029 HAL_I2C_Mem_Read:
4030 .LFB147:
2553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Read an amount of data in blocking mode from a specific memory address
2556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
2561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
2562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
2565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres
2568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Tim
2569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4031 .loc 1 2569 1
ARM GAS /tmp/cc5G5cqz.s page 117
4032 .cfi_startproc
4033 @ args = 12, pretend = 0, frame = 24
4034 @ frame_needed = 1, uses_anonymous_args = 0
4035 0000 80B5 push {r7, lr}
4036 .cfi_def_cfa_offset 8
4037 .cfi_offset 7, -8
4038 .cfi_offset 14, -4
4039 0002 88B0 sub sp, sp, #32
4040 .cfi_def_cfa_offset 40
4041 0004 02AF add r7, sp, #8
4042 .cfi_def_cfa 7, 32
4043 0006 F860 str r0, [r7, #12]
4044 0008 0846 mov r0, r1
4045 000a 1146 mov r1, r2
4046 000c 1A46 mov r2, r3
4047 000e 0346 mov r3, r0 @ movhi
4048 0010 7B81 strh r3, [r7, #10] @ movhi
4049 0012 0B46 mov r3, r1 @ movhi
4050 0014 3B81 strh r3, [r7, #8] @ movhi
4051 0016 1346 mov r3, r2 @ movhi
4052 0018 FB80 strh r3, [r7, #6] @ movhi
2570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
2571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
2573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
2574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
4053 .loc 1 2575 11
4054 001a FB68 ldr r3, [r7, #12]
4055 001c 93F84130 ldrb r3, [r3, #65]
4056 0020 DBB2 uxtb r3, r3
4057 .loc 1 2575 6
4058 0022 202B cmp r3, #32
4059 0024 40F0FD80 bne .L184
2576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
4060 .loc 1 2577 8
4061 0028 3B6A ldr r3, [r7, #32]
4062 002a 002B cmp r3, #0
4063 002c 02D0 beq .L185
4064 .loc 1 2577 25 discriminator 1
4065 002e BB8C ldrh r3, [r7, #36]
4066 0030 002B cmp r3, #0
4067 0032 05D1 bne .L186
4068 .L185:
2578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
4069 .loc 1 2579 23
4070 0034 FB68 ldr r3, [r7, #12]
4071 0036 4FF40072 mov r2, #512
4072 003a 5A64 str r2, [r3, #68]
2580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4073 .loc 1 2580 15
4074 003c 0123 movs r3, #1
4075 003e F1E0 b .L187
4076 .L186:
2581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 118
2582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
4077 .loc 1 2584 5
4078 0040 FB68 ldr r3, [r7, #12]
4079 0042 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
4080 0046 012B cmp r3, #1
4081 0048 01D1 bne .L188
4082 .loc 1 2584 5 is_stmt 0 discriminator 1
4083 004a 0223 movs r3, #2
4084 .loc 1 2584 5
4085 004c EAE0 b .L187
4086 .L188:
4087 .loc 1 2584 5 discriminator 2
4088 004e FB68 ldr r3, [r7, #12]
4089 0050 0122 movs r2, #1
4090 0052 83F84020 strb r2, [r3, #64]
2585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Init tickstart for timeout management*/
2587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
4091 .loc 1 2587 17 is_stmt 1
4092 0056 FFF7FEFF bl HAL_GetTick
4093 005a 7861 str r0, [r7, #20]
2588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK
4094 .loc 1 2589 9
4095 005c 7B69 ldr r3, [r7, #20]
4096 005e 0093 str r3, [sp]
4097 0060 1923 movs r3, #25
4098 0062 0122 movs r2, #1
4099 0064 4FF40041 mov r1, #32768
4100 0068 F868 ldr r0, [r7, #12]
4101 006a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
4102 006e 0346 mov r3, r0
4103 .loc 1 2589 8 discriminator 1
4104 0070 002B cmp r3, #0
4105 0072 01D0 beq .L189
2590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4106 .loc 1 2591 14
4107 0074 0123 movs r3, #1
4108 0076 D5E0 b .L187
4109 .L189:
2592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
4110 .loc 1 2594 21
4111 0078 FB68 ldr r3, [r7, #12]
4112 007a 2222 movs r2, #34
4113 007c 83F84120 strb r2, [r3, #65]
2595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
4114 .loc 1 2595 21
4115 0080 FB68 ldr r3, [r7, #12]
4116 0082 4022 movs r2, #64
4117 0084 83F84220 strb r2, [r3, #66]
2596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
4118 .loc 1 2596 21
ARM GAS /tmp/cc5G5cqz.s page 119
4119 0088 FB68 ldr r3, [r7, #12]
4120 008a 0022 movs r2, #0
4121 008c 5A64 str r2, [r3, #68]
2597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
4122 .loc 1 2599 21
4123 008e FB68 ldr r3, [r7, #12]
4124 0090 3A6A ldr r2, [r7, #32]
4125 0092 5A62 str r2, [r3, #36]
2600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
4126 .loc 1 2600 21
4127 0094 FB68 ldr r3, [r7, #12]
4128 0096 BA8C ldrh r2, [r7, #36] @ movhi
4129 0098 5A85 strh r2, [r3, #42] @ movhi
2601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
4130 .loc 1 2601 21
4131 009a FB68 ldr r3, [r7, #12]
4132 009c 0022 movs r2, #0
4133 009e 5A63 str r2, [r3, #52]
2602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
2604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_
4134 .loc 1 2604 9
4135 00a0 F888 ldrh r0, [r7, #6]
4136 00a2 3A89 ldrh r2, [r7, #8]
4137 00a4 7989 ldrh r1, [r7, #10]
4138 00a6 7B69 ldr r3, [r7, #20]
4139 00a8 0193 str r3, [sp, #4]
4140 00aa BB6A ldr r3, [r7, #40]
4141 00ac 0093 str r3, [sp]
4142 00ae 0346 mov r3, r0
4143 00b0 F868 ldr r0, [r7, #12]
4144 00b2 FFF7FEFF bl I2C_RequestMemoryRead
4145 00b6 0346 mov r3, r0
4146 .loc 1 2604 8 discriminator 1
4147 00b8 002B cmp r3, #0
4148 00ba 05D0 beq .L190
2605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4149 .loc 1 2607 7
4150 00bc FB68 ldr r3, [r7, #12]
4151 00be 0022 movs r2, #0
4152 00c0 83F84020 strb r2, [r3, #64]
2608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4153 .loc 1 2608 14
4154 00c4 0123 movs r3, #1
4155 00c6 ADE0 b .L187
4156 .L190:
2609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
2612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
2613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
4157 .loc 1 2613 13
4158 00c8 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 120
4159 00ca 5B8D ldrh r3, [r3, #42] @ movhi
4160 00cc 9BB2 uxth r3, r3
4161 .loc 1 2613 8
4162 00ce FF2B cmp r3, #255
4163 00d0 0ED9 bls .L191
2614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
4164 .loc 1 2615 22
4165 00d2 FB68 ldr r3, [r7, #12]
4166 00d4 FF22 movs r2, #255
4167 00d6 1A85 strh r2, [r3, #40] @ movhi
2616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
4168 .loc 1 2616 57
4169 00d8 FB68 ldr r3, [r7, #12]
4170 00da 1B8D ldrh r3, [r3, #40]
4171 .loc 1 2616 7
4172 00dc DAB2 uxtb r2, r3
4173 00de 7989 ldrh r1, [r7, #10]
4174 00e0 524B ldr r3, .L199
4175 00e2 0093 str r3, [sp]
4176 00e4 4FF08073 mov r3, #16777216
4177 00e8 F868 ldr r0, [r7, #12]
4178 00ea FFF7FEFF bl I2C_TransferConfig
4179 00ee 0FE0 b .L197
4180 .L191:
2617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
2618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
4181 .loc 1 2621 28
4182 00f0 FB68 ldr r3, [r7, #12]
4183 00f2 5B8D ldrh r3, [r3, #42] @ movhi
4184 00f4 9AB2 uxth r2, r3
4185 .loc 1 2621 22
4186 00f6 FB68 ldr r3, [r7, #12]
4187 00f8 1A85 strh r2, [r3, #40] @ movhi
2622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
4188 .loc 1 2622 57
4189 00fa FB68 ldr r3, [r7, #12]
4190 00fc 1B8D ldrh r3, [r3, #40]
4191 .loc 1 2622 7
4192 00fe DAB2 uxtb r2, r3
4193 0100 7989 ldrh r1, [r7, #10]
4194 0102 4A4B ldr r3, .L199
4195 0104 0093 str r3, [sp]
4196 0106 4FF00073 mov r3, #33554432
4197 010a F868 ldr r0, [r7, #12]
4198 010c FFF7FEFF bl I2C_TransferConfig
4199 .L197:
2623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
2624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do
2627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until RXNE flag is set */
2629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK)
ARM GAS /tmp/cc5G5cqz.s page 121
4200 .loc 1 2629 11
4201 0110 7B69 ldr r3, [r7, #20]
4202 0112 0093 str r3, [sp]
4203 0114 BB6A ldr r3, [r7, #40]
4204 0116 0022 movs r2, #0
4205 0118 0421 movs r1, #4
4206 011a F868 ldr r0, [r7, #12]
4207 011c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
4208 0120 0346 mov r3, r0
4209 .loc 1 2629 10 discriminator 1
4210 0122 002B cmp r3, #0
4211 0124 01D0 beq .L193
2630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4212 .loc 1 2631 16
4213 0126 0123 movs r3, #1
4214 0128 7CE0 b .L187
4215 .L193:
2632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
2635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
4216 .loc 1 2635 38
4217 012a FB68 ldr r3, [r7, #12]
4218 012c 1B68 ldr r3, [r3]
4219 .loc 1 2635 48
4220 012e 5A6A ldr r2, [r3, #36]
4221 .loc 1 2635 12
4222 0130 FB68 ldr r3, [r7, #12]
4223 0132 5B6A ldr r3, [r3, #36]
4224 .loc 1 2635 25
4225 0134 D2B2 uxtb r2, r2
4226 .loc 1 2635 23
4227 0136 1A70 strb r2, [r3]
2636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
2638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
4228 .loc 1 2638 11
4229 0138 FB68 ldr r3, [r7, #12]
4230 013a 5B6A ldr r3, [r3, #36]
4231 .loc 1 2638 21
4232 013c 5A1C adds r2, r3, #1
4233 013e FB68 ldr r3, [r7, #12]
4234 0140 5A62 str r2, [r3, #36]
2639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
4235 .loc 1 2640 11
4236 0142 FB68 ldr r3, [r7, #12]
4237 0144 1B8D ldrh r3, [r3, #40]
4238 .loc 1 2640 21
4239 0146 013B subs r3, r3, #1
4240 0148 9AB2 uxth r2, r3
4241 014a FB68 ldr r3, [r7, #12]
4242 014c 1A85 strh r2, [r3, #40] @ movhi
2641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
4243 .loc 1 2641 11
4244 014e FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 122
4245 0150 5B8D ldrh r3, [r3, #42] @ movhi
4246 0152 9BB2 uxth r3, r3
4247 .loc 1 2641 22
4248 0154 013B subs r3, r3, #1
4249 0156 9AB2 uxth r2, r3
4250 0158 FB68 ldr r3, [r7, #12]
4251 015a 5A85 strh r2, [r3, #42] @ movhi
2642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
4252 .loc 1 2643 16
4253 015c FB68 ldr r3, [r7, #12]
4254 015e 5B8D ldrh r3, [r3, #42] @ movhi
4255 0160 9BB2 uxth r3, r3
4256 .loc 1 2643 10
4257 0162 002B cmp r3, #0
4258 0164 34D0 beq .L194
4259 .loc 1 2643 43 discriminator 1
4260 0166 FB68 ldr r3, [r7, #12]
4261 0168 1B8D ldrh r3, [r3, #40]
4262 .loc 1 2643 35 discriminator 1
4263 016a 002B cmp r3, #0
4264 016c 30D1 bne .L194
2644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */
2646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK)
4265 .loc 1 2646 13
4266 016e 7B69 ldr r3, [r7, #20]
4267 0170 0093 str r3, [sp]
4268 0172 BB6A ldr r3, [r7, #40]
4269 0174 0022 movs r2, #0
4270 0176 8021 movs r1, #128
4271 0178 F868 ldr r0, [r7, #12]
4272 017a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
4273 017e 0346 mov r3, r0
4274 .loc 1 2646 12 discriminator 1
4275 0180 002B cmp r3, #0
4276 0182 01D0 beq .L195
2647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4277 .loc 1 2648 18
4278 0184 0123 movs r3, #1
4279 0186 4DE0 b .L187
4280 .L195:
2649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
4281 .loc 1 2651 17
4282 0188 FB68 ldr r3, [r7, #12]
4283 018a 5B8D ldrh r3, [r3, #42] @ movhi
4284 018c 9BB2 uxth r3, r3
4285 .loc 1 2651 12
4286 018e FF2B cmp r3, #255
4287 0190 0ED9 bls .L196
2652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
4288 .loc 1 2653 26
4289 0192 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 123
4290 0194 FF22 movs r2, #255
4291 0196 1A85 strh r2, [r3, #40] @ movhi
2654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE,
4292 .loc 1 2654 62
4293 0198 FB68 ldr r3, [r7, #12]
4294 019a 1B8D ldrh r3, [r3, #40]
4295 .loc 1 2654 11
4296 019c DAB2 uxtb r2, r3
4297 019e 7989 ldrh r1, [r7, #10]
4298 01a0 0023 movs r3, #0
4299 01a2 0093 str r3, [sp]
4300 01a4 4FF08073 mov r3, #16777216
4301 01a8 F868 ldr r0, [r7, #12]
4302 01aa FFF7FEFF bl I2C_TransferConfig
4303 01ae 0FE0 b .L194
4304 .L196:
2655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
2656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
4305 .loc 1 2659 32
4306 01b0 FB68 ldr r3, [r7, #12]
4307 01b2 5B8D ldrh r3, [r3, #42] @ movhi
4308 01b4 9AB2 uxth r2, r3
4309 .loc 1 2659 26
4310 01b6 FB68 ldr r3, [r7, #12]
4311 01b8 1A85 strh r2, [r3, #40] @ movhi
2660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
4312 .loc 1 2660 61
4313 01ba FB68 ldr r3, [r7, #12]
4314 01bc 1B8D ldrh r3, [r3, #40]
4315 .loc 1 2660 11
4316 01be DAB2 uxtb r2, r3
4317 01c0 7989 ldrh r1, [r7, #10]
4318 01c2 0023 movs r3, #0
4319 01c4 0093 str r3, [sp]
4320 01c6 4FF00073 mov r3, #33554432
4321 01ca F868 ldr r0, [r7, #12]
4322 01cc FFF7FEFF bl I2C_TransferConfig
4323 .L194:
2661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_NO_STARTSTOP);
2662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (hi2c->XferCount > 0U);
4324 .loc 1 2664 18
4325 01d0 FB68 ldr r3, [r7, #12]
4326 01d2 5B8D ldrh r3, [r3, #42] @ movhi
4327 01d4 9BB2 uxth r3, r3
4328 .loc 1 2664 30
4329 01d6 002B cmp r3, #0
4330 01d8 9AD1 bne .L197
2665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */
2667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */
2668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
4331 .loc 1 2668 9
ARM GAS /tmp/cc5G5cqz.s page 124
4332 01da 7A69 ldr r2, [r7, #20]
4333 01dc B96A ldr r1, [r7, #40]
4334 01de F868 ldr r0, [r7, #12]
4335 01e0 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout
4336 01e4 0346 mov r3, r0
4337 .loc 1 2668 8 discriminator 1
4338 01e6 002B cmp r3, #0
4339 01e8 01D0 beq .L198
2669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4340 .loc 1 2670 14
4341 01ea 0123 movs r3, #1
4342 01ec 1AE0 b .L187
4343 .L198:
2671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
2674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
4344 .loc 1 2674 5
4345 01ee FB68 ldr r3, [r7, #12]
4346 01f0 1B68 ldr r3, [r3]
4347 01f2 2022 movs r2, #32
4348 01f4 DA61 str r2, [r3, #28]
2675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
2677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
4349 .loc 1 2677 5
4350 01f6 FB68 ldr r3, [r7, #12]
4351 01f8 1B68 ldr r3, [r3]
4352 01fa 5968 ldr r1, [r3, #4]
4353 01fc FB68 ldr r3, [r7, #12]
4354 01fe 1A68 ldr r2, [r3]
4355 0200 0B4B ldr r3, .L199+4
4356 0202 0B40 ands r3, r3, r1
4357 0204 5360 str r3, [r2, #4]
2678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
4358 .loc 1 2679 17
4359 0206 FB68 ldr r3, [r7, #12]
4360 0208 2022 movs r2, #32
4361 020a 83F84120 strb r2, [r3, #65]
2680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4362 .loc 1 2680 17
4363 020e FB68 ldr r3, [r7, #12]
4364 0210 0022 movs r2, #0
4365 0212 83F84220 strb r2, [r3, #66]
2681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4366 .loc 1 2683 5
4367 0216 FB68 ldr r3, [r7, #12]
4368 0218 0022 movs r2, #0
4369 021a 83F84020 strb r2, [r3, #64]
2684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
4370 .loc 1 2685 12
4371 021e 0023 movs r3, #0
ARM GAS /tmp/cc5G5cqz.s page 125
4372 0220 00E0 b .L187
4373 .L184:
2686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4374 .loc 1 2689 12
4375 0222 0223 movs r3, #2
4376 .L187:
2690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4377 .loc 1 2691 1
4378 0224 1846 mov r0, r3
4379 0226 1837 adds r7, r7, #24
4380 .cfi_def_cfa_offset 8
4381 0228 BD46 mov sp, r7
4382 .cfi_def_cfa_register 13
4383 @ sp needed
4384 022a 80BD pop {r7, pc}
4385 .L200:
4386 .align 2
4387 .L199:
4388 022c 00240080 .word -2147474432
4389 0230 00E800FE .word -33495040
4390 .cfi_endproc
4391 .LFE147:
4393 .section .text.HAL_I2C_Mem_Write_IT,"ax",%progbits
4394 .align 1
4395 .global HAL_I2C_Mem_Write_IT
4396 .syntax unified
4397 .thumb
4398 .thumb_func
4400 HAL_I2C_Mem_Write_IT:
4401 .LFB148:
2692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory addres
2694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
2699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
2700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd
2705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4402 .loc 1 2706 1
4403 .cfi_startproc
4404 @ args = 8, pretend = 0, frame = 16
4405 @ frame_needed = 1, uses_anonymous_args = 0
4406 0000 80B5 push {r7, lr}
4407 .cfi_def_cfa_offset 8
4408 .cfi_offset 7, -8
4409 .cfi_offset 14, -4
ARM GAS /tmp/cc5G5cqz.s page 126
4410 0002 86B0 sub sp, sp, #24
4411 .cfi_def_cfa_offset 32
4412 0004 02AF add r7, sp, #8
4413 .cfi_def_cfa 7, 24
4414 0006 F860 str r0, [r7, #12]
4415 0008 0846 mov r0, r1
4416 000a 1146 mov r1, r2
4417 000c 1A46 mov r2, r3
4418 000e 0346 mov r3, r0 @ movhi
4419 0010 7B81 strh r3, [r7, #10] @ movhi
4420 0012 0B46 mov r3, r1 @ movhi
4421 0014 3B81 strh r3, [r7, #8] @ movhi
4422 0016 1346 mov r3, r2 @ movhi
4423 0018 FB80 strh r3, [r7, #6] @ movhi
2707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
2708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
2709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
4424 .loc 1 2710 11
4425 001a FB68 ldr r3, [r7, #12]
4426 001c 93F84130 ldrb r3, [r3, #65]
4427 0020 DBB2 uxtb r3, r3
4428 .loc 1 2710 6
4429 0022 202B cmp r3, #32
4430 0024 67D1 bne .L202
2711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
4431 .loc 1 2712 8
4432 0026 BB69 ldr r3, [r7, #24]
4433 0028 002B cmp r3, #0
4434 002a 02D0 beq .L203
4435 .loc 1 2712 25 discriminator 1
4436 002c BB8B ldrh r3, [r7, #28]
4437 002e 002B cmp r3, #0
4438 0030 05D1 bne .L204
4439 .L203:
2713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
4440 .loc 1 2714 23
4441 0032 FB68 ldr r3, [r7, #12]
4442 0034 4FF40072 mov r2, #512
4443 0038 5A64 str r2, [r3, #68]
2715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4444 .loc 1 2715 15
4445 003a 0123 movs r3, #1
4446 003c 5CE0 b .L205
4447 .L204:
2716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
4448 .loc 1 2718 9
4449 003e FB68 ldr r3, [r7, #12]
4450 0040 1B68 ldr r3, [r3]
4451 0042 9B69 ldr r3, [r3, #24]
4452 0044 03F40043 and r3, r3, #32768
4453 .loc 1 2718 8
4454 0048 B3F5004F cmp r3, #32768
ARM GAS /tmp/cc5G5cqz.s page 127
4455 004c 01D1 bne .L206
2719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4456 .loc 1 2720 14
4457 004e 0223 movs r3, #2
4458 0050 52E0 b .L205
4459 .L206:
2721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
4460 .loc 1 2724 5
4461 0052 FB68 ldr r3, [r7, #12]
4462 0054 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
4463 0058 012B cmp r3, #1
4464 005a 01D1 bne .L207
4465 .loc 1 2724 5 is_stmt 0 discriminator 1
4466 005c 0223 movs r3, #2
4467 .loc 1 2724 5
4468 005e 4BE0 b .L205
4469 .L207:
4470 .loc 1 2724 5 discriminator 2
4471 0060 FB68 ldr r3, [r7, #12]
4472 0062 0122 movs r2, #1
4473 0064 83F84020 strb r2, [r3, #64]
2725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
4474 .loc 1 2726 23 is_stmt 1
4475 0068 FB68 ldr r3, [r7, #12]
4476 006a 2122 movs r2, #33
4477 006c 83F84120 strb r2, [r3, #65]
2727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
4478 .loc 1 2727 23
4479 0070 FB68 ldr r3, [r7, #12]
4480 0072 4022 movs r2, #64
4481 0074 83F84220 strb r2, [r3, #66]
2728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
4482 .loc 1 2728 23
4483 0078 FB68 ldr r3, [r7, #12]
4484 007a 0022 movs r2, #0
4485 007c 5A64 str r2, [r3, #68]
2729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
4486 .loc 1 2731 23
4487 007e FB68 ldr r3, [r7, #12]
4488 0080 BA69 ldr r2, [r7, #24]
4489 0082 5A62 str r2, [r3, #36]
2732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
4490 .loc 1 2732 23
4491 0084 FB68 ldr r3, [r7, #12]
4492 0086 BA8B ldrh r2, [r7, #28] @ movhi
4493 0088 5A85 strh r2, [r3, #42] @ movhi
2733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
4494 .loc 1 2733 23
4495 008a FB68 ldr r3, [r7, #12]
4496 008c 1C4A ldr r2, .L210
ARM GAS /tmp/cc5G5cqz.s page 128
4497 008e DA62 str r2, [r3, #44]
2734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT;
4498 .loc 1 2734 23
4499 0090 FB68 ldr r3, [r7, #12]
4500 0092 1C4A ldr r2, .L210+4
4501 0094 5A63 str r2, [r3, #52]
2735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress;
4502 .loc 1 2735 23
4503 0096 7A89 ldrh r2, [r7, #10]
4504 0098 FB68 ldr r3, [r7, #12]
4505 009a DA64 str r2, [r3, #76]
2736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
2738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
4506 .loc 1 2738 8
4507 009c FB88 ldrh r3, [r7, #6]
4508 009e 012B cmp r3, #1
4509 00a0 09D1 bne .L208
2739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */
2741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
4510 .loc 1 2741 30
4511 00a2 3B89 ldrh r3, [r7, #8] @ movhi
4512 00a4 DAB2 uxtb r2, r3
4513 .loc 1 2741 11
4514 00a6 FB68 ldr r3, [r7, #12]
4515 00a8 1B68 ldr r3, [r3]
4516 .loc 1 2741 28
4517 00aa 9A62 str r2, [r3, #40]
2742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
2744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
4518 .loc 1 2744 24
4519 00ac FB68 ldr r3, [r7, #12]
4520 00ae 4FF0FF32 mov r2, #-1
4521 00b2 1A65 str r2, [r3, #80]
4522 00b4 0BE0 b .L209
4523 .L208:
2745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
2747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
2750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
4524 .loc 1 2750 30
4525 00b6 3B89 ldrh r3, [r7, #8]
4526 00b8 1B0A lsrs r3, r3, #8
4527 00ba 9BB2 uxth r3, r3
4528 00bc DAB2 uxtb r2, r3
4529 .loc 1 2750 11
4530 00be FB68 ldr r3, [r7, #12]
4531 00c0 1B68 ldr r3, [r3]
4532 .loc 1 2750 28
4533 00c2 9A62 str r2, [r3, #40]
2751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */
2753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
ARM GAS /tmp/cc5G5cqz.s page 129
4534 .loc 1 2753 26
4535 00c4 3B89 ldrh r3, [r7, #8] @ movhi
4536 00c6 DBB2 uxtb r3, r3
4537 00c8 1A46 mov r2, r3
4538 .loc 1 2753 24
4539 00ca FB68 ldr r3, [r7, #12]
4540 00cc 1A65 str r2, [r3, #80]
4541 .L209:
2754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
2756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_W
4542 .loc 1 2756 5
4543 00ce FB88 ldrh r3, [r7, #6] @ movhi
4544 00d0 DAB2 uxtb r2, r3
4545 00d2 7989 ldrh r1, [r7, #10]
4546 00d4 0C4B ldr r3, .L210+8
4547 00d6 0093 str r3, [sp]
4548 00d8 4FF08073 mov r3, #16777216
4549 00dc F868 ldr r0, [r7, #12]
4550 00de FFF7FEFF bl I2C_TransferConfig
2757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4551 .loc 1 2759 5
4552 00e2 FB68 ldr r3, [r7, #12]
4553 00e4 0022 movs r2, #0
4554 00e6 83F84020 strb r2, [r3, #64]
2760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
2766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
2767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
2768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
2769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
4555 .loc 1 2769 5
4556 00ea 0121 movs r1, #1
4557 00ec F868 ldr r0, [r7, #12]
4558 00ee FFF7FEFF bl I2C_Enable_IRQ
2770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
4559 .loc 1 2771 12
4560 00f2 0023 movs r3, #0
4561 00f4 00E0 b .L205
4562 .L202:
2772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4563 .loc 1 2775 12
4564 00f6 0223 movs r3, #2
4565 .L205:
2776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4566 .loc 1 2777 1
ARM GAS /tmp/cc5G5cqz.s page 130
4567 00f8 1846 mov r0, r3
4568 00fa 1037 adds r7, r7, #16
4569 .cfi_def_cfa_offset 8
4570 00fc BD46 mov sp, r7
4571 .cfi_def_cfa_register 13
4572 @ sp needed
4573 00fe 80BD pop {r7, pc}
4574 .L211:
4575 .align 2
4576 .L210:
4577 0100 0000FFFF .word -65536
4578 0104 00000000 .word I2C_Mem_ISR_IT
4579 0108 00200080 .word -2147475456
4580 .cfi_endproc
4581 .LFE148:
4583 .section .text.HAL_I2C_Mem_Read_IT,"ax",%progbits
4584 .align 1
4585 .global HAL_I2C_Mem_Read_IT
4586 .syntax unified
4587 .thumb
4588 .thumb_func
4590 HAL_I2C_Mem_Read_IT:
4591 .LFB149:
2778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory addre
2781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
2786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
2787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd
2792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4592 .loc 1 2793 1
4593 .cfi_startproc
4594 @ args = 8, pretend = 0, frame = 16
4595 @ frame_needed = 1, uses_anonymous_args = 0
4596 0000 80B5 push {r7, lr}
4597 .cfi_def_cfa_offset 8
4598 .cfi_offset 7, -8
4599 .cfi_offset 14, -4
4600 0002 86B0 sub sp, sp, #24
4601 .cfi_def_cfa_offset 32
4602 0004 02AF add r7, sp, #8
4603 .cfi_def_cfa 7, 24
4604 0006 F860 str r0, [r7, #12]
4605 0008 0846 mov r0, r1
4606 000a 1146 mov r1, r2
4607 000c 1A46 mov r2, r3
4608 000e 0346 mov r3, r0 @ movhi
4609 0010 7B81 strh r3, [r7, #10] @ movhi
ARM GAS /tmp/cc5G5cqz.s page 131
4610 0012 0B46 mov r3, r1 @ movhi
4611 0014 3B81 strh r3, [r7, #8] @ movhi
4612 0016 1346 mov r3, r2 @ movhi
4613 0018 FB80 strh r3, [r7, #6] @ movhi
2794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
2795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
2796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
4614 .loc 1 2797 11
4615 001a FB68 ldr r3, [r7, #12]
4616 001c 93F84130 ldrb r3, [r3, #65]
4617 0020 DBB2 uxtb r3, r3
4618 .loc 1 2797 6
4619 0022 202B cmp r3, #32
4620 0024 66D1 bne .L213
2798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
4621 .loc 1 2799 8
4622 0026 BB69 ldr r3, [r7, #24]
4623 0028 002B cmp r3, #0
4624 002a 02D0 beq .L214
4625 .loc 1 2799 25 discriminator 1
4626 002c BB8B ldrh r3, [r7, #28]
4627 002e 002B cmp r3, #0
4628 0030 05D1 bne .L215
4629 .L214:
2800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
4630 .loc 1 2801 23
4631 0032 FB68 ldr r3, [r7, #12]
4632 0034 4FF40072 mov r2, #512
4633 0038 5A64 str r2, [r3, #68]
2802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4634 .loc 1 2802 15
4635 003a 0123 movs r3, #1
4636 003c 5BE0 b .L216
4637 .L215:
2803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
4638 .loc 1 2805 9
4639 003e FB68 ldr r3, [r7, #12]
4640 0040 1B68 ldr r3, [r3]
4641 0042 9B69 ldr r3, [r3, #24]
4642 0044 03F40043 and r3, r3, #32768
4643 .loc 1 2805 8
4644 0048 B3F5004F cmp r3, #32768
4645 004c 01D1 bne .L217
2806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4646 .loc 1 2807 14
4647 004e 0223 movs r3, #2
4648 0050 51E0 b .L216
4649 .L217:
2808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
ARM GAS /tmp/cc5G5cqz.s page 132
2811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
4650 .loc 1 2811 5
4651 0052 FB68 ldr r3, [r7, #12]
4652 0054 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
4653 0058 012B cmp r3, #1
4654 005a 01D1 bne .L218
4655 .loc 1 2811 5 is_stmt 0 discriminator 1
4656 005c 0223 movs r3, #2
4657 .loc 1 2811 5
4658 005e 4AE0 b .L216
4659 .L218:
4660 .loc 1 2811 5 discriminator 2
4661 0060 FB68 ldr r3, [r7, #12]
4662 0062 0122 movs r2, #1
4663 0064 83F84020 strb r2, [r3, #64]
2812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
4664 .loc 1 2813 23 is_stmt 1
4665 0068 FB68 ldr r3, [r7, #12]
4666 006a 2222 movs r2, #34
4667 006c 83F84120 strb r2, [r3, #65]
2814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
4668 .loc 1 2814 23
4669 0070 FB68 ldr r3, [r7, #12]
4670 0072 4022 movs r2, #64
4671 0074 83F84220 strb r2, [r3, #66]
2815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
4672 .loc 1 2815 23
4673 0078 FB68 ldr r3, [r7, #12]
4674 007a 0022 movs r2, #0
4675 007c 5A64 str r2, [r3, #68]
2816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
4676 .loc 1 2818 23
4677 007e FB68 ldr r3, [r7, #12]
4678 0080 BA69 ldr r2, [r7, #24]
4679 0082 5A62 str r2, [r3, #36]
2819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
4680 .loc 1 2819 23
4681 0084 FB68 ldr r3, [r7, #12]
4682 0086 BA8B ldrh r2, [r7, #28] @ movhi
4683 0088 5A85 strh r2, [r3, #42] @ movhi
2820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
4684 .loc 1 2820 23
4685 008a FB68 ldr r3, [r7, #12]
4686 008c 1C4A ldr r2, .L221
4687 008e DA62 str r2, [r3, #44]
2821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT;
4688 .loc 1 2821 23
4689 0090 FB68 ldr r3, [r7, #12]
4690 0092 1C4A ldr r2, .L221+4
4691 0094 5A63 str r2, [r3, #52]
2822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress;
4692 .loc 1 2822 23
4693 0096 7A89 ldrh r2, [r7, #10]
4694 0098 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 133
4695 009a DA64 str r2, [r3, #76]
2823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
2825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
4696 .loc 1 2825 8
4697 009c FB88 ldrh r3, [r7, #6]
4698 009e 012B cmp r3, #1
4699 00a0 09D1 bne .L219
2826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */
2828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
4700 .loc 1 2828 30
4701 00a2 3B89 ldrh r3, [r7, #8] @ movhi
4702 00a4 DAB2 uxtb r2, r3
4703 .loc 1 2828 11
4704 00a6 FB68 ldr r3, [r7, #12]
4705 00a8 1B68 ldr r3, [r3]
4706 .loc 1 2828 28
4707 00aa 9A62 str r2, [r3, #40]
2829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
2831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
4708 .loc 1 2831 24
4709 00ac FB68 ldr r3, [r7, #12]
4710 00ae 4FF0FF32 mov r2, #-1
4711 00b2 1A65 str r2, [r3, #80]
4712 00b4 0BE0 b .L220
4713 .L219:
2832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
2834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
2837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
4714 .loc 1 2837 30
4715 00b6 3B89 ldrh r3, [r7, #8]
4716 00b8 1B0A lsrs r3, r3, #8
4717 00ba 9BB2 uxth r3, r3
4718 00bc DAB2 uxtb r2, r3
4719 .loc 1 2837 11
4720 00be FB68 ldr r3, [r7, #12]
4721 00c0 1B68 ldr r3, [r3]
4722 .loc 1 2837 28
4723 00c2 9A62 str r2, [r3, #40]
2838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */
2840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
4724 .loc 1 2840 26
4725 00c4 3B89 ldrh r3, [r7, #8] @ movhi
4726 00c6 DBB2 uxtb r3, r3
4727 00c8 1A46 mov r2, r3
4728 .loc 1 2840 24
4729 00ca FB68 ldr r3, [r7, #12]
4730 00cc 1A65 str r2, [r3, #80]
4731 .L220:
2841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
ARM GAS /tmp/cc5G5cqz.s page 134
2843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_
4732 .loc 1 2843 5
4733 00ce FB88 ldrh r3, [r7, #6] @ movhi
4734 00d0 DAB2 uxtb r2, r3
4735 00d2 7989 ldrh r1, [r7, #10]
4736 00d4 0C4B ldr r3, .L221+8
4737 00d6 0093 str r3, [sp]
4738 00d8 0023 movs r3, #0
4739 00da F868 ldr r0, [r7, #12]
4740 00dc FFF7FEFF bl I2C_TransferConfig
2844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4741 .loc 1 2846 5
4742 00e0 FB68 ldr r3, [r7, #12]
4743 00e2 0022 movs r2, #0
4744 00e4 83F84020 strb r2, [r3, #64]
2847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */
2853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
2854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
2855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
2856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, (I2C_XFER_TX_IT | I2C_XFER_RX_IT));
4745 .loc 1 2856 5
4746 00e8 0321 movs r1, #3
4747 00ea F868 ldr r0, [r7, #12]
4748 00ec FFF7FEFF bl I2C_Enable_IRQ
2857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
4749 .loc 1 2858 12
4750 00f0 0023 movs r3, #0
4751 00f2 00E0 b .L216
4752 .L213:
2859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4753 .loc 1 2862 12
4754 00f4 0223 movs r3, #2
4755 .L216:
2863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4756 .loc 1 2864 1
4757 00f6 1846 mov r0, r3
4758 00f8 1037 adds r7, r7, #16
4759 .cfi_def_cfa_offset 8
4760 00fa BD46 mov sp, r7
4761 .cfi_def_cfa_register 13
4762 @ sp needed
4763 00fc 80BD pop {r7, pc}
4764 .L222:
4765 00fe 00BF .align 2
4766 .L221:
ARM GAS /tmp/cc5G5cqz.s page 135
4767 0100 0000FFFF .word -65536
4768 0104 00000000 .word I2C_Mem_ISR_IT
4769 0108 00200080 .word -2147475456
4770 .cfi_endproc
4771 .LFE149:
4773 .section .text.HAL_I2C_Mem_Write_DMA,"ax",%progbits
4774 .align 1
4775 .global HAL_I2C_Mem_Write_DMA
4776 .syntax unified
4777 .thumb
4778 .thumb_func
4780 HAL_I2C_Mem_Write_DMA:
4781 .LFB150:
2865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
2867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address
2868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
2869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
2870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
2871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
2872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
2873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
2874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
2875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
2876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
2877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
2878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA
2879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
2880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4782 .loc 1 2880 1
4783 .cfi_startproc
4784 @ args = 8, pretend = 0, frame = 24
4785 @ frame_needed = 1, uses_anonymous_args = 0
4786 0000 80B5 push {r7, lr}
4787 .cfi_def_cfa_offset 8
4788 .cfi_offset 7, -8
4789 .cfi_offset 14, -4
4790 0002 88B0 sub sp, sp, #32
4791 .cfi_def_cfa_offset 40
4792 0004 02AF add r7, sp, #8
4793 .cfi_def_cfa 7, 32
4794 0006 F860 str r0, [r7, #12]
4795 0008 0846 mov r0, r1
4796 000a 1146 mov r1, r2
4797 000c 1A46 mov r2, r3
4798 000e 0346 mov r3, r0 @ movhi
4799 0010 7B81 strh r3, [r7, #10] @ movhi
4800 0012 0B46 mov r3, r1 @ movhi
4801 0014 3B81 strh r3, [r7, #8] @ movhi
4802 0016 1346 mov r3, r2 @ movhi
4803 0018 FB80 strh r3, [r7, #6] @ movhi
2881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
2882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
2884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
2885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
ARM GAS /tmp/cc5G5cqz.s page 136
4804 .loc 1 2886 11
4805 001a FB68 ldr r3, [r7, #12]
4806 001c 93F84130 ldrb r3, [r3, #65]
4807 0020 DBB2 uxtb r3, r3
4808 .loc 1 2886 6
4809 0022 202B cmp r3, #32
4810 0024 40F0C380 bne .L224
2887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
4811 .loc 1 2888 8
4812 0028 3B6A ldr r3, [r7, #32]
4813 002a 002B cmp r3, #0
4814 002c 02D0 beq .L225
4815 .loc 1 2888 25 discriminator 1
4816 002e BB8C ldrh r3, [r7, #36]
4817 0030 002B cmp r3, #0
4818 0032 05D1 bne .L226
4819 .L225:
2889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
4820 .loc 1 2890 23
4821 0034 FB68 ldr r3, [r7, #12]
4822 0036 4FF40072 mov r2, #512
4823 003a 5A64 str r2, [r3, #68]
2891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4824 .loc 1 2891 15
4825 003c 0123 movs r3, #1
4826 003e B7E0 b .L227
4827 .L226:
2892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
4828 .loc 1 2894 9
4829 0040 FB68 ldr r3, [r7, #12]
4830 0042 1B68 ldr r3, [r3]
4831 0044 9B69 ldr r3, [r3, #24]
4832 0046 03F40043 and r3, r3, #32768
4833 .loc 1 2894 8
4834 004a B3F5004F cmp r3, #32768
4835 004e 01D1 bne .L228
2895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
4836 .loc 1 2896 14
4837 0050 0223 movs r3, #2
4838 0052 ADE0 b .L227
4839 .L228:
2897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
2900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
4840 .loc 1 2900 5
4841 0054 FB68 ldr r3, [r7, #12]
4842 0056 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
4843 005a 012B cmp r3, #1
4844 005c 01D1 bne .L229
4845 .loc 1 2900 5 is_stmt 0 discriminator 1
4846 005e 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 137
4847 .loc 1 2900 5
4848 0060 A6E0 b .L227
4849 .L229:
4850 .loc 1 2900 5 discriminator 2
4851 0062 FB68 ldr r3, [r7, #12]
4852 0064 0122 movs r2, #1
4853 0066 83F84020 strb r2, [r3, #64]
2901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
4854 .loc 1 2902 23 is_stmt 1
4855 006a FB68 ldr r3, [r7, #12]
4856 006c 2122 movs r2, #33
4857 006e 83F84120 strb r2, [r3, #65]
2903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
4858 .loc 1 2903 23
4859 0072 FB68 ldr r3, [r7, #12]
4860 0074 4022 movs r2, #64
4861 0076 83F84220 strb r2, [r3, #66]
2904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
4862 .loc 1 2904 23
4863 007a FB68 ldr r3, [r7, #12]
4864 007c 0022 movs r2, #0
4865 007e 5A64 str r2, [r3, #68]
2905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
2907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
4866 .loc 1 2907 23
4867 0080 FB68 ldr r3, [r7, #12]
4868 0082 3A6A ldr r2, [r7, #32]
4869 0084 5A62 str r2, [r3, #36]
2908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
4870 .loc 1 2908 23
4871 0086 FB68 ldr r3, [r7, #12]
4872 0088 BA8C ldrh r2, [r7, #36] @ movhi
4873 008a 5A85 strh r2, [r3, #42] @ movhi
2909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
4874 .loc 1 2909 23
4875 008c FB68 ldr r3, [r7, #12]
4876 008e 4A4A ldr r2, .L239
4877 0090 DA62 str r2, [r3, #44]
2910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA;
4878 .loc 1 2910 23
4879 0092 FB68 ldr r3, [r7, #12]
4880 0094 494A ldr r2, .L239+4
4881 0096 5A63 str r2, [r3, #52]
2911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress;
4882 .loc 1 2911 23
4883 0098 7A89 ldrh r2, [r7, #10]
4884 009a FB68 ldr r3, [r7, #12]
4885 009c DA64 str r2, [r3, #76]
2912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
4886 .loc 1 2913 13
4887 009e FB68 ldr r3, [r7, #12]
4888 00a0 5B8D ldrh r3, [r3, #42] @ movhi
4889 00a2 9BB2 uxth r3, r3
4890 .loc 1 2913 8
ARM GAS /tmp/cc5G5cqz.s page 138
4891 00a4 FF2B cmp r3, #255
4892 00a6 03D9 bls .L230
2914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
4893 .loc 1 2915 22
4894 00a8 FB68 ldr r3, [r7, #12]
4895 00aa FF22 movs r2, #255
4896 00ac 1A85 strh r2, [r3, #40] @ movhi
4897 00ae 04E0 b .L231
4898 .L230:
2916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
4899 .loc 1 2919 28
4900 00b0 FB68 ldr r3, [r7, #12]
4901 00b2 5B8D ldrh r3, [r3, #42] @ movhi
4902 00b4 9AB2 uxth r2, r3
4903 .loc 1 2919 22
4904 00b6 FB68 ldr r3, [r7, #12]
4905 00b8 1A85 strh r2, [r3, #40] @ movhi
4906 .L231:
2920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
2923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
4907 .loc 1 2923 8
4908 00ba FB88 ldrh r3, [r7, #6]
4909 00bc 012B cmp r3, #1
4910 00be 09D1 bne .L232
2924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */
2926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
4911 .loc 1 2926 30
4912 00c0 3B89 ldrh r3, [r7, #8] @ movhi
4913 00c2 DAB2 uxtb r2, r3
4914 .loc 1 2926 11
4915 00c4 FB68 ldr r3, [r7, #12]
4916 00c6 1B68 ldr r3, [r3]
4917 .loc 1 2926 28
4918 00c8 9A62 str r2, [r3, #40]
2927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
2929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
4919 .loc 1 2929 24
4920 00ca FB68 ldr r3, [r7, #12]
4921 00cc 4FF0FF32 mov r2, #-1
4922 00d0 1A65 str r2, [r3, #80]
4923 00d2 0BE0 b .L233
4924 .L232:
2930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
2932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
2935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
4925 .loc 1 2935 30
ARM GAS /tmp/cc5G5cqz.s page 139
4926 00d4 3B89 ldrh r3, [r7, #8]
4927 00d6 1B0A lsrs r3, r3, #8
4928 00d8 9BB2 uxth r3, r3
4929 00da DAB2 uxtb r2, r3
4930 .loc 1 2935 11
4931 00dc FB68 ldr r3, [r7, #12]
4932 00de 1B68 ldr r3, [r3]
4933 .loc 1 2935 28
4934 00e0 9A62 str r2, [r3, #40]
2936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */
2938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
4935 .loc 1 2938 26
4936 00e2 3B89 ldrh r3, [r7, #8] @ movhi
4937 00e4 DBB2 uxtb r3, r3
4938 00e6 1A46 mov r2, r3
4939 .loc 1 2938 24
4940 00e8 FB68 ldr r3, [r7, #12]
4941 00ea 1A65 str r2, [r3, #80]
4942 .L233:
2939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
4943 .loc 1 2941 13
4944 00ec FB68 ldr r3, [r7, #12]
4945 00ee 9B6B ldr r3, [r3, #56]
4946 .loc 1 2941 8
4947 00f0 002B cmp r3, #0
4948 00f2 20D0 beq .L234
2942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
2944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;
4949 .loc 1 2944 11
4950 00f4 FB68 ldr r3, [r7, #12]
4951 00f6 9B6B ldr r3, [r3, #56]
4952 .loc 1 2944 38
4953 00f8 314A ldr r2, .L239+8
4954 00fa 9A62 str r2, [r3, #40]
2945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
2947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
4955 .loc 1 2947 11
4956 00fc FB68 ldr r3, [r7, #12]
4957 00fe 9B6B ldr r3, [r3, #56]
4958 .loc 1 2947 39
4959 0100 304A ldr r2, .L239+12
4960 0102 1A63 str r2, [r3, #48]
2948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
2950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL;
4961 .loc 1 2950 11
4962 0104 FB68 ldr r3, [r7, #12]
4963 0106 9B6B ldr r3, [r3, #56]
4964 .loc 1 2950 42
4965 0108 0022 movs r2, #0
4966 010a DA62 str r2, [r3, #44]
2951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
ARM GAS /tmp/cc5G5cqz.s page 140
4967 .loc 1 2951 11
4968 010c FB68 ldr r3, [r7, #12]
4969 010e 9B6B ldr r3, [r3, #56]
4970 .loc 1 2951 39
4971 0110 0022 movs r2, #0
4972 0112 5A63 str r2, [r3, #52]
2952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
2954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX
4973 .loc 1 2954 23
4974 0114 FB68 ldr r3, [r7, #12]
4975 0116 986B ldr r0, [r3, #56]
4976 0118 396A ldr r1, [r7, #32]
4977 .loc 1 2954 86
4978 011a FB68 ldr r3, [r7, #12]
4979 011c 1B68 ldr r3, [r3]
4980 .loc 1 2954 81
4981 011e 2833 adds r3, r3, #40
4982 .loc 1 2954 23
4983 0120 1A46 mov r2, r3
2955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
4984 .loc 1 2955 44
4985 0122 FB68 ldr r3, [r7, #12]
4986 0124 1B8D ldrh r3, [r3, #40]
2954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
4987 .loc 1 2954 23
4988 0126 FFF7FEFF bl HAL_DMA_Start_IT
4989 012a 0346 mov r3, r0
4990 012c FB75 strb r3, [r7, #23]
2956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
2961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
2965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
2968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
2970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
2971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
4991 .loc 1 2972 8
4992 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
4993 0130 002B cmp r3, #0
4994 0132 28D1 bne .L236
4995 0134 13E0 b .L238
4996 .L234:
2960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4997 .loc 1 2960 23
4998 0136 FB68 ldr r3, [r7, #12]
4999 0138 2022 movs r2, #32
5000 013a 83F84120 strb r2, [r3, #65]
ARM GAS /tmp/cc5G5cqz.s page 141
2961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5001 .loc 1 2961 23
5002 013e FB68 ldr r3, [r7, #12]
5003 0140 0022 movs r2, #0
5004 0142 83F84220 strb r2, [r3, #66]
2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5005 .loc 1 2964 11
5006 0146 FB68 ldr r3, [r7, #12]
5007 0148 5B6C ldr r3, [r3, #68]
2964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5008 .loc 1 2964 23
5009 014a 43F08002 orr r2, r3, #128
5010 014e FB68 ldr r3, [r7, #12]
5011 0150 5A64 str r2, [r3, #68]
2967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5012 .loc 1 2967 7
5013 0152 FB68 ldr r3, [r7, #12]
5014 0154 0022 movs r2, #0
5015 0156 83F84020 strb r2, [r3, #64]
2969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5016 .loc 1 2969 14
5017 015a 0123 movs r3, #1
5018 015c 28E0 b .L227
5019 .L238:
2973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
2975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START
5020 .loc 1 2975 7
5021 015e FB88 ldrh r3, [r7, #6] @ movhi
5022 0160 DAB2 uxtb r2, r3
5023 0162 7989 ldrh r1, [r7, #10]
5024 0164 184B ldr r3, .L239+16
5025 0166 0093 str r3, [sp]
5026 0168 4FF08073 mov r3, #16777216
5027 016c F868 ldr r0, [r7, #12]
5028 016e FFF7FEFF bl I2C_TransferConfig
2976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5029 .loc 1 2978 7
5030 0172 FB68 ldr r3, [r7, #12]
5031 0174 0022 movs r2, #0
5032 0176 83F84020 strb r2, [r3, #64]
2979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
2981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
2982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
2983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
2984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
2985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
2986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
2987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
5033 .loc 1 2987 7
5034 017a 0121 movs r1, #1
5035 017c F868 ldr r0, [r7, #12]
5036 017e FFF7FEFF bl I2C_Enable_IRQ
2988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 142
2989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
2990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
2991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
2992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
2993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
2994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
2997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
2998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
2999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
5037 .loc 1 3004 12
5038 0182 0023 movs r3, #0
5039 0184 14E0 b .L227
5040 .L236:
2992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
5041 .loc 1 2992 23
5042 0186 FB68 ldr r3, [r7, #12]
5043 0188 2022 movs r2, #32
5044 018a 83F84120 strb r2, [r3, #65]
2993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5045 .loc 1 2993 23
5046 018e FB68 ldr r3, [r7, #12]
5047 0190 0022 movs r2, #0
5048 0192 83F84220 strb r2, [r3, #66]
2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5049 .loc 1 2996 11
5050 0196 FB68 ldr r3, [r7, #12]
5051 0198 5B6C ldr r3, [r3, #68]
2996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5052 .loc 1 2996 23
5053 019a 43F01002 orr r2, r3, #16
5054 019e FB68 ldr r3, [r7, #12]
5055 01a0 5A64 str r2, [r3, #68]
2999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5056 .loc 1 2999 7
5057 01a2 FB68 ldr r3, [r7, #12]
5058 01a4 0022 movs r2, #0
5059 01a6 83F84020 strb r2, [r3, #64]
3001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5060 .loc 1 3001 14
5061 01aa 0123 movs r3, #1
5062 01ac 00E0 b .L227
5063 .L224:
3005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5064 .loc 1 3008 12
5065 01ae 0223 movs r3, #2
5066 .L227:
3009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 143
3010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5067 .loc 1 3010 1
5068 01b0 1846 mov r0, r3
5069 01b2 1837 adds r7, r7, #24
5070 .cfi_def_cfa_offset 8
5071 01b4 BD46 mov sp, r7
5072 .cfi_def_cfa_register 13
5073 @ sp needed
5074 01b6 80BD pop {r7, pc}
5075 .L240:
5076 .align 2
5077 .L239:
5078 01b8 0000FFFF .word -65536
5079 01bc 00000000 .word I2C_Mem_ISR_DMA
5080 01c0 00000000 .word I2C_DMAMasterTransmitCplt
5081 01c4 00000000 .word I2C_DMAError
5082 01c8 00200080 .word -2147475456
5083 .cfi_endproc
5084 .LFE150:
5086 .section .text.HAL_I2C_Mem_Read_DMA,"ax",%progbits
5087 .align 1
5088 .global HAL_I2C_Mem_Read_DMA
5089 .syntax unified
5090 .thumb
5091 .thumb_func
5093 HAL_I2C_Mem_Read_DMA:
5094 .LFB151:
3011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address.
3014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
3019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
3020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be read
3022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd
3025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
3026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5095 .loc 1 3026 1
5096 .cfi_startproc
5097 @ args = 8, pretend = 0, frame = 24
5098 @ frame_needed = 1, uses_anonymous_args = 0
5099 0000 80B5 push {r7, lr}
5100 .cfi_def_cfa_offset 8
5101 .cfi_offset 7, -8
5102 .cfi_offset 14, -4
5103 0002 88B0 sub sp, sp, #32
5104 .cfi_def_cfa_offset 40
5105 0004 02AF add r7, sp, #8
5106 .cfi_def_cfa 7, 32
5107 0006 F860 str r0, [r7, #12]
5108 0008 0846 mov r0, r1
ARM GAS /tmp/cc5G5cqz.s page 144
5109 000a 1146 mov r1, r2
5110 000c 1A46 mov r2, r3
5111 000e 0346 mov r3, r0 @ movhi
5112 0010 7B81 strh r3, [r7, #10] @ movhi
5113 0012 0B46 mov r3, r1 @ movhi
5114 0014 3B81 strh r3, [r7, #8] @ movhi
5115 0016 1346 mov r3, r2 @ movhi
5116 0018 FB80 strh r3, [r7, #6] @ movhi
3027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
3028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
3031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
5117 .loc 1 3032 11
5118 001a FB68 ldr r3, [r7, #12]
5119 001c 93F84130 ldrb r3, [r3, #65]
5120 0020 DBB2 uxtb r3, r3
5121 .loc 1 3032 6
5122 0022 202B cmp r3, #32
5123 0024 40F0C280 bne .L242
3033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
5124 .loc 1 3034 8
5125 0028 3B6A ldr r3, [r7, #32]
5126 002a 002B cmp r3, #0
5127 002c 02D0 beq .L243
5128 .loc 1 3034 25 discriminator 1
5129 002e BB8C ldrh r3, [r7, #36]
5130 0030 002B cmp r3, #0
5131 0032 05D1 bne .L244
5132 .L243:
3035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
5133 .loc 1 3036 23
5134 0034 FB68 ldr r3, [r7, #12]
5135 0036 4FF40072 mov r2, #512
5136 003a 5A64 str r2, [r3, #68]
3037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5137 .loc 1 3037 15
5138 003c 0123 movs r3, #1
5139 003e B6E0 b .L245
5140 .L244:
3038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
5141 .loc 1 3040 9
5142 0040 FB68 ldr r3, [r7, #12]
5143 0042 1B68 ldr r3, [r3]
5144 0044 9B69 ldr r3, [r3, #24]
5145 0046 03F40043 and r3, r3, #32768
5146 .loc 1 3040 8
5147 004a B3F5004F cmp r3, #32768
5148 004e 01D1 bne .L246
3041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5149 .loc 1 3042 14
ARM GAS /tmp/cc5G5cqz.s page 145
5150 0050 0223 movs r3, #2
5151 0052 ACE0 b .L245
5152 .L246:
3043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
5153 .loc 1 3046 5
5154 0054 FB68 ldr r3, [r7, #12]
5155 0056 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
5156 005a 012B cmp r3, #1
5157 005c 01D1 bne .L247
5158 .loc 1 3046 5 is_stmt 0 discriminator 1
5159 005e 0223 movs r3, #2
5160 .loc 1 3046 5
5161 0060 A5E0 b .L245
5162 .L247:
5163 .loc 1 3046 5 discriminator 2
5164 0062 FB68 ldr r3, [r7, #12]
5165 0064 0122 movs r2, #1
5166 0066 83F84020 strb r2, [r3, #64]
3047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
5167 .loc 1 3048 23 is_stmt 1
5168 006a FB68 ldr r3, [r7, #12]
5169 006c 2222 movs r2, #34
5170 006e 83F84120 strb r2, [r3, #65]
3049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM;
5171 .loc 1 3049 23
5172 0072 FB68 ldr r3, [r7, #12]
5173 0074 4022 movs r2, #64
5174 0076 83F84220 strb r2, [r3, #66]
3050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
5175 .loc 1 3050 23
5176 007a FB68 ldr r3, [r7, #12]
5177 007c 0022 movs r2, #0
5178 007e 5A64 str r2, [r3, #68]
3051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
3053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
5179 .loc 1 3053 23
5180 0080 FB68 ldr r3, [r7, #12]
5181 0082 3A6A ldr r2, [r7, #32]
5182 0084 5A62 str r2, [r3, #36]
3054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
5183 .loc 1 3054 23
5184 0086 FB68 ldr r3, [r7, #12]
5185 0088 BA8C ldrh r2, [r7, #36] @ movhi
5186 008a 5A85 strh r2, [r3, #42] @ movhi
3055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
5187 .loc 1 3055 23
5188 008c FB68 ldr r3, [r7, #12]
5189 008e 4A4A ldr r2, .L257
5190 0090 DA62 str r2, [r3, #44]
3056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA;
5191 .loc 1 3056 23
5192 0092 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 146
5193 0094 494A ldr r2, .L257+4
5194 0096 5A63 str r2, [r3, #52]
3057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Devaddress = DevAddress;
5195 .loc 1 3057 23
5196 0098 7A89 ldrh r2, [r7, #10]
5197 009a FB68 ldr r3, [r7, #12]
5198 009c DA64 str r2, [r3, #76]
3058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
5199 .loc 1 3059 13
5200 009e FB68 ldr r3, [r7, #12]
5201 00a0 5B8D ldrh r3, [r3, #42] @ movhi
5202 00a2 9BB2 uxth r3, r3
5203 .loc 1 3059 8
5204 00a4 FF2B cmp r3, #255
5205 00a6 03D9 bls .L248
3060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
5206 .loc 1 3061 22
5207 00a8 FB68 ldr r3, [r7, #12]
5208 00aa FF22 movs r2, #255
5209 00ac 1A85 strh r2, [r3, #40] @ movhi
5210 00ae 04E0 b .L249
5211 .L248:
3062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
5212 .loc 1 3065 28
5213 00b0 FB68 ldr r3, [r7, #12]
5214 00b2 5B8D ldrh r3, [r3, #42] @ movhi
5215 00b4 9AB2 uxth r2, r3
5216 .loc 1 3065 22
5217 00b6 FB68 ldr r3, [r7, #12]
5218 00b8 1A85 strh r2, [r3, #40] @ movhi
5219 .L249:
3066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
3069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
5220 .loc 1 3069 8
5221 00ba FB88 ldrh r3, [r7, #6]
5222 00bc 012B cmp r3, #1
5223 00be 09D1 bne .L250
3070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address */
3072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
5224 .loc 1 3072 30
5225 00c0 3B89 ldrh r3, [r7, #8] @ movhi
5226 00c2 DAB2 uxtb r2, r3
5227 .loc 1 3072 11
5228 00c4 FB68 ldr r3, [r7, #12]
5229 00c6 1B68 ldr r3, [r3]
5230 .loc 1 3072 28
5231 00c8 9A62 str r2, [r3, #40]
3073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
ARM GAS /tmp/cc5G5cqz.s page 147
3075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
5232 .loc 1 3075 24
5233 00ca FB68 ldr r3, [r7, #12]
5234 00cc 4FF0FF32 mov r2, #-1
5235 00d0 1A65 str r2, [r3, #80]
5236 00d2 0BE0 b .L251
5237 .L250:
3076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
3078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
3081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
5238 .loc 1 3081 30
5239 00d4 3B89 ldrh r3, [r7, #8]
5240 00d6 1B0A lsrs r3, r3, #8
5241 00d8 9BB2 uxth r3, r3
5242 00da DAB2 uxtb r2, r3
5243 .loc 1 3081 11
5244 00dc FB68 ldr r3, [r7, #12]
5245 00de 1B68 ldr r3, [r3]
5246 .loc 1 3081 28
5247 00e0 9A62 str r2, [r3, #40]
3082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */
3084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
5248 .loc 1 3084 26
5249 00e2 3B89 ldrh r3, [r7, #8] @ movhi
5250 00e4 DBB2 uxtb r3, r3
5251 00e6 1A46 mov r2, r3
5252 .loc 1 3084 24
5253 00e8 FB68 ldr r3, [r7, #12]
5254 00ea 1A65 str r2, [r3, #80]
5255 .L251:
3085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
5256 .loc 1 3087 13
5257 00ec FB68 ldr r3, [r7, #12]
5258 00ee DB6B ldr r3, [r3, #60]
5259 .loc 1 3087 8
5260 00f0 002B cmp r3, #0
5261 00f2 20D0 beq .L252
3088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
3090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;
5262 .loc 1 3090 11
5263 00f4 FB68 ldr r3, [r7, #12]
5264 00f6 DB6B ldr r3, [r3, #60]
5265 .loc 1 3090 38
5266 00f8 314A ldr r2, .L257+8
5267 00fa 9A62 str r2, [r3, #40]
3091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
3093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
5268 .loc 1 3093 11
5269 00fc FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 148
5270 00fe DB6B ldr r3, [r3, #60]
5271 .loc 1 3093 39
5272 0100 304A ldr r2, .L257+12
5273 0102 1A63 str r2, [r3, #48]
3094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
3096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL;
5274 .loc 1 3096 11
5275 0104 FB68 ldr r3, [r7, #12]
5276 0106 DB6B ldr r3, [r3, #60]
5277 .loc 1 3096 42
5278 0108 0022 movs r2, #0
5279 010a DA62 str r2, [r3, #44]
3097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
5280 .loc 1 3097 11
5281 010c FB68 ldr r3, [r7, #12]
5282 010e DB6B ldr r3, [r3, #60]
5283 .loc 1 3097 39
5284 0110 0022 movs r2, #0
5285 0112 5A63 str r2, [r3, #52]
3098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
3100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa
5286 .loc 1 3100 23
5287 0114 FB68 ldr r3, [r7, #12]
5288 0116 D86B ldr r0, [r3, #60]
5289 .loc 1 3100 69
5290 0118 FB68 ldr r3, [r7, #12]
5291 011a 1B68 ldr r3, [r3]
5292 .loc 1 3100 64
5293 011c 2433 adds r3, r3, #36
5294 .loc 1 3100 23
5295 011e 1946 mov r1, r3
5296 0120 3A6A ldr r2, [r7, #32]
3101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
5297 .loc 1 3101 44
5298 0122 FB68 ldr r3, [r7, #12]
5299 0124 1B8D ldrh r3, [r3, #40]
3100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
5300 .loc 1 3100 23
5301 0126 FFF7FEFF bl HAL_DMA_Start_IT
5302 012a 0346 mov r3, r0
5303 012c FB75 strb r3, [r7, #23]
3102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
3111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
ARM GAS /tmp/cc5G5cqz.s page 149
3116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
5304 .loc 1 3118 8
5305 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
5306 0130 002B cmp r3, #0
5307 0132 27D1 bne .L254
5308 0134 13E0 b .L256
5309 .L252:
3106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
5310 .loc 1 3106 23
5311 0136 FB68 ldr r3, [r7, #12]
5312 0138 2022 movs r2, #32
5313 013a 83F84120 strb r2, [r3, #65]
3107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5314 .loc 1 3107 23
5315 013e FB68 ldr r3, [r7, #12]
5316 0140 0022 movs r2, #0
5317 0142 83F84220 strb r2, [r3, #66]
3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5318 .loc 1 3110 11
5319 0146 FB68 ldr r3, [r7, #12]
5320 0148 5B6C ldr r3, [r3, #68]
3110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5321 .loc 1 3110 23
5322 014a 43F08002 orr r2, r3, #128
5323 014e FB68 ldr r3, [r7, #12]
5324 0150 5A64 str r2, [r3, #68]
3113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5325 .loc 1 3113 7
5326 0152 FB68 ldr r3, [r7, #12]
5327 0154 0022 movs r2, #0
5328 0156 83F84020 strb r2, [r3, #64]
3115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5329 .loc 1 3115 14
5330 015a 0123 movs r3, #1
5331 015c 27E0 b .L245
5332 .L256:
3119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and Memory Address */
3121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_STAR
5333 .loc 1 3121 7
5334 015e FB88 ldrh r3, [r7, #6] @ movhi
5335 0160 DAB2 uxtb r2, r3
5336 0162 7989 ldrh r1, [r7, #10]
5337 0164 184B ldr r3, .L257+16
5338 0166 0093 str r3, [sp]
5339 0168 0023 movs r3, #0
5340 016a F868 ldr r0, [r7, #12]
5341 016c FFF7FEFF bl I2C_TransferConfig
3122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5342 .loc 1 3124 7
5343 0170 FB68 ldr r3, [r7, #12]
5344 0172 0022 movs r2, #0
5345 0174 83F84020 strb r2, [r3, #64]
ARM GAS /tmp/cc5G5cqz.s page 150
3125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
3130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
3131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
3132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
3133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
5346 .loc 1 3133 7
5347 0178 0121 movs r1, #1
5348 017a F868 ldr r0, [r7, #12]
5349 017c FFF7FEFF bl I2C_Enable_IRQ
3134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
3143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
5350 .loc 1 3150 12
5351 0180 0023 movs r3, #0
5352 0182 14E0 b .L245
5353 .L254:
3138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
5354 .loc 1 3138 23
5355 0184 FB68 ldr r3, [r7, #12]
5356 0186 2022 movs r2, #32
5357 0188 83F84120 strb r2, [r3, #65]
3139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5358 .loc 1 3139 23
5359 018c FB68 ldr r3, [r7, #12]
5360 018e 0022 movs r2, #0
5361 0190 83F84220 strb r2, [r3, #66]
3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5362 .loc 1 3142 11
5363 0194 FB68 ldr r3, [r7, #12]
5364 0196 5B6C ldr r3, [r3, #68]
3142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5365 .loc 1 3142 23
5366 0198 43F01002 orr r2, r3, #16
5367 019c FB68 ldr r3, [r7, #12]
5368 019e 5A64 str r2, [r3, #68]
3145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5369 .loc 1 3145 7
5370 01a0 FB68 ldr r3, [r7, #12]
5371 01a2 0022 movs r2, #0
ARM GAS /tmp/cc5G5cqz.s page 151
5372 01a4 83F84020 strb r2, [r3, #64]
3147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5373 .loc 1 3147 14
5374 01a8 0123 movs r3, #1
5375 01aa 00E0 b .L245
5376 .L242:
3151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5377 .loc 1 3154 12
5378 01ac 0223 movs r3, #2
5379 .L245:
3155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5380 .loc 1 3156 1
5381 01ae 1846 mov r0, r3
5382 01b0 1837 adds r7, r7, #24
5383 .cfi_def_cfa_offset 8
5384 01b2 BD46 mov sp, r7
5385 .cfi_def_cfa_register 13
5386 @ sp needed
5387 01b4 80BD pop {r7, pc}
5388 .L258:
5389 01b6 00BF .align 2
5390 .L257:
5391 01b8 0000FFFF .word -65536
5392 01bc 00000000 .word I2C_Mem_ISR_DMA
5393 01c0 00000000 .word I2C_DMAMasterReceiveCplt
5394 01c4 00000000 .word I2C_DMAError
5395 01c8 00200080 .word -2147475456
5396 .cfi_endproc
5397 .LFE151:
5399 .section .text.HAL_I2C_IsDeviceReady,"ax",%progbits
5400 .align 1
5401 .global HAL_I2C_IsDeviceReady
5402 .syntax unified
5403 .thumb
5404 .thumb_func
5406 HAL_I2C_IsDeviceReady:
5407 .LFB152:
3157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Checks if target device is ready for communication.
3160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This function is used with Memory devices
3161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Trials Number of trials
3166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
3167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria
3170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout)
3171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5408 .loc 1 3171 1
ARM GAS /tmp/cc5G5cqz.s page 152
5409 .cfi_startproc
5410 @ args = 0, pretend = 0, frame = 32
5411 @ frame_needed = 1, uses_anonymous_args = 0
5412 0000 80B5 push {r7, lr}
5413 .cfi_def_cfa_offset 8
5414 .cfi_offset 7, -8
5415 .cfi_offset 14, -4
5416 0002 8AB0 sub sp, sp, #40
5417 .cfi_def_cfa_offset 48
5418 0004 02AF add r7, sp, #8
5419 .cfi_def_cfa 7, 40
5420 0006 F860 str r0, [r7, #12]
5421 0008 7A60 str r2, [r7, #4]
5422 000a 3B60 str r3, [r7]
5423 000c 0B46 mov r3, r1 @ movhi
5424 000e 7B81 strh r3, [r7, #10] @ movhi
3172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart;
3173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t I2C_Trials = 0UL;
5425 .loc 1 3174 17
5426 0010 0023 movs r3, #0
5427 0012 7B61 str r3, [r7, #20]
3175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp1;
3177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp2;
3178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
5428 .loc 1 3179 11
5429 0014 FB68 ldr r3, [r7, #12]
5430 0016 93F84130 ldrb r3, [r3, #65]
5431 001a DBB2 uxtb r3, r3
5432 .loc 1 3179 6
5433 001c 202B cmp r3, #32
5434 001e 40F0F380 bne .L260
3180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET)
5435 .loc 1 3181 9
5436 0022 FB68 ldr r3, [r7, #12]
5437 0024 1B68 ldr r3, [r3]
5438 0026 9B69 ldr r3, [r3, #24]
5439 0028 03F40043 and r3, r3, #32768
5440 .loc 1 3181 8
5441 002c B3F5004F cmp r3, #32768
5442 0030 01D1 bne .L261
3182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5443 .loc 1 3183 14
5444 0032 0223 movs r3, #2
5445 0034 E9E0 b .L262
5446 .L261:
3184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
5447 .loc 1 3187 5
5448 0036 FB68 ldr r3, [r7, #12]
5449 0038 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
ARM GAS /tmp/cc5G5cqz.s page 153
5450 003c 012B cmp r3, #1
5451 003e 01D1 bne .L263
5452 .loc 1 3187 5 is_stmt 0 discriminator 1
5453 0040 0223 movs r3, #2
5454 .loc 1 3187 5
5455 0042 E2E0 b .L262
5456 .L263:
5457 .loc 1 3187 5 discriminator 2
5458 0044 FB68 ldr r3, [r7, #12]
5459 0046 0122 movs r2, #1
5460 0048 83F84020 strb r2, [r3, #64]
3188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY;
5461 .loc 1 3189 17 is_stmt 1
5462 004c FB68 ldr r3, [r7, #12]
5463 004e 2422 movs r2, #36
5464 0050 83F84120 strb r2, [r3, #65]
3190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
5465 .loc 1 3190 21
5466 0054 FB68 ldr r3, [r7, #12]
5467 0056 0022 movs r2, #0
5468 0058 5A64 str r2, [r3, #68]
5469 .L276:
3191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do
3193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Start */
3195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress);
5470 .loc 1 3195 29
5471 005a FB68 ldr r3, [r7, #12]
5472 005c DB68 ldr r3, [r3, #12]
5473 005e 012B cmp r3, #1
5474 0060 07D1 bne .L264
5475 .loc 1 3195 29 is_stmt 0 discriminator 1
5476 0062 7B89 ldrh r3, [r7, #10]
5477 0064 C3F30903 ubfx r3, r3, #0, #10
5478 0068 43F00073 orr r3, r3, #33554432
5479 006c 43F40053 orr r3, r3, #8192
5480 0070 06E0 b .L265
5481 .L264:
5482 .loc 1 3195 29 discriminator 2
5483 0072 7B89 ldrh r3, [r7, #10]
5484 0074 C3F30903 ubfx r3, r3, #0, #10
5485 0078 43F00073 orr r3, r3, #33554432
5486 007c 43F42053 orr r3, r3, #10240
5487 .L265:
5488 .loc 1 3195 11 is_stmt 1 discriminator 4
5489 0080 FA68 ldr r2, [r7, #12]
5490 0082 1268 ldr r2, [r2]
5491 .loc 1 3195 27 discriminator 4
5492 0084 5360 str r3, [r2, #4]
3196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */
3198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is set or a NACK flag is set*/
3199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
5493 .loc 1 3199 19
5494 0086 FFF7FEFF bl HAL_GetTick
ARM GAS /tmp/cc5G5cqz.s page 154
5495 008a B861 str r0, [r7, #24]
3200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);
5496 .loc 1 3201 14
5497 008c FB68 ldr r3, [r7, #12]
5498 008e 1B68 ldr r3, [r3]
5499 0090 9B69 ldr r3, [r3, #24]
5500 0092 03F02003 and r3, r3, #32
5501 0096 202B cmp r3, #32
5502 0098 0CBF ite eq
5503 009a 0123 moveq r3, #1
5504 009c 0023 movne r3, #0
5505 009e DBB2 uxtb r3, r3
5506 .loc 1 3201 12
5507 00a0 FB77 strb r3, [r7, #31]
3202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);
5508 .loc 1 3202 14
5509 00a2 FB68 ldr r3, [r7, #12]
5510 00a4 1B68 ldr r3, [r3]
5511 00a6 9B69 ldr r3, [r3, #24]
5512 00a8 03F01003 and r3, r3, #16
5513 00ac 102B cmp r3, #16
5514 00ae 0CBF ite eq
5515 00b0 0123 moveq r3, #1
5516 00b2 0023 movne r3, #0
5517 00b4 DBB2 uxtb r3, r3
5518 .loc 1 3202 12
5519 00b6 BB77 strb r3, [r7, #30]
3203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((tmp1 == RESET) && (tmp2 == RESET))
5520 .loc 1 3204 13
5521 00b8 34E0 b .L266
5522 .L270:
3205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY)
5523 .loc 1 3206 12
5524 00ba 3B68 ldr r3, [r7]
5525 00bc B3F1FF3F cmp r3, #-1
5526 00c0 1AD0 beq .L267
3207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
5527 .loc 1 3208 17
5528 00c2 FFF7FEFF bl HAL_GetTick
5529 00c6 0246 mov r2, r0
5530 .loc 1 3208 31 discriminator 1
5531 00c8 BB69 ldr r3, [r7, #24]
5532 00ca D31A subs r3, r2, r3
5533 .loc 1 3208 14 discriminator 1
5534 00cc 3A68 ldr r2, [r7]
5535 00ce 9A42 cmp r2, r3
5536 00d0 02D3 bcc .L268
5537 .loc 1 3208 55 discriminator 1
5538 00d2 3B68 ldr r3, [r7]
5539 00d4 002B cmp r3, #0
5540 00d6 0FD1 bne .L267
5541 .L268:
3209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 155
3210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
5542 .loc 1 3211 25
5543 00d8 FB68 ldr r3, [r7, #12]
5544 00da 2022 movs r2, #32
5545 00dc 83F84120 strb r2, [r3, #65]
3212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
5546 .loc 1 3214 17
5547 00e0 FB68 ldr r3, [r7, #12]
5548 00e2 5B6C ldr r3, [r3, #68]
5549 .loc 1 3214 29
5550 00e4 43F02002 orr r2, r3, #32
5551 00e8 FB68 ldr r3, [r7, #12]
5552 00ea 5A64 str r2, [r3, #68]
3215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5553 .loc 1 3217 13
5554 00ec FB68 ldr r3, [r7, #12]
5555 00ee 0022 movs r2, #0
5556 00f0 83F84020 strb r2, [r3, #64]
3218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5557 .loc 1 3219 20
5558 00f4 0123 movs r3, #1
5559 00f6 88E0 b .L262
5560 .L267:
3220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF);
5561 .loc 1 3223 16
5562 00f8 FB68 ldr r3, [r7, #12]
5563 00fa 1B68 ldr r3, [r3]
5564 00fc 9B69 ldr r3, [r3, #24]
5565 00fe 03F02003 and r3, r3, #32
5566 0102 202B cmp r3, #32
5567 0104 0CBF ite eq
5568 0106 0123 moveq r3, #1
5569 0108 0023 movne r3, #0
5570 010a DBB2 uxtb r3, r3
5571 .loc 1 3223 14
5572 010c FB77 strb r3, [r7, #31]
3224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF);
5573 .loc 1 3224 16
5574 010e FB68 ldr r3, [r7, #12]
5575 0110 1B68 ldr r3, [r3]
5576 0112 9B69 ldr r3, [r3, #24]
5577 0114 03F01003 and r3, r3, #16
5578 0118 102B cmp r3, #16
5579 011a 0CBF ite eq
5580 011c 0123 moveq r3, #1
5581 011e 0023 movne r3, #0
5582 0120 DBB2 uxtb r3, r3
5583 .loc 1 3224 14
ARM GAS /tmp/cc5G5cqz.s page 156
5584 0122 BB77 strb r3, [r7, #30]
5585 .L266:
3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5586 .loc 1 3204 30
5587 0124 FB7F ldrb r3, [r7, #31] @ zero_extendqisi2
5588 0126 002B cmp r3, #0
5589 0128 02D1 bne .L269
3204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5590 .loc 1 3204 30 is_stmt 0 discriminator 1
5591 012a BB7F ldrb r3, [r7, #30] @ zero_extendqisi2
5592 012c 002B cmp r3, #0
5593 012e C4D0 beq .L270
5594 .L269:
3225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if the NACKF flag has not been set */
3228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET)
5595 .loc 1 3228 11 is_stmt 1
5596 0130 FB68 ldr r3, [r7, #12]
5597 0132 1B68 ldr r3, [r3]
5598 0134 9B69 ldr r3, [r3, #24]
5599 0136 03F01003 and r3, r3, #16
5600 .loc 1 3228 10
5601 013a 102B cmp r3, #16
5602 013c 1AD0 beq .L271
3229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */
3231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)
5603 .loc 1 3231 13
5604 013e BB69 ldr r3, [r7, #24]
5605 0140 0093 str r3, [sp]
5606 0142 3B68 ldr r3, [r7]
5607 0144 0022 movs r2, #0
5608 0146 2021 movs r1, #32
5609 0148 F868 ldr r0, [r7, #12]
5610 014a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
5611 014e 0346 mov r3, r0
5612 .loc 1 3231 12 discriminator 1
5613 0150 002B cmp r3, #0
5614 0152 01D0 beq .L272
3232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5615 .loc 1 3233 18
5616 0154 0123 movs r3, #1
5617 0156 58E0 b .L262
5618 .L272:
3234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
3237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
5619 .loc 1 3237 9
5620 0158 FB68 ldr r3, [r7, #12]
5621 015a 1B68 ldr r3, [r3]
5622 015c 2022 movs r2, #32
5623 015e DA61 str r2, [r3, #28]
3238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Device is ready */
ARM GAS /tmp/cc5G5cqz.s page 157
3240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
5624 .loc 1 3240 21
5625 0160 FB68 ldr r3, [r7, #12]
5626 0162 2022 movs r2, #32
5627 0164 83F84120 strb r2, [r3, #65]
3241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5628 .loc 1 3243 9
5629 0168 FB68 ldr r3, [r7, #12]
5630 016a 0022 movs r2, #0
5631 016c 83F84020 strb r2, [r3, #64]
3244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
5632 .loc 1 3245 16
5633 0170 0023 movs r3, #0
5634 0172 4AE0 b .L262
5635 .L271:
3246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */
3250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)
5636 .loc 1 3250 13
5637 0174 BB69 ldr r3, [r7, #24]
5638 0176 0093 str r3, [sp]
5639 0178 3B68 ldr r3, [r7]
5640 017a 0022 movs r2, #0
5641 017c 2021 movs r1, #32
5642 017e F868 ldr r0, [r7, #12]
5643 0180 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
5644 0184 0346 mov r3, r0
5645 .loc 1 3250 12 discriminator 1
5646 0186 002B cmp r3, #0
5647 0188 01D0 beq .L273
3251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5648 .loc 1 3252 18
5649 018a 0123 movs r3, #1
5650 018c 3DE0 b .L262
5651 .L273:
3253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
3256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
5652 .loc 1 3256 9
5653 018e FB68 ldr r3, [r7, #12]
5654 0190 1B68 ldr r3, [r3]
5655 0192 1022 movs r2, #16
5656 0194 DA61 str r2, [r3, #28]
3257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag, auto generated with autoend*/
3259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
5657 .loc 1 3259 9
5658 0196 FB68 ldr r3, [r7, #12]
5659 0198 1B68 ldr r3, [r3]
5660 019a 2022 movs r2, #32
ARM GAS /tmp/cc5G5cqz.s page 158
5661 019c DA61 str r2, [r3, #28]
3260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if the maximum allowed number of trials has been reached */
3263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_Trials == Trials)
5662 .loc 1 3263 22
5663 019e 7B69 ldr r3, [r7, #20]
5664 .loc 1 3263 10
5665 01a0 7A68 ldr r2, [r7, #4]
5666 01a2 9A42 cmp r2, r3
5667 01a4 18D1 bne .L274
3264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */
3266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP;
5668 .loc 1 3266 13
5669 01a6 FB68 ldr r3, [r7, #12]
5670 01a8 1B68 ldr r3, [r3]
5671 .loc 1 3266 23
5672 01aa 5A68 ldr r2, [r3, #4]
5673 .loc 1 3266 13
5674 01ac FB68 ldr r3, [r7, #12]
5675 01ae 1B68 ldr r3, [r3]
5676 .loc 1 3266 29
5677 01b0 42F48042 orr r2, r2, #16384
5678 01b4 5A60 str r2, [r3, #4]
3267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOPF flag is reset */
3269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)
5679 .loc 1 3269 13
5680 01b6 BB69 ldr r3, [r7, #24]
5681 01b8 0093 str r3, [sp]
5682 01ba 3B68 ldr r3, [r7]
5683 01bc 0022 movs r2, #0
5684 01be 2021 movs r1, #32
5685 01c0 F868 ldr r0, [r7, #12]
5686 01c2 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
5687 01c6 0346 mov r3, r0
5688 .loc 1 3269 12 discriminator 1
5689 01c8 002B cmp r3, #0
5690 01ca 01D0 beq .L275
3270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5691 .loc 1 3271 18
5692 01cc 0123 movs r3, #1
5693 01ce 1CE0 b .L262
5694 .L275:
3272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
3275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
5695 .loc 1 3275 9
5696 01d0 FB68 ldr r3, [r7, #12]
5697 01d2 1B68 ldr r3, [r3]
5698 01d4 2022 movs r2, #32
5699 01d6 DA61 str r2, [r3, #28]
5700 .L274:
3276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 159
3277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Trials */
3279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Trials++;
5701 .loc 1 3279 17
5702 01d8 7B69 ldr r3, [r7, #20]
5703 01da 0133 adds r3, r3, #1
5704 01dc 7B61 str r3, [r7, #20]
3280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** } while (I2C_Trials < Trials);
5705 .loc 1 3280 25
5706 01de 7B69 ldr r3, [r7, #20]
5707 01e0 7A68 ldr r2, [r7, #4]
5708 01e2 9A42 cmp r2, r3
5709 01e4 3FF639AF bhi .L276
3281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
5710 .loc 1 3283 17
5711 01e8 FB68 ldr r3, [r7, #12]
5712 01ea 2022 movs r2, #32
5713 01ec 83F84120 strb r2, [r3, #65]
3284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
5714 .loc 1 3286 9
5715 01f0 FB68 ldr r3, [r7, #12]
5716 01f2 5B6C ldr r3, [r3, #68]
5717 .loc 1 3286 21
5718 01f4 43F02002 orr r2, r3, #32
5719 01f8 FB68 ldr r3, [r7, #12]
5720 01fa 5A64 str r2, [r3, #68]
3287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5721 .loc 1 3289 5
5722 01fc FB68 ldr r3, [r7, #12]
5723 01fe 0022 movs r2, #0
5724 0200 83F84020 strb r2, [r3, #64]
3290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
5725 .loc 1 3291 12
5726 0204 0123 movs r3, #1
5727 0206 00E0 b .L262
5728 .L260:
3292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5729 .loc 1 3295 12
5730 0208 0223 movs r3, #2
5731 .L262:
3296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5732 .loc 1 3297 1
5733 020a 1846 mov r0, r3
5734 020c 2037 adds r7, r7, #32
5735 .cfi_def_cfa_offset 8
5736 020e BD46 mov sp, r7
ARM GAS /tmp/cc5G5cqz.s page 160
5737 .cfi_def_cfa_register 13
5738 @ sp needed
5739 0210 80BD pop {r7, pc}
5740 .cfi_endproc
5741 .LFE152:
5743 .section .text.HAL_I2C_Master_Seq_Transmit_IT,"ax",%progbits
5744 .align 1
5745 .global HAL_I2C_Master_Seq_Transmit_IT
5746 .syntax unified
5747 .thumb
5748 .thumb_func
5750 HAL_I2C_Master_Seq_Transmit_IT:
5751 .LFB153:
3298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Inte
3301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint
3312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions)
3313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5752 .loc 1 3313 1
5753 .cfi_startproc
5754 @ args = 4, pretend = 0, frame = 24
5755 @ frame_needed = 1, uses_anonymous_args = 0
5756 0000 80B5 push {r7, lr}
5757 .cfi_def_cfa_offset 8
5758 .cfi_offset 7, -8
5759 .cfi_offset 14, -4
5760 0002 88B0 sub sp, sp, #32
5761 .cfi_def_cfa_offset 40
5762 0004 02AF add r7, sp, #8
5763 .cfi_def_cfa 7, 32
5764 0006 F860 str r0, [r7, #12]
5765 0008 7A60 str r2, [r7, #4]
5766 000a 1A46 mov r2, r3
5767 000c 0B46 mov r3, r1 @ movhi
5768 000e 7B81 strh r3, [r7, #10] @ movhi
5769 0010 1346 mov r3, r2 @ movhi
5770 0012 3B81 strh r3, [r7, #8] @ movhi
3314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
3315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE;
5771 .loc 1 3315 12
5772 0014 3A4B ldr r3, .L288
5773 0016 3B61 str r3, [r7, #16]
3316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 161
3320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
5774 .loc 1 3320 11
5775 0018 FB68 ldr r3, [r7, #12]
5776 001a 93F84130 ldrb r3, [r3, #65]
5777 001e DBB2 uxtb r3, r3
5778 .loc 1 3320 6
5779 0020 202B cmp r3, #32
5780 0022 67D1 bne .L278
3321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
5781 .loc 1 3323 5
5782 0024 FB68 ldr r3, [r7, #12]
5783 0026 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
5784 002a 012B cmp r3, #1
5785 002c 01D1 bne .L279
5786 .loc 1 3323 5 is_stmt 0 discriminator 1
5787 002e 0223 movs r3, #2
5788 .loc 1 3323 5
5789 0030 61E0 b .L280
5790 .L279:
5791 .loc 1 3323 5 discriminator 2
5792 0032 FB68 ldr r3, [r7, #12]
5793 0034 0122 movs r2, #1
5794 0036 83F84020 strb r2, [r3, #64]
3324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
5795 .loc 1 3325 21 is_stmt 1
5796 003a FB68 ldr r3, [r7, #12]
5797 003c 2122 movs r2, #33
5798 003e 83F84120 strb r2, [r3, #65]
3326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
5799 .loc 1 3326 21
5800 0042 FB68 ldr r3, [r7, #12]
5801 0044 1022 movs r2, #16
5802 0046 83F84220 strb r2, [r3, #66]
3327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
5803 .loc 1 3327 21
5804 004a FB68 ldr r3, [r7, #12]
5805 004c 0022 movs r2, #0
5806 004e 5A64 str r2, [r3, #68]
3328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
3330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
5807 .loc 1 3330 23
5808 0050 FB68 ldr r3, [r7, #12]
5809 0052 7A68 ldr r2, [r7, #4]
5810 0054 5A62 str r2, [r3, #36]
3331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
5811 .loc 1 3331 23
5812 0056 FB68 ldr r3, [r7, #12]
5813 0058 3A89 ldrh r2, [r7, #8] @ movhi
5814 005a 5A85 strh r2, [r3, #42] @ movhi
3332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
5815 .loc 1 3332 23
5816 005c FB68 ldr r3, [r7, #12]
5817 005e 3A6A ldr r2, [r7, #32]
ARM GAS /tmp/cc5G5cqz.s page 162
5818 0060 DA62 str r2, [r3, #44]
3333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
5819 .loc 1 3333 23
5820 0062 FB68 ldr r3, [r7, #12]
5821 0064 274A ldr r2, .L288+4
5822 0066 5A63 str r2, [r3, #52]
3334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */
3336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
5823 .loc 1 3336 13
5824 0068 FB68 ldr r3, [r7, #12]
5825 006a 5B8D ldrh r3, [r3, #42] @ movhi
5826 006c 9BB2 uxth r3, r3
5827 .loc 1 3336 8
5828 006e FF2B cmp r3, #255
5829 0070 06D9 bls .L281
3337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
5830 .loc 1 3338 22
5831 0072 FB68 ldr r3, [r7, #12]
5832 0074 FF22 movs r2, #255
5833 0076 1A85 strh r2, [r3, #40] @ movhi
3339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
5834 .loc 1 3339 16
5835 0078 4FF08073 mov r3, #16777216
5836 007c 7B61 str r3, [r7, #20]
5837 007e 07E0 b .L282
5838 .L281:
3340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
5839 .loc 1 3343 28
5840 0080 FB68 ldr r3, [r7, #12]
5841 0082 5B8D ldrh r3, [r3, #42] @ movhi
5842 0084 9AB2 uxth r2, r3
5843 .loc 1 3343 22
5844 0086 FB68 ldr r3, [r7, #12]
5845 0088 1A85 strh r2, [r3, #40] @ movhi
3344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
5846 .loc 1 3344 16
5847 008a FB68 ldr r3, [r7, #12]
5848 008c DB6A ldr r3, [r3, #44]
5849 008e 7B61 str r3, [r7, #20]
5850 .L282:
3345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame,
3348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */
3349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */
3350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \
5851 .loc 1 3350 14
5852 0090 FB68 ldr r3, [r7, #12]
5853 0092 1B6B ldr r3, [r3, #48]
5854 .loc 1 3350 8
5855 0094 112B cmp r3, #17
5856 0096 0ED1 bne .L283
ARM GAS /tmp/cc5G5cqz.s page 163
3351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
5857 .loc 1 3351 10
5858 0098 3B6A ldr r3, [r7, #32]
5859 009a AA2B cmp r3, #170
5860 009c 03D0 beq .L284
5861 .loc 1 3351 10 is_stmt 0 discriminator 2
5862 009e 3B6A ldr r3, [r7, #32]
5863 00a0 B3F52A4F cmp r3, #43520
5864 00a4 01D1 bne .L285
5865 .L284:
5866 .loc 1 3351 10 discriminator 3
5867 00a6 0123 movs r3, #1
5868 .loc 1 3351 10
5869 00a8 00E0 b .L286
5870 .L285:
5871 .loc 1 3351 10 discriminator 4
5872 00aa 0023 movs r3, #0
5873 .L286:
3350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
5874 .loc 1 3350 59 is_stmt 1
5875 00ac 002B cmp r3, #0
5876 00ae 02D1 bne .L283
3352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP;
5877 .loc 1 3353 19
5878 00b0 0023 movs r3, #0
5879 00b2 3B61 str r3, [r7, #16]
5880 00b4 0AE0 b .L287
5881 .L283:
3354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */
3358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c);
5882 .loc 1 3358 7
5883 00b6 F868 ldr r0, [r7, #12]
5884 00b8 FFF7FEFF bl I2C_ConvertOtherXferOptions
3359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */
3361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE)
5885 .loc 1 3361 15
5886 00bc FB68 ldr r3, [r7, #12]
5887 00be 5B8D ldrh r3, [r3, #42] @ movhi
5888 00c0 9BB2 uxth r3, r3
5889 .loc 1 3361 10
5890 00c2 FF2B cmp r3, #255
5891 00c4 02D8 bhi .L287
3362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
5892 .loc 1 3363 18
5893 00c6 FB68 ldr r3, [r7, #12]
5894 00c8 DB6A ldr r3, [r3, #44]
5895 00ca 7B61 str r3, [r7, #20]
5896 .L287:
3364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 164
3367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */
3368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);
5897 .loc 1 3368 55
5898 00cc FB68 ldr r3, [r7, #12]
5899 00ce 1B8D ldrh r3, [r3, #40]
5900 .loc 1 3368 5
5901 00d0 DAB2 uxtb r2, r3
5902 00d2 7989 ldrh r1, [r7, #10]
5903 00d4 3B69 ldr r3, [r7, #16]
5904 00d6 0093 str r3, [sp]
5905 00d8 7B69 ldr r3, [r7, #20]
5906 00da F868 ldr r0, [r7, #12]
5907 00dc FFF7FEFF bl I2C_TransferConfig
3369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5908 .loc 1 3371 5
5909 00e0 FB68 ldr r3, [r7, #12]
5910 00e2 0022 movs r2, #0
5911 00e4 83F84020 strb r2, [r3, #64]
3372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
3377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
3378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
3379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
3380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
5912 .loc 1 3380 5
5913 00e8 0121 movs r1, #1
5914 00ea F868 ldr r0, [r7, #12]
5915 00ec FFF7FEFF bl I2C_Enable_IRQ
3381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
5916 .loc 1 3382 12
5917 00f0 0023 movs r3, #0
5918 00f2 00E0 b .L280
5919 .L278:
3383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
5920 .loc 1 3386 12
5921 00f4 0223 movs r3, #2
5922 .L280:
3387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5923 .loc 1 3388 1
5924 00f6 1846 mov r0, r3
5925 00f8 1837 adds r7, r7, #24
5926 .cfi_def_cfa_offset 8
5927 00fa BD46 mov sp, r7
5928 .cfi_def_cfa_register 13
5929 @ sp needed
5930 00fc 80BD pop {r7, pc}
5931 .L289:
ARM GAS /tmp/cc5G5cqz.s page 165
5932 00fe 00BF .align 2
5933 .L288:
5934 0100 00200080 .word -2147475456
5935 0104 00000000 .word I2C_Master_ISR_IT
5936 .cfi_endproc
5937 .LFE153:
5939 .section .text.HAL_I2C_Master_Seq_Transmit_DMA,"ax",%progbits
5940 .align 1
5941 .global HAL_I2C_Master_Seq_Transmit_DMA
5942 .syntax unified
5943 .thumb
5944 .thumb_func
5946 HAL_I2C_Master_Seq_Transmit_DMA:
5947 .LFB154:
3389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA.
3392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin
3403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions)
3404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5948 .loc 1 3404 1
5949 .cfi_startproc
5950 @ args = 4, pretend = 0, frame = 32
5951 @ frame_needed = 1, uses_anonymous_args = 0
5952 0000 80B5 push {r7, lr}
5953 .cfi_def_cfa_offset 8
5954 .cfi_offset 7, -8
5955 .cfi_offset 14, -4
5956 0002 8AB0 sub sp, sp, #40
5957 .cfi_def_cfa_offset 48
5958 0004 02AF add r7, sp, #8
5959 .cfi_def_cfa 7, 40
5960 0006 F860 str r0, [r7, #12]
5961 0008 7A60 str r2, [r7, #4]
5962 000a 1A46 mov r2, r3
5963 000c 0B46 mov r3, r1 @ movhi
5964 000e 7B81 strh r3, [r7, #10] @ movhi
5965 0010 1346 mov r3, r2 @ movhi
5966 0012 3B81 strh r3, [r7, #8] @ movhi
3405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
3406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE;
5967 .loc 1 3406 12
5968 0014 774B ldr r3, .L307
5969 0016 BB61 str r3, [r7, #24]
3407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
3408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
ARM GAS /tmp/cc5G5cqz.s page 166
3410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
5970 .loc 1 3412 11
5971 0018 FB68 ldr r3, [r7, #12]
5972 001a 93F84130 ldrb r3, [r3, #65]
5973 001e DBB2 uxtb r3, r3
5974 .loc 1 3412 6
5975 0020 202B cmp r3, #32
5976 0022 40F0E180 bne .L291
3413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
5977 .loc 1 3415 5
5978 0026 FB68 ldr r3, [r7, #12]
5979 0028 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
5980 002c 012B cmp r3, #1
5981 002e 01D1 bne .L292
5982 .loc 1 3415 5 is_stmt 0 discriminator 1
5983 0030 0223 movs r3, #2
5984 .loc 1 3415 5
5985 0032 DAE0 b .L293
5986 .L292:
5987 .loc 1 3415 5 discriminator 2
5988 0034 FB68 ldr r3, [r7, #12]
5989 0036 0122 movs r2, #1
5990 0038 83F84020 strb r2, [r3, #64]
3416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX;
5991 .loc 1 3417 21 is_stmt 1
5992 003c FB68 ldr r3, [r7, #12]
5993 003e 2122 movs r2, #33
5994 0040 83F84120 strb r2, [r3, #65]
3418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
5995 .loc 1 3418 21
5996 0044 FB68 ldr r3, [r7, #12]
5997 0046 1022 movs r2, #16
5998 0048 83F84220 strb r2, [r3, #66]
3419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
5999 .loc 1 3419 21
6000 004c FB68 ldr r3, [r7, #12]
6001 004e 0022 movs r2, #0
6002 0050 5A64 str r2, [r3, #68]
3420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
3422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
6003 .loc 1 3422 23
6004 0052 FB68 ldr r3, [r7, #12]
6005 0054 7A68 ldr r2, [r7, #4]
6006 0056 5A62 str r2, [r3, #36]
3423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
6007 .loc 1 3423 23
6008 0058 FB68 ldr r3, [r7, #12]
6009 005a 3A89 ldrh r2, [r7, #8] @ movhi
6010 005c 5A85 strh r2, [r3, #42] @ movhi
3424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
6011 .loc 1 3424 23
ARM GAS /tmp/cc5G5cqz.s page 167
6012 005e FB68 ldr r3, [r7, #12]
6013 0060 BA6A ldr r2, [r7, #40]
6014 0062 DA62 str r2, [r3, #44]
3425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA;
6015 .loc 1 3425 23
6016 0064 FB68 ldr r3, [r7, #12]
6017 0066 644A ldr r2, .L307+4
6018 0068 5A63 str r2, [r3, #52]
3426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */
3428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
6019 .loc 1 3428 13
6020 006a FB68 ldr r3, [r7, #12]
6021 006c 5B8D ldrh r3, [r3, #42] @ movhi
6022 006e 9BB2 uxth r3, r3
6023 .loc 1 3428 8
6024 0070 FF2B cmp r3, #255
6025 0072 06D9 bls .L294
3429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
6026 .loc 1 3430 22
6027 0074 FB68 ldr r3, [r7, #12]
6028 0076 FF22 movs r2, #255
6029 0078 1A85 strh r2, [r3, #40] @ movhi
3431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
6030 .loc 1 3431 16
6031 007a 4FF08073 mov r3, #16777216
6032 007e FB61 str r3, [r7, #28]
6033 0080 07E0 b .L295
6034 .L294:
3432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
6035 .loc 1 3435 28
6036 0082 FB68 ldr r3, [r7, #12]
6037 0084 5B8D ldrh r3, [r3, #42] @ movhi
6038 0086 9AB2 uxth r2, r3
6039 .loc 1 3435 22
6040 0088 FB68 ldr r3, [r7, #12]
6041 008a 1A85 strh r2, [r3, #40] @ movhi
3436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6042 .loc 1 3436 16
6043 008c FB68 ldr r3, [r7, #12]
6044 008e DB6A ldr r3, [r3, #44]
6045 0090 FB61 str r3, [r7, #28]
6046 .L295:
3437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame,
3440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */
3441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */
3442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \
6047 .loc 1 3442 14
6048 0092 FB68 ldr r3, [r7, #12]
6049 0094 1B6B ldr r3, [r3, #48]
6050 .loc 1 3442 8
ARM GAS /tmp/cc5G5cqz.s page 168
6051 0096 112B cmp r3, #17
6052 0098 0ED1 bne .L296
3443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6053 .loc 1 3443 10
6054 009a BB6A ldr r3, [r7, #40]
6055 009c AA2B cmp r3, #170
6056 009e 03D0 beq .L297
6057 .loc 1 3443 10 is_stmt 0 discriminator 2
6058 00a0 BB6A ldr r3, [r7, #40]
6059 00a2 B3F52A4F cmp r3, #43520
6060 00a6 01D1 bne .L298
6061 .L297:
6062 .loc 1 3443 10 discriminator 3
6063 00a8 0123 movs r3, #1
6064 .loc 1 3443 10
6065 00aa 00E0 b .L299
6066 .L298:
6067 .loc 1 3443 10 discriminator 4
6068 00ac 0023 movs r3, #0
6069 .L299:
3442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6070 .loc 1 3442 59 is_stmt 1
6071 00ae 002B cmp r3, #0
6072 00b0 02D1 bne .L296
3444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP;
6073 .loc 1 3445 19
6074 00b2 0023 movs r3, #0
6075 00b4 BB61 str r3, [r7, #24]
6076 00b6 0AE0 b .L300
6077 .L296:
3446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */
3450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c);
6078 .loc 1 3450 7
6079 00b8 F868 ldr r0, [r7, #12]
6080 00ba FFF7FEFF bl I2C_ConvertOtherXferOptions
3451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */
3453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE)
6081 .loc 1 3453 15
6082 00be FB68 ldr r3, [r7, #12]
6083 00c0 5B8D ldrh r3, [r3, #42] @ movhi
6084 00c2 9BB2 uxth r3, r3
6085 .loc 1 3453 10
6086 00c4 FF2B cmp r3, #255
6087 00c6 02D8 bhi .L300
3454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6088 .loc 1 3455 18
6089 00c8 FB68 ldr r3, [r7, #12]
6090 00ca DB6A ldr r3, [r3, #44]
6091 00cc FB61 str r3, [r7, #28]
6092 .L300:
3456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 169
3457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U)
6093 .loc 1 3459 13
6094 00ce FB68 ldr r3, [r7, #12]
6095 00d0 1B8D ldrh r3, [r3, #40]
6096 .loc 1 3459 8
6097 00d2 002B cmp r3, #0
6098 00d4 70D0 beq .L301
3460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
6099 .loc 1 3461 15
6100 00d6 FB68 ldr r3, [r7, #12]
6101 00d8 9B6B ldr r3, [r3, #56]
6102 .loc 1 3461 10
6103 00da 002B cmp r3, #0
6104 00dc 20D0 beq .L302
3462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
3464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt;
6105 .loc 1 3464 13
6106 00de FB68 ldr r3, [r7, #12]
6107 00e0 9B6B ldr r3, [r3, #56]
6108 .loc 1 3464 40
6109 00e2 464A ldr r2, .L307+8
6110 00e4 9A62 str r2, [r3, #40]
3465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
3467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
6111 .loc 1 3467 13
6112 00e6 FB68 ldr r3, [r7, #12]
6113 00e8 9B6B ldr r3, [r3, #56]
6114 .loc 1 3467 41
6115 00ea 454A ldr r2, .L307+12
6116 00ec 1A63 str r2, [r3, #48]
3468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
3470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL;
6117 .loc 1 3470 13
6118 00ee FB68 ldr r3, [r7, #12]
6119 00f0 9B6B ldr r3, [r3, #56]
6120 .loc 1 3470 44
6121 00f2 0022 movs r2, #0
6122 00f4 DA62 str r2, [r3, #44]
3471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
6123 .loc 1 3471 13
6124 00f6 FB68 ldr r3, [r7, #12]
6125 00f8 9B6B ldr r3, [r3, #56]
6126 .loc 1 3471 41
6127 00fa 0022 movs r2, #0
6128 00fc 5A63 str r2, [r3, #52]
3472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
3474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->
6129 .loc 1 3474 25
6130 00fe FB68 ldr r3, [r7, #12]
6131 0100 986B ldr r0, [r3, #56]
ARM GAS /tmp/cc5G5cqz.s page 170
6132 0102 7968 ldr r1, [r7, #4]
6133 .loc 1 3474 88
6134 0104 FB68 ldr r3, [r7, #12]
6135 0106 1B68 ldr r3, [r3]
6136 .loc 1 3474 83
6137 0108 2833 adds r3, r3, #40
6138 .loc 1 3474 25
6139 010a 1A46 mov r2, r3
3475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
6140 .loc 1 3475 46
6141 010c FB68 ldr r3, [r7, #12]
6142 010e 1B8D ldrh r3, [r3, #40]
3474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
6143 .loc 1 3474 25
6144 0110 FFF7FEFF bl HAL_DMA_Start_IT
6145 0114 0346 mov r3, r0
6146 0116 FB75 strb r3, [r7, #23]
3476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
3485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
6147 .loc 1 3492 10
6148 0118 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
6149 011a 002B cmp r3, #0
6150 011c 38D1 bne .L304
6151 011e 13E0 b .L306
6152 .L302:
3480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6153 .loc 1 3480 25
6154 0120 FB68 ldr r3, [r7, #12]
6155 0122 2022 movs r2, #32
6156 0124 83F84120 strb r2, [r3, #65]
3481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6157 .loc 1 3481 25
6158 0128 FB68 ldr r3, [r7, #12]
6159 012a 0022 movs r2, #0
6160 012c 83F84220 strb r2, [r3, #66]
3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6161 .loc 1 3484 13
6162 0130 FB68 ldr r3, [r7, #12]
6163 0132 5B6C ldr r3, [r3, #68]
3484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6164 .loc 1 3484 25
6165 0134 43F08002 orr r2, r3, #128
ARM GAS /tmp/cc5G5cqz.s page 171
6166 0138 FB68 ldr r3, [r7, #12]
6167 013a 5A64 str r2, [r3, #68]
3487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6168 .loc 1 3487 9
6169 013c FB68 ldr r3, [r7, #12]
6170 013e 0022 movs r2, #0
6171 0140 83F84020 strb r2, [r3, #64]
3489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6172 .loc 1 3489 16
6173 0144 0123 movs r3, #1
6174 0146 50E0 b .L293
6175 .L306:
3493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */
3495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);
6176 .loc 1 3495 59
6177 0148 FB68 ldr r3, [r7, #12]
6178 014a 1B8D ldrh r3, [r3, #40]
6179 .loc 1 3495 9
6180 014c DAB2 uxtb r2, r3
6181 014e 7989 ldrh r1, [r7, #10]
6182 0150 BB69 ldr r3, [r7, #24]
6183 0152 0093 str r3, [sp]
6184 0154 FB69 ldr r3, [r7, #28]
6185 0156 F868 ldr r0, [r7, #12]
6186 0158 FFF7FEFF bl I2C_TransferConfig
3496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
3498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
6187 .loc 1 3498 13
6188 015c FB68 ldr r3, [r7, #12]
6189 015e 5B8D ldrh r3, [r3, #42] @ movhi
6190 0160 9AB2 uxth r2, r3
6191 .loc 1 3498 32
6192 0162 FB68 ldr r3, [r7, #12]
6193 0164 1B8D ldrh r3, [r3, #40]
6194 .loc 1 3498 25
6195 0166 D31A subs r3, r2, r3
6196 0168 9AB2 uxth r2, r3
6197 016a FB68 ldr r3, [r7, #12]
6198 016c 5A85 strh r2, [r3, #42] @ movhi
3499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6199 .loc 1 3501 9
6200 016e FB68 ldr r3, [r7, #12]
6201 0170 0022 movs r2, #0
6202 0172 83F84020 strb r2, [r3, #64]
3502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
3507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
6203 .loc 1 3507 9
6204 0176 1021 movs r1, #16
6205 0178 F868 ldr r0, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 172
6206 017a FFF7FEFF bl I2C_Enable_IRQ
3508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
3510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
6207 .loc 1 3510 13
6208 017e FB68 ldr r3, [r7, #12]
6209 0180 1B68 ldr r3, [r3]
6210 .loc 1 3510 23
6211 0182 1A68 ldr r2, [r3]
6212 .loc 1 3510 13
6213 0184 FB68 ldr r3, [r7, #12]
6214 0186 1B68 ldr r3, [r3]
6215 .loc 1 3510 29
6216 0188 42F48042 orr r2, r2, #16384
6217 018c 1A60 str r2, [r3]
6218 018e 29E0 b .L305
6219 .L304:
3511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6220 .loc 1 3515 25
6221 0190 FB68 ldr r3, [r7, #12]
6222 0192 2022 movs r2, #32
6223 0194 83F84120 strb r2, [r3, #65]
3516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6224 .loc 1 3516 25
6225 0198 FB68 ldr r3, [r7, #12]
6226 019a 0022 movs r2, #0
6227 019c 83F84220 strb r2, [r3, #66]
3517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
6228 .loc 1 3519 13
6229 01a0 FB68 ldr r3, [r7, #12]
6230 01a2 5B6C ldr r3, [r3, #68]
6231 .loc 1 3519 25
6232 01a4 43F01002 orr r2, r3, #16
6233 01a8 FB68 ldr r3, [r7, #12]
6234 01aa 5A64 str r2, [r3, #68]
3520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6235 .loc 1 3522 9
6236 01ac FB68 ldr r3, [r7, #12]
6237 01ae 0022 movs r2, #0
6238 01b0 83F84020 strb r2, [r3, #64]
3523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
6239 .loc 1 3524 16
6240 01b4 0123 movs r3, #1
6241 01b6 18E0 b .L293
6242 .L301:
3525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
ARM GAS /tmp/cc5G5cqz.s page 173
3528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */
3530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
6243 .loc 1 3530 21
6244 01b8 FB68 ldr r3, [r7, #12]
6245 01ba 124A ldr r2, .L307+16
6246 01bc 5A63 str r2, [r3, #52]
3531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
3533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */
3534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
6247 .loc 1 3534 57
6248 01be FB68 ldr r3, [r7, #12]
6249 01c0 1B8D ldrh r3, [r3, #40]
6250 .loc 1 3534 7
6251 01c2 DAB2 uxtb r2, r3
6252 01c4 7989 ldrh r1, [r7, #10]
6253 01c6 0B4B ldr r3, .L307
6254 01c8 0093 str r3, [sp]
6255 01ca 4FF00073 mov r3, #33554432
6256 01ce F868 ldr r0, [r7, #12]
6257 01d0 FFF7FEFF bl I2C_TransferConfig
3535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_WRITE);
3536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6258 .loc 1 3538 7
6259 01d4 FB68 ldr r3, [r7, #12]
6260 01d6 0022 movs r2, #0
6261 01d8 83F84020 strb r2, [r3, #64]
3539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
3544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
3545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
3546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
3547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
6262 .loc 1 3547 7
6263 01dc 0121 movs r1, #1
6264 01de F868 ldr r0, [r7, #12]
6265 01e0 FFF7FEFF bl I2C_Enable_IRQ
6266 .L305:
3548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
6267 .loc 1 3550 12
6268 01e4 0023 movs r3, #0
6269 01e6 00E0 b .L293
6270 .L291:
3551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
6271 .loc 1 3554 12
6272 01e8 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 174
6273 .L293:
3555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6274 .loc 1 3556 1
6275 01ea 1846 mov r0, r3
6276 01ec 2037 adds r7, r7, #32
6277 .cfi_def_cfa_offset 8
6278 01ee BD46 mov sp, r7
6279 .cfi_def_cfa_register 13
6280 @ sp needed
6281 01f0 80BD pop {r7, pc}
6282 .L308:
6283 01f2 00BF .align 2
6284 .L307:
6285 01f4 00200080 .word -2147475456
6286 01f8 00000000 .word I2C_Master_ISR_DMA
6287 01fc 00000000 .word I2C_DMAMasterTransmitCplt
6288 0200 00000000 .word I2C_DMAError
6289 0204 00000000 .word I2C_Master_ISR_IT
6290 .cfi_endproc
6291 .LFE154:
6293 .section .text.HAL_I2C_Master_Seq_Receive_IT,"ax",%progbits
6294 .align 1
6295 .global HAL_I2C_Master_Seq_Receive_IT
6296 .syntax unified
6297 .thumb
6298 .thumb_func
6300 HAL_I2C_Master_Seq_Receive_IT:
6301 .LFB155:
3557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Inter
3560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8
3571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions)
3572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6302 .loc 1 3572 1
6303 .cfi_startproc
6304 @ args = 4, pretend = 0, frame = 24
6305 @ frame_needed = 1, uses_anonymous_args = 0
6306 0000 80B5 push {r7, lr}
6307 .cfi_def_cfa_offset 8
6308 .cfi_offset 7, -8
6309 .cfi_offset 14, -4
6310 0002 88B0 sub sp, sp, #32
6311 .cfi_def_cfa_offset 40
6312 0004 02AF add r7, sp, #8
6313 .cfi_def_cfa 7, 32
ARM GAS /tmp/cc5G5cqz.s page 175
6314 0006 F860 str r0, [r7, #12]
6315 0008 7A60 str r2, [r7, #4]
6316 000a 1A46 mov r2, r3
6317 000c 0B46 mov r3, r1 @ movhi
6318 000e 7B81 strh r3, [r7, #10] @ movhi
6319 0010 1346 mov r3, r2 @ movhi
6320 0012 3B81 strh r3, [r7, #8] @ movhi
3573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
3574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ;
6321 .loc 1 3574 12
6322 0014 3A4B ldr r3, .L320
6323 0016 3B61 str r3, [r7, #16]
3575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
6324 .loc 1 3579 11
6325 0018 FB68 ldr r3, [r7, #12]
6326 001a 93F84130 ldrb r3, [r3, #65]
6327 001e DBB2 uxtb r3, r3
6328 .loc 1 3579 6
6329 0020 202B cmp r3, #32
6330 0022 67D1 bne .L310
3580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
6331 .loc 1 3582 5
6332 0024 FB68 ldr r3, [r7, #12]
6333 0026 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
6334 002a 012B cmp r3, #1
6335 002c 01D1 bne .L311
6336 .loc 1 3582 5 is_stmt 0 discriminator 1
6337 002e 0223 movs r3, #2
6338 .loc 1 3582 5
6339 0030 61E0 b .L312
6340 .L311:
6341 .loc 1 3582 5 discriminator 2
6342 0032 FB68 ldr r3, [r7, #12]
6343 0034 0122 movs r2, #1
6344 0036 83F84020 strb r2, [r3, #64]
3583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
6345 .loc 1 3584 21 is_stmt 1
6346 003a FB68 ldr r3, [r7, #12]
6347 003c 2222 movs r2, #34
6348 003e 83F84120 strb r2, [r3, #65]
3585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
6349 .loc 1 3585 21
6350 0042 FB68 ldr r3, [r7, #12]
6351 0044 1022 movs r2, #16
6352 0046 83F84220 strb r2, [r3, #66]
3586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
6353 .loc 1 3586 21
6354 004a FB68 ldr r3, [r7, #12]
6355 004c 0022 movs r2, #0
6356 004e 5A64 str r2, [r3, #68]
ARM GAS /tmp/cc5G5cqz.s page 176
3587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
3589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
6357 .loc 1 3589 23
6358 0050 FB68 ldr r3, [r7, #12]
6359 0052 7A68 ldr r2, [r7, #4]
6360 0054 5A62 str r2, [r3, #36]
3590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
6361 .loc 1 3590 23
6362 0056 FB68 ldr r3, [r7, #12]
6363 0058 3A89 ldrh r2, [r7, #8] @ movhi
6364 005a 5A85 strh r2, [r3, #42] @ movhi
3591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
6365 .loc 1 3591 23
6366 005c FB68 ldr r3, [r7, #12]
6367 005e 3A6A ldr r2, [r7, #32]
6368 0060 DA62 str r2, [r3, #44]
3592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
6369 .loc 1 3592 23
6370 0062 FB68 ldr r3, [r7, #12]
6371 0064 274A ldr r2, .L320+4
6372 0066 5A63 str r2, [r3, #52]
3593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */
3595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
6373 .loc 1 3595 13
6374 0068 FB68 ldr r3, [r7, #12]
6375 006a 5B8D ldrh r3, [r3, #42] @ movhi
6376 006c 9BB2 uxth r3, r3
6377 .loc 1 3595 8
6378 006e FF2B cmp r3, #255
6379 0070 06D9 bls .L313
3596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
6380 .loc 1 3597 22
6381 0072 FB68 ldr r3, [r7, #12]
6382 0074 FF22 movs r2, #255
6383 0076 1A85 strh r2, [r3, #40] @ movhi
3598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
6384 .loc 1 3598 16
6385 0078 4FF08073 mov r3, #16777216
6386 007c 7B61 str r3, [r7, #20]
6387 007e 07E0 b .L314
6388 .L313:
3599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
6389 .loc 1 3602 28
6390 0080 FB68 ldr r3, [r7, #12]
6391 0082 5B8D ldrh r3, [r3, #42] @ movhi
6392 0084 9AB2 uxth r2, r3
6393 .loc 1 3602 22
6394 0086 FB68 ldr r3, [r7, #12]
6395 0088 1A85 strh r2, [r3, #40] @ movhi
3603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6396 .loc 1 3603 16
ARM GAS /tmp/cc5G5cqz.s page 177
6397 008a FB68 ldr r3, [r7, #12]
6398 008c DB6A ldr r3, [r3, #44]
6399 008e 7B61 str r3, [r7, #20]
6400 .L314:
3604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame,
3607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */
3608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */
3609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \
6401 .loc 1 3609 14
6402 0090 FB68 ldr r3, [r7, #12]
6403 0092 1B6B ldr r3, [r3, #48]
6404 .loc 1 3609 8
6405 0094 122B cmp r3, #18
6406 0096 0ED1 bne .L315
3610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6407 .loc 1 3610 10
6408 0098 3B6A ldr r3, [r7, #32]
6409 009a AA2B cmp r3, #170
6410 009c 03D0 beq .L316
6411 .loc 1 3610 10 is_stmt 0 discriminator 2
6412 009e 3B6A ldr r3, [r7, #32]
6413 00a0 B3F52A4F cmp r3, #43520
6414 00a4 01D1 bne .L317
6415 .L316:
6416 .loc 1 3610 10 discriminator 3
6417 00a6 0123 movs r3, #1
6418 .loc 1 3610 10
6419 00a8 00E0 b .L318
6420 .L317:
6421 .loc 1 3610 10 discriminator 4
6422 00aa 0023 movs r3, #0
6423 .L318:
3609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6424 .loc 1 3609 59 is_stmt 1
6425 00ac 002B cmp r3, #0
6426 00ae 02D1 bne .L315
3611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP;
6427 .loc 1 3612 19
6428 00b0 0023 movs r3, #0
6429 00b2 3B61 str r3, [r7, #16]
6430 00b4 0AE0 b .L319
6431 .L315:
3613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */
3617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c);
6432 .loc 1 3617 7
6433 00b6 F868 ldr r0, [r7, #12]
6434 00b8 FFF7FEFF bl I2C_ConvertOtherXferOptions
3618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */
3620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE)
6435 .loc 1 3620 15
ARM GAS /tmp/cc5G5cqz.s page 178
6436 00bc FB68 ldr r3, [r7, #12]
6437 00be 5B8D ldrh r3, [r3, #42] @ movhi
6438 00c0 9BB2 uxth r3, r3
6439 .loc 1 3620 10
6440 00c2 FF2B cmp r3, #255
6441 00c4 02D8 bhi .L319
3621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6442 .loc 1 3622 18
6443 00c6 FB68 ldr r3, [r7, #12]
6444 00c8 DB6A ldr r3, [r3, #44]
6445 00ca 7B61 str r3, [r7, #20]
6446 .L319:
3623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */
3627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);
6447 .loc 1 3627 55
6448 00cc FB68 ldr r3, [r7, #12]
6449 00ce 1B8D ldrh r3, [r3, #40]
6450 .loc 1 3627 5
6451 00d0 DAB2 uxtb r2, r3
6452 00d2 7989 ldrh r1, [r7, #10]
6453 00d4 3B69 ldr r3, [r7, #16]
6454 00d6 0093 str r3, [sp]
6455 00d8 7B69 ldr r3, [r7, #20]
6456 00da F868 ldr r0, [r7, #12]
6457 00dc FFF7FEFF bl I2C_TransferConfig
3628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6458 .loc 1 3630 5
6459 00e0 FB68 ldr r3, [r7, #12]
6460 00e2 0022 movs r2, #0
6461 00e4 83F84020 strb r2, [r3, #64]
3631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
6462 .loc 1 3635 5
6463 00e8 0221 movs r1, #2
6464 00ea F868 ldr r0, [r7, #12]
6465 00ec FFF7FEFF bl I2C_Enable_IRQ
3636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
6466 .loc 1 3637 12
6467 00f0 0023 movs r3, #0
6468 00f2 00E0 b .L312
6469 .L310:
3638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
6470 .loc 1 3641 12
6471 00f4 0223 movs r3, #2
ARM GAS /tmp/cc5G5cqz.s page 179
6472 .L312:
3642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6473 .loc 1 3643 1
6474 00f6 1846 mov r0, r3
6475 00f8 1837 adds r7, r7, #24
6476 .cfi_def_cfa_offset 8
6477 00fa BD46 mov sp, r7
6478 .cfi_def_cfa_register 13
6479 @ sp needed
6480 00fc 80BD pop {r7, pc}
6481 .L321:
6482 00fe 00BF .align 2
6483 .L320:
6484 0100 00240080 .word -2147474432
6485 0104 00000000 .word I2C_Master_ISR_IT
6486 .cfi_endproc
6487 .LFE155:
6489 .section .text.HAL_I2C_Master_Seq_Receive_DMA,"ax",%progbits
6490 .align 1
6491 .global HAL_I2C_Master_Seq_Receive_DMA
6492 .syntax unified
6493 .thumb
6494 .thumb_func
6496 HAL_I2C_Master_Seq_Receive_DMA:
6497 .LFB156:
3644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA
3647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
3651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
3652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint
3658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions)
3659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6498 .loc 1 3659 1
6499 .cfi_startproc
6500 @ args = 4, pretend = 0, frame = 32
6501 @ frame_needed = 1, uses_anonymous_args = 0
6502 0000 80B5 push {r7, lr}
6503 .cfi_def_cfa_offset 8
6504 .cfi_offset 7, -8
6505 .cfi_offset 14, -4
6506 0002 8AB0 sub sp, sp, #40
6507 .cfi_def_cfa_offset 48
6508 0004 02AF add r7, sp, #8
6509 .cfi_def_cfa 7, 40
6510 0006 F860 str r0, [r7, #12]
6511 0008 7A60 str r2, [r7, #4]
6512 000a 1A46 mov r2, r3
ARM GAS /tmp/cc5G5cqz.s page 180
6513 000c 0B46 mov r3, r1 @ movhi
6514 000e 7B81 strh r3, [r7, #10] @ movhi
6515 0010 1346 mov r3, r2 @ movhi
6516 0012 3B81 strh r3, [r7, #8] @ movhi
3660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
3661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ;
6517 .loc 1 3661 12
6518 0014 774B ldr r3, .L339
6519 0016 BB61 str r3, [r7, #24]
3662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
3663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
6520 .loc 1 3667 11
6521 0018 FB68 ldr r3, [r7, #12]
6522 001a 93F84130 ldrb r3, [r3, #65]
6523 001e DBB2 uxtb r3, r3
6524 .loc 1 3667 6
6525 0020 202B cmp r3, #32
6526 0022 40F0E180 bne .L323
3668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
6527 .loc 1 3670 5
6528 0026 FB68 ldr r3, [r7, #12]
6529 0028 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
6530 002c 012B cmp r3, #1
6531 002e 01D1 bne .L324
6532 .loc 1 3670 5 is_stmt 0 discriminator 1
6533 0030 0223 movs r3, #2
6534 .loc 1 3670 5
6535 0032 DAE0 b .L325
6536 .L324:
6537 .loc 1 3670 5 discriminator 2
6538 0034 FB68 ldr r3, [r7, #12]
6539 0036 0122 movs r2, #1
6540 0038 83F84020 strb r2, [r3, #64]
3671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX;
6541 .loc 1 3672 21 is_stmt 1
6542 003c FB68 ldr r3, [r7, #12]
6543 003e 2222 movs r2, #34
6544 0040 83F84120 strb r2, [r3, #65]
3673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER;
6545 .loc 1 3673 21
6546 0044 FB68 ldr r3, [r7, #12]
6547 0046 1022 movs r2, #16
6548 0048 83F84220 strb r2, [r3, #66]
3674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
6549 .loc 1 3674 21
6550 004c FB68 ldr r3, [r7, #12]
6551 004e 0022 movs r2, #0
6552 0050 5A64 str r2, [r3, #68]
3675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
ARM GAS /tmp/cc5G5cqz.s page 181
3677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
6553 .loc 1 3677 23
6554 0052 FB68 ldr r3, [r7, #12]
6555 0054 7A68 ldr r2, [r7, #4]
6556 0056 5A62 str r2, [r3, #36]
3678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
6557 .loc 1 3678 23
6558 0058 FB68 ldr r3, [r7, #12]
6559 005a 3A89 ldrh r2, [r7, #8] @ movhi
6560 005c 5A85 strh r2, [r3, #42] @ movhi
3679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
6561 .loc 1 3679 23
6562 005e FB68 ldr r3, [r7, #12]
6563 0060 BA6A ldr r2, [r7, #40]
6564 0062 DA62 str r2, [r3, #44]
3680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA;
6565 .loc 1 3680 23
6566 0064 FB68 ldr r3, [r7, #12]
6567 0066 644A ldr r2, .L339+4
6568 0068 5A63 str r2, [r3, #52]
3681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */
3683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
6569 .loc 1 3683 13
6570 006a FB68 ldr r3, [r7, #12]
6571 006c 5B8D ldrh r3, [r3, #42] @ movhi
6572 006e 9BB2 uxth r3, r3
6573 .loc 1 3683 8
6574 0070 FF2B cmp r3, #255
6575 0072 06D9 bls .L326
3684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
6576 .loc 1 3685 22
6577 0074 FB68 ldr r3, [r7, #12]
6578 0076 FF22 movs r2, #255
6579 0078 1A85 strh r2, [r3, #40] @ movhi
3686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
6580 .loc 1 3686 16
6581 007a 4FF08073 mov r3, #16777216
6582 007e FB61 str r3, [r7, #28]
6583 0080 07E0 b .L327
6584 .L326:
3687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
6585 .loc 1 3690 28
6586 0082 FB68 ldr r3, [r7, #12]
6587 0084 5B8D ldrh r3, [r3, #42] @ movhi
6588 0086 9AB2 uxth r2, r3
6589 .loc 1 3690 22
6590 0088 FB68 ldr r3, [r7, #12]
6591 008a 1A85 strh r2, [r3, #40] @ movhi
3691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6592 .loc 1 3691 16
6593 008c FB68 ldr r3, [r7, #12]
6594 008e DB6A ldr r3, [r3, #44]
ARM GAS /tmp/cc5G5cqz.s page 182
6595 0090 FB61 str r3, [r7, #28]
6596 .L327:
3692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame,
3695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** do not generate Restart Condition */
3696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean Previous state is same as current state */
3697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \
6597 .loc 1 3697 14
6598 0092 FB68 ldr r3, [r7, #12]
6599 0094 1B6B ldr r3, [r3, #48]
6600 .loc 1 3697 8
6601 0096 122B cmp r3, #18
6602 0098 0ED1 bne .L328
3698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6603 .loc 1 3698 10
6604 009a BB6A ldr r3, [r7, #40]
6605 009c AA2B cmp r3, #170
6606 009e 03D0 beq .L329
6607 .loc 1 3698 10 is_stmt 0 discriminator 2
6608 00a0 BB6A ldr r3, [r7, #40]
6609 00a2 B3F52A4F cmp r3, #43520
6610 00a6 01D1 bne .L330
6611 .L329:
6612 .loc 1 3698 10 discriminator 3
6613 00a8 0123 movs r3, #1
6614 .loc 1 3698 10
6615 00aa 00E0 b .L331
6616 .L330:
6617 .loc 1 3698 10 discriminator 4
6618 00ac 0023 movs r3, #0
6619 .L331:
3697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
6620 .loc 1 3697 59 is_stmt 1
6621 00ae 002B cmp r3, #0
6622 00b0 02D1 bne .L328
3699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP;
6623 .loc 1 3700 19
6624 00b2 0023 movs r3, #0
6625 00b4 BB61 str r3, [r7, #24]
6626 00b6 0AE0 b .L332
6627 .L328:
3701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */
3705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c);
6628 .loc 1 3705 7
6629 00b8 F868 ldr r0, [r7, #12]
6630 00ba FFF7FEFF bl I2C_ConvertOtherXferOptions
3706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */
3708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE)
6631 .loc 1 3708 15
6632 00be FB68 ldr r3, [r7, #12]
6633 00c0 5B8D ldrh r3, [r3, #42] @ movhi
ARM GAS /tmp/cc5G5cqz.s page 183
6634 00c2 9BB2 uxth r3, r3
6635 .loc 1 3708 10
6636 00c4 FF2B cmp r3, #255
6637 00c6 02D8 bhi .L332
3709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
6638 .loc 1 3710 18
6639 00c8 FB68 ldr r3, [r7, #12]
6640 00ca DB6A ldr r3, [r3, #44]
6641 00cc FB61 str r3, [r7, #28]
6642 .L332:
3711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferSize > 0U)
6643 .loc 1 3714 13
6644 00ce FB68 ldr r3, [r7, #12]
6645 00d0 1B8D ldrh r3, [r3, #40]
6646 .loc 1 3714 8
6647 00d2 002B cmp r3, #0
6648 00d4 70D0 beq .L333
3715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
6649 .loc 1 3716 15
6650 00d6 FB68 ldr r3, [r7, #12]
6651 00d8 DB6B ldr r3, [r3, #60]
6652 .loc 1 3716 10
6653 00da 002B cmp r3, #0
6654 00dc 20D0 beq .L334
3717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
3719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt;
6655 .loc 1 3719 13
6656 00de FB68 ldr r3, [r7, #12]
6657 00e0 DB6B ldr r3, [r3, #60]
6658 .loc 1 3719 40
6659 00e2 464A ldr r2, .L339+8
6660 00e4 9A62 str r2, [r3, #40]
3720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
3722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
6661 .loc 1 3722 13
6662 00e6 FB68 ldr r3, [r7, #12]
6663 00e8 DB6B ldr r3, [r3, #60]
6664 .loc 1 3722 41
6665 00ea 454A ldr r2, .L339+12
6666 00ec 1A63 str r2, [r3, #48]
3723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
3725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL;
6667 .loc 1 3725 13
6668 00ee FB68 ldr r3, [r7, #12]
6669 00f0 DB6B ldr r3, [r3, #60]
6670 .loc 1 3725 44
6671 00f2 0022 movs r2, #0
6672 00f4 DA62 str r2, [r3, #44]
3726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
ARM GAS /tmp/cc5G5cqz.s page 184
6673 .loc 1 3726 13
6674 00f6 FB68 ldr r3, [r7, #12]
6675 00f8 DB6B ldr r3, [r3, #60]
6676 .loc 1 3726 41
6677 00fa 0022 movs r2, #0
6678 00fc 5A63 str r2, [r3, #52]
3727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
3729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p
6679 .loc 1 3729 25
6680 00fe FB68 ldr r3, [r7, #12]
6681 0100 D86B ldr r0, [r3, #60]
6682 .loc 1 3729 71
6683 0102 FB68 ldr r3, [r7, #12]
6684 0104 1B68 ldr r3, [r3]
6685 .loc 1 3729 66
6686 0106 2433 adds r3, r3, #36
6687 .loc 1 3729 25
6688 0108 1946 mov r1, r3
6689 010a 7A68 ldr r2, [r7, #4]
3730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
6690 .loc 1 3730 46
6691 010c FB68 ldr r3, [r7, #12]
6692 010e 1B8D ldrh r3, [r3, #40]
3729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
6693 .loc 1 3729 25
6694 0110 FFF7FEFF bl HAL_DMA_Start_IT
6695 0114 0346 mov r3, r0
6696 0116 FB75 strb r3, [r7, #23]
3731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
3736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
3737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
3740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
3743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
3745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
6697 .loc 1 3747 10
6698 0118 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
6699 011a 002B cmp r3, #0
6700 011c 38D1 bne .L336
6701 011e 13E0 b .L338
6702 .L334:
3735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6703 .loc 1 3735 25
6704 0120 FB68 ldr r3, [r7, #12]
6705 0122 2022 movs r2, #32
6706 0124 83F84120 strb r2, [r3, #65]
ARM GAS /tmp/cc5G5cqz.s page 185
3736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6707 .loc 1 3736 25
6708 0128 FB68 ldr r3, [r7, #12]
6709 012a 0022 movs r2, #0
6710 012c 83F84220 strb r2, [r3, #66]
3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6711 .loc 1 3739 13
6712 0130 FB68 ldr r3, [r7, #12]
6713 0132 5B6C ldr r3, [r3, #68]
3739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6714 .loc 1 3739 25
6715 0134 43F08002 orr r2, r3, #128
6716 0138 FB68 ldr r3, [r7, #12]
6717 013a 5A64 str r2, [r3, #68]
3742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6718 .loc 1 3742 9
6719 013c FB68 ldr r3, [r7, #12]
6720 013e 0022 movs r2, #0
6721 0140 83F84020 strb r2, [r3, #64]
3744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6722 .loc 1 3744 16
6723 0144 0123 movs r3, #1
6724 0146 50E0 b .L325
6725 .L338:
3748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */
3750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest);
6726 .loc 1 3750 59
6727 0148 FB68 ldr r3, [r7, #12]
6728 014a 1B8D ldrh r3, [r3, #40]
6729 .loc 1 3750 9
6730 014c DAB2 uxtb r2, r3
6731 014e 7989 ldrh r1, [r7, #10]
6732 0150 BB69 ldr r3, [r7, #24]
6733 0152 0093 str r3, [sp]
6734 0154 FB69 ldr r3, [r7, #28]
6735 0156 F868 ldr r0, [r7, #12]
6736 0158 FFF7FEFF bl I2C_TransferConfig
3751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
3753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
6737 .loc 1 3753 13
6738 015c FB68 ldr r3, [r7, #12]
6739 015e 5B8D ldrh r3, [r3, #42] @ movhi
6740 0160 9AB2 uxth r2, r3
6741 .loc 1 3753 32
6742 0162 FB68 ldr r3, [r7, #12]
6743 0164 1B8D ldrh r3, [r3, #40]
6744 .loc 1 3753 25
6745 0166 D31A subs r3, r2, r3
6746 0168 9AB2 uxth r2, r3
6747 016a FB68 ldr r3, [r7, #12]
6748 016c 5A85 strh r2, [r3, #42] @ movhi
3754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6749 .loc 1 3756 9
ARM GAS /tmp/cc5G5cqz.s page 186
6750 016e FB68 ldr r3, [r7, #12]
6751 0170 0022 movs r2, #0
6752 0172 83F84020 strb r2, [r3, #64]
3757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
3762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
6753 .loc 1 3762 9
6754 0176 1021 movs r1, #16
6755 0178 F868 ldr r0, [r7, #12]
6756 017a FFF7FEFF bl I2C_Enable_IRQ
3763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
3765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
6757 .loc 1 3765 13
6758 017e FB68 ldr r3, [r7, #12]
6759 0180 1B68 ldr r3, [r3]
6760 .loc 1 3765 23
6761 0182 1A68 ldr r2, [r3]
6762 .loc 1 3765 13
6763 0184 FB68 ldr r3, [r7, #12]
6764 0186 1B68 ldr r3, [r3]
6765 .loc 1 3765 29
6766 0188 42F40042 orr r2, r2, #32768
6767 018c 1A60 str r2, [r3]
6768 018e 29E0 b .L337
6769 .L336:
3766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
3770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6770 .loc 1 3770 25
6771 0190 FB68 ldr r3, [r7, #12]
6772 0192 2022 movs r2, #32
6773 0194 83F84120 strb r2, [r3, #65]
3771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6774 .loc 1 3771 25
6775 0198 FB68 ldr r3, [r7, #12]
6776 019a 0022 movs r2, #0
6777 019c 83F84220 strb r2, [r3, #66]
3772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
3774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
6778 .loc 1 3774 13
6779 01a0 FB68 ldr r3, [r7, #12]
6780 01a2 5B6C ldr r3, [r3, #68]
6781 .loc 1 3774 25
6782 01a4 43F01002 orr r2, r3, #16
6783 01a8 FB68 ldr r3, [r7, #12]
6784 01aa 5A64 str r2, [r3, #68]
3775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6785 .loc 1 3777 9
ARM GAS /tmp/cc5G5cqz.s page 187
6786 01ac FB68 ldr r3, [r7, #12]
6787 01ae 0022 movs r2, #0
6788 01b0 83F84020 strb r2, [r3, #64]
3778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
6789 .loc 1 3779 16
6790 01b4 0123 movs r3, #1
6791 01b6 18E0 b .L325
6792 .L333:
3780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Transfer ISR function pointer */
3785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT;
6793 .loc 1 3785 21
6794 01b8 FB68 ldr r3, [r7, #12]
6795 01ba 124A ldr r2, .L339+16
6796 01bc 5A63 str r2, [r3, #52]
3786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Slave Address */
3788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */
3789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
6797 .loc 1 3789 57
6798 01be FB68 ldr r3, [r7, #12]
6799 01c0 1B8D ldrh r3, [r3, #40]
6800 .loc 1 3789 7
6801 01c2 DAB2 uxtb r2, r3
6802 01c4 7989 ldrh r1, [r7, #10]
6803 01c6 0B4B ldr r3, .L339
6804 01c8 0093 str r3, [sp]
6805 01ca 4FF00073 mov r3, #33554432
6806 01ce F868 ldr r0, [r7, #12]
6807 01d0 FFF7FEFF bl I2C_TransferConfig
3790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_GENERATE_START_READ);
3791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6808 .loc 1 3793 7
6809 01d4 FB68 ldr r3, [r7, #12]
6810 01d6 0022 movs r2, #0
6811 01d8 83F84020 strb r2, [r3, #64]
3794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */
3799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* possible to enable all of these */
3800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
3801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
3802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
6812 .loc 1 3802 7
6813 01dc 0121 movs r1, #1
6814 01de F868 ldr r0, [r7, #12]
6815 01e0 FFF7FEFF bl I2C_Enable_IRQ
6816 .L337:
3803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 188
3804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
6817 .loc 1 3805 12
6818 01e4 0023 movs r3, #0
6819 01e6 00E0 b .L325
6820 .L323:
3806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
6821 .loc 1 3809 12
6822 01e8 0223 movs r3, #2
6823 .L325:
3810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6824 .loc 1 3811 1
6825 01ea 1846 mov r0, r3
6826 01ec 2037 adds r7, r7, #32
6827 .cfi_def_cfa_offset 8
6828 01ee BD46 mov sp, r7
6829 .cfi_def_cfa_register 13
6830 @ sp needed
6831 01f0 80BD pop {r7, pc}
6832 .L340:
6833 01f2 00BF .align 2
6834 .L339:
6835 01f4 00240080 .word -2147474432
6836 01f8 00000000 .word I2C_Master_ISR_DMA
6837 01fc 00000000 .word I2C_DMAMasterReceiveCplt
6838 0200 00000000 .word I2C_DMAError
6839 0204 00000000 .word I2C_Master_ISR_IT
6840 .cfi_endproc
6841 .LFE156:
6843 .section .text.HAL_I2C_Slave_Seq_Transmit_IT,"ax",%progbits
6844 .align 1
6845 .global HAL_I2C_Slave_Seq_Transmit_IT
6846 .syntax unified
6847 .thumb
6848 .thumb_func
6850 HAL_I2C_Slave_Seq_Transmit_IT:
6851 .LFB157:
3812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit
3815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S
3824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions)
3825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6852 .loc 1 3825 1
6853 .cfi_startproc
ARM GAS /tmp/cc5G5cqz.s page 189
6854 @ args = 0, pretend = 0, frame = 24
6855 @ frame_needed = 1, uses_anonymous_args = 0
6856 0000 80B5 push {r7, lr}
6857 .cfi_def_cfa_offset 8
6858 .cfi_offset 7, -8
6859 .cfi_offset 14, -4
6860 0002 86B0 sub sp, sp, #24
6861 .cfi_def_cfa_offset 32
6862 0004 00AF add r7, sp, #0
6863 .cfi_def_cfa_register 7
6864 0006 F860 str r0, [r7, #12]
6865 0008 B960 str r1, [r7, #8]
6866 000a 3B60 str r3, [r7]
6867 000c 1346 mov r3, r2 @ movhi
6868 000e FB80 strh r3, [r7, #6] @ movhi
3826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
3827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp;
3828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)
6869 .loc 1 3832 22
6870 0010 FB68 ldr r3, [r7, #12]
6871 0012 93F84130 ldrb r3, [r3, #65]
6872 0016 DBB2 uxtb r3, r3
6873 .loc 1 3832 30
6874 0018 03F02803 and r3, r3, #40
6875 .loc 1 3832 6
6876 001c 282B cmp r3, #40
6877 001e 40F09880 bne .L342
3833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
6878 .loc 1 3834 8
6879 0022 BB68 ldr r3, [r7, #8]
6880 0024 002B cmp r3, #0
6881 0026 02D0 beq .L343
6882 .loc 1 3834 25 discriminator 1
6883 0028 FB88 ldrh r3, [r7, #6]
6884 002a 002B cmp r3, #0
6885 002c 05D1 bne .L344
6886 .L343:
3835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
6887 .loc 1 3836 23
6888 002e FB68 ldr r3, [r7, #12]
6889 0030 4FF40072 mov r2, #512
6890 0034 5A64 str r2, [r3, #68]
3837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
6891 .loc 1 3837 15
6892 0036 0123 movs r3, #1
6893 0038 8CE0 b .L345
6894 .L344:
3838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */
3841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
ARM GAS /tmp/cc5G5cqz.s page 190
6895 .loc 1 3841 5
6896 003a 48F20101 movw r1, #32769
6897 003e F868 ldr r0, [r7, #12]
6898 0040 FFF7FEFF bl I2C_Disable_IRQ
3842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
6899 .loc 1 3844 5
6900 0044 FB68 ldr r3, [r7, #12]
6901 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
6902 004a 012B cmp r3, #1
6903 004c 01D1 bne .L346
6904 .loc 1 3844 5 is_stmt 0 discriminator 1
6905 004e 0223 movs r3, #2
6906 .loc 1 3844 5
6907 0050 80E0 b .L345
6908 .L346:
6909 .loc 1 3844 5 discriminator 2
6910 0052 FB68 ldr r3, [r7, #12]
6911 0054 0122 movs r2, #1
6912 0056 83F84020 strb r2, [r3, #64]
3845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */
3847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */
3848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)
6913 .loc 1 3848 13 is_stmt 1
6914 005a FB68 ldr r3, [r7, #12]
6915 005c 93F84130 ldrb r3, [r3, #65]
6916 0060 DBB2 uxtb r3, r3
6917 .loc 1 3848 8
6918 0062 2A2B cmp r3, #42
6919 0064 2AD1 bne .L347
3849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */
3851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
6920 .loc 1 3851 7
6921 0066 0221 movs r1, #2
6922 0068 F868 ldr r0, [r7, #12]
6923 006a FFF7FEFF bl I2C_Disable_IRQ
3852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
3854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)
6924 .loc 1 3854 16
6925 006e FB68 ldr r3, [r7, #12]
6926 0070 1B68 ldr r3, [r3]
6927 .loc 1 3854 26
6928 0072 1B68 ldr r3, [r3]
6929 .loc 1 3854 32
6930 0074 03F40043 and r3, r3, #32768
6931 .loc 1 3854 10
6932 0078 B3F5004F cmp r3, #32768
6933 007c 1ED1 bne .L347
3855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
6934 .loc 1 3856 13
6935 007e FB68 ldr r3, [r7, #12]
6936 0080 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 191
6937 .loc 1 3856 23
6938 0082 1A68 ldr r2, [r3]
6939 .loc 1 3856 13
6940 0084 FB68 ldr r3, [r7, #12]
6941 0086 1B68 ldr r3, [r3]
6942 .loc 1 3856 29
6943 0088 22F40042 bic r2, r2, #32768
6944 008c 1A60 str r2, [r3]
3857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
6945 .loc 1 3858 17
6946 008e FB68 ldr r3, [r7, #12]
6947 0090 DB6B ldr r3, [r3, #60]
6948 .loc 1 3858 12
6949 0092 002B cmp r3, #0
6950 0094 12D0 beq .L347
3859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
3861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
3862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;
6951 .loc 1 3862 15
6952 0096 FB68 ldr r3, [r7, #12]
6953 0098 DB6B ldr r3, [r3, #60]
6954 .loc 1 3862 43
6955 009a 304A ldr r2, .L349
6956 009c 5A63 str r2, [r3, #52]
3863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */
3865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)
6957 .loc 1 3865 15
6958 009e FB68 ldr r3, [r7, #12]
6959 00a0 DB6B ldr r3, [r3, #60]
6960 00a2 1846 mov r0, r3
6961 00a4 FFF7FEFF bl HAL_DMA_Abort_IT
6962 00a8 0346 mov r3, r0
6963 .loc 1 3865 14 discriminator 1
6964 00aa 002B cmp r3, #0
6965 00ac 06D0 beq .L347
3866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
3868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);
6966 .loc 1 3868 17
6967 00ae FB68 ldr r3, [r7, #12]
6968 00b0 DB6B ldr r3, [r3, #60]
6969 .loc 1 3868 25
6970 00b2 5B6B ldr r3, [r3, #52]
6971 .loc 1 3868 49
6972 00b4 FA68 ldr r2, [r7, #12]
6973 00b6 D26B ldr r2, [r2, #60]
6974 .loc 1 3868 13
6975 00b8 1046 mov r0, r2
6976 00ba 9847 blx r3
6977 .LVL0:
6978 .L347:
3869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 192
3872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN;
6979 .loc 1 3874 21
6980 00bc FB68 ldr r3, [r7, #12]
6981 00be 2922 movs r2, #41
6982 00c0 83F84120 strb r2, [r3, #65]
3875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
6983 .loc 1 3875 21
6984 00c4 FB68 ldr r3, [r7, #12]
6985 00c6 2022 movs r2, #32
6986 00c8 83F84220 strb r2, [r3, #66]
3876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
6987 .loc 1 3876 21
6988 00cc FB68 ldr r3, [r7, #12]
6989 00ce 0022 movs r2, #0
6990 00d0 5A64 str r2, [r3, #68]
3877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
3879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
6991 .loc 1 3879 9
6992 00d2 FB68 ldr r3, [r7, #12]
6993 00d4 1B68 ldr r3, [r3]
6994 .loc 1 3879 19
6995 00d6 5A68 ldr r2, [r3, #4]
6996 .loc 1 3879 9
6997 00d8 FB68 ldr r3, [r7, #12]
6998 00da 1B68 ldr r3, [r3]
6999 .loc 1 3879 25
7000 00dc 22F40042 bic r2, r2, #32768
7001 00e0 5A60 str r2, [r3, #4]
3880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
3882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
7002 .loc 1 3882 23
7003 00e2 FB68 ldr r3, [r7, #12]
7004 00e4 BA68 ldr r2, [r7, #8]
7005 00e6 5A62 str r2, [r3, #36]
3883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
7006 .loc 1 3883 23
7007 00e8 FB68 ldr r3, [r7, #12]
7008 00ea FA88 ldrh r2, [r7, #6] @ movhi
7009 00ec 5A85 strh r2, [r3, #42] @ movhi
3884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
7010 .loc 1 3884 29
7011 00ee FB68 ldr r3, [r7, #12]
7012 00f0 5B8D ldrh r3, [r3, #42] @ movhi
7013 00f2 9AB2 uxth r2, r3
7014 .loc 1 3884 23
7015 00f4 FB68 ldr r3, [r7, #12]
7016 00f6 1A85 strh r2, [r3, #40] @ movhi
3885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
7017 .loc 1 3885 23
7018 00f8 FB68 ldr r3, [r7, #12]
7019 00fa 3A68 ldr r2, [r7]
7020 00fc DA62 str r2, [r3, #44]
3886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
ARM GAS /tmp/cc5G5cqz.s page 193
7021 .loc 1 3886 23
7022 00fe FB68 ldr r3, [r7, #12]
7023 0100 174A ldr r2, .L349+4
7024 0102 5A63 str r2, [r3, #52]
3887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
7025 .loc 1 3888 11
7026 0104 FB68 ldr r3, [r7, #12]
7027 0106 1B68 ldr r3, [r3]
7028 0108 9B69 ldr r3, [r3, #24]
7029 010a 03F00803 and r3, r3, #8
7030 010e 082B cmp r3, #8
7031 0110 0CBF ite eq
7032 0112 0123 moveq r3, #1
7033 0114 0023 movne r3, #0
7034 0116 DBB2 uxtb r3, r3
7035 .loc 1 3888 9
7036 0118 FB75 strb r3, [r7, #23]
3889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET))
7037 .loc 1 3889 10
7038 011a FB68 ldr r3, [r7, #12]
7039 011c 1B68 ldr r3, [r3]
7040 011e 9B69 ldr r3, [r3, #24]
7041 0120 1B0C lsrs r3, r3, #16
7042 0122 DBB2 uxtb r3, r3
7043 0124 03F00103 and r3, r3, #1
7044 0128 DBB2 uxtb r3, r3
7045 .loc 1 3889 8
7046 012a 012B cmp r3, #1
7047 012c 06D1 bne .L348
7048 .loc 1 3889 54 discriminator 1
7049 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
7050 0130 002B cmp r3, #0
7051 0132 03D0 beq .L348
3890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */
3892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */
3893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
7052 .loc 1 3893 7
7053 0134 FB68 ldr r3, [r7, #12]
7054 0136 1B68 ldr r3, [r3]
7055 0138 0822 movs r2, #8
7056 013a DA61 str r2, [r3, #28]
7057 .L348:
3894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
3897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
7058 .loc 1 3897 5
7059 013c FB68 ldr r3, [r7, #12]
7060 013e 0022 movs r2, #0
7061 0140 83F84020 strb r2, [r3, #64]
3898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
3900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
3901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
3902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */
ARM GAS /tmp/cc5G5cqz.s page 194
3903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
7062 .loc 1 3903 5
7063 0144 48F20101 movw r1, #32769
7064 0148 F868 ldr r0, [r7, #12]
7065 014a FFF7FEFF bl I2C_Enable_IRQ
3904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
7066 .loc 1 3905 12
7067 014e 0023 movs r3, #0
7068 0150 00E0 b .L345
7069 .L342:
3906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7070 .loc 1 3909 12
7071 0152 0123 movs r3, #1
7072 .L345:
3910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7073 .loc 1 3911 1
7074 0154 1846 mov r0, r3
7075 0156 1837 adds r7, r7, #24
7076 .cfi_def_cfa_offset 8
7077 0158 BD46 mov sp, r7
7078 .cfi_def_cfa_register 13
7079 @ sp needed
7080 015a 80BD pop {r7, pc}
7081 .L350:
7082 .align 2
7083 .L349:
7084 015c 00000000 .word I2C_DMAAbort
7085 0160 00000000 .word I2C_Slave_ISR_IT
7086 .cfi_endproc
7087 .LFE157:
7089 .section .text.HAL_I2C_Slave_Seq_Transmit_DMA,"ax",%progbits
7090 .align 1
7091 .global HAL_I2C_Slave_Seq_Transmit_DMA
7092 .syntax unified
7093 .thumb
7094 .thumb_func
7096 HAL_I2C_Slave_Seq_Transmit_DMA:
7097 .LFB158:
3912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
3914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit
3915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
3916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
3917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
3918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
3919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
3920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
3921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
3922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
3923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t
3924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions)
3925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 195
7098 .loc 1 3925 1
7099 .cfi_startproc
7100 @ args = 0, pretend = 0, frame = 24
7101 @ frame_needed = 1, uses_anonymous_args = 0
7102 0000 80B5 push {r7, lr}
7103 .cfi_def_cfa_offset 8
7104 .cfi_offset 7, -8
7105 .cfi_offset 14, -4
7106 0002 86B0 sub sp, sp, #24
7107 .cfi_def_cfa_offset 32
7108 0004 00AF add r7, sp, #0
7109 .cfi_def_cfa_register 7
7110 0006 F860 str r0, [r7, #12]
7111 0008 B960 str r1, [r7, #8]
7112 000a 3B60 str r3, [r7]
7113 000c 1346 mov r3, r2 @ movhi
7114 000e FB80 strh r3, [r7, #6] @ movhi
3926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
3927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp;
3928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
3929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
3931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
3932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)
7115 .loc 1 3933 22
7116 0010 FB68 ldr r3, [r7, #12]
7117 0012 93F84130 ldrb r3, [r3, #65]
7118 0016 DBB2 uxtb r3, r3
7119 .loc 1 3933 30
7120 0018 03F02803 and r3, r3, #40
7121 .loc 1 3933 6
7122 001c 282B cmp r3, #40
7123 001e 40F02881 bne .L352
3934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
7124 .loc 1 3935 8
7125 0022 BB68 ldr r3, [r7, #8]
7126 0024 002B cmp r3, #0
7127 0026 02D0 beq .L353
7128 .loc 1 3935 25 discriminator 1
7129 0028 FB88 ldrh r3, [r7, #6]
7130 002a 002B cmp r3, #0
7131 002c 05D1 bne .L354
7132 .L353:
3936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
7133 .loc 1 3937 23
7134 002e FB68 ldr r3, [r7, #12]
7135 0030 4FF40072 mov r2, #512
7136 0034 5A64 str r2, [r3, #68]
3938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7137 .loc 1 3938 15
7138 0036 0123 movs r3, #1
7139 0038 1CE1 b .L355
7140 .L354:
3939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 196
3940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
3942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
7141 .loc 1 3942 5
7142 003a FB68 ldr r3, [r7, #12]
7143 003c 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
7144 0040 012B cmp r3, #1
7145 0042 01D1 bne .L356
7146 .loc 1 3942 5 is_stmt 0 discriminator 1
7147 0044 0223 movs r3, #2
7148 .loc 1 3942 5
7149 0046 15E1 b .L355
7150 .L356:
7151 .loc 1 3942 5 discriminator 2
7152 0048 FB68 ldr r3, [r7, #12]
7153 004a 0122 movs r2, #1
7154 004c 83F84020 strb r2, [r3, #64]
3943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */
3945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
7155 .loc 1 3945 5 is_stmt 1
7156 0050 48F20101 movw r1, #32769
7157 0054 F868 ldr r0, [r7, #12]
7158 0056 FFF7FEFF bl I2C_Disable_IRQ
3946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */
3948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */
3949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)
7159 .loc 1 3949 13
7160 005a FB68 ldr r3, [r7, #12]
7161 005c 93F84130 ldrb r3, [r3, #65]
7162 0060 DBB2 uxtb r3, r3
7163 .loc 1 3949 8
7164 0062 2A2B cmp r3, #42
7165 0064 2BD1 bne .L357
3950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */
3952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
7166 .loc 1 3952 7
7167 0066 0221 movs r1, #2
7168 0068 F868 ldr r0, [r7, #12]
7169 006a FFF7FEFF bl I2C_Disable_IRQ
3953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)
7170 .loc 1 3954 16
7171 006e FB68 ldr r3, [r7, #12]
7172 0070 1B68 ldr r3, [r3]
7173 .loc 1 3954 26
7174 0072 1B68 ldr r3, [r3]
7175 .loc 1 3954 32
7176 0074 03F40043 and r3, r3, #32768
7177 .loc 1 3954 10
7178 0078 B3F5004F cmp r3, #32768
7179 007c 4CD1 bne .L358
3955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
3957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
ARM GAS /tmp/cc5G5cqz.s page 197
7180 .loc 1 3957 17
7181 007e FB68 ldr r3, [r7, #12]
7182 0080 DB6B ldr r3, [r3, #60]
7183 .loc 1 3957 12
7184 0082 002B cmp r3, #0
7185 0084 48D0 beq .L358
3958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
7186 .loc 1 3959 15
7187 0086 FB68 ldr r3, [r7, #12]
7188 0088 1B68 ldr r3, [r3]
7189 .loc 1 3959 25
7190 008a 1A68 ldr r2, [r3]
7191 .loc 1 3959 15
7192 008c FB68 ldr r3, [r7, #12]
7193 008e 1B68 ldr r3, [r3]
7194 .loc 1 3959 31
7195 0090 22F40042 bic r2, r2, #32768
7196 0094 1A60 str r2, [r3]
3960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
3962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
3963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;
7197 .loc 1 3963 15
7198 0096 FB68 ldr r3, [r7, #12]
7199 0098 DB6B ldr r3, [r3, #60]
7200 .loc 1 3963 43
7201 009a 784A ldr r2, .L366
7202 009c 5A63 str r2, [r3, #52]
3964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */
3966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)
7203 .loc 1 3966 15
7204 009e FB68 ldr r3, [r7, #12]
7205 00a0 DB6B ldr r3, [r3, #60]
7206 00a2 1846 mov r0, r3
7207 00a4 FFF7FEFF bl HAL_DMA_Abort_IT
7208 00a8 0346 mov r3, r0
7209 .loc 1 3966 14 discriminator 1
7210 00aa 002B cmp r3, #0
7211 00ac 34D0 beq .L358
3967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
3969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);
7212 .loc 1 3969 17
7213 00ae FB68 ldr r3, [r7, #12]
7214 00b0 DB6B ldr r3, [r3, #60]
7215 .loc 1 3969 25
7216 00b2 5B6B ldr r3, [r3, #52]
7217 .loc 1 3969 49
7218 00b4 FA68 ldr r2, [r7, #12]
7219 00b6 D26B ldr r2, [r2, #60]
7220 .loc 1 3969 13
7221 00b8 1046 mov r0, r2
7222 00ba 9847 blx r3
7223 .LVL1:
7224 00bc 2CE0 b .L358
ARM GAS /tmp/cc5G5cqz.s page 198
7225 .L357:
3970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)
7226 .loc 1 3974 18
7227 00be FB68 ldr r3, [r7, #12]
7228 00c0 93F84130 ldrb r3, [r3, #65]
7229 00c4 DBB2 uxtb r3, r3
7230 .loc 1 3974 13
7231 00c6 292B cmp r3, #41
7232 00c8 26D1 bne .L358
3975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)
7233 .loc 1 3976 16
7234 00ca FB68 ldr r3, [r7, #12]
7235 00cc 1B68 ldr r3, [r3]
7236 .loc 1 3976 26
7237 00ce 1B68 ldr r3, [r3]
7238 .loc 1 3976 32
7239 00d0 03F48043 and r3, r3, #16384
7240 .loc 1 3976 10
7241 00d4 B3F5804F cmp r3, #16384
7242 00d8 1ED1 bne .L358
3977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
7243 .loc 1 3978 13
7244 00da FB68 ldr r3, [r7, #12]
7245 00dc 1B68 ldr r3, [r3]
7246 .loc 1 3978 23
7247 00de 1A68 ldr r2, [r3]
7248 .loc 1 3978 13
7249 00e0 FB68 ldr r3, [r7, #12]
7250 00e2 1B68 ldr r3, [r3]
7251 .loc 1 3978 29
7252 00e4 22F48042 bic r2, r2, #16384
7253 00e8 1A60 str r2, [r3]
3979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
3981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
7254 .loc 1 3981 17
7255 00ea FB68 ldr r3, [r7, #12]
7256 00ec 9B6B ldr r3, [r3, #56]
7257 .loc 1 3981 12
7258 00ee 002B cmp r3, #0
7259 00f0 12D0 beq .L358
3982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
3984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
3985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;
7260 .loc 1 3985 15
7261 00f2 FB68 ldr r3, [r7, #12]
7262 00f4 9B6B ldr r3, [r3, #56]
7263 .loc 1 3985 43
7264 00f6 614A ldr r2, .L366
7265 00f8 5A63 str r2, [r3, #52]
ARM GAS /tmp/cc5G5cqz.s page 199
3986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
3987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */
3988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)
7266 .loc 1 3988 15
7267 00fa FB68 ldr r3, [r7, #12]
7268 00fc 9B6B ldr r3, [r3, #56]
7269 00fe 1846 mov r0, r3
7270 0100 FFF7FEFF bl HAL_DMA_Abort_IT
7271 0104 0346 mov r3, r0
7272 .loc 1 3988 14 discriminator 1
7273 0106 002B cmp r3, #0
7274 0108 06D0 beq .L358
3989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
3991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);
7275 .loc 1 3991 17
7276 010a FB68 ldr r3, [r7, #12]
7277 010c 9B6B ldr r3, [r3, #56]
7278 .loc 1 3991 25
7279 010e 5B6B ldr r3, [r3, #52]
7280 .loc 1 3991 49
7281 0110 FA68 ldr r2, [r7, #12]
7282 0112 926B ldr r2, [r2, #56]
7283 .loc 1 3991 13
7284 0114 1046 mov r0, r2
7285 0116 9847 blx r3
7286 .LVL2:
7287 .L358:
3992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
3996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
3997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
3998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
3999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN;
7288 .loc 1 4001 21
7289 0118 FB68 ldr r3, [r7, #12]
7290 011a 2922 movs r2, #41
7291 011c 83F84120 strb r2, [r3, #65]
4002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
7292 .loc 1 4002 21
7293 0120 FB68 ldr r3, [r7, #12]
7294 0122 2022 movs r2, #32
7295 0124 83F84220 strb r2, [r3, #66]
4003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
7296 .loc 1 4003 21
7297 0128 FB68 ldr r3, [r7, #12]
7298 012a 0022 movs r2, #0
7299 012c 5A64 str r2, [r3, #68]
4004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
4006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
7300 .loc 1 4006 9
7301 012e FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 200
7302 0130 1B68 ldr r3, [r3]
7303 .loc 1 4006 19
7304 0132 5A68 ldr r2, [r3, #4]
7305 .loc 1 4006 9
7306 0134 FB68 ldr r3, [r7, #12]
7307 0136 1B68 ldr r3, [r3]
7308 .loc 1 4006 25
7309 0138 22F40042 bic r2, r2, #32768
7310 013c 5A60 str r2, [r3, #4]
4007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
4009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
7311 .loc 1 4009 23
7312 013e FB68 ldr r3, [r7, #12]
7313 0140 BA68 ldr r2, [r7, #8]
7314 0142 5A62 str r2, [r3, #36]
4010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
7315 .loc 1 4010 23
7316 0144 FB68 ldr r3, [r7, #12]
7317 0146 FA88 ldrh r2, [r7, #6] @ movhi
7318 0148 5A85 strh r2, [r3, #42] @ movhi
4011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
7319 .loc 1 4011 29
7320 014a FB68 ldr r3, [r7, #12]
7321 014c 5B8D ldrh r3, [r3, #42] @ movhi
7322 014e 9AB2 uxth r2, r3
7323 .loc 1 4011 23
7324 0150 FB68 ldr r3, [r7, #12]
7325 0152 1A85 strh r2, [r3, #40] @ movhi
4012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
7326 .loc 1 4012 23
7327 0154 FB68 ldr r3, [r7, #12]
7328 0156 3A68 ldr r2, [r7]
7329 0158 DA62 str r2, [r3, #44]
4013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA;
7330 .loc 1 4013 23
7331 015a FB68 ldr r3, [r7, #12]
7332 015c 484A ldr r2, .L366+4
7333 015e 5A63 str r2, [r3, #52]
4014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
7334 .loc 1 4015 13
7335 0160 FB68 ldr r3, [r7, #12]
7336 0162 9B6B ldr r3, [r3, #56]
7337 .loc 1 4015 8
7338 0164 002B cmp r3, #0
7339 0166 20D0 beq .L359
4016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
4018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt;
7340 .loc 1 4018 11
7341 0168 FB68 ldr r3, [r7, #12]
7342 016a 9B6B ldr r3, [r3, #56]
7343 .loc 1 4018 38
7344 016c 454A ldr r2, .L366+8
7345 016e 9A62 str r2, [r3, #40]
4019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 201
4020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
4021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
7346 .loc 1 4021 11
7347 0170 FB68 ldr r3, [r7, #12]
7348 0172 9B6B ldr r3, [r3, #56]
7349 .loc 1 4021 39
7350 0174 444A ldr r2, .L366+12
7351 0176 1A63 str r2, [r3, #48]
4022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
4024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL;
7352 .loc 1 4024 11
7353 0178 FB68 ldr r3, [r7, #12]
7354 017a 9B6B ldr r3, [r3, #56]
7355 .loc 1 4024 42
7356 017c 0022 movs r2, #0
7357 017e DA62 str r2, [r3, #44]
4025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
7358 .loc 1 4025 11
7359 0180 FB68 ldr r3, [r7, #12]
7360 0182 9B6B ldr r3, [r3, #56]
7361 .loc 1 4025 39
7362 0184 0022 movs r2, #0
7363 0186 5A63 str r2, [r3, #52]
4026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
4028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX
7364 .loc 1 4028 23
7365 0188 FB68 ldr r3, [r7, #12]
7366 018a 986B ldr r0, [r3, #56]
7367 018c B968 ldr r1, [r7, #8]
7368 .loc 1 4028 86
7369 018e FB68 ldr r3, [r7, #12]
7370 0190 1B68 ldr r3, [r3]
7371 .loc 1 4028 81
7372 0192 2833 adds r3, r3, #40
7373 .loc 1 4028 23
7374 0194 1A46 mov r2, r3
4029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
7375 .loc 1 4029 44
7376 0196 FB68 ldr r3, [r7, #12]
7377 0198 1B8D ldrh r3, [r3, #40]
4028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize);
7378 .loc 1 4028 23
7379 019a FFF7FEFF bl HAL_DMA_Start_IT
7380 019e 0346 mov r3, r0
7381 01a0 FB75 strb r3, [r7, #23]
4030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
4034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
4035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
4039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 202
4040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
7382 .loc 1 4046 8
7383 01a2 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
7384 01a4 002B cmp r3, #0
7385 01a6 36D1 bne .L361
7386 01a8 13E0 b .L364
7387 .L359:
4034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
7388 .loc 1 4034 23
7389 01aa FB68 ldr r3, [r7, #12]
7390 01ac 2822 movs r2, #40
7391 01ae 83F84120 strb r2, [r3, #65]
4035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7392 .loc 1 4035 23
7393 01b2 FB68 ldr r3, [r7, #12]
7394 01b4 0022 movs r2, #0
7395 01b6 83F84220 strb r2, [r3, #66]
4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7396 .loc 1 4038 11
7397 01ba FB68 ldr r3, [r7, #12]
7398 01bc 5B6C ldr r3, [r3, #68]
4038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7399 .loc 1 4038 23
7400 01be 43F08002 orr r2, r3, #128
7401 01c2 FB68 ldr r3, [r7, #12]
7402 01c4 5A64 str r2, [r3, #68]
4041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7403 .loc 1 4041 7
7404 01c6 FB68 ldr r3, [r7, #12]
7405 01c8 0022 movs r2, #0
7406 01ca 83F84020 strb r2, [r3, #64]
4043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7407 .loc 1 4043 14
7408 01ce 0123 movs r3, #1
7409 01d0 50E0 b .L355
7410 .L364:
4047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
4049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
7411 .loc 1 4049 11
7412 01d2 FB68 ldr r3, [r7, #12]
7413 01d4 5B8D ldrh r3, [r3, #42] @ movhi
7414 01d6 9AB2 uxth r2, r3
7415 .loc 1 4049 30
7416 01d8 FB68 ldr r3, [r7, #12]
7417 01da 1B8D ldrh r3, [r3, #40]
7418 .loc 1 4049 23
7419 01dc D31A subs r3, r2, r3
7420 01de 9AB2 uxth r2, r3
7421 01e0 FB68 ldr r3, [r7, #12]
7422 01e2 5A85 strh r2, [r3, #42] @ movhi
ARM GAS /tmp/cc5G5cqz.s page 203
4050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */
4052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0;
7423 .loc 1 4052 22
7424 01e4 FB68 ldr r3, [r7, #12]
7425 01e6 0022 movs r2, #0
7426 01e8 1A85 strh r2, [r3, #40] @ movhi
4053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
4057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
4058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
4062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
7427 .loc 1 4069 11
7428 01ea FB68 ldr r3, [r7, #12]
7429 01ec 1B68 ldr r3, [r3]
7430 01ee 9B69 ldr r3, [r3, #24]
7431 01f0 03F00803 and r3, r3, #8
7432 01f4 082B cmp r3, #8
7433 01f6 0CBF ite eq
7434 01f8 0123 moveq r3, #1
7435 01fa 0023 movne r3, #0
7436 01fc DBB2 uxtb r3, r3
7437 .loc 1 4069 9
7438 01fe BB75 strb r3, [r7, #22]
4070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET))
7439 .loc 1 4070 10
7440 0200 FB68 ldr r3, [r7, #12]
7441 0202 1B68 ldr r3, [r3]
7442 0204 9B69 ldr r3, [r3, #24]
7443 0206 1B0C lsrs r3, r3, #16
7444 0208 DBB2 uxtb r3, r3
7445 020a 03F00103 and r3, r3, #1
7446 020e DBB2 uxtb r3, r3
7447 .loc 1 4070 8
7448 0210 012B cmp r3, #1
7449 0212 1BD1 bne .L363
7450 0214 13E0 b .L365
7451 .L361:
4057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
7452 .loc 1 4057 23
7453 0216 FB68 ldr r3, [r7, #12]
7454 0218 2822 movs r2, #40
7455 021a 83F84120 strb r2, [r3, #65]
4058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7456 .loc 1 4058 23
ARM GAS /tmp/cc5G5cqz.s page 204
7457 021e FB68 ldr r3, [r7, #12]
7458 0220 0022 movs r2, #0
7459 0222 83F84220 strb r2, [r3, #66]
4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7460 .loc 1 4061 11
7461 0226 FB68 ldr r3, [r7, #12]
7462 0228 5B6C ldr r3, [r3, #68]
4061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7463 .loc 1 4061 23
7464 022a 43F01002 orr r2, r3, #16
7465 022e FB68 ldr r3, [r7, #12]
7466 0230 5A64 str r2, [r3, #68]
4064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7467 .loc 1 4064 7
7468 0232 FB68 ldr r3, [r7, #12]
7469 0234 0022 movs r2, #0
7470 0236 83F84020 strb r2, [r3, #64]
4066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7471 .loc 1 4066 14
7472 023a 0123 movs r3, #1
7473 023c 1AE0 b .L355
7474 .L365:
7475 .loc 1 4070 54 discriminator 1
7476 023e BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
7477 0240 002B cmp r3, #0
7478 0242 03D0 beq .L363
4071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */
4073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */
4074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
7479 .loc 1 4074 7
7480 0244 FB68 ldr r3, [r7, #12]
7481 0246 1B68 ldr r3, [r3]
7482 0248 0822 movs r2, #8
7483 024a DA61 str r2, [r3, #28]
7484 .L363:
4075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
7485 .loc 1 4078 5
7486 024c FB68 ldr r3, [r7, #12]
7487 024e 0022 movs r2, #0
7488 0250 83F84020 strb r2, [r3, #64]
4079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
4081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
7489 .loc 1 4081 9
7490 0254 FB68 ldr r3, [r7, #12]
7491 0256 1B68 ldr r3, [r3]
7492 .loc 1 4081 19
7493 0258 1A68 ldr r2, [r3]
7494 .loc 1 4081 9
7495 025a FB68 ldr r3, [r7, #12]
7496 025c 1B68 ldr r3, [r3]
7497 .loc 1 4081 25
7498 025e 42F48042 orr r2, r2, #16384
ARM GAS /tmp/cc5G5cqz.s page 205
7499 0262 1A60 str r2, [r3]
4082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
4084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
4085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
4086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */
4087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
7500 .loc 1 4087 5
7501 0264 4FF40041 mov r1, #32768
7502 0268 F868 ldr r0, [r7, #12]
7503 026a FFF7FEFF bl I2C_Enable_IRQ
4088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
7504 .loc 1 4089 12
7505 026e 0023 movs r3, #0
7506 0270 00E0 b .L355
7507 .L352:
4090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7508 .loc 1 4093 12
7509 0272 0123 movs r3, #1
7510 .L355:
4094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7511 .loc 1 4095 1
7512 0274 1846 mov r0, r3
7513 0276 1837 adds r7, r7, #24
7514 .cfi_def_cfa_offset 8
7515 0278 BD46 mov sp, r7
7516 .cfi_def_cfa_register 13
7517 @ sp needed
7518 027a 80BD pop {r7, pc}
7519 .L367:
7520 .align 2
7521 .L366:
7522 027c 00000000 .word I2C_DMAAbort
7523 0280 00000000 .word I2C_Slave_ISR_DMA
7524 0284 00000000 .word I2C_DMASlaveTransmitCplt
7525 0288 00000000 .word I2C_DMAError
7526 .cfi_endproc
7527 .LFE158:
7529 .section .text.HAL_I2C_Slave_Seq_Receive_IT,"ax",%progbits
7530 .align 1
7531 .global HAL_I2C_Slave_Seq_Receive_IT
7532 .syntax unified
7533 .thumb
7534 .thumb_func
7536 HAL_I2C_Slave_Seq_Receive_IT:
7537 .LFB159:
4096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with
4099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
4100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
ARM GAS /tmp/cc5G5cqz.s page 206
4102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
4103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
4104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
4105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Si
4108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions)
4109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7538 .loc 1 4109 1
7539 .cfi_startproc
7540 @ args = 0, pretend = 0, frame = 24
7541 @ frame_needed = 1, uses_anonymous_args = 0
7542 0000 80B5 push {r7, lr}
7543 .cfi_def_cfa_offset 8
7544 .cfi_offset 7, -8
7545 .cfi_offset 14, -4
7546 0002 86B0 sub sp, sp, #24
7547 .cfi_def_cfa_offset 32
7548 0004 00AF add r7, sp, #0
7549 .cfi_def_cfa_register 7
7550 0006 F860 str r0, [r7, #12]
7551 0008 B960 str r1, [r7, #8]
7552 000a 3B60 str r3, [r7]
7553 000c 1346 mov r3, r2 @ movhi
7554 000e FB80 strh r3, [r7, #6] @ movhi
4110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
4111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp;
4112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
4114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
4115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)
7555 .loc 1 4116 22
7556 0010 FB68 ldr r3, [r7, #12]
7557 0012 93F84130 ldrb r3, [r3, #65]
7558 0016 DBB2 uxtb r3, r3
7559 .loc 1 4116 30
7560 0018 03F02803 and r3, r3, #40
7561 .loc 1 4116 6
7562 001c 282B cmp r3, #40
7563 001e 40F09880 bne .L369
4117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
7564 .loc 1 4118 8
7565 0022 BB68 ldr r3, [r7, #8]
7566 0024 002B cmp r3, #0
7567 0026 02D0 beq .L370
7568 .loc 1 4118 25 discriminator 1
7569 0028 FB88 ldrh r3, [r7, #6]
7570 002a 002B cmp r3, #0
7571 002c 05D1 bne .L371
7572 .L370:
4119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
7573 .loc 1 4120 23
7574 002e FB68 ldr r3, [r7, #12]
7575 0030 4FF40072 mov r2, #512
ARM GAS /tmp/cc5G5cqz.s page 207
7576 0034 5A64 str r2, [r3, #68]
4121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7577 .loc 1 4121 15
7578 0036 0123 movs r3, #1
7579 0038 8CE0 b .L372
7580 .L371:
4122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */
4125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
7581 .loc 1 4125 5
7582 003a 48F20201 movw r1, #32770
7583 003e F868 ldr r0, [r7, #12]
7584 0040 FFF7FEFF bl I2C_Disable_IRQ
4126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
4128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
7585 .loc 1 4128 5
7586 0044 FB68 ldr r3, [r7, #12]
7587 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
7588 004a 012B cmp r3, #1
7589 004c 01D1 bne .L373
7590 .loc 1 4128 5 is_stmt 0 discriminator 1
7591 004e 0223 movs r3, #2
7592 .loc 1 4128 5
7593 0050 80E0 b .L372
7594 .L373:
7595 .loc 1 4128 5 discriminator 2
7596 0052 FB68 ldr r3, [r7, #12]
7597 0054 0122 movs r2, #1
7598 0056 83F84020 strb r2, [r3, #64]
4129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */
4131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */
4132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)
7599 .loc 1 4132 13 is_stmt 1
7600 005a FB68 ldr r3, [r7, #12]
7601 005c 93F84130 ldrb r3, [r3, #65]
7602 0060 DBB2 uxtb r3, r3
7603 .loc 1 4132 8
7604 0062 292B cmp r3, #41
7605 0064 2AD1 bne .L374
4133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */
4135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
7606 .loc 1 4135 7
7607 0066 0121 movs r1, #1
7608 0068 F868 ldr r0, [r7, #12]
7609 006a FFF7FEFF bl I2C_Disable_IRQ
4136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)
7610 .loc 1 4137 16
7611 006e FB68 ldr r3, [r7, #12]
7612 0070 1B68 ldr r3, [r3]
7613 .loc 1 4137 26
7614 0072 1B68 ldr r3, [r3]
7615 .loc 1 4137 32
ARM GAS /tmp/cc5G5cqz.s page 208
7616 0074 03F48043 and r3, r3, #16384
7617 .loc 1 4137 10
7618 0078 B3F5804F cmp r3, #16384
7619 007c 1ED1 bne .L374
4138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
7620 .loc 1 4139 13
7621 007e FB68 ldr r3, [r7, #12]
7622 0080 1B68 ldr r3, [r3]
7623 .loc 1 4139 23
7624 0082 1A68 ldr r2, [r3]
7625 .loc 1 4139 13
7626 0084 FB68 ldr r3, [r7, #12]
7627 0086 1B68 ldr r3, [r3]
7628 .loc 1 4139 29
7629 0088 22F48042 bic r2, r2, #16384
7630 008c 1A60 str r2, [r3]
4140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
4142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
7631 .loc 1 4142 17
7632 008e FB68 ldr r3, [r7, #12]
7633 0090 9B6B ldr r3, [r3, #56]
7634 .loc 1 4142 12
7635 0092 002B cmp r3, #0
7636 0094 12D0 beq .L374
4143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
4145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
4146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;
7637 .loc 1 4146 15
7638 0096 FB68 ldr r3, [r7, #12]
7639 0098 9B6B ldr r3, [r3, #56]
7640 .loc 1 4146 43
7641 009a 304A ldr r2, .L376
7642 009c 5A63 str r2, [r3, #52]
4147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */
4149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)
7643 .loc 1 4149 15
7644 009e FB68 ldr r3, [r7, #12]
7645 00a0 9B6B ldr r3, [r3, #56]
7646 00a2 1846 mov r0, r3
7647 00a4 FFF7FEFF bl HAL_DMA_Abort_IT
7648 00a8 0346 mov r3, r0
7649 .loc 1 4149 14 discriminator 1
7650 00aa 002B cmp r3, #0
7651 00ac 06D0 beq .L374
4150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
4152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);
7652 .loc 1 4152 17
7653 00ae FB68 ldr r3, [r7, #12]
7654 00b0 9B6B ldr r3, [r3, #56]
7655 .loc 1 4152 25
7656 00b2 5B6B ldr r3, [r3, #52]
7657 .loc 1 4152 49
ARM GAS /tmp/cc5G5cqz.s page 209
7658 00b4 FA68 ldr r2, [r7, #12]
7659 00b6 926B ldr r2, [r2, #56]
7660 .loc 1 4152 13
7661 00b8 1046 mov r0, r2
7662 00ba 9847 blx r3
7663 .LVL3:
7664 .L374:
4153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN;
7665 .loc 1 4158 21
7666 00bc FB68 ldr r3, [r7, #12]
7667 00be 2A22 movs r2, #42
7668 00c0 83F84120 strb r2, [r3, #65]
4159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
7669 .loc 1 4159 21
7670 00c4 FB68 ldr r3, [r7, #12]
7671 00c6 2022 movs r2, #32
7672 00c8 83F84220 strb r2, [r3, #66]
4160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
7673 .loc 1 4160 21
7674 00cc FB68 ldr r3, [r7, #12]
7675 00ce 0022 movs r2, #0
7676 00d0 5A64 str r2, [r3, #68]
4161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
4163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
7677 .loc 1 4163 9
7678 00d2 FB68 ldr r3, [r7, #12]
7679 00d4 1B68 ldr r3, [r3]
7680 .loc 1 4163 19
7681 00d6 5A68 ldr r2, [r3, #4]
7682 .loc 1 4163 9
7683 00d8 FB68 ldr r3, [r7, #12]
7684 00da 1B68 ldr r3, [r3]
7685 .loc 1 4163 25
7686 00dc 22F40042 bic r2, r2, #32768
7687 00e0 5A60 str r2, [r3, #4]
4164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
4166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
7688 .loc 1 4166 23
7689 00e2 FB68 ldr r3, [r7, #12]
7690 00e4 BA68 ldr r2, [r7, #8]
7691 00e6 5A62 str r2, [r3, #36]
4167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
7692 .loc 1 4167 23
7693 00e8 FB68 ldr r3, [r7, #12]
7694 00ea FA88 ldrh r2, [r7, #6] @ movhi
7695 00ec 5A85 strh r2, [r3, #42] @ movhi
4168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
7696 .loc 1 4168 29
7697 00ee FB68 ldr r3, [r7, #12]
7698 00f0 5B8D ldrh r3, [r3, #42] @ movhi
ARM GAS /tmp/cc5G5cqz.s page 210
7699 00f2 9AB2 uxth r2, r3
7700 .loc 1 4168 23
7701 00f4 FB68 ldr r3, [r7, #12]
7702 00f6 1A85 strh r2, [r3, #40] @ movhi
4169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
7703 .loc 1 4169 23
7704 00f8 FB68 ldr r3, [r7, #12]
7705 00fa 3A68 ldr r2, [r7]
7706 00fc DA62 str r2, [r3, #44]
4170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
7707 .loc 1 4170 23
7708 00fe FB68 ldr r3, [r7, #12]
7709 0100 174A ldr r2, .L376+4
7710 0102 5A63 str r2, [r3, #52]
4171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
7711 .loc 1 4172 11
7712 0104 FB68 ldr r3, [r7, #12]
7713 0106 1B68 ldr r3, [r3]
7714 0108 9B69 ldr r3, [r3, #24]
7715 010a 03F00803 and r3, r3, #8
7716 010e 082B cmp r3, #8
7717 0110 0CBF ite eq
7718 0112 0123 moveq r3, #1
7719 0114 0023 movne r3, #0
7720 0116 DBB2 uxtb r3, r3
7721 .loc 1 4172 9
7722 0118 FB75 strb r3, [r7, #23]
4173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET))
7723 .loc 1 4173 10
7724 011a FB68 ldr r3, [r7, #12]
7725 011c 1B68 ldr r3, [r3]
7726 011e 9B69 ldr r3, [r3, #24]
7727 0120 1B0C lsrs r3, r3, #16
7728 0122 DBB2 uxtb r3, r3
7729 0124 03F00103 and r3, r3, #1
7730 0128 DBB2 uxtb r3, r3
7731 .loc 1 4173 8
7732 012a 002B cmp r3, #0
7733 012c 06D1 bne .L375
7734 .loc 1 4173 55 discriminator 1
7735 012e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
7736 0130 002B cmp r3, #0
7737 0132 03D0 beq .L375
4174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */
4176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */
4177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
7738 .loc 1 4177 7
7739 0134 FB68 ldr r3, [r7, #12]
7740 0136 1B68 ldr r3, [r3]
7741 0138 0822 movs r2, #8
7742 013a DA61 str r2, [r3, #28]
7743 .L375:
4178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
ARM GAS /tmp/cc5G5cqz.s page 211
4181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
7744 .loc 1 4181 5
7745 013c FB68 ldr r3, [r7, #12]
7746 013e 0022 movs r2, #0
7747 0140 83F84020 strb r2, [r3, #64]
4182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
4184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
4185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
4186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */
4187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
7748 .loc 1 4187 5
7749 0144 48F20201 movw r1, #32770
7750 0148 F868 ldr r0, [r7, #12]
7751 014a FFF7FEFF bl I2C_Enable_IRQ
4188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
7752 .loc 1 4189 12
7753 014e 0023 movs r3, #0
7754 0150 00E0 b .L372
7755 .L369:
4190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7756 .loc 1 4193 12
7757 0152 0123 movs r3, #1
7758 .L372:
4194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7759 .loc 1 4195 1
7760 0154 1846 mov r0, r3
7761 0156 1837 adds r7, r7, #24
7762 .cfi_def_cfa_offset 8
7763 0158 BD46 mov sp, r7
7764 .cfi_def_cfa_register 13
7765 @ sp needed
7766 015a 80BD pop {r7, pc}
7767 .L377:
7768 .align 2
7769 .L376:
7770 015c 00000000 .word I2C_DMAAbort
7771 0160 00000000 .word I2C_Slave_ISR_IT
7772 .cfi_endproc
7773 .LFE159:
7775 .section .text.HAL_I2C_Slave_Seq_Receive_DMA,"ax",%progbits
7776 .align 1
7777 .global HAL_I2C_Slave_Seq_Receive_DMA
7778 .syntax unified
7779 .thumb
7780 .thumb_func
7782 HAL_I2C_Slave_Seq_Receive_DMA:
7783 .LFB160:
4196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with
4199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during
ARM GAS /tmp/cc5G5cqz.s page 212
4200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param pData Pointer to data buffer
4203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Amount of data to be sent
4204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS
4205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S
4208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t XferOptions)
4209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7784 .loc 1 4209 1
7785 .cfi_startproc
7786 @ args = 0, pretend = 0, frame = 24
7787 @ frame_needed = 1, uses_anonymous_args = 0
7788 0000 80B5 push {r7, lr}
7789 .cfi_def_cfa_offset 8
7790 .cfi_offset 7, -8
7791 .cfi_offset 14, -4
7792 0002 86B0 sub sp, sp, #24
7793 .cfi_def_cfa_offset 32
7794 0004 00AF add r7, sp, #0
7795 .cfi_def_cfa_register 7
7796 0006 F860 str r0, [r7, #12]
7797 0008 B960 str r1, [r7, #8]
7798 000a 3B60 str r3, [r7]
7799 000c 1346 mov r3, r2 @ movhi
7800 000e FB80 strh r3, [r7, #6] @ movhi
4210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
4211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** FlagStatus tmp;
4212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus;
4213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
4215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
4216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)
7801 .loc 1 4217 22
7802 0010 FB68 ldr r3, [r7, #12]
7803 0012 93F84130 ldrb r3, [r3, #65]
7804 0016 DBB2 uxtb r3, r3
7805 .loc 1 4217 30
7806 0018 03F02803 and r3, r3, #40
7807 .loc 1 4217 6
7808 001c 282B cmp r3, #40
7809 001e 40F02881 bne .L379
4218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U))
7810 .loc 1 4219 8
7811 0022 BB68 ldr r3, [r7, #8]
7812 0024 002B cmp r3, #0
7813 0026 02D0 beq .L380
7814 .loc 1 4219 25 discriminator 1
7815 0028 FB88 ldrh r3, [r7, #6]
7816 002a 002B cmp r3, #0
7817 002c 05D1 bne .L381
7818 .L380:
4220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM;
ARM GAS /tmp/cc5G5cqz.s page 213
7819 .loc 1 4221 23
7820 002e FB68 ldr r3, [r7, #12]
7821 0030 4FF40072 mov r2, #512
7822 0034 5A64 str r2, [r3, #68]
4222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
7823 .loc 1 4222 15
7824 0036 0123 movs r3, #1
7825 0038 1CE1 b .L382
7826 .L381:
4223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */
4226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
7827 .loc 1 4226 5
7828 003a 48F20201 movw r1, #32770
7829 003e F868 ldr r0, [r7, #12]
7830 0040 FFF7FEFF bl I2C_Disable_IRQ
4227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
4229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
7831 .loc 1 4229 5
7832 0044 FB68 ldr r3, [r7, #12]
7833 0046 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
7834 004a 012B cmp r3, #1
7835 004c 01D1 bne .L383
7836 .loc 1 4229 5 is_stmt 0 discriminator 1
7837 004e 0223 movs r3, #2
7838 .loc 1 4229 5
7839 0050 10E1 b .L382
7840 .L383:
7841 .loc 1 4229 5 discriminator 2
7842 0052 FB68 ldr r3, [r7, #12]
7843 0054 0122 movs r2, #1
7844 0056 83F84020 strb r2, [r3, #64]
4230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */
4232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */
4233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)
7845 .loc 1 4233 13 is_stmt 1
7846 005a FB68 ldr r3, [r7, #12]
7847 005c 93F84130 ldrb r3, [r3, #65]
7848 0060 DBB2 uxtb r3, r3
7849 .loc 1 4233 8
7850 0062 292B cmp r3, #41
7851 0064 2BD1 bne .L384
4234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable associated Interrupts */
4236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
7852 .loc 1 4236 7
7853 0066 0121 movs r1, #1
7854 0068 F868 ldr r0, [r7, #12]
7855 006a FFF7FEFF bl I2C_Disable_IRQ
4237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)
7856 .loc 1 4238 16
7857 006e FB68 ldr r3, [r7, #12]
7858 0070 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 214
7859 .loc 1 4238 26
7860 0072 1B68 ldr r3, [r3]
7861 .loc 1 4238 32
7862 0074 03F48043 and r3, r3, #16384
7863 .loc 1 4238 10
7864 0078 B3F5804F cmp r3, #16384
7865 007c 4CD1 bne .L385
4239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
4241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
7866 .loc 1 4241 17
7867 007e FB68 ldr r3, [r7, #12]
7868 0080 9B6B ldr r3, [r3, #56]
7869 .loc 1 4241 12
7870 0082 002B cmp r3, #0
7871 0084 48D0 beq .L385
4242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
7872 .loc 1 4243 15
7873 0086 FB68 ldr r3, [r7, #12]
7874 0088 1B68 ldr r3, [r3]
7875 .loc 1 4243 25
7876 008a 1A68 ldr r2, [r3]
7877 .loc 1 4243 15
7878 008c FB68 ldr r3, [r7, #12]
7879 008e 1B68 ldr r3, [r3]
7880 .loc 1 4243 31
7881 0090 22F48042 bic r2, r2, #16384
7882 0094 1A60 str r2, [r3]
4244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
4246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
4247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;
7883 .loc 1 4247 15
7884 0096 FB68 ldr r3, [r7, #12]
7885 0098 9B6B ldr r3, [r3, #56]
7886 .loc 1 4247 43
7887 009a 784A ldr r2, .L393
7888 009c 5A63 str r2, [r3, #52]
4248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */
4250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)
7889 .loc 1 4250 15
7890 009e FB68 ldr r3, [r7, #12]
7891 00a0 9B6B ldr r3, [r3, #56]
7892 00a2 1846 mov r0, r3
7893 00a4 FFF7FEFF bl HAL_DMA_Abort_IT
7894 00a8 0346 mov r3, r0
7895 .loc 1 4250 14 discriminator 1
7896 00aa 002B cmp r3, #0
7897 00ac 34D0 beq .L385
4251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
4253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);
7898 .loc 1 4253 17
7899 00ae FB68 ldr r3, [r7, #12]
7900 00b0 9B6B ldr r3, [r3, #56]
ARM GAS /tmp/cc5G5cqz.s page 215
7901 .loc 1 4253 25
7902 00b2 5B6B ldr r3, [r3, #52]
7903 .loc 1 4253 49
7904 00b4 FA68 ldr r2, [r7, #12]
7905 00b6 926B ldr r2, [r2, #56]
7906 .loc 1 4253 13
7907 00b8 1046 mov r0, r2
7908 00ba 9847 blx r3
7909 .LVL4:
7910 00bc 2CE0 b .L385
7911 .L384:
4254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)
7912 .loc 1 4258 18
7913 00be FB68 ldr r3, [r7, #12]
7914 00c0 93F84130 ldrb r3, [r3, #65]
7915 00c4 DBB2 uxtb r3, r3
7916 .loc 1 4258 13
7917 00c6 2A2B cmp r3, #42
7918 00c8 26D1 bne .L385
4259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)
7919 .loc 1 4260 16
7920 00ca FB68 ldr r3, [r7, #12]
7921 00cc 1B68 ldr r3, [r3]
7922 .loc 1 4260 26
7923 00ce 1B68 ldr r3, [r3]
7924 .loc 1 4260 32
7925 00d0 03F40043 and r3, r3, #32768
7926 .loc 1 4260 10
7927 00d4 B3F5004F cmp r3, #32768
7928 00d8 1ED1 bne .L385
4261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
7929 .loc 1 4262 13
7930 00da FB68 ldr r3, [r7, #12]
7931 00dc 1B68 ldr r3, [r3]
7932 .loc 1 4262 23
7933 00de 1A68 ldr r2, [r3]
7934 .loc 1 4262 13
7935 00e0 FB68 ldr r3, [r7, #12]
7936 00e2 1B68 ldr r3, [r3]
7937 .loc 1 4262 29
7938 00e4 22F40042 bic r2, r2, #32768
7939 00e8 1A60 str r2, [r3]
4263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA Xfer if any */
4265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
7940 .loc 1 4265 17
7941 00ea FB68 ldr r3, [r7, #12]
7942 00ec DB6B ldr r3, [r3, #60]
7943 .loc 1 4265 12
7944 00ee 002B cmp r3, #0
7945 00f0 12D0 beq .L385
ARM GAS /tmp/cc5G5cqz.s page 216
4266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
4268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
4269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;
7946 .loc 1 4269 15
7947 00f2 FB68 ldr r3, [r7, #12]
7948 00f4 DB6B ldr r3, [r3, #60]
7949 .loc 1 4269 43
7950 00f6 614A ldr r2, .L393
7951 00f8 5A63 str r2, [r3, #52]
4270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */
4272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)
7952 .loc 1 4272 15
7953 00fa FB68 ldr r3, [r7, #12]
7954 00fc DB6B ldr r3, [r3, #60]
7955 00fe 1846 mov r0, r3
7956 0100 FFF7FEFF bl HAL_DMA_Abort_IT
7957 0104 0346 mov r3, r0
7958 .loc 1 4272 14 discriminator 1
7959 0106 002B cmp r3, #0
7960 0108 06D0 beq .L385
4273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
4275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);
7961 .loc 1 4275 17
7962 010a FB68 ldr r3, [r7, #12]
7963 010c DB6B ldr r3, [r3, #60]
7964 .loc 1 4275 25
7965 010e 5B6B ldr r3, [r3, #52]
7966 .loc 1 4275 49
7967 0110 FA68 ldr r2, [r7, #12]
7968 0112 D26B ldr r2, [r2, #60]
7969 .loc 1 4275 13
7970 0114 1046 mov r0, r2
7971 0116 9847 blx r3
7972 .LVL5:
7973 .L385:
4276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
4283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN;
7974 .loc 1 4285 21
7975 0118 FB68 ldr r3, [r7, #12]
7976 011a 2A22 movs r2, #42
7977 011c 83F84120 strb r2, [r3, #65]
4286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE;
7978 .loc 1 4286 21
7979 0120 FB68 ldr r3, [r7, #12]
7980 0122 2022 movs r2, #32
7981 0124 83F84220 strb r2, [r3, #66]
ARM GAS /tmp/cc5G5cqz.s page 217
4287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
7982 .loc 1 4287 21
7983 0128 FB68 ldr r3, [r7, #12]
7984 012a 0022 movs r2, #0
7985 012c 5A64 str r2, [r3, #68]
4288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable Address Acknowledge */
4290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK;
7986 .loc 1 4290 9
7987 012e FB68 ldr r3, [r7, #12]
7988 0130 1B68 ldr r3, [r3]
7989 .loc 1 4290 19
7990 0132 5A68 ldr r2, [r3, #4]
7991 .loc 1 4290 9
7992 0134 FB68 ldr r3, [r7, #12]
7993 0136 1B68 ldr r3, [r3]
7994 .loc 1 4290 25
7995 0138 22F40042 bic r2, r2, #32768
7996 013c 5A60 str r2, [r3, #4]
4291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare transfer parameters */
4293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr = pData;
7997 .loc 1 4293 23
7998 013e FB68 ldr r3, [r7, #12]
7999 0140 BA68 ldr r2, [r7, #8]
8000 0142 5A62 str r2, [r3, #36]
4294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = Size;
8001 .loc 1 4294 23
8002 0144 FB68 ldr r3, [r7, #12]
8003 0146 FA88 ldrh r2, [r7, #6] @ movhi
8004 0148 5A85 strh r2, [r3, #42] @ movhi
4295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
8005 .loc 1 4295 29
8006 014a FB68 ldr r3, [r7, #12]
8007 014c 5B8D ldrh r3, [r3, #42] @ movhi
8008 014e 9AB2 uxth r2, r3
8009 .loc 1 4295 23
8010 0150 FB68 ldr r3, [r7, #12]
8011 0152 1A85 strh r2, [r3, #40] @ movhi
4296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = XferOptions;
8012 .loc 1 4296 23
8013 0154 FB68 ldr r3, [r7, #12]
8014 0156 3A68 ldr r2, [r7]
8015 0158 DA62 str r2, [r3, #44]
4297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA;
8016 .loc 1 4297 23
8017 015a FB68 ldr r3, [r7, #12]
8018 015c 484A ldr r2, .L393+4
8019 015e 5A63 str r2, [r3, #52]
4298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
8020 .loc 1 4299 13
8021 0160 FB68 ldr r3, [r7, #12]
8022 0162 DB6B ldr r3, [r3, #60]
8023 .loc 1 4299 8
8024 0164 002B cmp r3, #0
8025 0166 20D0 beq .L386
ARM GAS /tmp/cc5G5cqz.s page 218
4300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */
4302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt;
8026 .loc 1 4302 11
8027 0168 FB68 ldr r3, [r7, #12]
8028 016a DB6B ldr r3, [r3, #60]
8029 .loc 1 4302 38
8030 016c 454A ldr r2, .L393+8
8031 016e 9A62 str r2, [r3, #40]
4303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the DMA error callback */
4305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
8032 .loc 1 4305 11
8033 0170 FB68 ldr r3, [r7, #12]
8034 0172 DB6B ldr r3, [r3, #60]
8035 .loc 1 4305 39
8036 0174 444A ldr r2, .L393+12
8037 0176 1A63 str r2, [r3, #48]
4306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */
4308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL;
8038 .loc 1 4308 11
8039 0178 FB68 ldr r3, [r7, #12]
8040 017a DB6B ldr r3, [r3, #60]
8041 .loc 1 4308 42
8042 017c 0022 movs r2, #0
8043 017e DA62 str r2, [r3, #44]
4309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
8044 .loc 1 4309 11
8045 0180 FB68 ldr r3, [r7, #12]
8046 0182 DB6B ldr r3, [r3, #60]
8047 .loc 1 4309 39
8048 0184 0022 movs r2, #0
8049 0186 5A63 str r2, [r3, #52]
4310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
4312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR,
8050 .loc 1 4312 23
8051 0188 FB68 ldr r3, [r7, #12]
8052 018a D86B ldr r0, [r3, #60]
8053 .loc 1 4312 69
8054 018c FB68 ldr r3, [r7, #12]
8055 018e 1B68 ldr r3, [r3]
8056 .loc 1 4312 64
8057 0190 2433 adds r3, r3, #36
8058 .loc 1 4312 23
8059 0192 1946 mov r1, r3
8060 0194 BA68 ldr r2, [r7, #8]
4313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize);
8061 .loc 1 4313 61
8062 0196 FB68 ldr r3, [r7, #12]
8063 0198 1B8D ldrh r3, [r3, #40]
4312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize);
8064 .loc 1 4312 23
8065 019a FFF7FEFF bl HAL_DMA_Start_IT
8066 019e 0346 mov r3, r0
8067 01a0 FB75 strb r3, [r7, #23]
ARM GAS /tmp/cc5G5cqz.s page 219
4314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
4318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
4319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM;
4323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK)
8068 .loc 1 4330 8
8069 01a2 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
8070 01a4 002B cmp r3, #0
8071 01a6 36D1 bne .L388
8072 01a8 13E0 b .L391
8073 .L386:
4318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
8074 .loc 1 4318 23
8075 01aa FB68 ldr r3, [r7, #12]
8076 01ac 2822 movs r2, #40
8077 01ae 83F84120 strb r2, [r3, #65]
4319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8078 .loc 1 4319 23
8079 01b2 FB68 ldr r3, [r7, #12]
8080 01b4 0022 movs r2, #0
8081 01b6 83F84220 strb r2, [r3, #66]
4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8082 .loc 1 4322 11
8083 01ba FB68 ldr r3, [r7, #12]
8084 01bc 5B6C ldr r3, [r3, #68]
4322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8085 .loc 1 4322 23
8086 01be 43F08002 orr r2, r3, #128
8087 01c2 FB68 ldr r3, [r7, #12]
8088 01c4 5A64 str r2, [r3, #68]
4325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8089 .loc 1 4325 7
8090 01c6 FB68 ldr r3, [r7, #12]
8091 01c8 0022 movs r2, #0
8092 01ca 83F84020 strb r2, [r3, #64]
4327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8093 .loc 1 4327 14
8094 01ce 0123 movs r3, #1
8095 01d0 50E0 b .L382
8096 .L391:
4331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
4333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
8097 .loc 1 4333 11
8098 01d2 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 220
8099 01d4 5B8D ldrh r3, [r3, #42] @ movhi
8100 01d6 9AB2 uxth r2, r3
8101 .loc 1 4333 30
8102 01d8 FB68 ldr r3, [r7, #12]
8103 01da 1B8D ldrh r3, [r3, #40]
8104 .loc 1 4333 23
8105 01dc D31A subs r3, r2, r3
8106 01de 9AB2 uxth r2, r3
8107 01e0 FB68 ldr r3, [r7, #12]
8108 01e2 5A85 strh r2, [r3, #42] @ movhi
4334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset XferSize */
4336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = 0;
8109 .loc 1 4336 22
8110 01e4 FB68 ldr r3, [r7, #12]
8111 01e6 0022 movs r2, #0
8112 01e8 1A85 strh r2, [r3, #40] @ movhi
4337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C state */
4341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
4342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
4343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update I2C error code */
4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA;
4346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
4349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
4351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
8113 .loc 1 4353 11
8114 01ea FB68 ldr r3, [r7, #12]
8115 01ec 1B68 ldr r3, [r3]
8116 01ee 9B69 ldr r3, [r3, #24]
8117 01f0 03F00803 and r3, r3, #8
8118 01f4 082B cmp r3, #8
8119 01f6 0CBF ite eq
8120 01f8 0123 moveq r3, #1
8121 01fa 0023 movne r3, #0
8122 01fc DBB2 uxtb r3, r3
8123 .loc 1 4353 9
8124 01fe BB75 strb r3, [r7, #22]
4354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET))
8125 .loc 1 4354 10
8126 0200 FB68 ldr r3, [r7, #12]
8127 0202 1B68 ldr r3, [r3]
8128 0204 9B69 ldr r3, [r3, #24]
8129 0206 1B0C lsrs r3, r3, #16
8130 0208 DBB2 uxtb r3, r3
8131 020a 03F00103 and r3, r3, #1
8132 020e DBB2 uxtb r3, r3
8133 .loc 1 4354 8
8134 0210 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 221
8135 0212 1BD1 bne .L390
8136 0214 13E0 b .L392
8137 .L388:
4341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
8138 .loc 1 4341 23
8139 0216 FB68 ldr r3, [r7, #12]
8140 0218 2822 movs r2, #40
8141 021a 83F84120 strb r2, [r3, #65]
4342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8142 .loc 1 4342 23
8143 021e FB68 ldr r3, [r7, #12]
8144 0220 0022 movs r2, #0
8145 0222 83F84220 strb r2, [r3, #66]
4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8146 .loc 1 4345 11
8147 0226 FB68 ldr r3, [r7, #12]
8148 0228 5B6C ldr r3, [r3, #68]
4345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8149 .loc 1 4345 23
8150 022a 43F01002 orr r2, r3, #16
8151 022e FB68 ldr r3, [r7, #12]
8152 0230 5A64 str r2, [r3, #68]
4348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
8153 .loc 1 4348 7
8154 0232 FB68 ldr r3, [r7, #12]
8155 0234 0022 movs r2, #0
8156 0236 83F84020 strb r2, [r3, #64]
4350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8157 .loc 1 4350 14
8158 023a 0123 movs r3, #1
8159 023c 1AE0 b .L382
8160 .L392:
8161 .loc 1 4354 55 discriminator 1
8162 023e BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
8163 0240 002B cmp r3, #0
8164 0242 03D0 beq .L390
4355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */
4357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */
4358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
8165 .loc 1 4358 7
8166 0244 FB68 ldr r3, [r7, #12]
8167 0246 1B68 ldr r3, [r3]
8168 0248 0822 movs r2, #8
8169 024a DA61 str r2, [r3, #28]
8170 .L390:
4359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
8171 .loc 1 4362 5
8172 024c FB68 ldr r3, [r7, #12]
8173 024e 0022 movs r2, #0
8174 0250 83F84020 strb r2, [r3, #64]
4363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
4365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
ARM GAS /tmp/cc5G5cqz.s page 222
8175 .loc 1 4365 9
8176 0254 FB68 ldr r3, [r7, #12]
8177 0256 1B68 ldr r3, [r3]
8178 .loc 1 4365 19
8179 0258 1A68 ldr r2, [r3]
8180 .loc 1 4365 9
8181 025a FB68 ldr r3, [r7, #12]
8182 025c 1B68 ldr r3, [r3]
8183 .loc 1 4365 25
8184 025e 42F40042 orr r2, r2, #32768
8185 0262 1A60 str r2, [r3]
4366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
4368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
4369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
4370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* REnable ADDR interrupt */
4371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
8186 .loc 1 4371 5
8187 0264 48F20201 movw r1, #32770
8188 0268 F868 ldr r0, [r7, #12]
8189 026a FFF7FEFF bl I2C_Enable_IRQ
4372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
8190 .loc 1 4373 12
8191 026e 0023 movs r3, #0
8192 0270 00E0 b .L382
8193 .L379:
4374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
8194 .loc 1 4377 12
8195 0272 0123 movs r3, #1
8196 .L382:
4378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8197 .loc 1 4379 1
8198 0274 1846 mov r0, r3
8199 0276 1837 adds r7, r7, #24
8200 .cfi_def_cfa_offset 8
8201 0278 BD46 mov sp, r7
8202 .cfi_def_cfa_register 13
8203 @ sp needed
8204 027a 80BD pop {r7, pc}
8205 .L394:
8206 .align 2
8207 .L393:
8208 027c 00000000 .word I2C_DMAAbort
8209 0280 00000000 .word I2C_Slave_ISR_DMA
8210 0284 00000000 .word I2C_DMASlaveReceiveCplt
8211 0288 00000000 .word I2C_DMAError
8212 .cfi_endproc
8213 .LFE160:
8215 .section .text.HAL_I2C_EnableListen_IT,"ax",%progbits
8216 .align 1
8217 .global HAL_I2C_EnableListen_IT
8218 .syntax unified
ARM GAS /tmp/cc5G5cqz.s page 223
8219 .thumb
8220 .thumb_func
8222 HAL_I2C_EnableListen_IT:
8223 .LFB161:
4380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Enable the Address listen mode with Interrupt.
4383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
4388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8224 .loc 1 4388 1
8225 .cfi_startproc
8226 @ args = 0, pretend = 0, frame = 8
8227 @ frame_needed = 1, uses_anonymous_args = 0
8228 0000 80B5 push {r7, lr}
8229 .cfi_def_cfa_offset 8
8230 .cfi_offset 7, -8
8231 .cfi_offset 14, -4
8232 0002 82B0 sub sp, sp, #8
8233 .cfi_def_cfa_offset 16
8234 0004 00AF add r7, sp, #0
8235 .cfi_def_cfa_register 7
8236 0006 7860 str r0, [r7, #4]
4389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY)
8237 .loc 1 4389 11
8238 0008 7B68 ldr r3, [r7, #4]
8239 000a 93F84130 ldrb r3, [r3, #65]
8240 000e DBB2 uxtb r3, r3
8241 .loc 1 4389 6
8242 0010 202B cmp r3, #32
8243 0012 0DD1 bne .L396
4390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
8244 .loc 1 4391 17
8245 0014 7B68 ldr r3, [r7, #4]
8246 0016 2822 movs r2, #40
8247 0018 83F84120 strb r2, [r3, #65]
4392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
8248 .loc 1 4392 19
8249 001c 7B68 ldr r3, [r7, #4]
8250 001e 074A ldr r2, .L398
8251 0020 5A63 str r2, [r3, #52]
4393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the Address Match interrupt */
4395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
8252 .loc 1 4395 5
8253 0022 4FF40041 mov r1, #32768
8254 0026 7868 ldr r0, [r7, #4]
8255 0028 FFF7FEFF bl I2C_Enable_IRQ
4396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
8256 .loc 1 4397 12
8257 002c 0023 movs r3, #0
8258 002e 00E0 b .L397
ARM GAS /tmp/cc5G5cqz.s page 224
8259 .L396:
4398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
8260 .loc 1 4401 12
8261 0030 0223 movs r3, #2
8262 .L397:
4402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8263 .loc 1 4403 1
8264 0032 1846 mov r0, r3
8265 0034 0837 adds r7, r7, #8
8266 .cfi_def_cfa_offset 8
8267 0036 BD46 mov sp, r7
8268 .cfi_def_cfa_register 13
8269 @ sp needed
8270 0038 80BD pop {r7, pc}
8271 .L399:
8272 003a 00BF .align 2
8273 .L398:
8274 003c 00000000 .word I2C_Slave_ISR_IT
8275 .cfi_endproc
8276 .LFE161:
8278 .section .text.HAL_I2C_DisableListen_IT,"ax",%progbits
8279 .align 1
8280 .global HAL_I2C_DisableListen_IT
8281 .syntax unified
8282 .thumb
8283 .thumb_func
8285 HAL_I2C_DisableListen_IT:
8286 .LFB162:
4404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Disable the Address listen mode with Interrupt.
4407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C
4409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
4412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8287 .loc 1 4412 1
8288 .cfi_startproc
8289 @ args = 0, pretend = 0, frame = 16
8290 @ frame_needed = 1, uses_anonymous_args = 0
8291 0000 80B5 push {r7, lr}
8292 .cfi_def_cfa_offset 8
8293 .cfi_offset 7, -8
8294 .cfi_offset 14, -4
8295 0002 84B0 sub sp, sp, #16
8296 .cfi_def_cfa_offset 24
8297 0004 00AF add r7, sp, #0
8298 .cfi_def_cfa_register 7
8299 0006 7860 str r0, [r7, #4]
4413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
4414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp;
4415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 225
4416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address listen mode only if a transfer is not ongoing */
4417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN)
8300 .loc 1 4417 11
8301 0008 7B68 ldr r3, [r7, #4]
8302 000a 93F84130 ldrb r3, [r3, #65]
8303 000e DBB2 uxtb r3, r3
8304 .loc 1 4417 6
8305 0010 282B cmp r3, #40
8306 0012 21D1 bne .L401
4418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK;
8307 .loc 1 4419 26
8308 0014 7B68 ldr r3, [r7, #4]
8309 0016 93F84130 ldrb r3, [r3, #65]
8310 001a DBB2 uxtb r3, r3
8311 .loc 1 4419 9
8312 001c 03F00303 and r3, r3, #3
8313 0020 FB60 str r3, [r7, #12]
4420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode);
8314 .loc 1 4420 48
8315 0022 7B68 ldr r3, [r7, #4]
8316 0024 93F84230 ldrb r3, [r3, #66]
8317 0028 DBB2 uxtb r3, r3
8318 .loc 1 4420 33
8319 002a 1A46 mov r2, r3
8320 .loc 1 4420 31
8321 002c FB68 ldr r3, [r7, #12]
8322 002e 1A43 orrs r2, r2, r3
8323 .loc 1 4420 25
8324 0030 7B68 ldr r3, [r7, #4]
8325 0032 1A63 str r2, [r3, #48]
4421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
8326 .loc 1 4421 17
8327 0034 7B68 ldr r3, [r7, #4]
8328 0036 2022 movs r2, #32
8329 0038 83F84120 strb r2, [r3, #65]
4422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
8330 .loc 1 4422 16
8331 003c 7B68 ldr r3, [r7, #4]
8332 003e 0022 movs r2, #0
8333 0040 83F84220 strb r2, [r3, #66]
4423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
8334 .loc 1 4423 19
8335 0044 7B68 ldr r3, [r7, #4]
8336 0046 0022 movs r2, #0
8337 0048 5A63 str r2, [r3, #52]
4424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable the Address Match interrupt */
4426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
8338 .loc 1 4426 5
8339 004a 4FF40041 mov r1, #32768
8340 004e 7868 ldr r0, [r7, #4]
8341 0050 FFF7FEFF bl I2C_Disable_IRQ
4427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
8342 .loc 1 4428 12
8343 0054 0023 movs r3, #0
ARM GAS /tmp/cc5G5cqz.s page 226
8344 0056 00E0 b .L402
8345 .L401:
4429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_BUSY;
8346 .loc 1 4432 12
8347 0058 0223 movs r3, #2
8348 .L402:
4433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8349 .loc 1 4434 1
8350 005a 1846 mov r0, r3
8351 005c 1037 adds r7, r7, #16
8352 .cfi_def_cfa_offset 8
8353 005e BD46 mov sp, r7
8354 .cfi_def_cfa_register 13
8355 @ sp needed
8356 0060 80BD pop {r7, pc}
8357 .cfi_endproc
8358 .LFE162:
8360 .section .text.HAL_I2C_Master_Abort_IT,"ax",%progbits
8361 .align 1
8362 .global HAL_I2C_Master_Abort_IT
8363 .syntax unified
8364 .thumb
8365 .thumb_func
8367 HAL_I2C_Master_Abort_IT:
8368 .LFB163:
4435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Abort a master I2C IT or DMA process communication with Interrupt.
4438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
4441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
4442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
4445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8369 .loc 1 4445 1
8370 .cfi_startproc
8371 @ args = 0, pretend = 0, frame = 8
8372 @ frame_needed = 1, uses_anonymous_args = 0
8373 0000 80B5 push {r7, lr}
8374 .cfi_def_cfa_offset 8
8375 .cfi_offset 7, -8
8376 .cfi_offset 14, -4
8377 0002 84B0 sub sp, sp, #16
8378 .cfi_def_cfa_offset 24
8379 0004 02AF add r7, sp, #8
8380 .cfi_def_cfa 7, 16
8381 0006 7860 str r0, [r7, #4]
8382 0008 0B46 mov r3, r1
8383 000a 7B80 strh r3, [r7, #2] @ movhi
4446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MASTER)
8384 .loc 1 4446 11
ARM GAS /tmp/cc5G5cqz.s page 227
8385 000c 7B68 ldr r3, [r7, #4]
8386 000e 93F84230 ldrb r3, [r3, #66]
8387 0012 DBB2 uxtb r3, r3
8388 .loc 1 4446 6
8389 0014 102B cmp r3, #16
8390 0016 3CD1 bne .L404
4447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
4449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
8391 .loc 1 4449 5
8392 0018 7B68 ldr r3, [r7, #4]
8393 001a 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
8394 001e 012B cmp r3, #1
8395 0020 01D1 bne .L405
8396 .loc 1 4449 5 is_stmt 0 discriminator 1
8397 0022 0223 movs r3, #2
8398 .loc 1 4449 5
8399 0024 36E0 b .L406
8400 .L405:
8401 .loc 1 4449 5 discriminator 2
8402 0026 7B68 ldr r3, [r7, #4]
8403 0028 0122 movs r2, #1
8404 002a 83F84020 strb r2, [r3, #64]
4450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */
4452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX)
8405 .loc 1 4452 13 is_stmt 1
8406 002e 7B68 ldr r3, [r7, #4]
8407 0030 93F84130 ldrb r3, [r3, #65]
8408 0034 DBB2 uxtb r3, r3
8409 .loc 1 4452 8
8410 0036 212B cmp r3, #33
8411 0038 07D1 bne .L407
4453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
8412 .loc 1 4454 7
8413 003a 0121 movs r1, #1
8414 003c 7868 ldr r0, [r7, #4]
8415 003e FFF7FEFF bl I2C_Disable_IRQ
4455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;
8416 .loc 1 4455 27
8417 0042 7B68 ldr r3, [r7, #4]
8418 0044 1122 movs r2, #17
8419 0046 1A63 str r2, [r3, #48]
8420 0048 0CE0 b .L408
8421 .L407:
4456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
8422 .loc 1 4457 18
8423 004a 7B68 ldr r3, [r7, #4]
8424 004c 93F84130 ldrb r3, [r3, #65]
8425 0050 DBB2 uxtb r3, r3
8426 .loc 1 4457 13
8427 0052 222B cmp r3, #34
8428 0054 06D1 bne .L408
4458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
ARM GAS /tmp/cc5G5cqz.s page 228
8429 .loc 1 4459 7
8430 0056 0221 movs r1, #2
8431 0058 7868 ldr r0, [r7, #4]
8432 005a FFF7FEFF bl I2C_Disable_IRQ
4460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
8433 .loc 1 4460 27
8434 005e 7B68 ldr r3, [r7, #4]
8435 0060 1222 movs r2, #18
8436 0062 1A63 str r2, [r3, #48]
8437 .L408:
4461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
4465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set State at HAL_I2C_STATE_ABORT */
4468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_ABORT;
8438 .loc 1 4468 17
8439 0064 7B68 ldr r3, [r7, #4]
8440 0066 6022 movs r2, #96
8441 0068 83F84120 strb r2, [r3, #65]
4469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */
4471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfe
4472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP);
8442 .loc 1 4472 5
8443 006c 7988 ldrh r1, [r7, #2]
8444 006e 0B4B ldr r3, .L409
8445 0070 0093 str r3, [sp]
8446 0072 4FF00073 mov r3, #33554432
8447 0076 0122 movs r2, #1
8448 0078 7868 ldr r0, [r7, #4]
8449 007a FFF7FEFF bl I2C_TransferConfig
4473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
8450 .loc 1 4475 5
8451 007e 7B68 ldr r3, [r7, #4]
8452 0080 0022 movs r2, #0
8453 0082 83F84020 strb r2, [r3, #64]
4476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process
4478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current
4479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** process unlock */
4480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
8454 .loc 1 4480 5
8455 0086 2021 movs r1, #32
8456 0088 7868 ldr r0, [r7, #4]
8457 008a FFF7FEFF bl I2C_Enable_IRQ
4481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
8458 .loc 1 4482 12
8459 008e 0023 movs r3, #0
8460 0090 00E0 b .L406
8461 .L404:
4483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 229
4484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong usage of abort function */
4487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This function should be used only in case of abort monitored by master device */
4488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
8462 .loc 1 4488 12
8463 0092 0123 movs r3, #1
8464 .L406:
4489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8465 .loc 1 4490 1
8466 0094 1846 mov r0, r3
8467 0096 0837 adds r7, r7, #8
8468 .cfi_def_cfa_offset 8
8469 0098 BD46 mov sp, r7
8470 .cfi_def_cfa_register 13
8471 @ sp needed
8472 009a 80BD pop {r7, pc}
8473 .L410:
8474 .align 2
8475 .L409:
8476 009c 00400080 .word -2147467264
8477 .cfi_endproc
8478 .LFE163:
8480 .section .text.HAL_I2C_EV_IRQHandler,"ax",%progbits
8481 .align 1
8482 .global HAL_I2C_EV_IRQHandler
8483 .syntax unified
8484 .thumb
8485 .thumb_func
8487 HAL_I2C_EV_IRQHandler:
8488 .LFB164:
4491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
4494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
4497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
4498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C event interrupt request.
4502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */
4507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8489 .loc 1 4507 1
8490 .cfi_startproc
8491 @ args = 0, pretend = 0, frame = 16
8492 @ frame_needed = 1, uses_anonymous_args = 0
8493 0000 80B5 push {r7, lr}
8494 .cfi_def_cfa_offset 8
8495 .cfi_offset 7, -8
8496 .cfi_offset 14, -4
ARM GAS /tmp/cc5G5cqz.s page 230
8497 0002 84B0 sub sp, sp, #16
8498 .cfi_def_cfa_offset 24
8499 0004 00AF add r7, sp, #0
8500 .cfi_def_cfa_register 7
8501 0006 7860 str r0, [r7, #4]
4508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */
4509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR);
8502 .loc 1 4509 24
8503 0008 7B68 ldr r3, [r7, #4]
8504 000a 1B68 ldr r3, [r3]
8505 .loc 1 4509 12
8506 000c 9B69 ldr r3, [r3, #24]
8507 000e FB60 str r3, [r7, #12]
4510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1);
8508 .loc 1 4510 24
8509 0010 7B68 ldr r3, [r7, #4]
8510 0012 1B68 ldr r3, [r3]
8511 .loc 1 4510 12
8512 0014 1B68 ldr r3, [r3]
8513 0016 BB60 str r3, [r7, #8]
4511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C events treatment -------------------------------------*/
4513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferISR != NULL)
8514 .loc 1 4513 11
8515 0018 7B68 ldr r3, [r7, #4]
8516 001a 5B6B ldr r3, [r3, #52]
8517 .loc 1 4513 6
8518 001c 002B cmp r3, #0
8519 001e 05D0 beq .L413
4514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR(hi2c, itflags, itsources);
8520 .loc 1 4515 9
8521 0020 7B68 ldr r3, [r7, #4]
8522 0022 5B6B ldr r3, [r3, #52]
8523 .loc 1 4515 5
8524 0024 BA68 ldr r2, [r7, #8]
8525 0026 F968 ldr r1, [r7, #12]
8526 0028 7868 ldr r0, [r7, #4]
8527 002a 9847 blx r3
8528 .LVL6:
8529 .L413:
4516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8530 .loc 1 4517 1
8531 002c 00BF nop
8532 002e 1037 adds r7, r7, #16
8533 .cfi_def_cfa_offset 8
8534 0030 BD46 mov sp, r7
8535 .cfi_def_cfa_register 13
8536 @ sp needed
8537 0032 80BD pop {r7, pc}
8538 .cfi_endproc
8539 .LFE164:
8541 .section .text.HAL_I2C_ER_IRQHandler,"ax",%progbits
8542 .align 1
8543 .global HAL_I2C_ER_IRQHandler
8544 .syntax unified
ARM GAS /tmp/cc5G5cqz.s page 231
8545 .thumb
8546 .thumb_func
8548 HAL_I2C_ER_IRQHandler:
8549 .LFB165:
4518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C error interrupt request.
4521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
4526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8550 .loc 1 4526 1
8551 .cfi_startproc
8552 @ args = 0, pretend = 0, frame = 24
8553 @ frame_needed = 1, uses_anonymous_args = 0
8554 0000 80B5 push {r7, lr}
8555 .cfi_def_cfa_offset 8
8556 .cfi_offset 7, -8
8557 .cfi_offset 14, -4
8558 0002 86B0 sub sp, sp, #24
8559 .cfi_def_cfa_offset 32
8560 0004 00AF add r7, sp, #0
8561 .cfi_def_cfa_register 7
8562 0006 7860 str r0, [r7, #4]
4527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR);
8563 .loc 1 4527 24
8564 0008 7B68 ldr r3, [r7, #4]
8565 000a 1B68 ldr r3, [r3]
8566 .loc 1 4527 12
8567 000c 9B69 ldr r3, [r3, #24]
8568 000e 7B61 str r3, [r7, #20]
4528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1);
8569 .loc 1 4528 24
8570 0010 7B68 ldr r3, [r7, #4]
8571 0012 1B68 ldr r3, [r3]
8572 .loc 1 4528 12
8573 0014 1B68 ldr r3, [r3]
8574 0016 3B61 str r3, [r7, #16]
4529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror;
4530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Bus error interrupt occurred ------------------------------------*/
4532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \
8575 .loc 1 4532 8
8576 0018 7B69 ldr r3, [r7, #20]
8577 001a 1B0A lsrs r3, r3, #8
8578 001c 03F00103 and r3, r3, #1
8579 .loc 1 4532 6
8580 0020 002B cmp r3, #0
8581 0022 10D0 beq .L415
4533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
8582 .loc 1 4533 8
8583 0024 3B69 ldr r3, [r7, #16]
8584 0026 DB09 lsrs r3, r3, #7
8585 0028 03F00103 and r3, r3, #1
4532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
ARM GAS /tmp/cc5G5cqz.s page 232
8586 .loc 1 4532 57 discriminator 1
8587 002c 002B cmp r3, #0
8588 002e 0AD0 beq .L415
4534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_BERR;
8589 .loc 1 4535 9
8590 0030 7B68 ldr r3, [r7, #4]
8591 0032 5B6C ldr r3, [r3, #68]
8592 .loc 1 4535 21
8593 0034 43F00102 orr r2, r3, #1
8594 0038 7B68 ldr r3, [r7, #4]
8595 003a 5A64 str r2, [r3, #68]
4536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */
4538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);
8596 .loc 1 4538 5
8597 003c 7B68 ldr r3, [r7, #4]
8598 003e 1B68 ldr r3, [r3]
8599 0040 4FF48072 mov r2, #256
8600 0044 DA61 str r2, [r3, #28]
8601 .L415:
4539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/
4542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \
8602 .loc 1 4542 8
8603 0046 7B69 ldr r3, [r7, #20]
8604 0048 9B0A lsrs r3, r3, #10
8605 004a 03F00103 and r3, r3, #1
8606 .loc 1 4542 6
8607 004e 002B cmp r3, #0
8608 0050 10D0 beq .L416
4543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
8609 .loc 1 4543 8
8610 0052 3B69 ldr r3, [r7, #16]
8611 0054 DB09 lsrs r3, r3, #7
8612 0056 03F00103 and r3, r3, #1
4542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
8613 .loc 1 4542 56 discriminator 1
8614 005a 002B cmp r3, #0
8615 005c 0AD0 beq .L416
4544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_OVR;
8616 .loc 1 4545 9
8617 005e 7B68 ldr r3, [r7, #4]
8618 0060 5B6C ldr r3, [r3, #68]
8619 .loc 1 4545 21
8620 0062 43F00802 orr r2, r3, #8
8621 0066 7B68 ldr r3, [r7, #4]
8622 0068 5A64 str r2, [r3, #68]
4546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */
4548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);
8623 .loc 1 4548 5
8624 006a 7B68 ldr r3, [r7, #4]
8625 006c 1B68 ldr r3, [r3]
8626 006e 4FF48062 mov r2, #1024
ARM GAS /tmp/cc5G5cqz.s page 233
8627 0072 DA61 str r2, [r3, #28]
8628 .L416:
4549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/
4552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \
8629 .loc 1 4552 8
8630 0074 7B69 ldr r3, [r7, #20]
8631 0076 5B0A lsrs r3, r3, #9
8632 0078 03F00103 and r3, r3, #1
8633 .loc 1 4552 6
8634 007c 002B cmp r3, #0
8635 007e 10D0 beq .L417
4553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
8636 .loc 1 4553 8
8637 0080 3B69 ldr r3, [r7, #16]
8638 0082 DB09 lsrs r3, r3, #7
8639 0084 03F00103 and r3, r3, #1
4552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
8640 .loc 1 4552 57 discriminator 1
8641 0088 002B cmp r3, #0
8642 008a 0AD0 beq .L417
4554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO;
8643 .loc 1 4555 9
8644 008c 7B68 ldr r3, [r7, #4]
8645 008e 5B6C ldr r3, [r3, #68]
8646 .loc 1 4555 21
8647 0090 43F00202 orr r2, r3, #2
8648 0094 7B68 ldr r3, [r7, #4]
8649 0096 5A64 str r2, [r3, #68]
4556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */
4558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);
8650 .loc 1 4558 5
8651 0098 7B68 ldr r3, [r7, #4]
8652 009a 1B68 ldr r3, [r3]
8653 009c 4FF40072 mov r2, #512
8654 00a0 DA61 str r2, [r3, #28]
8655 .L417:
4559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */
4562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode;
8656 .loc 1 4562 12
8657 00a2 7B68 ldr r3, [r7, #4]
8658 00a4 5B6C ldr r3, [r3, #68]
8659 00a6 FB60 str r3, [r7, #12]
4563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Error Callback in case of Error detected */
4565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_
8660 .loc 1 4565 17
8661 00a8 FB68 ldr r3, [r7, #12]
8662 00aa 03F00B03 and r3, r3, #11
8663 .loc 1 4565 6
8664 00ae 002B cmp r3, #0
8665 00b0 03D0 beq .L419
ARM GAS /tmp/cc5G5cqz.s page 234
4566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, tmperror);
8666 .loc 1 4567 5
8667 00b2 F968 ldr r1, [r7, #12]
8668 00b4 7868 ldr r0, [r7, #4]
8669 00b6 FFF7FEFF bl I2C_ITError
8670 .L419:
4568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8671 .loc 1 4569 1
8672 00ba 00BF nop
8673 00bc 1837 adds r7, r7, #24
8674 .cfi_def_cfa_offset 8
8675 00be BD46 mov sp, r7
8676 .cfi_def_cfa_register 13
8677 @ sp needed
8678 00c0 80BD pop {r7, pc}
8679 .cfi_endproc
8680 .LFE165:
8682 .section .text.HAL_I2C_MasterTxCpltCallback,"ax",%progbits
8683 .align 1
8684 .weak HAL_I2C_MasterTxCpltCallback
8685 .syntax unified
8686 .thumb
8687 .thumb_func
8689 HAL_I2C_MasterTxCpltCallback:
8690 .LFB166:
4570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Tx Transfer completed callback.
4573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
4578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8691 .loc 1 4578 1
8692 .cfi_startproc
8693 @ args = 0, pretend = 0, frame = 8
8694 @ frame_needed = 1, uses_anonymous_args = 0
8695 @ link register save eliminated.
8696 0000 80B4 push {r7}
8697 .cfi_def_cfa_offset 4
8698 .cfi_offset 7, -4
8699 0002 83B0 sub sp, sp, #12
8700 .cfi_def_cfa_offset 16
8701 0004 00AF add r7, sp, #0
8702 .cfi_def_cfa_register 7
8703 0006 7860 str r0, [r7, #4]
4579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterTxCpltCallback could be implemented in the user file
4584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8704 .loc 1 4585 1
ARM GAS /tmp/cc5G5cqz.s page 235
8705 0008 00BF nop
8706 000a 0C37 adds r7, r7, #12
8707 .cfi_def_cfa_offset 4
8708 000c BD46 mov sp, r7
8709 .cfi_def_cfa_register 13
8710 @ sp needed
8711 000e 5DF8047B ldr r7, [sp], #4
8712 .cfi_restore 7
8713 .cfi_def_cfa_offset 0
8714 0012 7047 bx lr
8715 .cfi_endproc
8716 .LFE166:
8718 .section .text.HAL_I2C_MasterRxCpltCallback,"ax",%progbits
8719 .align 1
8720 .weak HAL_I2C_MasterRxCpltCallback
8721 .syntax unified
8722 .thumb
8723 .thumb_func
8725 HAL_I2C_MasterRxCpltCallback:
8726 .LFB167:
4586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master Rx Transfer completed callback.
4589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
4594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8727 .loc 1 4594 1
8728 .cfi_startproc
8729 @ args = 0, pretend = 0, frame = 8
8730 @ frame_needed = 1, uses_anonymous_args = 0
8731 @ link register save eliminated.
8732 0000 80B4 push {r7}
8733 .cfi_def_cfa_offset 4
8734 .cfi_offset 7, -4
8735 0002 83B0 sub sp, sp, #12
8736 .cfi_def_cfa_offset 16
8737 0004 00AF add r7, sp, #0
8738 .cfi_def_cfa_register 7
8739 0006 7860 str r0, [r7, #4]
4595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MasterRxCpltCallback could be implemented in the user file
4600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8740 .loc 1 4601 1
8741 0008 00BF nop
8742 000a 0C37 adds r7, r7, #12
8743 .cfi_def_cfa_offset 4
8744 000c BD46 mov sp, r7
8745 .cfi_def_cfa_register 13
8746 @ sp needed
8747 000e 5DF8047B ldr r7, [sp], #4
ARM GAS /tmp/cc5G5cqz.s page 236
8748 .cfi_restore 7
8749 .cfi_def_cfa_offset 0
8750 0012 7047 bx lr
8751 .cfi_endproc
8752 .LFE167:
8754 .section .text.HAL_I2C_SlaveTxCpltCallback,"ax",%progbits
8755 .align 1
8756 .weak HAL_I2C_SlaveTxCpltCallback
8757 .syntax unified
8758 .thumb
8759 .thumb_func
8761 HAL_I2C_SlaveTxCpltCallback:
8762 .LFB168:
4602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @brief Slave Tx Transfer completed callback.
4604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
4609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8763 .loc 1 4609 1
8764 .cfi_startproc
8765 @ args = 0, pretend = 0, frame = 8
8766 @ frame_needed = 1, uses_anonymous_args = 0
8767 @ link register save eliminated.
8768 0000 80B4 push {r7}
8769 .cfi_def_cfa_offset 4
8770 .cfi_offset 7, -4
8771 0002 83B0 sub sp, sp, #12
8772 .cfi_def_cfa_offset 16
8773 0004 00AF add r7, sp, #0
8774 .cfi_def_cfa_register 7
8775 0006 7860 str r0, [r7, #4]
4610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file
4615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8776 .loc 1 4616 1
8777 0008 00BF nop
8778 000a 0C37 adds r7, r7, #12
8779 .cfi_def_cfa_offset 4
8780 000c BD46 mov sp, r7
8781 .cfi_def_cfa_register 13
8782 @ sp needed
8783 000e 5DF8047B ldr r7, [sp], #4
8784 .cfi_restore 7
8785 .cfi_def_cfa_offset 0
8786 0012 7047 bx lr
8787 .cfi_endproc
8788 .LFE168:
8790 .section .text.HAL_I2C_SlaveRxCpltCallback,"ax",%progbits
8791 .align 1
8792 .weak HAL_I2C_SlaveRxCpltCallback
ARM GAS /tmp/cc5G5cqz.s page 237
8793 .syntax unified
8794 .thumb
8795 .thumb_func
8797 HAL_I2C_SlaveRxCpltCallback:
8798 .LFB169:
4617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Rx Transfer completed callback.
4620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
4625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8799 .loc 1 4625 1
8800 .cfi_startproc
8801 @ args = 0, pretend = 0, frame = 8
8802 @ frame_needed = 1, uses_anonymous_args = 0
8803 @ link register save eliminated.
8804 0000 80B4 push {r7}
8805 .cfi_def_cfa_offset 4
8806 .cfi_offset 7, -4
8807 0002 83B0 sub sp, sp, #12
8808 .cfi_def_cfa_offset 16
8809 0004 00AF add r7, sp, #0
8810 .cfi_def_cfa_register 7
8811 0006 7860 str r0, [r7, #4]
4626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file
4631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8812 .loc 1 4632 1
8813 0008 00BF nop
8814 000a 0C37 adds r7, r7, #12
8815 .cfi_def_cfa_offset 4
8816 000c BD46 mov sp, r7
8817 .cfi_def_cfa_register 13
8818 @ sp needed
8819 000e 5DF8047B ldr r7, [sp], #4
8820 .cfi_restore 7
8821 .cfi_def_cfa_offset 0
8822 0012 7047 bx lr
8823 .cfi_endproc
8824 .LFE169:
8826 .section .text.HAL_I2C_AddrCallback,"ax",%progbits
8827 .align 1
8828 .weak HAL_I2C_AddrCallback
8829 .syntax unified
8830 .thumb
8831 .thumb_func
8833 HAL_I2C_AddrCallback:
8834 .LFB170:
4633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
ARM GAS /tmp/cc5G5cqz.s page 238
4635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Slave Address Match callback.
4636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFE
4639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param AddrMatchCode Address Match Code
4640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM
4643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8835 .loc 1 4643 1
8836 .cfi_startproc
8837 @ args = 0, pretend = 0, frame = 8
8838 @ frame_needed = 1, uses_anonymous_args = 0
8839 @ link register save eliminated.
8840 0000 80B4 push {r7}
8841 .cfi_def_cfa_offset 4
8842 .cfi_offset 7, -4
8843 0002 83B0 sub sp, sp, #12
8844 .cfi_def_cfa_offset 16
8845 0004 00AF add r7, sp, #0
8846 .cfi_def_cfa_register 7
8847 0006 7860 str r0, [r7, #4]
8848 0008 0B46 mov r3, r1
8849 000a FB70 strb r3, [r7, #3]
8850 000c 1346 mov r3, r2 @ movhi
8851 000e 3B80 strh r3, [r7] @ movhi
4644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(TransferDirection);
4647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(AddrMatchCode);
4648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AddrCallback() could be implemented in the user file
4651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8852 .loc 1 4652 1
8853 0010 00BF nop
8854 0012 0C37 adds r7, r7, #12
8855 .cfi_def_cfa_offset 4
8856 0014 BD46 mov sp, r7
8857 .cfi_def_cfa_register 13
8858 @ sp needed
8859 0016 5DF8047B ldr r7, [sp], #4
8860 .cfi_restore 7
8861 .cfi_def_cfa_offset 0
8862 001a 7047 bx lr
8863 .cfi_endproc
8864 .LFE170:
8866 .section .text.HAL_I2C_ListenCpltCallback,"ax",%progbits
8867 .align 1
8868 .weak HAL_I2C_ListenCpltCallback
8869 .syntax unified
8870 .thumb
8871 .thumb_func
8873 HAL_I2C_ListenCpltCallback:
8874 .LFB171:
4653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 239
4654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Listen Complete callback.
4656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
4661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8875 .loc 1 4661 1
8876 .cfi_startproc
8877 @ args = 0, pretend = 0, frame = 8
8878 @ frame_needed = 1, uses_anonymous_args = 0
8879 @ link register save eliminated.
8880 0000 80B4 push {r7}
8881 .cfi_def_cfa_offset 4
8882 .cfi_offset 7, -4
8883 0002 83B0 sub sp, sp, #12
8884 .cfi_def_cfa_offset 16
8885 0004 00AF add r7, sp, #0
8886 .cfi_def_cfa_register 7
8887 0006 7860 str r0, [r7, #4]
4662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ListenCpltCallback() could be implemented in the user file
4667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8888 .loc 1 4668 1
8889 0008 00BF nop
8890 000a 0C37 adds r7, r7, #12
8891 .cfi_def_cfa_offset 4
8892 000c BD46 mov sp, r7
8893 .cfi_def_cfa_register 13
8894 @ sp needed
8895 000e 5DF8047B ldr r7, [sp], #4
8896 .cfi_restore 7
8897 .cfi_def_cfa_offset 0
8898 0012 7047 bx lr
8899 .cfi_endproc
8900 .LFE171:
8902 .section .text.HAL_I2C_MemTxCpltCallback,"ax",%progbits
8903 .align 1
8904 .weak HAL_I2C_MemTxCpltCallback
8905 .syntax unified
8906 .thumb
8907 .thumb_func
8909 HAL_I2C_MemTxCpltCallback:
8910 .LFB172:
4669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Tx Transfer completed callback.
4672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
ARM GAS /tmp/cc5G5cqz.s page 240
4677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8911 .loc 1 4677 1
8912 .cfi_startproc
8913 @ args = 0, pretend = 0, frame = 8
8914 @ frame_needed = 1, uses_anonymous_args = 0
8915 @ link register save eliminated.
8916 0000 80B4 push {r7}
8917 .cfi_def_cfa_offset 4
8918 .cfi_offset 7, -4
8919 0002 83B0 sub sp, sp, #12
8920 .cfi_def_cfa_offset 16
8921 0004 00AF add r7, sp, #0
8922 .cfi_def_cfa_register 7
8923 0006 7860 str r0, [r7, #4]
4678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemTxCpltCallback could be implemented in the user file
4683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8924 .loc 1 4684 1
8925 0008 00BF nop
8926 000a 0C37 adds r7, r7, #12
8927 .cfi_def_cfa_offset 4
8928 000c BD46 mov sp, r7
8929 .cfi_def_cfa_register 13
8930 @ sp needed
8931 000e 5DF8047B ldr r7, [sp], #4
8932 .cfi_restore 7
8933 .cfi_def_cfa_offset 0
8934 0012 7047 bx lr
8935 .cfi_endproc
8936 .LFE172:
8938 .section .text.HAL_I2C_MemRxCpltCallback,"ax",%progbits
8939 .align 1
8940 .weak HAL_I2C_MemRxCpltCallback
8941 .syntax unified
8942 .thumb
8943 .thumb_func
8945 HAL_I2C_MemRxCpltCallback:
8946 .LFB173:
4685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Memory Rx Transfer completed callback.
4688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
4693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8947 .loc 1 4693 1
8948 .cfi_startproc
8949 @ args = 0, pretend = 0, frame = 8
8950 @ frame_needed = 1, uses_anonymous_args = 0
8951 @ link register save eliminated.
8952 0000 80B4 push {r7}
ARM GAS /tmp/cc5G5cqz.s page 241
8953 .cfi_def_cfa_offset 4
8954 .cfi_offset 7, -4
8955 0002 83B0 sub sp, sp, #12
8956 .cfi_def_cfa_offset 16
8957 0004 00AF add r7, sp, #0
8958 .cfi_def_cfa_register 7
8959 0006 7860 str r0, [r7, #4]
4694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_MemRxCpltCallback could be implemented in the user file
4699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8960 .loc 1 4700 1
8961 0008 00BF nop
8962 000a 0C37 adds r7, r7, #12
8963 .cfi_def_cfa_offset 4
8964 000c BD46 mov sp, r7
8965 .cfi_def_cfa_register 13
8966 @ sp needed
8967 000e 5DF8047B ldr r7, [sp], #4
8968 .cfi_restore 7
8969 .cfi_def_cfa_offset 0
8970 0012 7047 bx lr
8971 .cfi_endproc
8972 .LFE173:
8974 .section .text.HAL_I2C_ErrorCallback,"ax",%progbits
8975 .align 1
8976 .weak HAL_I2C_ErrorCallback
8977 .syntax unified
8978 .thumb
8979 .thumb_func
8981 HAL_I2C_ErrorCallback:
8982 .LFB174:
4701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C error callback.
4704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
4709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
8983 .loc 1 4709 1
8984 .cfi_startproc
8985 @ args = 0, pretend = 0, frame = 8
8986 @ frame_needed = 1, uses_anonymous_args = 0
8987 @ link register save eliminated.
8988 0000 80B4 push {r7}
8989 .cfi_def_cfa_offset 4
8990 .cfi_offset 7, -4
8991 0002 83B0 sub sp, sp, #12
8992 .cfi_def_cfa_offset 16
8993 0004 00AF add r7, sp, #0
8994 .cfi_def_cfa_register 7
8995 0006 7860 str r0, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 242
4710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_ErrorCallback could be implemented in the user file
4715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
8996 .loc 1 4716 1
8997 0008 00BF nop
8998 000a 0C37 adds r7, r7, #12
8999 .cfi_def_cfa_offset 4
9000 000c BD46 mov sp, r7
9001 .cfi_def_cfa_register 13
9002 @ sp needed
9003 000e 5DF8047B ldr r7, [sp], #4
9004 .cfi_restore 7
9005 .cfi_def_cfa_offset 0
9006 0012 7047 bx lr
9007 .cfi_endproc
9008 .LFE174:
9010 .section .text.HAL_I2C_AbortCpltCallback,"ax",%progbits
9011 .align 1
9012 .weak HAL_I2C_AbortCpltCallback
9013 .syntax unified
9014 .thumb
9015 .thumb_func
9017 HAL_I2C_AbortCpltCallback:
9018 .LFB175:
4717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C abort callback.
4720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
4723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
4725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9019 .loc 1 4725 1
9020 .cfi_startproc
9021 @ args = 0, pretend = 0, frame = 8
9022 @ frame_needed = 1, uses_anonymous_args = 0
9023 @ link register save eliminated.
9024 0000 80B4 push {r7}
9025 .cfi_def_cfa_offset 4
9026 .cfi_offset 7, -4
9027 0002 83B0 sub sp, sp, #12
9028 .cfi_def_cfa_offset 16
9029 0004 00AF add r7, sp, #0
9030 .cfi_def_cfa_register 7
9031 0006 7860 str r0, [r7, #4]
4726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
4727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(hi2c);
4728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed,
4730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** the HAL_I2C_AbortCpltCallback could be implemented in the user file
4731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 243
9032 .loc 1 4732 1
9033 0008 00BF nop
9034 000a 0C37 adds r7, r7, #12
9035 .cfi_def_cfa_offset 4
9036 000c BD46 mov sp, r7
9037 .cfi_def_cfa_register 13
9038 @ sp needed
9039 000e 5DF8047B ldr r7, [sp], #4
9040 .cfi_restore 7
9041 .cfi_def_cfa_offset 0
9042 0012 7047 bx lr
9043 .cfi_endproc
9044 .LFE175:
9046 .section .text.HAL_I2C_GetState,"ax",%progbits
9047 .align 1
9048 .global HAL_I2C_GetState
9049 .syntax unified
9050 .thumb
9051 .thumb_func
9053 HAL_I2C_GetState:
9054 .LFB176:
4733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
4736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions
4739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Peripheral State, Mode and Error functions
4740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *
4741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @verbatim
4742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
4743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ##### Peripheral State, Mode and Error functions #####
4744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ===============================================================================
4745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** [..]
4746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** This subsection permit to get in run-time the status of the peripheral
4747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** and the data flow.
4748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** @endverbatim
4750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
4751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C handle state.
4755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL state
4758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c)
4760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9055 .loc 1 4760 1
9056 .cfi_startproc
9057 @ args = 0, pretend = 0, frame = 8
9058 @ frame_needed = 1, uses_anonymous_args = 0
9059 @ link register save eliminated.
9060 0000 80B4 push {r7}
9061 .cfi_def_cfa_offset 4
9062 .cfi_offset 7, -4
ARM GAS /tmp/cc5G5cqz.s page 244
9063 0002 83B0 sub sp, sp, #12
9064 .cfi_def_cfa_offset 16
9065 0004 00AF add r7, sp, #0
9066 .cfi_def_cfa_register 7
9067 0006 7860 str r0, [r7, #4]
4761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return I2C handle state */
4762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->State;
9068 .loc 1 4762 14
9069 0008 7B68 ldr r3, [r7, #4]
9070 000a 93F84130 ldrb r3, [r3, #65]
9071 000e DBB2 uxtb r3, r3
4763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
9072 .loc 1 4763 1
9073 0010 1846 mov r0, r3
9074 0012 0C37 adds r7, r7, #12
9075 .cfi_def_cfa_offset 4
9076 0014 BD46 mov sp, r7
9077 .cfi_def_cfa_register 13
9078 @ sp needed
9079 0016 5DF8047B ldr r7, [sp], #4
9080 .cfi_restore 7
9081 .cfi_def_cfa_offset 0
9082 001a 7047 bx lr
9083 .cfi_endproc
9084 .LFE176:
9086 .section .text.HAL_I2C_GetMode,"ax",%progbits
9087 .align 1
9088 .global HAL_I2C_GetMode
9089 .syntax unified
9090 .thumb
9091 .thumb_func
9093 HAL_I2C_GetMode:
9094 .LFB177:
4764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Returns the I2C Master, Slave, Memory or no mode.
4767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for I2C module
4769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL mode
4770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c)
4772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9095 .loc 1 4772 1
9096 .cfi_startproc
9097 @ args = 0, pretend = 0, frame = 8
9098 @ frame_needed = 1, uses_anonymous_args = 0
9099 @ link register save eliminated.
9100 0000 80B4 push {r7}
9101 .cfi_def_cfa_offset 4
9102 .cfi_offset 7, -4
9103 0002 83B0 sub sp, sp, #12
9104 .cfi_def_cfa_offset 16
9105 0004 00AF add r7, sp, #0
9106 .cfi_def_cfa_register 7
9107 0006 7860 str r0, [r7, #4]
4773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->Mode;
9108 .loc 1 4773 14
ARM GAS /tmp/cc5G5cqz.s page 245
9109 0008 7B68 ldr r3, [r7, #4]
9110 000a 93F84230 ldrb r3, [r3, #66]
9111 000e DBB2 uxtb r3, r3
4774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
9112 .loc 1 4774 1
9113 0010 1846 mov r0, r3
9114 0012 0C37 adds r7, r7, #12
9115 .cfi_def_cfa_offset 4
9116 0014 BD46 mov sp, r7
9117 .cfi_def_cfa_register 13
9118 @ sp needed
9119 0016 5DF8047B ldr r7, [sp], #4
9120 .cfi_restore 7
9121 .cfi_def_cfa_offset 0
9122 001a 7047 bx lr
9123 .cfi_endproc
9124 .LFE177:
9126 .section .text.HAL_I2C_GetError,"ax",%progbits
9127 .align 1
9128 .global HAL_I2C_GetError
9129 .syntax unified
9130 .thumb
9131 .thumb_func
9133 HAL_I2C_GetError:
9134 .LFB178:
4775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Return the I2C error code.
4778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval I2C Error Code
4781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c)
4783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9135 .loc 1 4783 1
9136 .cfi_startproc
9137 @ args = 0, pretend = 0, frame = 8
9138 @ frame_needed = 1, uses_anonymous_args = 0
9139 @ link register save eliminated.
9140 0000 80B4 push {r7}
9141 .cfi_def_cfa_offset 4
9142 .cfi_offset 7, -4
9143 0002 83B0 sub sp, sp, #12
9144 .cfi_def_cfa_offset 16
9145 0004 00AF add r7, sp, #0
9146 .cfi_def_cfa_register 7
9147 0006 7860 str r0, [r7, #4]
4784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return hi2c->ErrorCode;
9148 .loc 1 4784 14
9149 0008 7B68 ldr r3, [r7, #4]
9150 000a 5B6C ldr r3, [r3, #68]
4785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
9151 .loc 1 4785 1
9152 000c 1846 mov r0, r3
9153 000e 0C37 adds r7, r7, #12
9154 .cfi_def_cfa_offset 4
9155 0010 BD46 mov sp, r7
ARM GAS /tmp/cc5G5cqz.s page 246
9156 .cfi_def_cfa_register 13
9157 @ sp needed
9158 0012 5DF8047B ldr r7, [sp], #4
9159 .cfi_restore 7
9160 .cfi_def_cfa_offset 0
9161 0016 7047 bx lr
9162 .cfi_endproc
9163 .LFE178:
9165 .section .text.I2C_Master_ISR_IT,"ax",%progbits
9166 .align 1
9167 .syntax unified
9168 .thumb
9169 .thumb_func
9171 I2C_Master_ISR_IT:
9172 .LFB179:
4786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
4789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @}
4793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /** @addtogroup I2C_Private_Functions
4796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @{
4797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt.
4801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
4804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
4805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
4808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
4809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9173 .loc 1 4809 1
9174 .cfi_startproc
9175 @ args = 0, pretend = 0, frame = 24
9176 @ frame_needed = 1, uses_anonymous_args = 0
9177 0000 80B5 push {r7, lr}
9178 .cfi_def_cfa_offset 8
9179 .cfi_offset 7, -8
9180 .cfi_offset 14, -4
9181 0002 88B0 sub sp, sp, #32
9182 .cfi_def_cfa_offset 40
9183 0004 02AF add r7, sp, #8
9184 .cfi_def_cfa 7, 32
9185 0006 F860 str r0, [r7, #12]
9186 0008 B960 str r1, [r7, #8]
9187 000a 7A60 str r2, [r7, #4]
4810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress;
4811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags;
9188 .loc 1 4811 12
ARM GAS /tmp/cc5G5cqz.s page 247
9189 000c BB68 ldr r3, [r7, #8]
9190 000e 7B61 str r3, [r7, #20]
4812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
4814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
9191 .loc 1 4814 3
9192 0010 FB68 ldr r3, [r7, #12]
9193 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
9194 0016 012B cmp r3, #1
9195 0018 01D1 bne .L437
9196 .loc 1 4814 3 is_stmt 0 discriminator 1
9197 001a 0223 movs r3, #2
9198 .loc 1 4814 3
9199 001c 14E1 b .L438
9200 .L437:
9201 .loc 1 4814 3 discriminator 2
9202 001e FB68 ldr r3, [r7, #12]
9203 0020 0122 movs r2, #1
9204 0022 83F84020 strb r2, [r3, #64]
4815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \
9205 .loc 1 4816 8 is_stmt 1
9206 0026 7B69 ldr r3, [r7, #20]
9207 0028 1B09 lsrs r3, r3, #4
9208 002a 03F00103 and r3, r3, #1
9209 .loc 1 4816 6
9210 002e 002B cmp r3, #0
9211 0030 13D0 beq .L439
4817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
9212 .loc 1 4817 8
9213 0032 7B68 ldr r3, [r7, #4]
9214 0034 1B09 lsrs r3, r3, #4
9215 0036 03F00103 and r3, r3, #1
4816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
9216 .loc 1 4816 58 discriminator 1
9217 003a 002B cmp r3, #0
9218 003c 0DD0 beq .L439
4818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
4820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
9219 .loc 1 4820 5
9220 003e FB68 ldr r3, [r7, #12]
9221 0040 1B68 ldr r3, [r3]
9222 0042 1022 movs r2, #16
9223 0044 DA61 str r2, [r3, #28]
4821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */
4823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */
4824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */
4825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
9224 .loc 1 4825 9
9225 0046 FB68 ldr r3, [r7, #12]
9226 0048 5B6C ldr r3, [r3, #68]
9227 .loc 1 4825 21
9228 004a 43F00402 orr r2, r3, #4
9229 004e FB68 ldr r3, [r7, #12]
9230 0050 5A64 str r2, [r3, #68]
ARM GAS /tmp/cc5G5cqz.s page 248
4826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
4828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
9231 .loc 1 4828 5
9232 0052 F868 ldr r0, [r7, #12]
9233 0054 FFF7FEFF bl I2C_Flush_TXDR
9234 0058 E1E0 b .L440
9235 .L439:
4829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \
9236 .loc 1 4830 13
9237 005a 7B69 ldr r3, [r7, #20]
9238 005c 9B08 lsrs r3, r3, #2
9239 005e 03F00103 and r3, r3, #1
9240 .loc 1 4830 11
9241 0062 002B cmp r3, #0
9242 0064 23D0 beq .L441
4831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
9243 .loc 1 4831 13
9244 0066 7B68 ldr r3, [r7, #4]
9245 0068 9B08 lsrs r3, r3, #2
9246 006a 03F00103 and r3, r3, #1
4830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
9247 .loc 1 4830 65 discriminator 1
9248 006e 002B cmp r3, #0
9249 0070 1DD0 beq .L441
4832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */
4834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE;
9250 .loc 1 4834 16
9251 0072 7B69 ldr r3, [r7, #20]
9252 0074 23F00403 bic r3, r3, #4
9253 0078 7B61 str r3, [r7, #20]
4835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
4837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
9254 .loc 1 4837 36
9255 007a FB68 ldr r3, [r7, #12]
9256 007c 1B68 ldr r3, [r3]
9257 .loc 1 4837 46
9258 007e 5A6A ldr r2, [r3, #36]
9259 .loc 1 4837 10
9260 0080 FB68 ldr r3, [r7, #12]
9261 0082 5B6A ldr r3, [r3, #36]
9262 .loc 1 4837 23
9263 0084 D2B2 uxtb r2, r2
9264 .loc 1 4837 21
9265 0086 1A70 strb r2, [r3]
4838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
4840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
9266 .loc 1 4840 9
9267 0088 FB68 ldr r3, [r7, #12]
9268 008a 5B6A ldr r3, [r3, #36]
9269 .loc 1 4840 19
9270 008c 5A1C adds r2, r3, #1
9271 008e FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 249
9272 0090 5A62 str r2, [r3, #36]
4841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
9273 .loc 1 4842 9
9274 0092 FB68 ldr r3, [r7, #12]
9275 0094 1B8D ldrh r3, [r3, #40]
9276 .loc 1 4842 19
9277 0096 013B subs r3, r3, #1
9278 0098 9AB2 uxth r2, r3
9279 009a FB68 ldr r3, [r7, #12]
9280 009c 1A85 strh r2, [r3, #40] @ movhi
4843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
9281 .loc 1 4843 9
9282 009e FB68 ldr r3, [r7, #12]
9283 00a0 5B8D ldrh r3, [r3, #42] @ movhi
9284 00a2 9BB2 uxth r3, r3
9285 .loc 1 4843 20
9286 00a4 013B subs r3, r3, #1
9287 00a6 9AB2 uxth r2, r3
9288 00a8 FB68 ldr r3, [r7, #12]
9289 00aa 5A85 strh r2, [r3, #42] @ movhi
9290 00ac B7E0 b .L440
9291 .L441:
4844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
9292 .loc 1 4845 13
9293 00ae 7B69 ldr r3, [r7, #20]
9294 00b0 5B08 lsrs r3, r3, #1
9295 00b2 03F00103 and r3, r3, #1
9296 .loc 1 4845 11
9297 00b6 002B cmp r3, #0
9298 00b8 1ED0 beq .L442
4846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
9299 .loc 1 4846 13
9300 00ba 7B68 ldr r3, [r7, #4]
9301 00bc 5B08 lsrs r3, r3, #1
9302 00be 03F00103 and r3, r3, #1
4845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
9303 .loc 1 4845 65 discriminator 1
9304 00c2 002B cmp r3, #0
9305 00c4 18D0 beq .L442
4847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
4849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
9306 .loc 1 4849 33
9307 00c6 FB68 ldr r3, [r7, #12]
9308 00c8 5B6A ldr r3, [r3, #36]
9309 .loc 1 4849 28
9310 00ca 1A78 ldrb r2, [r3] @ zero_extendqisi2
9311 .loc 1 4849 9
9312 00cc FB68 ldr r3, [r7, #12]
9313 00ce 1B68 ldr r3, [r3]
9314 .loc 1 4849 26
9315 00d0 9A62 str r2, [r3, #40]
4850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
4852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
ARM GAS /tmp/cc5G5cqz.s page 250
9316 .loc 1 4852 9
9317 00d2 FB68 ldr r3, [r7, #12]
9318 00d4 5B6A ldr r3, [r3, #36]
9319 .loc 1 4852 19
9320 00d6 5A1C adds r2, r3, #1
9321 00d8 FB68 ldr r3, [r7, #12]
9322 00da 5A62 str r2, [r3, #36]
4853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
9323 .loc 1 4854 9
9324 00dc FB68 ldr r3, [r7, #12]
9325 00de 1B8D ldrh r3, [r3, #40]
9326 .loc 1 4854 19
9327 00e0 013B subs r3, r3, #1
9328 00e2 9AB2 uxth r2, r3
9329 00e4 FB68 ldr r3, [r7, #12]
9330 00e6 1A85 strh r2, [r3, #40] @ movhi
4855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
9331 .loc 1 4855 9
9332 00e8 FB68 ldr r3, [r7, #12]
9333 00ea 5B8D ldrh r3, [r3, #42] @ movhi
9334 00ec 9BB2 uxth r3, r3
9335 .loc 1 4855 20
9336 00ee 013B subs r3, r3, #1
9337 00f0 9AB2 uxth r2, r3
9338 00f2 FB68 ldr r3, [r7, #12]
9339 00f4 5A85 strh r2, [r3, #42] @ movhi
9340 00f6 92E0 b .L440
9341 .L442:
4856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \
9342 .loc 1 4857 13
9343 00f8 7B69 ldr r3, [r7, #20]
9344 00fa DB09 lsrs r3, r3, #7
9345 00fc 03F00103 and r3, r3, #1
9346 .loc 1 4857 11
9347 0100 002B cmp r3, #0
9348 0102 5DD0 beq .L443
4858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9349 .loc 1 4858 13
9350 0104 7B68 ldr r3, [r7, #4]
9351 0106 9B09 lsrs r3, r3, #6
9352 0108 03F00103 and r3, r3, #1
4857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9353 .loc 1 4857 64 discriminator 1
9354 010c 002B cmp r3, #0
9355 010e 57D0 beq .L443
4859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
9356 .loc 1 4860 14
9357 0110 FB68 ldr r3, [r7, #12]
9358 0112 5B8D ldrh r3, [r3, #42] @ movhi
9359 0114 9BB2 uxth r3, r3
9360 .loc 1 4860 8
9361 0116 002B cmp r3, #0
9362 0118 40D0 beq .L444
9363 .loc 1 4860 41 discriminator 1
ARM GAS /tmp/cc5G5cqz.s page 251
9364 011a FB68 ldr r3, [r7, #12]
9365 011c 1B8D ldrh r3, [r3, #40]
9366 .loc 1 4860 33 discriminator 1
9367 011e 002B cmp r3, #0
9368 0120 3CD1 bne .L444
4861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);
9369 .loc 1 4862 35
9370 0122 FB68 ldr r3, [r7, #12]
9371 0124 1B68 ldr r3, [r3]
9372 .loc 1 4862 45
9373 0126 5B68 ldr r3, [r3, #4]
9374 .loc 1 4862 20
9375 0128 9BB2 uxth r3, r3
9376 .loc 1 4862 18
9377 012a C3F30903 ubfx r3, r3, #0, #10
9378 012e 7B82 strh r3, [r7, #18] @ movhi
4863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
9379 .loc 1 4864 15
9380 0130 FB68 ldr r3, [r7, #12]
9381 0132 5B8D ldrh r3, [r3, #42] @ movhi
9382 0134 9BB2 uxth r3, r3
9383 .loc 1 4864 10
9384 0136 FF2B cmp r3, #255
9385 0138 0ED9 bls .L445
4865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
9386 .loc 1 4866 24
9387 013a FB68 ldr r3, [r7, #12]
9388 013c FF22 movs r2, #255
9389 013e 1A85 strh r2, [r3, #40] @ movhi
4867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_START
9390 .loc 1 4867 59
9391 0140 FB68 ldr r3, [r7, #12]
9392 0142 1B8D ldrh r3, [r3, #40]
9393 .loc 1 4867 9
9394 0144 DAB2 uxtb r2, r3
9395 0146 798A ldrh r1, [r7, #18]
9396 0148 0023 movs r3, #0
9397 014a 0093 str r3, [sp]
9398 014c 4FF08073 mov r3, #16777216
9399 0150 F868 ldr r0, [r7, #12]
9400 0152 FFF7FEFF bl I2C_TransferConfig
4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9401 .loc 1 4864 10
9402 0156 32E0 b .L448
9403 .L445:
4868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
9404 .loc 1 4871 30
9405 0158 FB68 ldr r3, [r7, #12]
9406 015a 5B8D ldrh r3, [r3, #42] @ movhi
9407 015c 9AB2 uxth r2, r3
9408 .loc 1 4871 24
ARM GAS /tmp/cc5G5cqz.s page 252
9409 015e FB68 ldr r3, [r7, #12]
9410 0160 1A85 strh r2, [r3, #40] @ movhi
4872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)
9411 .loc 1 4872 17
9412 0162 FB68 ldr r3, [r7, #12]
9413 0164 DB6A ldr r3, [r3, #44]
9414 .loc 1 4872 12
9415 0166 13F5803F cmn r3, #65536
9416 016a 0BD0 beq .L447
4873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,
9417 .loc 1 4874 61
9418 016c FB68 ldr r3, [r7, #12]
9419 016e 1B8D ldrh r3, [r3, #40]
9420 .loc 1 4874 11
9421 0170 DAB2 uxtb r2, r3
4875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP);
9422 .loc 1 4875 34
9423 0172 FB68 ldr r3, [r7, #12]
9424 0174 DB6A ldr r3, [r3, #44]
4874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP);
9425 .loc 1 4874 11
9426 0176 798A ldrh r1, [r7, #18]
9427 0178 0020 movs r0, #0
9428 017a 0090 str r0, [sp]
9429 017c F868 ldr r0, [r7, #12]
9430 017e FFF7FEFF bl I2C_TransferConfig
4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9431 .loc 1 4864 10
9432 0182 1CE0 b .L448
9433 .L447:
4876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,
9434 .loc 1 4879 61
9435 0184 FB68 ldr r3, [r7, #12]
9436 0186 1B8D ldrh r3, [r3, #40]
9437 .loc 1 4879 11
9438 0188 DAB2 uxtb r2, r3
9439 018a 798A ldrh r1, [r7, #18]
9440 018c 0023 movs r3, #0
9441 018e 0093 str r3, [sp]
9442 0190 4FF00073 mov r3, #33554432
9443 0194 F868 ldr r0, [r7, #12]
9444 0196 FFF7FEFF bl I2C_TransferConfig
4864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9445 .loc 1 4864 10
9446 019a 10E0 b .L448
9447 .L444:
4880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
4881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */
ARM GAS /tmp/cc5G5cqz.s page 253
4887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)
9448 .loc 1 4887 11
9449 019c FB68 ldr r3, [r7, #12]
9450 019e 1B68 ldr r3, [r3]
9451 01a0 5B68 ldr r3, [r3, #4]
9452 01a2 03F00073 and r3, r3, #33554432
9453 .loc 1 4887 10
9454 01a6 B3F1007F cmp r3, #33554432
9455 01aa 03D0 beq .L449
4888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */
4890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c);
9456 .loc 1 4890 9
9457 01ac F868 ldr r0, [r7, #12]
9458 01ae FFF7FEFF bl I2C_ITMasterSeqCplt
4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9459 .loc 1 4860 8
9460 01b2 34E0 b .L440
9461 .L449:
4891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */
4895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
4896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
9462 .loc 1 4896 9
9463 01b4 4021 movs r1, #64
9464 01b6 F868 ldr r0, [r7, #12]
9465 01b8 FFF7FEFF bl I2C_ITError
4860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9466 .loc 1 4860 8
9467 01bc 2FE0 b .L440
9468 .L448:
9469 01be 2EE0 b .L440
9470 .L443:
4897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \
9471 .loc 1 4900 13
9472 01c0 7B69 ldr r3, [r7, #20]
9473 01c2 9B09 lsrs r3, r3, #6
9474 01c4 03F00103 and r3, r3, #1
9475 .loc 1 4900 11
9476 01c8 002B cmp r3, #0
9477 01ca 28D0 beq .L440
4901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9478 .loc 1 4901 13
9479 01cc 7B68 ldr r3, [r7, #4]
9480 01ce 9B09 lsrs r3, r3, #6
9481 01d0 03F00103 and r3, r3, #1
4900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9482 .loc 1 4900 63 discriminator 1
9483 01d4 002B cmp r3, #0
9484 01d6 22D0 beq .L440
4902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U)
ARM GAS /tmp/cc5G5cqz.s page 254
9485 .loc 1 4903 13
9486 01d8 FB68 ldr r3, [r7, #12]
9487 01da 5B8D ldrh r3, [r3, #42] @ movhi
9488 01dc 9BB2 uxth r3, r3
9489 .loc 1 4903 8
9490 01de 002B cmp r3, #0
9491 01e0 19D1 bne .L450
4904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)
9492 .loc 1 4905 11
9493 01e2 FB68 ldr r3, [r7, #12]
9494 01e4 1B68 ldr r3, [r3]
9495 01e6 5B68 ldr r3, [r3, #4]
9496 01e8 03F00073 and r3, r3, #33554432
9497 .loc 1 4905 10
9498 01ec B3F1007F cmp r3, #33554432
9499 01f0 15D0 beq .L440
4906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */
4908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)
9500 .loc 1 4908 17
9501 01f2 FB68 ldr r3, [r7, #12]
9502 01f4 DB6A ldr r3, [r3, #44]
9503 .loc 1 4908 12
9504 01f6 13F5803F cmn r3, #65536
9505 01fa 08D1 bne .L451
4909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */
4911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP;
9506 .loc 1 4911 15
9507 01fc FB68 ldr r3, [r7, #12]
9508 01fe 1B68 ldr r3, [r3]
9509 .loc 1 4911 25
9510 0200 5A68 ldr r2, [r3, #4]
9511 .loc 1 4911 15
9512 0202 FB68 ldr r3, [r7, #12]
9513 0204 1B68 ldr r3, [r3]
9514 .loc 1 4911 31
9515 0206 42F48042 orr r2, r2, #16384
9516 020a 5A60 str r2, [r3, #4]
9517 020c 07E0 b .L440
9518 .L451:
4912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */
4916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c);
9519 .loc 1 4916 11
9520 020e F868 ldr r0, [r7, #12]
9521 0210 FFF7FEFF bl I2C_ITMasterSeqCplt
9522 0214 03E0 b .L440
9523 .L450:
4917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 255
4922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */
4923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
4924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
9524 .loc 1 4924 7
9525 0216 4021 movs r1, #64
9526 0218 F868 ldr r0, [r7, #12]
9527 021a FFF7FEFF bl I2C_ITError
9528 .L440:
4925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
4928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
4930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \
9529 .loc 1 4932 8
9530 021e 7B69 ldr r3, [r7, #20]
9531 0220 5B09 lsrs r3, r3, #5
9532 0222 03F00103 and r3, r3, #1
9533 .loc 1 4932 6
9534 0226 002B cmp r3, #0
9535 0228 09D0 beq .L452
4933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
9536 .loc 1 4933 8
9537 022a 7B68 ldr r3, [r7, #4]
9538 022c 5B09 lsrs r3, r3, #5
9539 022e 03F00103 and r3, r3, #1
4932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
9540 .loc 1 4932 61 discriminator 1
9541 0232 002B cmp r3, #0
9542 0234 03D0 beq .L452
4934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */
4936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags);
9543 .loc 1 4936 5
9544 0236 7969 ldr r1, [r7, #20]
9545 0238 F868 ldr r0, [r7, #12]
9546 023a FFF7FEFF bl I2C_ITMasterCplt
9547 .L452:
4937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
4940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
9548 .loc 1 4940 3
9549 023e FB68 ldr r3, [r7, #12]
9550 0240 0022 movs r2, #0
9551 0242 83F84020 strb r2, [r3, #64]
4941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
9552 .loc 1 4942 10
9553 0246 0023 movs r3, #0
9554 .L438:
4943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
9555 .loc 1 4943 1
9556 0248 1846 mov r0, r3
9557 024a 1837 adds r7, r7, #24
ARM GAS /tmp/cc5G5cqz.s page 256
9558 .cfi_def_cfa_offset 8
9559 024c BD46 mov sp, r7
9560 .cfi_def_cfa_register 13
9561 @ sp needed
9562 024e 80BD pop {r7, pc}
9563 .cfi_endproc
9564 .LFE179:
9566 .section .text.I2C_Mem_ISR_IT,"ax",%progbits
9567 .align 1
9568 .syntax unified
9569 .thumb
9570 .thumb_func
9572 I2C_Mem_ISR_IT:
9573 .LFB180:
4944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
4946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt.
4947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
4948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
4949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
4950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
4951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
4952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
4953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
4954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
4955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9574 .loc 1 4955 1
9575 .cfi_startproc
9576 @ args = 0, pretend = 0, frame = 24
9577 @ frame_needed = 1, uses_anonymous_args = 0
9578 0000 80B5 push {r7, lr}
9579 .cfi_def_cfa_offset 8
9580 .cfi_offset 7, -8
9581 .cfi_offset 14, -4
9582 0002 88B0 sub sp, sp, #32
9583 .cfi_def_cfa_offset 40
9584 0004 02AF add r7, sp, #8
9585 .cfi_def_cfa 7, 32
9586 0006 F860 str r0, [r7, #12]
9587 0008 B960 str r1, [r7, #8]
9588 000a 7A60 str r2, [r7, #4]
4956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE;
9589 .loc 1 4956 12
9590 000c 8F4B ldr r3, .L470
9591 000e 7B61 str r3, [r7, #20]
4957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags;
9592 .loc 1 4957 12
9593 0010 BB68 ldr r3, [r7, #8]
9594 0012 3B61 str r3, [r7, #16]
4958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
4960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
9595 .loc 1 4960 3
9596 0014 FB68 ldr r3, [r7, #12]
9597 0016 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
9598 001a 012B cmp r3, #1
9599 001c 01D1 bne .L454
ARM GAS /tmp/cc5G5cqz.s page 257
9600 .loc 1 4960 3 is_stmt 0 discriminator 1
9601 001e 0223 movs r3, #2
9602 .loc 1 4960 3
9603 0020 10E1 b .L455
9604 .L454:
9605 .loc 1 4960 3 discriminator 2
9606 0022 FB68 ldr r3, [r7, #12]
9607 0024 0122 movs r2, #1
9608 0026 83F84020 strb r2, [r3, #64]
4961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \
9609 .loc 1 4962 8 is_stmt 1
9610 002a 3B69 ldr r3, [r7, #16]
9611 002c 1B09 lsrs r3, r3, #4
9612 002e 03F00103 and r3, r3, #1
9613 .loc 1 4962 6
9614 0032 002B cmp r3, #0
9615 0034 13D0 beq .L456
4963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
9616 .loc 1 4963 8
9617 0036 7B68 ldr r3, [r7, #4]
9618 0038 1B09 lsrs r3, r3, #4
9619 003a 03F00103 and r3, r3, #1
4962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
9620 .loc 1 4962 58 discriminator 1
9621 003e 002B cmp r3, #0
9622 0040 0DD0 beq .L456
4964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
4966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
9623 .loc 1 4966 5
9624 0042 FB68 ldr r3, [r7, #12]
9625 0044 1B68 ldr r3, [r3]
9626 0046 1022 movs r2, #16
9627 0048 DA61 str r2, [r3, #28]
4967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */
4969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */
4970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */
4971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
9628 .loc 1 4971 9
9629 004a FB68 ldr r3, [r7, #12]
9630 004c 5B6C ldr r3, [r3, #68]
9631 .loc 1 4971 21
9632 004e 43F00402 orr r2, r3, #4
9633 0052 FB68 ldr r3, [r7, #12]
9634 0054 5A64 str r2, [r3, #68]
4972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
4974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
9635 .loc 1 4974 5
9636 0056 F868 ldr r0, [r7, #12]
9637 0058 FFF7FEFF bl I2C_Flush_TXDR
9638 005c DDE0 b .L457
9639 .L456:
4975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \
ARM GAS /tmp/cc5G5cqz.s page 258
9640 .loc 1 4976 13
9641 005e 3B69 ldr r3, [r7, #16]
9642 0060 9B08 lsrs r3, r3, #2
9643 0062 03F00103 and r3, r3, #1
9644 .loc 1 4976 11
9645 0066 002B cmp r3, #0
9646 0068 23D0 beq .L458
4977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
9647 .loc 1 4977 13
9648 006a 7B68 ldr r3, [r7, #4]
9649 006c 9B08 lsrs r3, r3, #2
9650 006e 03F00103 and r3, r3, #1
4976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
9651 .loc 1 4976 65 discriminator 1
9652 0072 002B cmp r3, #0
9653 0074 1DD0 beq .L458
4978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */
4980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE;
9654 .loc 1 4980 16
9655 0076 3B69 ldr r3, [r7, #16]
9656 0078 23F00403 bic r3, r3, #4
9657 007c 3B61 str r3, [r7, #16]
4981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
4983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
9658 .loc 1 4983 36
9659 007e FB68 ldr r3, [r7, #12]
9660 0080 1B68 ldr r3, [r3]
9661 .loc 1 4983 46
9662 0082 5A6A ldr r2, [r3, #36]
9663 .loc 1 4983 10
9664 0084 FB68 ldr r3, [r7, #12]
9665 0086 5B6A ldr r3, [r3, #36]
9666 .loc 1 4983 23
9667 0088 D2B2 uxtb r2, r2
9668 .loc 1 4983 21
9669 008a 1A70 strb r2, [r3]
4984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
4986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
9670 .loc 1 4986 9
9671 008c FB68 ldr r3, [r7, #12]
9672 008e 5B6A ldr r3, [r3, #36]
9673 .loc 1 4986 19
9674 0090 5A1C adds r2, r3, #1
9675 0092 FB68 ldr r3, [r7, #12]
9676 0094 5A62 str r2, [r3, #36]
4987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
9677 .loc 1 4988 9
9678 0096 FB68 ldr r3, [r7, #12]
9679 0098 1B8D ldrh r3, [r3, #40]
9680 .loc 1 4988 19
9681 009a 013B subs r3, r3, #1
9682 009c 9AB2 uxth r2, r3
9683 009e FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 259
9684 00a0 1A85 strh r2, [r3, #40] @ movhi
4989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
9685 .loc 1 4989 9
9686 00a2 FB68 ldr r3, [r7, #12]
9687 00a4 5B8D ldrh r3, [r3, #42] @ movhi
9688 00a6 9BB2 uxth r3, r3
9689 .loc 1 4989 20
9690 00a8 013B subs r3, r3, #1
9691 00aa 9AB2 uxth r2, r3
9692 00ac FB68 ldr r3, [r7, #12]
9693 00ae 5A85 strh r2, [r3, #42] @ movhi
9694 00b0 B3E0 b .L457
9695 .L458:
4990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
4991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
9696 .loc 1 4991 13
9697 00b2 3B69 ldr r3, [r7, #16]
9698 00b4 5B08 lsrs r3, r3, #1
9699 00b6 03F00103 and r3, r3, #1
9700 .loc 1 4991 11
9701 00ba 002B cmp r3, #0
9702 00bc 2DD0 beq .L459
4992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
9703 .loc 1 4992 13
9704 00be 7B68 ldr r3, [r7, #4]
9705 00c0 5B08 lsrs r3, r3, #1
9706 00c2 03F00103 and r3, r3, #1
4991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
9707 .loc 1 4991 65 discriminator 1
9708 00c6 002B cmp r3, #0
9709 00c8 27D0 beq .L459
4993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Memaddress == 0xFFFFFFFFU)
9710 .loc 1 4994 13
9711 00ca FB68 ldr r3, [r7, #12]
9712 00cc 1B6D ldr r3, [r3, #80]
9713 .loc 1 4994 8
9714 00ce B3F1FF3F cmp r3, #-1
9715 00d2 18D1 bne .L460
4995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
4996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
4997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
9716 .loc 1 4997 35
9717 00d4 FB68 ldr r3, [r7, #12]
9718 00d6 5B6A ldr r3, [r3, #36]
9719 .loc 1 4997 30
9720 00d8 1A78 ldrb r2, [r3] @ zero_extendqisi2
9721 .loc 1 4997 11
9722 00da FB68 ldr r3, [r7, #12]
9723 00dc 1B68 ldr r3, [r3]
9724 .loc 1 4997 28
9725 00de 9A62 str r2, [r3, #40]
4998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
4999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
5000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
9726 .loc 1 5000 11
9727 00e0 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 260
9728 00e2 5B6A ldr r3, [r3, #36]
9729 .loc 1 5000 21
9730 00e4 5A1C adds r2, r3, #1
9731 00e6 FB68 ldr r3, [r7, #12]
9732 00e8 5A62 str r2, [r3, #36]
5001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
9733 .loc 1 5002 11
9734 00ea FB68 ldr r3, [r7, #12]
9735 00ec 1B8D ldrh r3, [r3, #40]
9736 .loc 1 5002 21
9737 00ee 013B subs r3, r3, #1
9738 00f0 9AB2 uxth r2, r3
9739 00f2 FB68 ldr r3, [r7, #12]
9740 00f4 1A85 strh r2, [r3, #40] @ movhi
5003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
9741 .loc 1 5003 11
9742 00f6 FB68 ldr r3, [r7, #12]
9743 00f8 5B8D ldrh r3, [r3, #42] @ movhi
9744 00fa 9BB2 uxth r3, r3
9745 .loc 1 5003 22
9746 00fc 013B subs r3, r3, #1
9747 00fe 9AB2 uxth r2, r3
9748 0100 FB68 ldr r3, [r7, #12]
9749 0102 5A85 strh r2, [r3, #42] @ movhi
4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9750 .loc 1 4994 8
9751 0104 89E0 b .L457
9752 .L460:
5004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */
5008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress;
9753 .loc 1 5008 11
9754 0106 FB68 ldr r3, [r7, #12]
9755 0108 1B68 ldr r3, [r3]
9756 .loc 1 5008 34
9757 010a FA68 ldr r2, [r7, #12]
9758 010c 126D ldr r2, [r2, #80]
9759 .loc 1 5008 28
9760 010e 9A62 str r2, [r3, #40]
5009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
5011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
9761 .loc 1 5011 24
9762 0110 FB68 ldr r3, [r7, #12]
9763 0112 4FF0FF32 mov r2, #-1
9764 0116 1A65 str r2, [r3, #80]
4994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9765 .loc 1 4994 8
9766 0118 7FE0 b .L457
9767 .L459:
5012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \
9768 .loc 1 5014 13
ARM GAS /tmp/cc5G5cqz.s page 261
9769 011a 3B69 ldr r3, [r7, #16]
9770 011c DB09 lsrs r3, r3, #7
9771 011e 03F00103 and r3, r3, #1
9772 .loc 1 5014 11
9773 0122 002B cmp r3, #0
9774 0124 3DD0 beq .L462
5015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9775 .loc 1 5015 13
9776 0126 7B68 ldr r3, [r7, #4]
9777 0128 9B09 lsrs r3, r3, #6
9778 012a 03F00103 and r3, r3, #1
5014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9779 .loc 1 5014 64 discriminator 1
9780 012e 002B cmp r3, #0
9781 0130 37D0 beq .L462
5016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
9782 .loc 1 5017 14
9783 0132 FB68 ldr r3, [r7, #12]
9784 0134 5B8D ldrh r3, [r3, #42] @ movhi
9785 0136 9BB2 uxth r3, r3
9786 .loc 1 5017 8
9787 0138 002B cmp r3, #0
9788 013a 2CD0 beq .L463
9789 .loc 1 5017 41 discriminator 1
9790 013c FB68 ldr r3, [r7, #12]
9791 013e 1B8D ldrh r3, [r3, #40]
9792 .loc 1 5017 33 discriminator 1
9793 0140 002B cmp r3, #0
9794 0142 28D1 bne .L463
5018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
9795 .loc 1 5019 15
9796 0144 FB68 ldr r3, [r7, #12]
9797 0146 5B8D ldrh r3, [r3, #42] @ movhi
9798 0148 9BB2 uxth r3, r3
9799 .loc 1 5019 10
9800 014a FF2B cmp r3, #255
9801 014c 10D9 bls .L464
5020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
9802 .loc 1 5021 24
9803 014e FB68 ldr r3, [r7, #12]
9804 0150 FF22 movs r2, #255
9805 0152 1A85 strh r2, [r3, #40] @ movhi
5022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
9806 .loc 1 5022 48
9807 0154 FB68 ldr r3, [r7, #12]
9808 0156 DB6C ldr r3, [r3, #76]
9809 .loc 1 5022 9
9810 0158 99B2 uxth r1, r3
9811 .loc 1 5022 75
9812 015a FB68 ldr r3, [r7, #12]
9813 015c 1B8D ldrh r3, [r3, #40]
9814 .loc 1 5022 9
9815 015e DAB2 uxtb r2, r3
9816 0160 0023 movs r3, #0
ARM GAS /tmp/cc5G5cqz.s page 262
9817 0162 0093 str r3, [sp]
9818 0164 4FF08073 mov r3, #16777216
9819 0168 F868 ldr r0, [r7, #12]
9820 016a FFF7FEFF bl I2C_TransferConfig
5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9821 .loc 1 5019 10
9822 016e 17E0 b .L466
9823 .L464:
5023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
5024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
9824 .loc 1 5027 30
9825 0170 FB68 ldr r3, [r7, #12]
9826 0172 5B8D ldrh r3, [r3, #42] @ movhi
9827 0174 9AB2 uxth r2, r3
9828 .loc 1 5027 24
9829 0176 FB68 ldr r3, [r7, #12]
9830 0178 1A85 strh r2, [r3, #40] @ movhi
5028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
9831 .loc 1 5028 48
9832 017a FB68 ldr r3, [r7, #12]
9833 017c DB6C ldr r3, [r3, #76]
9834 .loc 1 5028 9
9835 017e 99B2 uxth r1, r3
9836 .loc 1 5028 75
9837 0180 FB68 ldr r3, [r7, #12]
9838 0182 1B8D ldrh r3, [r3, #40]
9839 .loc 1 5028 9
9840 0184 DAB2 uxtb r2, r3
9841 0186 0023 movs r3, #0
9842 0188 0093 str r3, [sp]
9843 018a 4FF00073 mov r3, #33554432
9844 018e F868 ldr r0, [r7, #12]
9845 0190 FFF7FEFF bl I2C_TransferConfig
5019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9846 .loc 1 5019 10
9847 0194 04E0 b .L466
9848 .L463:
5029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
5030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */
5035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
9849 .loc 1 5036 7
9850 0196 4021 movs r1, #64
9851 0198 F868 ldr r0, [r7, #12]
9852 019a FFF7FEFF bl I2C_ITError
5017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9853 .loc 1 5017 8
9854 019e 3CE0 b .L457
9855 .L466:
9856 01a0 3BE0 b .L457
ARM GAS /tmp/cc5G5cqz.s page 263
9857 .L462:
5037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \
9858 .loc 1 5039 13
9859 01a2 3B69 ldr r3, [r7, #16]
9860 01a4 9B09 lsrs r3, r3, #6
9861 01a6 03F00103 and r3, r3, #1
9862 .loc 1 5039 11
9863 01aa 002B cmp r3, #0
9864 01ac 35D0 beq .L457
5040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9865 .loc 1 5040 13
9866 01ae 7B68 ldr r3, [r7, #4]
9867 01b0 9B09 lsrs r3, r3, #6
9868 01b2 03F00103 and r3, r3, #1
5039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
9869 .loc 1 5039 63 discriminator 1
9870 01b6 002B cmp r3, #0
9871 01b8 2FD0 beq .L457
5041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
9872 .loc 1 5042 13
9873 01ba FB68 ldr r3, [r7, #12]
9874 01bc 93F84130 ldrb r3, [r3, #65]
9875 01c0 DBB2 uxtb r3, r3
9876 .loc 1 5042 8
9877 01c2 222B cmp r3, #34
9878 01c4 01D1 bne .L467
5043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ;
9879 .loc 1 5044 17
9880 01c6 224B ldr r3, .L470+4
9881 01c8 7B61 str r3, [r7, #20]
9882 .L467:
5045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
9883 .loc 1 5047 13
9884 01ca FB68 ldr r3, [r7, #12]
9885 01cc 5B8D ldrh r3, [r3, #42] @ movhi
9886 01ce 9BB2 uxth r3, r3
9887 .loc 1 5047 8
9888 01d0 FF2B cmp r3, #255
9889 01d2 10D9 bls .L468
5048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
9890 .loc 1 5049 22
9891 01d4 FB68 ldr r3, [r7, #12]
9892 01d6 FF22 movs r2, #255
9893 01d8 1A85 strh r2, [r3, #40] @ movhi
5050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
5052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
9894 .loc 1 5052 46
9895 01da FB68 ldr r3, [r7, #12]
9896 01dc DB6C ldr r3, [r3, #76]
ARM GAS /tmp/cc5G5cqz.s page 264
9897 .loc 1 5052 7
9898 01de 99B2 uxth r1, r3
9899 .loc 1 5052 73
9900 01e0 FB68 ldr r3, [r7, #12]
9901 01e2 1B8D ldrh r3, [r3, #40]
9902 .loc 1 5052 7
9903 01e4 DAB2 uxtb r2, r3
9904 01e6 7B69 ldr r3, [r7, #20]
9905 01e8 0093 str r3, [sp]
9906 01ea 4FF08073 mov r3, #16777216
9907 01ee F868 ldr r0, [r7, #12]
9908 01f0 FFF7FEFF bl I2C_TransferConfig
9909 01f4 11E0 b .L457
9910 .L468:
5053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction);
5054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
9911 .loc 1 5057 28
9912 01f6 FB68 ldr r3, [r7, #12]
9913 01f8 5B8D ldrh r3, [r3, #42] @ movhi
9914 01fa 9AB2 uxth r2, r3
9915 .loc 1 5057 22
9916 01fc FB68 ldr r3, [r7, #12]
9917 01fe 1A85 strh r2, [r3, #40] @ movhi
5058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */
5060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
9918 .loc 1 5060 46
9919 0200 FB68 ldr r3, [r7, #12]
9920 0202 DB6C ldr r3, [r3, #76]
9921 .loc 1 5060 7
9922 0204 99B2 uxth r1, r3
9923 .loc 1 5060 73
9924 0206 FB68 ldr r3, [r7, #12]
9925 0208 1B8D ldrh r3, [r3, #40]
9926 .loc 1 5060 7
9927 020a DAB2 uxtb r2, r3
9928 020c 7B69 ldr r3, [r7, #20]
9929 020e 0093 str r3, [sp]
9930 0210 4FF00073 mov r3, #33554432
9931 0214 F868 ldr r0, [r7, #12]
9932 0216 FFF7FEFF bl I2C_TransferConfig
9933 .L457:
5061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction);
5062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \
9934 .loc 1 5069 8
9935 021a 3B69 ldr r3, [r7, #16]
9936 021c 5B09 lsrs r3, r3, #5
ARM GAS /tmp/cc5G5cqz.s page 265
9937 021e 03F00103 and r3, r3, #1
9938 .loc 1 5069 6
9939 0222 002B cmp r3, #0
9940 0224 09D0 beq .L469
5070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
9941 .loc 1 5070 8
9942 0226 7B68 ldr r3, [r7, #4]
9943 0228 5B09 lsrs r3, r3, #5
9944 022a 03F00103 and r3, r3, #1
5069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
9945 .loc 1 5069 61 discriminator 1
9946 022e 002B cmp r3, #0
9947 0230 03D0 beq .L469
5071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */
5073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags);
9948 .loc 1 5073 5
9949 0232 3969 ldr r1, [r7, #16]
9950 0234 F868 ldr r0, [r7, #12]
9951 0236 FFF7FEFF bl I2C_ITMasterCplt
9952 .L469:
5074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
9953 .loc 1 5077 3
9954 023a FB68 ldr r3, [r7, #12]
9955 023c 0022 movs r2, #0
9956 023e 83F84020 strb r2, [r3, #64]
5078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
9957 .loc 1 5079 10
9958 0242 0023 movs r3, #0
9959 .L455:
5080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
9960 .loc 1 5080 1
9961 0244 1846 mov r0, r3
9962 0246 1837 adds r7, r7, #24
9963 .cfi_def_cfa_offset 8
9964 0248 BD46 mov sp, r7
9965 .cfi_def_cfa_register 13
9966 @ sp needed
9967 024a 80BD pop {r7, pc}
9968 .L471:
9969 .align 2
9970 .L470:
9971 024c 00200080 .word -2147475456
9972 0250 00240080 .word -2147474432
9973 .cfi_endproc
9974 .LFE180:
9976 .section .text.I2C_Slave_ISR_IT,"ax",%progbits
9977 .align 1
9978 .syntax unified
9979 .thumb
9980 .thumb_func
9982 I2C_Slave_ISR_IT:
9983 .LFB181:
ARM GAS /tmp/cc5G5cqz.s page 266
5081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt.
5084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
5087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
5088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
5091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
5092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
9984 .loc 1 5092 1
9985 .cfi_startproc
9986 @ args = 0, pretend = 0, frame = 24
9987 @ frame_needed = 1, uses_anonymous_args = 0
9988 0000 80B5 push {r7, lr}
9989 .cfi_def_cfa_offset 8
9990 .cfi_offset 7, -8
9991 .cfi_offset 14, -4
9992 0002 86B0 sub sp, sp, #24
9993 .cfi_def_cfa_offset 32
9994 0004 00AF add r7, sp, #0
9995 .cfi_def_cfa_register 7
9996 0006 F860 str r0, [r7, #12]
9997 0008 B960 str r1, [r7, #8]
9998 000a 7A60 str r2, [r7, #4]
5093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions;
9999 .loc 1 5093 12
10000 000c FB68 ldr r3, [r7, #12]
10001 000e DB6A ldr r3, [r3, #44]
10002 0010 7B61 str r3, [r7, #20]
5094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags;
10003 .loc 1 5094 12
10004 0012 BB68 ldr r3, [r7, #8]
10005 0014 3B61 str r3, [r7, #16]
5095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */
5097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
10006 .loc 1 5097 3
10007 0016 FB68 ldr r3, [r7, #12]
10008 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
10009 001c 012B cmp r3, #1
10010 001e 01D1 bne .L473
10011 .loc 1 5097 3 is_stmt 0 discriminator 1
10012 0020 0223 movs r3, #2
10013 .loc 1 5097 3
10014 0022 ECE0 b .L474
10015 .L473:
10016 .loc 1 5097 3 discriminator 2
10017 0024 FB68 ldr r3, [r7, #12]
10018 0026 0122 movs r2, #1
10019 0028 83F84020 strb r2, [r3, #64]
5098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */
5100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \
10020 .loc 1 5100 8 is_stmt 1
ARM GAS /tmp/cc5G5cqz.s page 267
10021 002c 3B69 ldr r3, [r7, #16]
10022 002e 5B09 lsrs r3, r3, #5
10023 0030 03F00103 and r3, r3, #1
10024 .loc 1 5100 6
10025 0034 002B cmp r3, #0
10026 0036 09D0 beq .L475
5101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
10027 .loc 1 5101 8
10028 0038 7B68 ldr r3, [r7, #4]
10029 003a 5B09 lsrs r3, r3, #5
10030 003c 03F00103 and r3, r3, #1
5100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
10031 .loc 1 5100 61 discriminator 1
10032 0040 002B cmp r3, #0
10033 0042 03D0 beq .L475
5102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */
5104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, tmpITFlags);
10034 .loc 1 5104 5
10035 0044 3969 ldr r1, [r7, #16]
10036 0046 F868 ldr r0, [r7, #12]
10037 0048 FFF7FEFF bl I2C_ITSlaveCplt
10038 .L475:
5105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \
10039 .loc 1 5107 8
10040 004c 3B69 ldr r3, [r7, #16]
10041 004e 1B09 lsrs r3, r3, #4
10042 0050 03F00103 and r3, r3, #1
10043 .loc 1 5107 6
10044 0054 002B cmp r3, #0
10045 0056 4DD0 beq .L476
5108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10046 .loc 1 5108 8
10047 0058 7B68 ldr r3, [r7, #4]
10048 005a 1B09 lsrs r3, r3, #4
10049 005c 03F00103 and r3, r3, #1
5107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10050 .loc 1 5107 58 discriminator 1
10051 0060 002B cmp r3, #0
10052 0062 47D0 beq .L476
5109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */
5111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
5112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0*/
5113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */
5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U)
10053 .loc 1 5114 13
10054 0064 FB68 ldr r3, [r7, #12]
10055 0066 5B8D ldrh r3, [r3, #42] @ movhi
10056 0068 9BB2 uxth r3, r3
10057 .loc 1 5114 8
10058 006a 002B cmp r3, #0
10059 006c 28D1 bne .L477
5115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))
ARM GAS /tmp/cc5G5cqz.s page 268
10060 .loc 1 5116 16
10061 006e FB68 ldr r3, [r7, #12]
10062 0070 93F84130 ldrb r3, [r3, #65]
10063 0074 DBB2 uxtb r3, r3
10064 .loc 1 5116 10
10065 0076 282B cmp r3, #40
10066 0078 08D1 bne .L478
10067 .loc 1 5116 49 discriminator 1
10068 007a 7B69 ldr r3, [r7, #20]
10069 007c B3F1007F cmp r3, #33554432
10070 0080 04D1 bne .L478
5117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for
5118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */
5119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */
5121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags);
10071 .loc 1 5121 9
10072 0082 3969 ldr r1, [r7, #16]
10073 0084 F868 ldr r0, [r7, #12]
10074 0086 FFF7FEFF bl I2C_ITListenCplt
10075 008a 32E0 b .L481
10076 .L478:
5122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)
10077 .loc 1 5123 21
10078 008c FB68 ldr r3, [r7, #12]
10079 008e 93F84130 ldrb r3, [r3, #65]
10080 0092 DBB2 uxtb r3, r3
10081 .loc 1 5123 15
10082 0094 292B cmp r3, #41
10083 0096 0ED1 bne .L480
10084 .loc 1 5123 62 discriminator 1
10085 0098 7B69 ldr r3, [r7, #20]
10086 009a 13F5803F cmn r3, #65536
10087 009e 0AD0 beq .L480
5124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
10088 .loc 1 5126 9
10089 00a0 FB68 ldr r3, [r7, #12]
10090 00a2 1B68 ldr r3, [r3]
10091 00a4 1022 movs r2, #16
10092 00a6 DA61 str r2, [r3, #28]
5127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
5129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
10093 .loc 1 5129 9
10094 00a8 F868 ldr r0, [r7, #12]
10095 00aa FFF7FEFF bl I2C_Flush_TXDR
5130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */
5132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
5133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
10096 .loc 1 5133 9
10097 00ae F868 ldr r0, [r7, #12]
10098 00b0 FFF7FEFF bl I2C_ITSlaveSeqCplt
10099 00b4 1DE0 b .L481
ARM GAS /tmp/cc5G5cqz.s page 269
10100 .L480:
5134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
10101 .loc 1 5138 9
10102 00b6 FB68 ldr r3, [r7, #12]
10103 00b8 1B68 ldr r3, [r3]
10104 00ba 1022 movs r2, #16
10105 00bc DA61 str r2, [r3, #28]
5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10106 .loc 1 5114 8
10107 00be 96E0 b .L490
10108 .L477:
5139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/
5144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
10109 .loc 1 5145 7
10110 00c0 FB68 ldr r3, [r7, #12]
10111 00c2 1B68 ldr r3, [r3]
10112 00c4 1022 movs r2, #16
10113 00c6 DA61 str r2, [r3, #28]
5146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */
5148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
10114 .loc 1 5148 11
10115 00c8 FB68 ldr r3, [r7, #12]
10116 00ca 5B6C ldr r3, [r3, #68]
10117 .loc 1 5148 23
10118 00cc 43F00402 orr r2, r3, #4
10119 00d0 FB68 ldr r3, [r7, #12]
10120 00d2 5A64 str r2, [r3, #68]
5149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))
10121 .loc 1 5150 10
10122 00d4 7B69 ldr r3, [r7, #20]
10123 00d6 002B cmp r3, #0
10124 00d8 04D0 beq .L482
10125 .loc 1 5150 43 discriminator 1
10126 00da 7B69 ldr r3, [r7, #20]
10127 00dc B3F1807F cmp r3, #16777216
10128 00e0 40F08580 bne .L490
10129 .L482:
5151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode);
10130 .loc 1 5153 31
10131 00e4 FB68 ldr r3, [r7, #12]
10132 00e6 5B6C ldr r3, [r3, #68]
10133 .loc 1 5153 9
10134 00e8 1946 mov r1, r3
10135 00ea F868 ldr r0, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 270
10136 00ec FFF7FEFF bl I2C_ITError
5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10137 .loc 1 5114 8
10138 00f0 7DE0 b .L490
10139 .L481:
10140 00f2 7CE0 b .L490
10141 .L476:
5154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \
10142 .loc 1 5157 13
10143 00f4 3B69 ldr r3, [r7, #16]
10144 00f6 9B08 lsrs r3, r3, #2
10145 00f8 03F00103 and r3, r3, #1
10146 .loc 1 5157 11
10147 00fc 002B cmp r3, #0
10148 00fe 30D0 beq .L484
5158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
10149 .loc 1 5158 13
10150 0100 7B68 ldr r3, [r7, #4]
10151 0102 9B08 lsrs r3, r3, #2
10152 0104 03F00103 and r3, r3, #1
5157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
10153 .loc 1 5157 65 discriminator 1
10154 0108 002B cmp r3, #0
10155 010a 2AD0 beq .L484
5159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U)
10156 .loc 1 5160 13
10157 010c FB68 ldr r3, [r7, #12]
10158 010e 5B8D ldrh r3, [r3, #42] @ movhi
10159 0110 9BB2 uxth r3, r3
10160 .loc 1 5160 8
10161 0112 002B cmp r3, #0
10162 0114 18D0 beq .L485
5161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
5163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
10163 .loc 1 5163 38
10164 0116 FB68 ldr r3, [r7, #12]
10165 0118 1B68 ldr r3, [r3]
10166 .loc 1 5163 48
10167 011a 5A6A ldr r2, [r3, #36]
10168 .loc 1 5163 12
10169 011c FB68 ldr r3, [r7, #12]
10170 011e 5B6A ldr r3, [r3, #36]
10171 .loc 1 5163 25
10172 0120 D2B2 uxtb r2, r2
10173 .loc 1 5163 23
10174 0122 1A70 strb r2, [r3]
5164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
5166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
10175 .loc 1 5166 11
10176 0124 FB68 ldr r3, [r7, #12]
10177 0126 5B6A ldr r3, [r3, #36]
ARM GAS /tmp/cc5G5cqz.s page 271
10178 .loc 1 5166 21
10179 0128 5A1C adds r2, r3, #1
10180 012a FB68 ldr r3, [r7, #12]
10181 012c 5A62 str r2, [r3, #36]
5167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
10182 .loc 1 5168 11
10183 012e FB68 ldr r3, [r7, #12]
10184 0130 1B8D ldrh r3, [r3, #40]
10185 .loc 1 5168 21
10186 0132 013B subs r3, r3, #1
10187 0134 9AB2 uxth r2, r3
10188 0136 FB68 ldr r3, [r7, #12]
10189 0138 1A85 strh r2, [r3, #40] @ movhi
5169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
10190 .loc 1 5169 11
10191 013a FB68 ldr r3, [r7, #12]
10192 013c 5B8D ldrh r3, [r3, #42] @ movhi
10193 013e 9BB2 uxth r3, r3
10194 .loc 1 5169 22
10195 0140 013B subs r3, r3, #1
10196 0142 9AB2 uxth r2, r3
10197 0144 FB68 ldr r3, [r7, #12]
10198 0146 5A85 strh r2, [r3, #42] @ movhi
10199 .L485:
5170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferCount == 0U) && \
10200 .loc 1 5172 14
10201 0148 FB68 ldr r3, [r7, #12]
10202 014a 5B8D ldrh r3, [r3, #42] @ movhi
10203 014c 9BB2 uxth r3, r3
10204 .loc 1 5172 8
10205 014e 002B cmp r3, #0
10206 0150 4FD1 bne .L491
10207 .loc 1 5172 33 discriminator 1
10208 0152 7B69 ldr r3, [r7, #20]
10209 0154 13F5803F cmn r3, #65536
10210 0158 4BD0 beq .L491
5173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME))
5174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
5176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
10211 .loc 1 5176 7
10212 015a F868 ldr r0, [r7, #12]
10213 015c FFF7FEFF bl I2C_ITSlaveSeqCplt
5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME))
10214 .loc 1 5172 8
10215 0160 47E0 b .L491
10216 .L484:
5177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \
10217 .loc 1 5179 13
10218 0162 3B69 ldr r3, [r7, #16]
10219 0164 DB08 lsrs r3, r3, #3
10220 0166 03F00103 and r3, r3, #1
ARM GAS /tmp/cc5G5cqz.s page 272
10221 .loc 1 5179 11
10222 016a 002B cmp r3, #0
10223 016c 0AD0 beq .L487
5180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
10224 .loc 1 5180 13
10225 016e 7B68 ldr r3, [r7, #4]
10226 0170 DB08 lsrs r3, r3, #3
10227 0172 03F00103 and r3, r3, #1
5179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
10228 .loc 1 5179 65 discriminator 1
10229 0176 002B cmp r3, #0
10230 0178 04D0 beq .L487
5181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, tmpITFlags);
10231 .loc 1 5182 5
10232 017a 3969 ldr r1, [r7, #16]
10233 017c F868 ldr r0, [r7, #12]
10234 017e FFF7FEFF bl I2C_ITAddrCplt
10235 0182 37E0 b .L483
10236 .L487:
5183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
10237 .loc 1 5184 13
10238 0184 3B69 ldr r3, [r7, #16]
10239 0186 5B08 lsrs r3, r3, #1
10240 0188 03F00103 and r3, r3, #1
10241 .loc 1 5184 11
10242 018c 002B cmp r3, #0
10243 018e 31D0 beq .L483
5185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
10244 .loc 1 5185 13
10245 0190 7B68 ldr r3, [r7, #4]
10246 0192 5B08 lsrs r3, r3, #1
10247 0194 03F00103 and r3, r3, #1
5184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
10248 .loc 1 5184 65 discriminator 1
10249 0198 002B cmp r3, #0
10250 019a 2BD0 beq .L483
5186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR only if XferCount not reach "0" */
5188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* A TXIS flag can be set, during STOP treatment */
5189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if all Data have already been sent */
5190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */
5191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > 0U)
10251 .loc 1 5191 13
10252 019c FB68 ldr r3, [r7, #12]
10253 019e 5B8D ldrh r3, [r3, #42] @ movhi
10254 01a0 9BB2 uxth r3, r3
10255 .loc 1 5191 8
10256 01a2 002B cmp r3, #0
10257 01a4 18D0 beq .L488
5192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write data to TXDR */
5194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr;
10258 .loc 1 5194 35
10259 01a6 FB68 ldr r3, [r7, #12]
10260 01a8 5B6A ldr r3, [r3, #36]
ARM GAS /tmp/cc5G5cqz.s page 273
10261 .loc 1 5194 30
10262 01aa 1A78 ldrb r2, [r3] @ zero_extendqisi2
10263 .loc 1 5194 11
10264 01ac FB68 ldr r3, [r7, #12]
10265 01ae 1B68 ldr r3, [r3]
10266 .loc 1 5194 28
10267 01b0 9A62 str r2, [r3, #40]
5195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
5197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
10268 .loc 1 5197 11
10269 01b2 FB68 ldr r3, [r7, #12]
10270 01b4 5B6A ldr r3, [r3, #36]
10271 .loc 1 5197 21
10272 01b6 5A1C adds r2, r3, #1
10273 01b8 FB68 ldr r3, [r7, #12]
10274 01ba 5A62 str r2, [r3, #36]
5198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
10275 .loc 1 5199 11
10276 01bc FB68 ldr r3, [r7, #12]
10277 01be 5B8D ldrh r3, [r3, #42] @ movhi
10278 01c0 9BB2 uxth r3, r3
10279 .loc 1 5199 22
10280 01c2 013B subs r3, r3, #1
10281 01c4 9AB2 uxth r2, r3
10282 01c6 FB68 ldr r3, [r7, #12]
10283 01c8 5A85 strh r2, [r3, #42] @ movhi
5200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
10284 .loc 1 5200 11
10285 01ca FB68 ldr r3, [r7, #12]
10286 01cc 1B8D ldrh r3, [r3, #40]
10287 .loc 1 5200 21
10288 01ce 013B subs r3, r3, #1
10289 01d0 9AB2 uxth r2, r3
10290 01d2 FB68 ldr r3, [r7, #12]
10291 01d4 1A85 strh r2, [r3, #40] @ movhi
10292 01d6 0DE0 b .L483
10293 .L488:
5201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))
10294 .loc 1 5204 10
10295 01d8 7B69 ldr r3, [r7, #20]
10296 01da B3F1807F cmp r3, #16777216
10297 01de 02D0 beq .L489
10298 .loc 1 5204 42 discriminator 1
10299 01e0 7B69 ldr r3, [r7, #20]
10300 01e2 002B cmp r3, #0
10301 01e4 06D1 bne .L483
10302 .L489:
5205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */
5207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
5208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
10303 .loc 1 5208 9
ARM GAS /tmp/cc5G5cqz.s page 274
10304 01e6 F868 ldr r0, [r7, #12]
10305 01e8 FFF7FEFF bl I2C_ITSlaveSeqCplt
10306 01ec 02E0 b .L483
10307 .L490:
5114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10308 .loc 1 5114 8
10309 01ee 00BF nop
10310 01f0 00E0 b .L483
10311 .L491:
5172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME))
10312 .loc 1 5172 8
10313 01f2 00BF nop
10314 .L483:
5209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
10315 .loc 1 5218 3
10316 01f4 FB68 ldr r3, [r7, #12]
10317 01f6 0022 movs r2, #0
10318 01f8 83F84020 strb r2, [r3, #64]
5219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
10319 .loc 1 5220 10
10320 01fc 0023 movs r3, #0
10321 .L474:
5221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
10322 .loc 1 5221 1
10323 01fe 1846 mov r0, r3
10324 0200 1837 adds r7, r7, #24
10325 .cfi_def_cfa_offset 8
10326 0202 BD46 mov sp, r7
10327 .cfi_def_cfa_register 13
10328 @ sp needed
10329 0204 80BD pop {r7, pc}
10330 .cfi_endproc
10331 .LFE181:
10333 .section .text.I2C_Master_ISR_DMA,"ax",%progbits
10334 .align 1
10335 .syntax unified
10336 .thumb
10337 .thumb_func
10339 I2C_Master_ISR_DMA:
10340 .LFB182:
5222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA.
5225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
5228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
ARM GAS /tmp/cc5G5cqz.s page 275
5229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
5232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
5233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10341 .loc 1 5233 1
10342 .cfi_startproc
10343 @ args = 0, pretend = 0, frame = 24
10344 @ frame_needed = 1, uses_anonymous_args = 0
10345 0000 80B5 push {r7, lr}
10346 .cfi_def_cfa_offset 8
10347 .cfi_offset 7, -8
10348 .cfi_offset 14, -4
10349 0002 88B0 sub sp, sp, #32
10350 .cfi_def_cfa_offset 40
10351 0004 02AF add r7, sp, #8
10352 .cfi_def_cfa 7, 32
10353 0006 F860 str r0, [r7, #12]
10354 0008 B960 str r1, [r7, #8]
10355 000a 7A60 str r2, [r7, #4]
5234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t devaddress;
5235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t xfermode;
5236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
5238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
10356 .loc 1 5238 3
10357 000c FB68 ldr r3, [r7, #12]
10358 000e 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
10359 0012 012B cmp r3, #1
10360 0014 01D1 bne .L493
10361 .loc 1 5238 3 is_stmt 0 discriminator 1
10362 0016 0223 movs r3, #2
10363 .loc 1 5238 3
10364 0018 E1E0 b .L494
10365 .L493:
10366 .loc 1 5238 3 discriminator 2
10367 001a FB68 ldr r3, [r7, #12]
10368 001c 0122 movs r2, #1
10369 001e 83F84020 strb r2, [r3, #64]
5239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \
10370 .loc 1 5240 8 is_stmt 1
10371 0022 BB68 ldr r3, [r7, #8]
10372 0024 1B09 lsrs r3, r3, #4
10373 0026 03F00103 and r3, r3, #1
10374 .loc 1 5240 6
10375 002a 002B cmp r3, #0
10376 002c 17D0 beq .L495
5241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10377 .loc 1 5241 8
10378 002e 7B68 ldr r3, [r7, #4]
10379 0030 1B09 lsrs r3, r3, #4
10380 0032 03F00103 and r3, r3, #1
5240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10381 .loc 1 5240 55 discriminator 1
10382 0036 002B cmp r3, #0
10383 0038 11D0 beq .L495
ARM GAS /tmp/cc5G5cqz.s page 276
5242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
10384 .loc 1 5244 5
10385 003a FB68 ldr r3, [r7, #12]
10386 003c 1B68 ldr r3, [r3]
10387 003e 1022 movs r2, #16
10388 0040 DA61 str r2, [r3, #28]
5245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */
5247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
10389 .loc 1 5247 9
10390 0042 FB68 ldr r3, [r7, #12]
10391 0044 5B6C ldr r3, [r3, #68]
10392 .loc 1 5247 21
10393 0046 43F00402 orr r2, r3, #4
10394 004a FB68 ldr r3, [r7, #12]
10395 004c 5A64 str r2, [r3, #68]
5248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */
5250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */
5251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */
5252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
10396 .loc 1 5252 5
10397 004e 2021 movs r1, #32
10398 0050 F868 ldr r0, [r7, #12]
10399 0052 FFF7FEFF bl I2C_Enable_IRQ
5253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
5255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
10400 .loc 1 5255 5
10401 0056 F868 ldr r0, [r7, #12]
10402 0058 FFF7FEFF bl I2C_Flush_TXDR
10403 005c BAE0 b .L496
10404 .L495:
5256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \
10405 .loc 1 5257 13
10406 005e BB68 ldr r3, [r7, #8]
10407 0060 DB09 lsrs r3, r3, #7
10408 0062 03F00103 and r3, r3, #1
10409 .loc 1 5257 11
10410 0066 002B cmp r3, #0
10411 0068 72D0 beq .L497
5258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10412 .loc 1 5258 13
10413 006a 7B68 ldr r3, [r7, #4]
10414 006c 9B09 lsrs r3, r3, #6
10415 006e 03F00103 and r3, r3, #1
5257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10416 .loc 1 5257 61 discriminator 1
10417 0072 002B cmp r3, #0
10418 0074 6CD0 beq .L497
5259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC interrupt */
5261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI);
10419 .loc 1 5261 5
ARM GAS /tmp/cc5G5cqz.s page 277
10420 0076 FB68 ldr r3, [r7, #12]
10421 0078 1B68 ldr r3, [r3]
10422 007a 1A68 ldr r2, [r3]
10423 007c FB68 ldr r3, [r7, #12]
10424 007e 1B68 ldr r3, [r3]
10425 0080 22F04002 bic r2, r2, #64
10426 0084 1A60 str r2, [r3]
5262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U)
10427 .loc 1 5263 13
10428 0086 FB68 ldr r3, [r7, #12]
10429 0088 5B8D ldrh r3, [r3, #42] @ movhi
10430 008a 9BB2 uxth r3, r3
10431 .loc 1 5263 8
10432 008c 002B cmp r3, #0
10433 008e 4ED0 beq .L498
5264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Recover Slave address */
5266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD);
10434 .loc 1 5266 35
10435 0090 FB68 ldr r3, [r7, #12]
10436 0092 1B68 ldr r3, [r3]
10437 .loc 1 5266 45
10438 0094 5B68 ldr r3, [r3, #4]
10439 .loc 1 5266 20
10440 0096 9BB2 uxth r3, r3
10441 .loc 1 5266 18
10442 0098 C3F30903 ubfx r3, r3, #0, #10
10443 009c 7B82 strh r3, [r7, #18] @ movhi
5267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */
5269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
10444 .loc 1 5269 15
10445 009e FB68 ldr r3, [r7, #12]
10446 00a0 5B8D ldrh r3, [r3, #42] @ movhi
10447 00a2 9BB2 uxth r3, r3
10448 .loc 1 5269 10
10449 00a4 FF2B cmp r3, #255
10450 00a6 06D9 bls .L499
5270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
10451 .loc 1 5271 24
10452 00a8 FB68 ldr r3, [r7, #12]
10453 00aa FF22 movs r2, #255
10454 00ac 1A85 strh r2, [r3, #40] @ movhi
5272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE;
10455 .loc 1 5272 18
10456 00ae 4FF08073 mov r3, #16777216
10457 00b2 7B61 str r3, [r7, #20]
10458 00b4 10E0 b .L500
10459 .L499:
5273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
10460 .loc 1 5276 30
10461 00b6 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 278
10462 00b8 5B8D ldrh r3, [r3, #42] @ movhi
10463 00ba 9AB2 uxth r2, r3
10464 .loc 1 5276 24
10465 00bc FB68 ldr r3, [r7, #12]
10466 00be 1A85 strh r2, [r3, #40] @ movhi
5277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)
10467 .loc 1 5277 17
10468 00c0 FB68 ldr r3, [r7, #12]
10469 00c2 DB6A ldr r3, [r3, #44]
10470 .loc 1 5277 12
10471 00c4 13F5803F cmn r3, #65536
10472 00c8 03D0 beq .L501
5278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = hi2c->XferOptions;
10473 .loc 1 5279 20
10474 00ca FB68 ldr r3, [r7, #12]
10475 00cc DB6A ldr r3, [r3, #44]
10476 00ce 7B61 str r3, [r7, #20]
10477 00d0 02E0 b .L500
10478 .L501:
5280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE;
10479 .loc 1 5283 20
10480 00d2 4FF00073 mov r3, #33554432
10481 00d6 7B61 str r3, [r7, #20]
10482 .L500:
5284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the new XferSize in Nbytes register */
5288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);
10483 .loc 1 5288 57
10484 00d8 FB68 ldr r3, [r7, #12]
10485 00da 1B8D ldrh r3, [r3, #40]
10486 .loc 1 5288 7
10487 00dc DAB2 uxtb r2, r3
10488 00de 798A ldrh r1, [r7, #18]
10489 00e0 0023 movs r3, #0
10490 00e2 0093 str r3, [sp]
10491 00e4 7B69 ldr r3, [r7, #20]
10492 00e6 F868 ldr r0, [r7, #12]
10493 00e8 FFF7FEFF bl I2C_TransferConfig
5289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
5291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
10494 .loc 1 5291 11
10495 00ec FB68 ldr r3, [r7, #12]
10496 00ee 5B8D ldrh r3, [r3, #42] @ movhi
10497 00f0 9AB2 uxth r2, r3
10498 .loc 1 5291 30
10499 00f2 FB68 ldr r3, [r7, #12]
10500 00f4 1B8D ldrh r3, [r3, #40]
10501 .loc 1 5291 23
10502 00f6 D31A subs r3, r2, r3
10503 00f8 9AB2 uxth r2, r3
ARM GAS /tmp/cc5G5cqz.s page 279
10504 00fa FB68 ldr r3, [r7, #12]
10505 00fc 5A85 strh r2, [r3, #42] @ movhi
5292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
5294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
10506 .loc 1 5294 15
10507 00fe FB68 ldr r3, [r7, #12]
10508 0100 93F84130 ldrb r3, [r3, #65]
10509 0104 DBB2 uxtb r3, r3
10510 .loc 1 5294 10
10511 0106 222B cmp r3, #34
10512 0108 08D1 bne .L502
5295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
10513 .loc 1 5296 13
10514 010a FB68 ldr r3, [r7, #12]
10515 010c 1B68 ldr r3, [r3]
10516 .loc 1 5296 23
10517 010e 1A68 ldr r2, [r3]
10518 .loc 1 5296 13
10519 0110 FB68 ldr r3, [r7, #12]
10520 0112 1B68 ldr r3, [r3]
10521 .loc 1 5296 29
10522 0114 42F40042 orr r2, r2, #32768
10523 0118 1A60 str r2, [r3]
5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10524 .loc 1 5263 8
10525 011a 5BE0 b .L496
10526 .L502:
5297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
10527 .loc 1 5300 13
10528 011c FB68 ldr r3, [r7, #12]
10529 011e 1B68 ldr r3, [r3]
10530 .loc 1 5300 23
10531 0120 1A68 ldr r2, [r3]
10532 .loc 1 5300 13
10533 0122 FB68 ldr r3, [r7, #12]
10534 0124 1B68 ldr r3, [r3]
10535 .loc 1 5300 29
10536 0126 42F48042 orr r2, r2, #16384
10537 012a 1A60 str r2, [r3]
5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10538 .loc 1 5263 8
10539 012c 52E0 b .L496
10540 .L498:
5301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */
5306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)
10541 .loc 1 5306 11
10542 012e FB68 ldr r3, [r7, #12]
10543 0130 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 280
10544 0132 5B68 ldr r3, [r3, #4]
10545 0134 03F00073 and r3, r3, #33554432
10546 .loc 1 5306 10
10547 0138 B3F1007F cmp r3, #33554432
10548 013c 03D0 beq .L504
5307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */
5309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c);
10549 .loc 1 5309 9
10550 013e F868 ldr r0, [r7, #12]
10551 0140 FFF7FEFF bl I2C_ITMasterSeqCplt
5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10552 .loc 1 5263 8
10553 0144 46E0 b .L496
10554 .L504:
5310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */
5314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
10555 .loc 1 5315 9
10556 0146 4021 movs r1, #64
10557 0148 F868 ldr r0, [r7, #12]
10558 014a FFF7FEFF bl I2C_ITError
5263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10559 .loc 1 5263 8
10560 014e 41E0 b .L496
10561 .L497:
5316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \
10562 .loc 1 5319 13
10563 0150 BB68 ldr r3, [r7, #8]
10564 0152 9B09 lsrs r3, r3, #6
10565 0154 03F00103 and r3, r3, #1
10566 .loc 1 5319 11
10567 0158 002B cmp r3, #0
10568 015a 29D0 beq .L505
5320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10569 .loc 1 5320 13
10570 015c 7B68 ldr r3, [r7, #4]
10571 015e 9B09 lsrs r3, r3, #6
10572 0160 03F00103 and r3, r3, #1
5319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10573 .loc 1 5319 60 discriminator 1
10574 0164 002B cmp r3, #0
10575 0166 23D0 beq .L505
5321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U)
10576 .loc 1 5322 13
10577 0168 FB68 ldr r3, [r7, #12]
10578 016a 5B8D ldrh r3, [r3, #42] @ movhi
10579 016c 9BB2 uxth r3, r3
10580 .loc 1 5322 8
10581 016e 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 281
10582 0170 19D1 bne .L506
5323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE)
10583 .loc 1 5324 11
10584 0172 FB68 ldr r3, [r7, #12]
10585 0174 1B68 ldr r3, [r3]
10586 0176 5B68 ldr r3, [r3, #4]
10587 0178 03F00073 and r3, r3, #33554432
10588 .loc 1 5324 10
10589 017c B3F1007F cmp r3, #33554432
10590 0180 27D0 beq .L509
5325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */
5327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME)
10591 .loc 1 5327 17
10592 0182 FB68 ldr r3, [r7, #12]
10593 0184 DB6A ldr r3, [r3, #44]
10594 .loc 1 5327 12
10595 0186 13F5803F cmn r3, #65536
10596 018a 08D1 bne .L508
5328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */
5330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP;
10597 .loc 1 5330 15
10598 018c FB68 ldr r3, [r7, #12]
10599 018e 1B68 ldr r3, [r3]
10600 .loc 1 5330 25
10601 0190 5A68 ldr r2, [r3, #4]
10602 .loc 1 5330 15
10603 0192 FB68 ldr r3, [r7, #12]
10604 0194 1B68 ldr r3, [r3]
10605 .loc 1 5330 31
10606 0196 42F48042 orr r2, r2, #16384
10607 019a 5A60 str r2, [r3, #4]
5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10608 .loc 1 5322 8
10609 019c 19E0 b .L509
10610 .L508:
5331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */
5335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c);
10611 .loc 1 5335 11
10612 019e F868 ldr r0, [r7, #12]
10613 01a0 FFF7FEFF bl I2C_ITMasterSeqCplt
5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10614 .loc 1 5322 8
10615 01a4 15E0 b .L509
10616 .L506:
5336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */
5342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
ARM GAS /tmp/cc5G5cqz.s page 282
5343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
10617 .loc 1 5343 7
10618 01a6 4021 movs r1, #64
10619 01a8 F868 ldr r0, [r7, #12]
10620 01aa FFF7FEFF bl I2C_ITError
5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10621 .loc 1 5322 8
10622 01ae 10E0 b .L509
10623 .L505:
5344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \
10624 .loc 1 5346 13
10625 01b0 BB68 ldr r3, [r7, #8]
10626 01b2 5B09 lsrs r3, r3, #5
10627 01b4 03F00103 and r3, r3, #1
10628 .loc 1 5346 11
10629 01b8 002B cmp r3, #0
10630 01ba 0BD0 beq .L496
5347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
10631 .loc 1 5347 13
10632 01bc 7B68 ldr r3, [r7, #4]
10633 01be 5B09 lsrs r3, r3, #5
10634 01c0 03F00103 and r3, r3, #1
5346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
10635 .loc 1 5346 63 discriminator 1
10636 01c4 002B cmp r3, #0
10637 01c6 05D0 beq .L496
5348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */
5350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags);
10638 .loc 1 5350 5
10639 01c8 B968 ldr r1, [r7, #8]
10640 01ca F868 ldr r0, [r7, #12]
10641 01cc FFF7FEFF bl I2C_ITMasterCplt
10642 01d0 00E0 b .L496
10643 .L509:
5322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10644 .loc 1 5322 8
10645 01d2 00BF nop
10646 .L496:
5351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
10647 .loc 1 5358 3
10648 01d4 FB68 ldr r3, [r7, #12]
10649 01d6 0022 movs r2, #0
10650 01d8 83F84020 strb r2, [r3, #64]
5359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
10651 .loc 1 5360 10
10652 01dc 0023 movs r3, #0
ARM GAS /tmp/cc5G5cqz.s page 283
10653 .L494:
5361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
10654 .loc 1 5361 1
10655 01de 1846 mov r0, r3
10656 01e0 1837 adds r7, r7, #24
10657 .cfi_def_cfa_offset 8
10658 01e2 BD46 mov sp, r7
10659 .cfi_def_cfa_register 13
10660 @ sp needed
10661 01e4 80BD pop {r7, pc}
10662 .cfi_endproc
10663 .LFE182:
10665 .section .text.I2C_Mem_ISR_DMA,"ax",%progbits
10666 .align 1
10667 .syntax unified
10668 .thumb
10669 .thumb_func
10671 I2C_Mem_ISR_DMA:
10672 .LFB183:
5362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA.
5365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
5368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
5369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
5372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
5373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10673 .loc 1 5373 1
10674 .cfi_startproc
10675 @ args = 0, pretend = 0, frame = 24
10676 @ frame_needed = 1, uses_anonymous_args = 0
10677 0000 80B5 push {r7, lr}
10678 .cfi_def_cfa_offset 8
10679 .cfi_offset 7, -8
10680 .cfi_offset 14, -4
10681 0002 88B0 sub sp, sp, #32
10682 .cfi_def_cfa_offset 40
10683 0004 02AF add r7, sp, #8
10684 .cfi_def_cfa 7, 32
10685 0006 F860 str r0, [r7, #12]
10686 0008 B960 str r1, [r7, #8]
10687 000a 7A60 str r2, [r7, #4]
5374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE;
10688 .loc 1 5374 12
10689 000c 8C4B ldr r3, .L528
10690 000e 7B61 str r3, [r7, #20]
5375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Locked */
5377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
10691 .loc 1 5377 3
10692 0010 FB68 ldr r3, [r7, #12]
10693 0012 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
10694 0016 012B cmp r3, #1
ARM GAS /tmp/cc5G5cqz.s page 284
10695 0018 01D1 bne .L511
10696 .loc 1 5377 3 is_stmt 0 discriminator 1
10697 001a 0223 movs r3, #2
10698 .loc 1 5377 3
10699 001c 0CE1 b .L512
10700 .L511:
10701 .loc 1 5377 3 discriminator 2
10702 001e FB68 ldr r3, [r7, #12]
10703 0020 0122 movs r2, #1
10704 0022 83F84020 strb r2, [r3, #64]
5378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \
10705 .loc 1 5379 8 is_stmt 1
10706 0026 BB68 ldr r3, [r7, #8]
10707 0028 1B09 lsrs r3, r3, #4
10708 002a 03F00103 and r3, r3, #1
10709 .loc 1 5379 6
10710 002e 002B cmp r3, #0
10711 0030 17D0 beq .L513
5380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10712 .loc 1 5380 8
10713 0032 7B68 ldr r3, [r7, #4]
10714 0034 1B09 lsrs r3, r3, #4
10715 0036 03F00103 and r3, r3, #1
5379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
10716 .loc 1 5379 55 discriminator 1
10717 003a 002B cmp r3, #0
10718 003c 11D0 beq .L513
5381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
10719 .loc 1 5383 5
10720 003e FB68 ldr r3, [r7, #12]
10721 0040 1B68 ldr r3, [r3]
10722 0042 1022 movs r2, #16
10723 0044 DA61 str r2, [r3, #28]
5384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set corresponding Error Code */
5386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
10724 .loc 1 5386 9
10725 0046 FB68 ldr r3, [r7, #12]
10726 0048 5B6C ldr r3, [r3, #68]
10727 .loc 1 5386 21
10728 004a 43F00402 orr r2, r3, #4
10729 004e FB68 ldr r3, [r7, #12]
10730 0050 5A64 str r2, [r3, #68]
5387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */
5389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */
5390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */
5391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
10731 .loc 1 5391 5
10732 0052 2021 movs r1, #32
10733 0054 F868 ldr r0, [r7, #12]
10734 0056 FFF7FEFF bl I2C_Enable_IRQ
5392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
ARM GAS /tmp/cc5G5cqz.s page 285
5394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
10735 .loc 1 5394 5
10736 005a F868 ldr r0, [r7, #12]
10737 005c FFF7FEFF bl I2C_Flush_TXDR
10738 0060 E5E0 b .L514
10739 .L513:
5395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \
10740 .loc 1 5396 13
10741 0062 BB68 ldr r3, [r7, #8]
10742 0064 5B08 lsrs r3, r3, #1
10743 0066 03F00103 and r3, r3, #1
10744 .loc 1 5396 11
10745 006a 002B cmp r3, #0
10746 006c 0FD0 beq .L515
5397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
10747 .loc 1 5397 13
10748 006e 7B68 ldr r3, [r7, #4]
10749 0070 5B08 lsrs r3, r3, #1
10750 0072 03F00103 and r3, r3, #1
5396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
10751 .loc 1 5396 62 discriminator 1
10752 0076 002B cmp r3, #0
10753 0078 09D0 beq .L515
5398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write LSB part of Memory Address */
5400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress;
10754 .loc 1 5400 9
10755 007a FB68 ldr r3, [r7, #12]
10756 007c 1B68 ldr r3, [r3]
10757 .loc 1 5400 32
10758 007e FA68 ldr r2, [r7, #12]
10759 0080 126D ldr r2, [r2, #80]
10760 .loc 1 5400 26
10761 0082 9A62 str r2, [r3, #40]
5401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Memaddress content */
5403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU;
10762 .loc 1 5403 22
10763 0084 FB68 ldr r3, [r7, #12]
10764 0086 4FF0FF32 mov r2, #-1
10765 008a 1A65 str r2, [r3, #80]
10766 008c CFE0 b .L514
10767 .L515:
5404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \
10768 .loc 1 5405 13
10769 008e BB68 ldr r3, [r7, #8]
10770 0090 DB09 lsrs r3, r3, #7
10771 0092 03F00103 and r3, r3, #1
10772 .loc 1 5405 11
10773 0096 002B cmp r3, #0
10774 0098 5CD0 beq .L516
5406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10775 .loc 1 5406 13
10776 009a 7B68 ldr r3, [r7, #4]
10777 009c 9B09 lsrs r3, r3, #6
ARM GAS /tmp/cc5G5cqz.s page 286
10778 009e 03F00103 and r3, r3, #1
5405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10779 .loc 1 5405 61 discriminator 1
10780 00a2 002B cmp r3, #0
10781 00a4 56D0 beq .L516
5407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable only Error interrupt */
5409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
10782 .loc 1 5409 5
10783 00a6 1021 movs r1, #16
10784 00a8 F868 ldr r0, [r7, #12]
10785 00aa FFF7FEFF bl I2C_Enable_IRQ
5410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U)
10786 .loc 1 5411 13
10787 00ae FB68 ldr r3, [r7, #12]
10788 00b0 5B8D ldrh r3, [r3, #42] @ movhi
10789 00b2 9BB2 uxth r3, r3
10790 .loc 1 5411 8
10791 00b4 002B cmp r3, #0
10792 00b6 48D0 beq .L517
5412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */
5414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
10793 .loc 1 5414 15
10794 00b8 FB68 ldr r3, [r7, #12]
10795 00ba 5B8D ldrh r3, [r3, #42] @ movhi
10796 00bc 9BB2 uxth r3, r3
10797 .loc 1 5414 10
10798 00be FF2B cmp r3, #255
10799 00c0 10D9 bls .L518
5415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
10800 .loc 1 5416 24
10801 00c2 FB68 ldr r3, [r7, #12]
10802 00c4 FF22 movs r2, #255
10803 00c6 1A85 strh r2, [r3, #40] @ movhi
5417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
10804 .loc 1 5417 48
10805 00c8 FB68 ldr r3, [r7, #12]
10806 00ca DB6C ldr r3, [r3, #76]
10807 .loc 1 5417 9
10808 00cc 99B2 uxth r1, r3
10809 .loc 1 5417 75
10810 00ce FB68 ldr r3, [r7, #12]
10811 00d0 1B8D ldrh r3, [r3, #40]
10812 .loc 1 5417 9
10813 00d2 DAB2 uxtb r2, r3
10814 00d4 0023 movs r3, #0
10815 00d6 0093 str r3, [sp]
10816 00d8 4FF08073 mov r3, #16777216
10817 00dc F868 ldr r0, [r7, #12]
10818 00de FFF7FEFF bl I2C_TransferConfig
10819 00e2 11E0 b .L519
10820 .L518:
5418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
5419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 287
5420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
10821 .loc 1 5422 30
10822 00e4 FB68 ldr r3, [r7, #12]
10823 00e6 5B8D ldrh r3, [r3, #42] @ movhi
10824 00e8 9AB2 uxth r2, r3
10825 .loc 1 5422 24
10826 00ea FB68 ldr r3, [r7, #12]
10827 00ec 1A85 strh r2, [r3, #40] @ movhi
5423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
10828 .loc 1 5423 48
10829 00ee FB68 ldr r3, [r7, #12]
10830 00f0 DB6C ldr r3, [r3, #76]
10831 .loc 1 5423 9
10832 00f2 99B2 uxth r1, r3
10833 .loc 1 5423 75
10834 00f4 FB68 ldr r3, [r7, #12]
10835 00f6 1B8D ldrh r3, [r3, #40]
10836 .loc 1 5423 9
10837 00f8 DAB2 uxtb r2, r3
10838 00fa 0023 movs r3, #0
10839 00fc 0093 str r3, [sp]
10840 00fe 4FF00073 mov r3, #33554432
10841 0102 F868 ldr r0, [r7, #12]
10842 0104 FFF7FEFF bl I2C_TransferConfig
10843 .L519:
5424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
5425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
5428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
10844 .loc 1 5428 11
10845 0108 FB68 ldr r3, [r7, #12]
10846 010a 5B8D ldrh r3, [r3, #42] @ movhi
10847 010c 9AB2 uxth r2, r3
10848 .loc 1 5428 30
10849 010e FB68 ldr r3, [r7, #12]
10850 0110 1B8D ldrh r3, [r3, #40]
10851 .loc 1 5428 23
10852 0112 D31A subs r3, r2, r3
10853 0114 9AB2 uxth r2, r3
10854 0116 FB68 ldr r3, [r7, #12]
10855 0118 5A85 strh r2, [r3, #42] @ movhi
5429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
5431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
10856 .loc 1 5431 15
10857 011a FB68 ldr r3, [r7, #12]
10858 011c 93F84130 ldrb r3, [r3, #65]
10859 0120 DBB2 uxtb r3, r3
10860 .loc 1 5431 10
10861 0122 222B cmp r3, #34
10862 0124 08D1 bne .L520
5432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
10863 .loc 1 5433 13
ARM GAS /tmp/cc5G5cqz.s page 288
10864 0126 FB68 ldr r3, [r7, #12]
10865 0128 1B68 ldr r3, [r3]
10866 .loc 1 5433 23
10867 012a 1A68 ldr r2, [r3]
10868 .loc 1 5433 13
10869 012c FB68 ldr r3, [r7, #12]
10870 012e 1B68 ldr r3, [r3]
10871 .loc 1 5433 29
10872 0130 42F40042 orr r2, r2, #32768
10873 0134 1A60 str r2, [r3]
5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10874 .loc 1 5411 8
10875 0136 7AE0 b .L514
10876 .L520:
5434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
10877 .loc 1 5437 13
10878 0138 FB68 ldr r3, [r7, #12]
10879 013a 1B68 ldr r3, [r3]
10880 .loc 1 5437 23
10881 013c 1A68 ldr r2, [r3]
10882 .loc 1 5437 13
10883 013e FB68 ldr r3, [r7, #12]
10884 0140 1B68 ldr r3, [r3]
10885 .loc 1 5437 29
10886 0142 42F48042 orr r2, r2, #16384
10887 0146 1A60 str r2, [r3]
5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10888 .loc 1 5411 8
10889 0148 71E0 b .L514
10890 .L517:
5438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */
5443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
10891 .loc 1 5444 7
10892 014a 4021 movs r1, #64
10893 014c F868 ldr r0, [r7, #12]
10894 014e FFF7FEFF bl I2C_ITError
5411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
10895 .loc 1 5411 8
10896 0152 6CE0 b .L514
10897 .L516:
5445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \
10898 .loc 1 5447 13
10899 0154 BB68 ldr r3, [r7, #8]
10900 0156 9B09 lsrs r3, r3, #6
10901 0158 03F00103 and r3, r3, #1
10902 .loc 1 5447 11
10903 015c 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 289
10904 015e 56D0 beq .L522
5448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10905 .loc 1 5448 13
10906 0160 7B68 ldr r3, [r7, #4]
10907 0162 9B09 lsrs r3, r3, #6
10908 0164 03F00103 and r3, r3, #1
5447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
10909 .loc 1 5447 60 discriminator 1
10910 0168 002B cmp r3, #0
10911 016a 50D0 beq .L522
5449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
10912 .loc 1 5450 13
10913 016c FB68 ldr r3, [r7, #12]
10914 016e 93F84130 ldrb r3, [r3, #65]
10915 0172 DBB2 uxtb r3, r3
10916 .loc 1 5450 8
10917 0174 222B cmp r3, #34
10918 0176 01D1 bne .L523
5451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ;
10919 .loc 1 5452 17
10920 0178 324B ldr r3, .L528+4
10921 017a 7B61 str r3, [r7, #20]
10922 .L523:
5453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
10923 .loc 1 5455 13
10924 017c FB68 ldr r3, [r7, #12]
10925 017e 5B8D ldrh r3, [r3, #42] @ movhi
10926 0180 9BB2 uxth r3, r3
10927 .loc 1 5455 8
10928 0182 FF2B cmp r3, #255
10929 0184 10D9 bls .L524
5456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
10930 .loc 1 5457 22
10931 0186 FB68 ldr r3, [r7, #12]
10932 0188 FF22 movs r2, #255
10933 018a 1A85 strh r2, [r3, #40] @ movhi
5458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
5460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
10934 .loc 1 5460 46
10935 018c FB68 ldr r3, [r7, #12]
10936 018e DB6C ldr r3, [r3, #76]
10937 .loc 1 5460 7
10938 0190 99B2 uxth r1, r3
10939 .loc 1 5460 73
10940 0192 FB68 ldr r3, [r7, #12]
10941 0194 1B8D ldrh r3, [r3, #40]
10942 .loc 1 5460 7
10943 0196 DAB2 uxtb r2, r3
10944 0198 7B69 ldr r3, [r7, #20]
10945 019a 0093 str r3, [sp]
10946 019c 4FF08073 mov r3, #16777216
ARM GAS /tmp/cc5G5cqz.s page 290
10947 01a0 F868 ldr r0, [r7, #12]
10948 01a2 FFF7FEFF bl I2C_TransferConfig
10949 01a6 11E0 b .L525
10950 .L524:
5461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RELOAD_MODE, direction);
5462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
10951 .loc 1 5465 28
10952 01a8 FB68 ldr r3, [r7, #12]
10953 01aa 5B8D ldrh r3, [r3, #42] @ movhi
10954 01ac 9AB2 uxth r2, r3
10955 .loc 1 5465 22
10956 01ae FB68 ldr r3, [r7, #12]
10957 01b0 1A85 strh r2, [r3, #40] @ movhi
5466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */
5468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
10958 .loc 1 5468 46
10959 01b2 FB68 ldr r3, [r7, #12]
10960 01b4 DB6C ldr r3, [r3, #76]
10961 .loc 1 5468 7
10962 01b6 99B2 uxth r1, r3
10963 .loc 1 5468 73
10964 01b8 FB68 ldr r3, [r7, #12]
10965 01ba 1B8D ldrh r3, [r3, #40]
10966 .loc 1 5468 7
10967 01bc DAB2 uxtb r2, r3
10968 01be 7B69 ldr r3, [r7, #20]
10969 01c0 0093 str r3, [sp]
10970 01c2 4FF00073 mov r3, #33554432
10971 01c6 F868 ldr r0, [r7, #12]
10972 01c8 FFF7FEFF bl I2C_TransferConfig
10973 .L525:
5469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction);
5470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update XferCount value */
5473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize;
10974 .loc 1 5473 9
10975 01cc FB68 ldr r3, [r7, #12]
10976 01ce 5B8D ldrh r3, [r3, #42] @ movhi
10977 01d0 9AB2 uxth r2, r3
10978 .loc 1 5473 28
10979 01d2 FB68 ldr r3, [r7, #12]
10980 01d4 1B8D ldrh r3, [r3, #40]
10981 .loc 1 5473 21
10982 01d6 D31A subs r3, r2, r3
10983 01d8 9AB2 uxth r2, r3
10984 01da FB68 ldr r3, [r7, #12]
10985 01dc 5A85 strh r2, [r3, #42] @ movhi
5474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable DMA Request */
5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
10986 .loc 1 5476 13
10987 01de FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 291
10988 01e0 93F84130 ldrb r3, [r3, #65]
10989 01e4 DBB2 uxtb r3, r3
10990 .loc 1 5476 8
10991 01e6 222B cmp r3, #34
10992 01e8 08D1 bne .L526
5477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
10993 .loc 1 5478 11
10994 01ea FB68 ldr r3, [r7, #12]
10995 01ec 1B68 ldr r3, [r3]
10996 .loc 1 5478 21
10997 01ee 1A68 ldr r2, [r3]
10998 .loc 1 5478 11
10999 01f0 FB68 ldr r3, [r7, #12]
11000 01f2 1B68 ldr r3, [r3]
11001 .loc 1 5478 27
11002 01f4 42F40042 orr r2, r2, #32768
11003 01f8 1A60 str r2, [r3]
5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11004 .loc 1 5476 8
11005 01fa 18E0 b .L514
11006 .L526:
5479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
11007 .loc 1 5482 11
11008 01fc FB68 ldr r3, [r7, #12]
11009 01fe 1B68 ldr r3, [r3]
11010 .loc 1 5482 21
11011 0200 1A68 ldr r2, [r3]
11012 .loc 1 5482 11
11013 0202 FB68 ldr r3, [r7, #12]
11014 0204 1B68 ldr r3, [r3]
11015 .loc 1 5482 27
11016 0206 42F48042 orr r2, r2, #16384
11017 020a 1A60 str r2, [r3]
5476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11018 .loc 1 5476 8
11019 020c 0FE0 b .L514
11020 .L522:
5483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \
11021 .loc 1 5485 13
11022 020e BB68 ldr r3, [r7, #8]
11023 0210 5B09 lsrs r3, r3, #5
11024 0212 03F00103 and r3, r3, #1
11025 .loc 1 5485 11
11026 0216 002B cmp r3, #0
11027 0218 09D0 beq .L514
5486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
11028 .loc 1 5486 13
11029 021a 7B68 ldr r3, [r7, #4]
11030 021c 5B09 lsrs r3, r3, #5
11031 021e 03F00103 and r3, r3, #1
5485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
ARM GAS /tmp/cc5G5cqz.s page 292
11032 .loc 1 5485 63 discriminator 1
11033 0222 002B cmp r3, #0
11034 0224 03D0 beq .L514
5487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Master complete process */
5489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags);
11035 .loc 1 5489 5
11036 0226 B968 ldr r1, [r7, #8]
11037 0228 F868 ldr r0, [r7, #12]
11038 022a FFF7FEFF bl I2C_ITMasterCplt
11039 .L514:
5490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
11040 .loc 1 5497 3
11041 022e FB68 ldr r3, [r7, #12]
11042 0230 0022 movs r2, #0
11043 0232 83F84020 strb r2, [r3, #64]
5498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
11044 .loc 1 5499 10
11045 0236 0023 movs r3, #0
11046 .L512:
5500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11047 .loc 1 5500 1
11048 0238 1846 mov r0, r3
11049 023a 1837 adds r7, r7, #24
11050 .cfi_def_cfa_offset 8
11051 023c BD46 mov sp, r7
11052 .cfi_def_cfa_register 13
11053 @ sp needed
11054 023e 80BD pop {r7, pc}
11055 .L529:
11056 .align 2
11057 .L528:
11058 0240 00200080 .word -2147475456
11059 0244 00240080 .word -2147474432
11060 .cfi_endproc
11061 .LFE183:
11063 .section .text.I2C_Slave_ISR_DMA,"ax",%progbits
11064 .align 1
11065 .syntax unified
11066 .thumb
11067 .thumb_func
11069 I2C_Slave_ISR_DMA:
11070 .LFB184:
5501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA.
5504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
ARM GAS /tmp/cc5G5cqz.s page 293
5507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled.
5508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
5511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t ITSources)
5512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11071 .loc 1 5512 1
11072 .cfi_startproc
11073 @ args = 0, pretend = 0, frame = 32
11074 @ frame_needed = 1, uses_anonymous_args = 0
11075 0000 80B5 push {r7, lr}
11076 .cfi_def_cfa_offset 8
11077 .cfi_offset 7, -8
11078 .cfi_offset 14, -4
11079 0002 88B0 sub sp, sp, #32
11080 .cfi_def_cfa_offset 40
11081 0004 00AF add r7, sp, #0
11082 .cfi_def_cfa_register 7
11083 0006 F860 str r0, [r7, #12]
11084 0008 B960 str r1, [r7, #8]
11085 000a 7A60 str r2, [r7, #4]
5513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions;
11086 .loc 1 5513 12
11087 000c FB68 ldr r3, [r7, #12]
11088 000e DB6A ldr r3, [r3, #44]
11089 0010 BB61 str r3, [r7, #24]
5514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t treatdmanack = 0U;
11090 .loc 1 5514 12
11091 0012 0023 movs r3, #0
11092 0014 FB61 str r3, [r7, #28]
5515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate;
5516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process locked */
5518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_LOCK(hi2c);
11093 .loc 1 5518 3
11094 0016 FB68 ldr r3, [r7, #12]
11095 0018 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2
11096 001c 012B cmp r3, #1
11097 001e 01D1 bne .L531
11098 .loc 1 5518 3 is_stmt 0 discriminator 1
11099 0020 0223 movs r3, #2
11100 .loc 1 5518 3
11101 0022 C9E0 b .L532
11102 .L531:
11103 .loc 1 5518 3 discriminator 2
11104 0024 FB68 ldr r3, [r7, #12]
11105 0026 0122 movs r2, #1
11106 0028 83F84020 strb r2, [r3, #64]
5519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if STOPF is set */
5521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \
11107 .loc 1 5521 8 is_stmt 1
11108 002c BB68 ldr r3, [r7, #8]
11109 002e 5B09 lsrs r3, r3, #5
11110 0030 03F00103 and r3, r3, #1
11111 .loc 1 5521 6
11112 0034 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 294
11113 0036 09D0 beq .L533
5522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
11114 .loc 1 5522 8
11115 0038 7B68 ldr r3, [r7, #4]
11116 003a 5B09 lsrs r3, r3, #5
11117 003c 03F00103 and r3, r3, #1
5521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
11118 .loc 1 5521 58 discriminator 1
11119 0040 002B cmp r3, #0
11120 0042 03D0 beq .L533
5523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave complete process */
5525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, ITFlags);
11121 .loc 1 5525 5
11122 0044 B968 ldr r1, [r7, #8]
11123 0046 F868 ldr r0, [r7, #12]
11124 0048 FFF7FEFF bl I2C_ITSlaveCplt
11125 .L533:
5526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \
11126 .loc 1 5528 8
11127 004c BB68 ldr r3, [r7, #8]
11128 004e 1B09 lsrs r3, r3, #4
11129 0050 03F00103 and r3, r3, #1
11130 .loc 1 5528 6
11131 0054 002B cmp r3, #0
11132 0056 00F09A80 beq .L534
5529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
11133 .loc 1 5529 8
11134 005a 7B68 ldr r3, [r7, #4]
11135 005c 1B09 lsrs r3, r3, #4
11136 005e 03F00103 and r3, r3, #1
5528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
11137 .loc 1 5528 55 discriminator 1
11138 0062 002B cmp r3, #0
11139 0064 00F09380 beq .L534
5530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check that I2C transfer finished */
5532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
5533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean XferCount == 0 */
5534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So clear Flag NACKF only */
5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) ||
11140 .loc 1 5535 10
11141 0068 7B68 ldr r3, [r7, #4]
11142 006a 9B0B lsrs r3, r3, #14
11143 006c 03F00103 and r3, r3, #1
11144 .loc 1 5535 8
11145 0070 002B cmp r3, #0
11146 0072 05D1 bne .L535
5536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))
11147 .loc 1 5536 10
11148 0074 7B68 ldr r3, [r7, #4]
11149 0076 DB0B lsrs r3, r3, #15
11150 0078 03F00103 and r3, r3, #1
5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))
11151 .loc 1 5535 68 discriminator 1
ARM GAS /tmp/cc5G5cqz.s page 295
11152 007c 002B cmp r3, #0
11153 007e 7FD0 beq .L536
11154 .L535:
5537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmarx, for MISRA compliance */
5539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
11155 .loc 1 5539 15
11156 0080 FB68 ldr r3, [r7, #12]
11157 0082 DB6B ldr r3, [r3, #60]
11158 .loc 1 5539 10
11159 0084 002B cmp r3, #0
11160 0086 0DD0 beq .L537
5540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)
11161 .loc 1 5541 13
11162 0088 7B68 ldr r3, [r7, #4]
11163 008a DB0B lsrs r3, r3, #15
11164 008c 03F00103 and r3, r3, #1
11165 .loc 1 5541 12
11166 0090 002B cmp r3, #0
11167 0092 07D0 beq .L537
5542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U)
11168 .loc 1 5543 15
11169 0094 FB68 ldr r3, [r7, #12]
11170 0096 DB6B ldr r3, [r3, #60]
11171 0098 1B68 ldr r3, [r3]
11172 009a 5B68 ldr r3, [r3, #4]
11173 .loc 1 5543 14
11174 009c 002B cmp r3, #0
11175 009e 01D1 bne .L537
5544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U;
11176 .loc 1 5545 26
11177 00a0 0123 movs r3, #1
11178 00a2 FB61 str r3, [r7, #28]
11179 .L537:
5546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Split check of hdmatx, for MISRA compliance */
5551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
11180 .loc 1 5551 15
11181 00a4 FB68 ldr r3, [r7, #12]
11182 00a6 9B6B ldr r3, [r3, #56]
11183 .loc 1 5551 10
11184 00a8 002B cmp r3, #0
11185 00aa 0DD0 beq .L538
5552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET)
11186 .loc 1 5553 13
11187 00ac 7B68 ldr r3, [r7, #4]
11188 00ae 9B0B lsrs r3, r3, #14
11189 00b0 03F00103 and r3, r3, #1
11190 .loc 1 5553 12
11191 00b4 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 296
11192 00b6 07D0 beq .L538
5554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U)
11193 .loc 1 5555 15
11194 00b8 FB68 ldr r3, [r7, #12]
11195 00ba 9B6B ldr r3, [r3, #56]
11196 00bc 1B68 ldr r3, [r3]
11197 00be 5B68 ldr r3, [r3, #4]
11198 .loc 1 5555 14
11199 00c0 002B cmp r3, #0
11200 00c2 01D1 bne .L538
5556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** treatdmanack = 1U;
11201 .loc 1 5557 26
11202 00c4 0123 movs r3, #1
11203 00c6 FB61 str r3, [r7, #28]
11204 .L538:
5558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (treatdmanack == 1U)
11205 .loc 1 5562 10
11206 00c8 FB69 ldr r3, [r7, #28]
11207 00ca 012B cmp r3, #1
11208 00cc 28D1 bne .L539
5563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))
11209 .loc 1 5564 18
11210 00ce FB68 ldr r3, [r7, #12]
11211 00d0 93F84130 ldrb r3, [r3, #65]
11212 00d4 DBB2 uxtb r3, r3
11213 .loc 1 5564 12
11214 00d6 282B cmp r3, #40
11215 00d8 08D1 bne .L540
11216 .loc 1 5564 51 discriminator 1
11217 00da BB69 ldr r3, [r7, #24]
11218 00dc B3F1007F cmp r3, #33554432
11219 00e0 04D1 bne .L540
5565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for
5566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */
5567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */
5569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, ITFlags);
11220 .loc 1 5569 11
11221 00e2 B968 ldr r1, [r7, #8]
11222 00e4 F868 ldr r0, [r7, #12]
11223 00e6 FFF7FEFF bl I2C_ITListenCplt
11224 00ea 48E0 b .L543
11225 .L540:
5570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAM
11226 .loc 1 5571 23
11227 00ec FB68 ldr r3, [r7, #12]
11228 00ee 93F84130 ldrb r3, [r3, #65]
11229 00f2 DBB2 uxtb r3, r3
11230 .loc 1 5571 17
ARM GAS /tmp/cc5G5cqz.s page 297
11231 00f4 292B cmp r3, #41
11232 00f6 0ED1 bne .L542
11233 .loc 1 5571 64 discriminator 1
11234 00f8 BB69 ldr r3, [r7, #24]
11235 00fa 13F5803F cmn r3, #65536
11236 00fe 0AD0 beq .L542
5572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
11237 .loc 1 5574 11
11238 0100 FB68 ldr r3, [r7, #12]
11239 0102 1B68 ldr r3, [r3]
11240 0104 1022 movs r2, #16
11241 0106 DA61 str r2, [r3, #28]
5575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
5577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
11242 .loc 1 5577 11
11243 0108 F868 ldr r0, [r7, #12]
11244 010a FFF7FEFF bl I2C_Flush_TXDR
5578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */
5580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
5581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
11245 .loc 1 5581 11
11246 010e F868 ldr r0, [r7, #12]
11247 0110 FFF7FEFF bl I2C_ITSlaveSeqCplt
11248 0114 33E0 b .L543
11249 .L542:
5582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
11250 .loc 1 5586 11
11251 0116 FB68 ldr r3, [r7, #12]
11252 0118 1B68 ldr r3, [r3]
11253 011a 1022 movs r2, #16
11254 011c DA61 str r2, [r3, #28]
5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11255 .loc 1 5562 10
11256 011e 34E0 b .L551
11257 .L539:
5587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/
5592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
5593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
11258 .loc 1 5593 9
11259 0120 FB68 ldr r3, [r7, #12]
11260 0122 1B68 ldr r3, [r3]
11261 0124 1022 movs r2, #16
11262 0126 DA61 str r2, [r3, #28]
5594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */
ARM GAS /tmp/cc5G5cqz.s page 298
5596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
11263 .loc 1 5596 13
11264 0128 FB68 ldr r3, [r7, #12]
11265 012a 5B6C ldr r3, [r3, #68]
11266 .loc 1 5596 25
11267 012c 43F00402 orr r2, r3, #4
11268 0130 FB68 ldr r3, [r7, #12]
11269 0132 5A64 str r2, [r3, #68]
5597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */
5599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpstate = hi2c->State;
11270 .loc 1 5599 18
11271 0134 FB68 ldr r3, [r7, #12]
11272 0136 93F84130 ldrb r3, [r3, #65]
11273 013a FB75 strb r3, [r7, #23]
5600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME))
11274 .loc 1 5601 12
11275 013c BB69 ldr r3, [r7, #24]
11276 013e 002B cmp r3, #0
11277 0140 03D0 beq .L544
11278 .loc 1 5601 45 discriminator 1
11279 0142 BB69 ldr r3, [r7, #24]
11280 0144 B3F1807F cmp r3, #16777216
11281 0148 1FD1 bne .L551
11282 .L544:
5602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN))
11283 .loc 1 5603 14
11284 014a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
11285 014c 212B cmp r3, #33
11286 014e 02D0 beq .L545
11287 .loc 1 5603 51 discriminator 1
11288 0150 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
11289 0152 292B cmp r3, #41
11290 0154 03D1 bne .L546
11291 .L545:
5604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;
11292 .loc 1 5605 33
11293 0156 FB68 ldr r3, [r7, #12]
11294 0158 2122 movs r2, #33
11295 015a 1A63 str r2, [r3, #48]
11296 015c 08E0 b .L547
11297 .L546:
5606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN
11298 .loc 1 5607 19
11299 015e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
11300 0160 222B cmp r3, #34
11301 0162 02D0 beq .L548
11302 .loc 1 5607 56 discriminator 1
11303 0164 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
11304 0166 2A2B cmp r3, #42
11305 0168 02D1 bne .L547
11306 .L548:
5608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 299
5609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;
11307 .loc 1 5609 33
11308 016a FB68 ldr r3, [r7, #12]
11309 016c 2222 movs r2, #34
11310 016e 1A63 str r2, [r3, #48]
11311 .L547:
5610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
5614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode);
11312 .loc 1 5617 33
11313 0170 FB68 ldr r3, [r7, #12]
11314 0172 5B6C ldr r3, [r3, #68]
11315 .loc 1 5617 11
11316 0174 1946 mov r1, r3
11317 0176 F868 ldr r0, [r7, #12]
11318 0178 FFF7FEFF bl I2C_ITError
5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11319 .loc 1 5562 10
11320 017c 05E0 b .L551
11321 .L543:
11322 017e 04E0 b .L551
11323 .L536:
5618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Only Clear NACK Flag, no DMA treatment is pending */
5624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
11324 .loc 1 5624 7
11325 0180 FB68 ldr r3, [r7, #12]
11326 0182 1B68 ldr r3, [r3]
11327 0184 1022 movs r2, #16
11328 0186 DA61 str r2, [r3, #28]
5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))
11329 .loc 1 5535 8
11330 0188 11E0 b .L550
11331 .L551:
5562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11332 .loc 1 5562 10
11333 018a 00BF nop
5535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET))
11334 .loc 1 5535 8
11335 018c 0FE0 b .L550
11336 .L534:
5625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \
11337 .loc 1 5627 13
11338 018e BB68 ldr r3, [r7, #8]
11339 0190 DB08 lsrs r3, r3, #3
11340 0192 03F00103 and r3, r3, #1
ARM GAS /tmp/cc5G5cqz.s page 300
11341 .loc 1 5627 11
11342 0196 002B cmp r3, #0
11343 0198 09D0 beq .L550
5628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
11344 .loc 1 5628 13
11345 019a 7B68 ldr r3, [r7, #4]
11346 019c DB08 lsrs r3, r3, #3
11347 019e 03F00103 and r3, r3, #1
5627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
11348 .loc 1 5627 62 discriminator 1
11349 01a2 002B cmp r3, #0
11350 01a4 03D0 beq .L550
5629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, ITFlags);
11351 .loc 1 5630 5
11352 01a6 B968 ldr r1, [r7, #8]
11353 01a8 F868 ldr r0, [r7, #12]
11354 01aa FFF7FEFF bl I2C_ITAddrCplt
11355 .L550:
5631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
11356 .loc 1 5638 3
11357 01ae FB68 ldr r3, [r7, #12]
11358 01b0 0022 movs r2, #0
11359 01b2 83F84020 strb r2, [r3, #64]
5639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
11360 .loc 1 5640 10
11361 01b6 0023 movs r3, #0
11362 .L532:
5641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11363 .loc 1 5641 1
11364 01b8 1846 mov r0, r3
11365 01ba 2037 adds r7, r7, #32
11366 .cfi_def_cfa_offset 8
11367 01bc BD46 mov sp, r7
11368 .cfi_def_cfa_register 13
11369 @ sp needed
11370 01be 80BD pop {r7, pc}
11371 .cfi_endproc
11372 .LFE184:
11374 .section .text.I2C_RequestMemoryWrite,"ax",%progbits
11375 .align 1
11376 .syntax unified
11377 .thumb
11378 .thumb_func
11380 I2C_RequestMemoryWrite:
11381 .LFB185:
5642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for write reques
ARM GAS /tmp/cc5G5cqz.s page 301
5645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
5648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
5649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
5650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
5651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
5652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
5653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
5656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t
5657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart)
5658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11382 .loc 1 5658 1
11383 .cfi_startproc
11384 @ args = 8, pretend = 0, frame = 16
11385 @ frame_needed = 1, uses_anonymous_args = 0
11386 0000 80B5 push {r7, lr}
11387 .cfi_def_cfa_offset 8
11388 .cfi_offset 7, -8
11389 .cfi_offset 14, -4
11390 0002 86B0 sub sp, sp, #24
11391 .cfi_def_cfa_offset 32
11392 0004 02AF add r7, sp, #8
11393 .cfi_def_cfa 7, 24
11394 0006 F860 str r0, [r7, #12]
11395 0008 0846 mov r0, r1
11396 000a 1146 mov r1, r2
11397 000c 1A46 mov r2, r3
11398 000e 0346 mov r3, r0 @ movhi
11399 0010 7B81 strh r3, [r7, #10] @ movhi
11400 0012 0B46 mov r3, r1 @ movhi
11401 0014 3B81 strh r3, [r7, #8] @ movhi
11402 0016 1346 mov r3, r2 @ movhi
11403 0018 FB80 strh r3, [r7, #6] @ movhi
5659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI
11404 .loc 1 5659 3
11405 001a FB88 ldrh r3, [r7, #6] @ movhi
11406 001c DAB2 uxtb r2, r3
11407 001e 7989 ldrh r1, [r7, #10]
11408 0020 204B ldr r3, .L559
11409 0022 0093 str r3, [sp]
11410 0024 4FF08073 mov r3, #16777216
11411 0028 F868 ldr r0, [r7, #12]
11412 002a FFF7FEFF bl I2C_TransferConfig
5660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
5662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)
11413 .loc 1 5662 7
11414 002e FA69 ldr r2, [r7, #28]
11415 0030 B969 ldr r1, [r7, #24]
11416 0032 F868 ldr r0, [r7, #12]
11417 0034 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
11418 0038 0346 mov r3, r0
11419 .loc 1 5662 6 discriminator 1
11420 003a 002B cmp r3, #0
ARM GAS /tmp/cc5G5cqz.s page 302
11421 003c 01D0 beq .L553
5663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11422 .loc 1 5664 12
11423 003e 0123 movs r3, #1
11424 0040 2CE0 b .L554
11425 .L553:
5665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
5668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
11426 .loc 1 5668 6
11427 0042 FB88 ldrh r3, [r7, #6]
11428 0044 012B cmp r3, #1
11429 0046 05D1 bne .L555
5669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */
5671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
11430 .loc 1 5671 28
11431 0048 3B89 ldrh r3, [r7, #8] @ movhi
11432 004a DAB2 uxtb r2, r3
11433 .loc 1 5671 9
11434 004c FB68 ldr r3, [r7, #12]
11435 004e 1B68 ldr r3, [r3]
11436 .loc 1 5671 26
11437 0050 9A62 str r2, [r3, #40]
11438 0052 15E0 b .L556
11439 .L555:
5672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
5674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */
5677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
11440 .loc 1 5677 28
11441 0054 3B89 ldrh r3, [r7, #8]
11442 0056 1B0A lsrs r3, r3, #8
11443 0058 9BB2 uxth r3, r3
11444 005a DAB2 uxtb r2, r3
11445 .loc 1 5677 9
11446 005c FB68 ldr r3, [r7, #12]
11447 005e 1B68 ldr r3, [r3]
11448 .loc 1 5677 26
11449 0060 9A62 str r2, [r3, #40]
5678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
5680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)
11450 .loc 1 5680 9
11451 0062 FA69 ldr r2, [r7, #28]
11452 0064 B969 ldr r1, [r7, #24]
11453 0066 F868 ldr r0, [r7, #12]
11454 0068 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
11455 006c 0346 mov r3, r0
11456 .loc 1 5680 8 discriminator 1
11457 006e 002B cmp r3, #0
11458 0070 01D0 beq .L557
5681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 303
5682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11459 .loc 1 5682 14
11460 0072 0123 movs r3, #1
11461 0074 12E0 b .L554
11462 .L557:
5683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */
5686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
11463 .loc 1 5686 28
11464 0076 3B89 ldrh r3, [r7, #8] @ movhi
11465 0078 DAB2 uxtb r2, r3
11466 .loc 1 5686 9
11467 007a FB68 ldr r3, [r7, #12]
11468 007c 1B68 ldr r3, [r3]
11469 .loc 1 5686 26
11470 007e 9A62 str r2, [r3, #40]
11471 .L556:
5687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TCR flag is set */
5690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK)
11472 .loc 1 5690 7
11473 0080 FB69 ldr r3, [r7, #28]
11474 0082 0093 str r3, [sp]
11475 0084 BB69 ldr r3, [r7, #24]
11476 0086 0022 movs r2, #0
11477 0088 8021 movs r1, #128
11478 008a F868 ldr r0, [r7, #12]
11479 008c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
11480 0090 0346 mov r3, r0
11481 .loc 1 5690 6 discriminator 1
11482 0092 002B cmp r3, #0
11483 0094 01D0 beq .L558
5691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11484 .loc 1 5692 12
11485 0096 0123 movs r3, #1
11486 0098 00E0 b .L554
11487 .L558:
5693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
11488 .loc 1 5695 10
11489 009a 0023 movs r3, #0
11490 .L554:
5696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11491 .loc 1 5696 1
11492 009c 1846 mov r0, r3
11493 009e 1037 adds r7, r7, #16
11494 .cfi_def_cfa_offset 8
11495 00a0 BD46 mov sp, r7
11496 .cfi_def_cfa_register 13
11497 @ sp needed
11498 00a2 80BD pop {r7, pc}
11499 .L560:
11500 .align 2
ARM GAS /tmp/cc5G5cqz.s page 304
11501 .L559:
11502 00a4 00200080 .word -2147475456
11503 .cfi_endproc
11504 .LFE185:
11506 .section .text.I2C_RequestMemoryRead,"ax",%progbits
11507 .align 1
11508 .syntax unified
11509 .thumb
11510 .thumb_func
11512 I2C_RequestMemoryRead:
11513 .LFB186:
5697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for read request
5700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
5701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
5702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value
5703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface
5704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddress Internal memory address
5705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address
5706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
5707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
5708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
5709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
5711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T
5712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart)
5713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11514 .loc 1 5713 1
11515 .cfi_startproc
11516 @ args = 8, pretend = 0, frame = 16
11517 @ frame_needed = 1, uses_anonymous_args = 0
11518 0000 80B5 push {r7, lr}
11519 .cfi_def_cfa_offset 8
11520 .cfi_offset 7, -8
11521 .cfi_offset 14, -4
11522 0002 86B0 sub sp, sp, #24
11523 .cfi_def_cfa_offset 32
11524 0004 02AF add r7, sp, #8
11525 .cfi_def_cfa 7, 24
11526 0006 F860 str r0, [r7, #12]
11527 0008 0846 mov r0, r1
11528 000a 1146 mov r1, r2
11529 000c 1A46 mov r2, r3
11530 000e 0346 mov r3, r0 @ movhi
11531 0010 7B81 strh r3, [r7, #10] @ movhi
11532 0012 0B46 mov r3, r1 @ movhi
11533 0014 3B81 strh r3, [r7, #8] @ movhi
11534 0016 1346 mov r3, r2 @ movhi
11535 0018 FB80 strh r3, [r7, #6] @ movhi
5714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR
11536 .loc 1 5714 3
11537 001a FB88 ldrh r3, [r7, #6] @ movhi
11538 001c DAB2 uxtb r2, r3
11539 001e 7989 ldrh r1, [r7, #10]
11540 0020 204B ldr r3, .L568
11541 0022 0093 str r3, [sp]
ARM GAS /tmp/cc5G5cqz.s page 305
11542 0024 0023 movs r3, #0
11543 0026 F868 ldr r0, [r7, #12]
11544 0028 FFF7FEFF bl I2C_TransferConfig
5715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
5717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)
11545 .loc 1 5717 7
11546 002c FA69 ldr r2, [r7, #28]
11547 002e B969 ldr r1, [r7, #24]
11548 0030 F868 ldr r0, [r7, #12]
11549 0032 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
11550 0036 0346 mov r3, r0
11551 .loc 1 5717 6 discriminator 1
11552 0038 002B cmp r3, #0
11553 003a 01D0 beq .L562
5718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11554 .loc 1 5719 12
11555 003c 0123 movs r3, #1
11556 003e 2CE0 b .L563
11557 .L562:
5720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 8Bit */
5723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
11558 .loc 1 5723 6
11559 0040 FB88 ldrh r3, [r7, #6]
11560 0042 012B cmp r3, #1
11561 0044 05D1 bne .L564
5724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send Memory Address */
5726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
11562 .loc 1 5726 28
11563 0046 3B89 ldrh r3, [r7, #8] @ movhi
11564 0048 DAB2 uxtb r2, r3
11565 .loc 1 5726 9
11566 004a FB68 ldr r3, [r7, #12]
11567 004c 1B68 ldr r3, [r3]
11568 .loc 1 5726 26
11569 004e 9A62 str r2, [r3, #40]
11570 0050 15E0 b .L565
11571 .L564:
5727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If Memory address size is 16Bit */
5729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send MSB of Memory Address */
5732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
11572 .loc 1 5732 28
11573 0052 3B89 ldrh r3, [r7, #8]
11574 0054 1B0A lsrs r3, r3, #8
11575 0056 9BB2 uxth r3, r3
11576 0058 DAB2 uxtb r2, r3
11577 .loc 1 5732 9
11578 005a FB68 ldr r3, [r7, #12]
11579 005c 1B68 ldr r3, [r3]
11580 .loc 1 5732 26
ARM GAS /tmp/cc5G5cqz.s page 306
11581 005e 9A62 str r2, [r3, #40]
5733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TXIS flag is set */
5735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)
11582 .loc 1 5735 9
11583 0060 FA69 ldr r2, [r7, #28]
11584 0062 B969 ldr r1, [r7, #24]
11585 0064 F868 ldr r0, [r7, #12]
11586 0066 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout
11587 006a 0346 mov r3, r0
11588 .loc 1 5735 8 discriminator 1
11589 006c 002B cmp r3, #0
11590 006e 01D0 beq .L566
5736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11591 .loc 1 5737 14
11592 0070 0123 movs r3, #1
11593 0072 12E0 b .L563
11594 .L566:
5738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Send LSB of Memory Address */
5741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
11595 .loc 1 5741 28
11596 0074 3B89 ldrh r3, [r7, #8] @ movhi
11597 0076 DAB2 uxtb r2, r3
11598 .loc 1 5741 9
11599 0078 FB68 ldr r3, [r7, #12]
11600 007a 1B68 ldr r3, [r3]
11601 .loc 1 5741 26
11602 007c 9A62 str r2, [r3, #40]
11603 .L565:
5742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until TC flag is set */
5745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK)
11604 .loc 1 5745 7
11605 007e FB69 ldr r3, [r7, #28]
11606 0080 0093 str r3, [sp]
11607 0082 BB69 ldr r3, [r7, #24]
11608 0084 0022 movs r2, #0
11609 0086 4021 movs r1, #64
11610 0088 F868 ldr r0, [r7, #12]
11611 008a FFF7FEFF bl I2C_WaitOnFlagUntilTimeout
11612 008e 0346 mov r3, r0
11613 .loc 1 5745 6 discriminator 1
11614 0090 002B cmp r3, #0
11615 0092 01D0 beq .L567
5746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
11616 .loc 1 5747 12
11617 0094 0123 movs r3, #1
11618 0096 00E0 b .L563
11619 .L567:
5748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
ARM GAS /tmp/cc5G5cqz.s page 307
11620 .loc 1 5750 10
11621 0098 0023 movs r3, #0
11622 .L563:
5751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11623 .loc 1 5751 1
11624 009a 1846 mov r0, r3
11625 009c 1037 adds r7, r7, #16
11626 .cfi_def_cfa_offset 8
11627 009e BD46 mov sp, r7
11628 .cfi_def_cfa_register 13
11629 @ sp needed
11630 00a0 80BD pop {r7, pc}
11631 .L569:
11632 00a2 00BF .align 2
11633 .L568:
11634 00a4 00200080 .word -2147475456
11635 .cfi_endproc
11636 .LFE186:
11638 .section .text.I2C_ITAddrCplt,"ax",%progbits
11639 .align 1
11640 .syntax unified
11641 .thumb
11642 .thumb_func
11644 I2C_ITAddrCplt:
11645 .LFB187:
5752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Address complete process callback.
5755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
5756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
5757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
5758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)
5760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11646 .loc 1 5760 1
11647 .cfi_startproc
11648 @ args = 0, pretend = 0, frame = 16
11649 @ frame_needed = 1, uses_anonymous_args = 0
11650 0000 80B5 push {r7, lr}
11651 .cfi_def_cfa_offset 8
11652 .cfi_offset 7, -8
11653 .cfi_offset 14, -4
11654 0002 84B0 sub sp, sp, #16
11655 .cfi_def_cfa_offset 24
11656 0004 00AF add r7, sp, #0
11657 .cfi_def_cfa_register 7
11658 0006 7860 str r0, [r7, #4]
11659 0008 3960 str r1, [r7]
5761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint8_t transferdirection;
5762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t slaveaddrcode;
5763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd1code;
5764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint16_t ownadd2code;
5765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */
5767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(ITFlags);
5768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of Listen state, need to inform upper layer of address match code event */
ARM GAS /tmp/cc5G5cqz.s page 308
5770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN)
11660 .loc 1 5770 22
11661 000a 7B68 ldr r3, [r7, #4]
11662 000c 93F84130 ldrb r3, [r3, #65]
11663 0010 DBB2 uxtb r3, r3
11664 .loc 1 5770 30
11665 0012 03F02803 and r3, r3, #40
11666 .loc 1 5770 6
11667 0016 282B cmp r3, #40
11668 0018 6AD1 bne .L571
5771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** transferdirection = I2C_GET_DIR(hi2c);
11669 .loc 1 5772 25
11670 001a 7B68 ldr r3, [r7, #4]
11671 001c 1B68 ldr r3, [r3]
11672 001e 9B69 ldr r3, [r3, #24]
11673 0020 1B0C lsrs r3, r3, #16
11674 0022 DBB2 uxtb r3, r3
11675 .loc 1 5772 23
11676 0024 03F00103 and r3, r3, #1
11677 0028 FB73 strb r3, [r7, #15]
5773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c);
11678 .loc 1 5773 25
11679 002a 7B68 ldr r3, [r7, #4]
11680 002c 1B68 ldr r3, [r3]
11681 002e 9B69 ldr r3, [r3, #24]
11682 0030 1B0C lsrs r3, r3, #16
11683 0032 9BB2 uxth r3, r3
11684 .loc 1 5773 23
11685 0034 03F0FE03 and r3, r3, #254
11686 0038 BB81 strh r3, [r7, #12] @ movhi
5774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c);
11687 .loc 1 5774 25
11688 003a 7B68 ldr r3, [r7, #4]
11689 003c 1B68 ldr r3, [r3]
11690 003e 9B68 ldr r3, [r3, #8]
11691 0040 9BB2 uxth r3, r3
11692 .loc 1 5774 23
11693 0042 C3F30903 ubfx r3, r3, #0, #10
11694 0046 7B81 strh r3, [r7, #10] @ movhi
5775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c);
11695 .loc 1 5775 25
11696 0048 7B68 ldr r3, [r7, #4]
11697 004a 1B68 ldr r3, [r3]
11698 004c DB68 ldr r3, [r3, #12]
11699 004e 9BB2 uxth r3, r3
11700 .loc 1 5775 23
11701 0050 03F0FE03 and r3, r3, #254
11702 0054 3B81 strh r3, [r7, #8] @ movhi
5776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If 10bits addressing mode is selected */
5778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)
11703 .loc 1 5778 19
11704 0056 7B68 ldr r3, [r7, #4]
11705 0058 DB68 ldr r3, [r3, #12]
11706 .loc 1 5778 8
11707 005a 022B cmp r3, #2
ARM GAS /tmp/cc5G5cqz.s page 309
11708 005c 38D1 bne .L572
5779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK))
11709 .loc 1 5780 44
11710 005e 7B89 ldrh r3, [r7, #10]
11711 0060 DB09 lsrs r3, r3, #7
11712 0062 9AB2 uxth r2, r3
11713 0064 BB89 ldrh r3, [r7, #12] @ movhi
11714 0066 5340 eors r3, r3, r2
11715 0068 9BB2 uxth r3, r3
11716 006a 03F00603 and r3, r3, #6
11717 .loc 1 5780 10
11718 006e 002B cmp r3, #0
11719 0070 1CD1 bne .L573
5781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = ownadd1code;
11720 .loc 1 5782 23
11721 0072 7B89 ldrh r3, [r7, #10] @ movhi
11722 0074 BB81 strh r3, [r7, #12] @ movhi
5783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount++;
11723 .loc 1 5783 13
11724 0076 7B68 ldr r3, [r7, #4]
11725 0078 9B6C ldr r3, [r3, #72]
11726 .loc 1 5783 29
11727 007a 5A1C adds r2, r3, #1
11728 007c 7B68 ldr r3, [r7, #4]
11729 007e 9A64 str r2, [r3, #72]
5784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U)
11730 .loc 1 5784 17
11731 0080 7B68 ldr r3, [r7, #4]
11732 0082 9B6C ldr r3, [r3, #72]
11733 .loc 1 5784 12
11734 0084 022B cmp r3, #2
11735 0086 3BD1 bne .L575
5785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset Address Event counter */
5787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrEventCount = 0U;
11736 .loc 1 5787 32
11737 0088 7B68 ldr r3, [r7, #4]
11738 008a 0022 movs r2, #0
11739 008c 9A64 str r2, [r3, #72]
5788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */
5790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
11740 .loc 1 5790 11
11741 008e 7B68 ldr r3, [r7, #4]
11742 0090 1B68 ldr r3, [r3]
11743 0092 0822 movs r2, #8
11744 0094 DA61 str r2, [r3, #28]
5791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
11745 .loc 1 5793 11
11746 0096 7B68 ldr r3, [r7, #4]
11747 0098 0022 movs r2, #0
11748 009a 83F84020 strb r2, [r3, #64]
5794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 310
5795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */
5796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);
11749 .loc 1 5799 11
11750 009e BA89 ldrh r2, [r7, #12]
11751 00a0 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
11752 00a2 1946 mov r1, r3
11753 00a4 7868 ldr r0, [r7, #4]
11754 00a6 FFF7FEFF bl HAL_I2C_AddrCallback
5800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** slaveaddrcode = ownadd2code;
5806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */
5808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */
5814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);
5818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else 7 bits addressing mode is selected */
5822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR Interrupts */
5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
5826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Slave Addr callback */
5831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode);
5833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode);
5835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Else clear address flag only */
5839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ADDR flag */
5842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR);
5843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
ARM GAS /tmp/cc5G5cqz.s page 311
5846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11755 .loc 1 5847 1
11756 00aa 29E0 b .L575
11757 .L573:
5805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11758 .loc 1 5805 23
11759 00ac 3B89 ldrh r3, [r7, #8] @ movhi
11760 00ae BB81 strh r3, [r7, #12] @ movhi
5808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11761 .loc 1 5808 9
11762 00b0 4FF40041 mov r1, #32768
11763 00b4 7868 ldr r0, [r7, #4]
11764 00b6 FFF7FEFF bl I2C_Disable_IRQ
5811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11765 .loc 1 5811 9
11766 00ba 7B68 ldr r3, [r7, #4]
11767 00bc 0022 movs r2, #0
11768 00be 83F84020 strb r2, [r3, #64]
5817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
11769 .loc 1 5817 9
11770 00c2 BA89 ldrh r2, [r7, #12]
11771 00c4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
11772 00c6 1946 mov r1, r3
11773 00c8 7868 ldr r0, [r7, #4]
11774 00ca FFF7FEFF bl HAL_I2C_AddrCallback
11775 .loc 1 5847 1
11776 00ce 17E0 b .L575
11777 .L572:
5825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11778 .loc 1 5825 7
11779 00d0 4FF40041 mov r1, #32768
11780 00d4 7868 ldr r0, [r7, #4]
11781 00d6 FFF7FEFF bl I2C_Disable_IRQ
5828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11782 .loc 1 5828 7
11783 00da 7B68 ldr r3, [r7, #4]
11784 00dc 0022 movs r2, #0
11785 00de 83F84020 strb r2, [r3, #64]
5834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
11786 .loc 1 5834 7
11787 00e2 BA89 ldrh r2, [r7, #12]
11788 00e4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
11789 00e6 1946 mov r1, r3
11790 00e8 7868 ldr r0, [r7, #4]
11791 00ea FFF7FEFF bl HAL_I2C_AddrCallback
11792 .loc 1 5847 1
11793 00ee 07E0 b .L575
11794 .L571:
5842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11795 .loc 1 5842 5
11796 00f0 7B68 ldr r3, [r7, #4]
11797 00f2 1B68 ldr r3, [r3]
11798 00f4 0822 movs r2, #8
11799 00f6 DA61 str r2, [r3, #28]
5845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11800 .loc 1 5845 5
ARM GAS /tmp/cc5G5cqz.s page 312
11801 00f8 7B68 ldr r3, [r7, #4]
11802 00fa 0022 movs r2, #0
11803 00fc 83F84020 strb r2, [r3, #64]
11804 .L575:
11805 .loc 1 5847 1
11806 0100 00BF nop
11807 0102 1037 adds r7, r7, #16
11808 .cfi_def_cfa_offset 8
11809 0104 BD46 mov sp, r7
11810 .cfi_def_cfa_register 13
11811 @ sp needed
11812 0106 80BD pop {r7, pc}
11813 .cfi_endproc
11814 .LFE187:
11816 .section .text.I2C_ITMasterSeqCplt,"ax",%progbits
11817 .align 1
11818 .syntax unified
11819 .thumb
11820 .thumb_func
11822 I2C_ITMasterSeqCplt:
11823 .LFB188:
5848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master sequential complete process.
5851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
5852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
5853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c)
5855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11824 .loc 1 5855 1
11825 .cfi_startproc
11826 @ args = 0, pretend = 0, frame = 8
11827 @ frame_needed = 1, uses_anonymous_args = 0
11828 0000 80B5 push {r7, lr}
11829 .cfi_def_cfa_offset 8
11830 .cfi_offset 7, -8
11831 .cfi_offset 14, -4
11832 0002 82B0 sub sp, sp, #8
11833 .cfi_def_cfa_offset 16
11834 0004 00AF add r7, sp, #0
11835 .cfi_def_cfa_register 7
11836 0006 7860 str r0, [r7, #4]
5856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */
5857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
11837 .loc 1 5857 14
11838 0008 7B68 ldr r3, [r7, #4]
11839 000a 0022 movs r2, #0
11840 000c 83F84220 strb r2, [r3, #66]
5858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No Generate Stop, to permit restart mode */
5860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */
5861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX)
11841 .loc 1 5861 11
11842 0010 7B68 ldr r3, [r7, #4]
11843 0012 93F84130 ldrb r3, [r3, #65]
11844 0016 DBB2 uxtb r3, r3
11845 .loc 1 5861 6
ARM GAS /tmp/cc5G5cqz.s page 313
11846 0018 212B cmp r3, #33
11847 001a 15D1 bne .L577
5862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
11848 .loc 1 5863 25
11849 001c 7B68 ldr r3, [r7, #4]
11850 001e 2022 movs r2, #32
11851 0020 83F84120 strb r2, [r3, #65]
5864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;
11852 .loc 1 5864 25
11853 0024 7B68 ldr r3, [r7, #4]
11854 0026 1122 movs r2, #17
11855 0028 1A63 str r2, [r3, #48]
5865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
11856 .loc 1 5865 25
11857 002a 7B68 ldr r3, [r7, #4]
11858 002c 0022 movs r2, #0
11859 002e 5A63 str r2, [r3, #52]
5866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */
5868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
11860 .loc 1 5868 5
11861 0030 0121 movs r1, #1
11862 0032 7868 ldr r0, [r7, #4]
11863 0034 FFF7FEFF bl I2C_Disable_IRQ
5869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
11864 .loc 1 5871 5
11865 0038 7B68 ldr r3, [r7, #4]
11866 003a 0022 movs r2, #0
11867 003c 83F84020 strb r2, [r3, #64]
5872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c);
5876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c);
11868 .loc 1 5877 5
11869 0040 7868 ldr r0, [r7, #4]
11870 0042 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback
5878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */
5881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
5884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
5885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
5886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */
5888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
ARM GAS /tmp/cc5G5cqz.s page 314
5894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c);
5896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c);
5898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
11871 .loc 1 5900 1
11872 0046 14E0 b .L579
11873 .L577:
5883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
11874 .loc 1 5883 25
11875 0048 7B68 ldr r3, [r7, #4]
11876 004a 2022 movs r2, #32
11877 004c 83F84120 strb r2, [r3, #65]
5884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
11878 .loc 1 5884 25
11879 0050 7B68 ldr r3, [r7, #4]
11880 0052 1222 movs r2, #18
11881 0054 1A63 str r2, [r3, #48]
5885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11882 .loc 1 5885 25
11883 0056 7B68 ldr r3, [r7, #4]
11884 0058 0022 movs r2, #0
11885 005a 5A63 str r2, [r3, #52]
5888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11886 .loc 1 5888 5
11887 005c 0221 movs r1, #2
11888 005e 7868 ldr r0, [r7, #4]
11889 0060 FFF7FEFF bl I2C_Disable_IRQ
5891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
11890 .loc 1 5891 5
11891 0064 7B68 ldr r3, [r7, #4]
11892 0066 0022 movs r2, #0
11893 0068 83F84020 strb r2, [r3, #64]
5897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
11894 .loc 1 5897 5
11895 006c 7868 ldr r0, [r7, #4]
11896 006e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback
11897 .L579:
11898 .loc 1 5900 1
11899 0072 00BF nop
11900 0074 0837 adds r7, r7, #8
11901 .cfi_def_cfa_offset 8
11902 0076 BD46 mov sp, r7
11903 .cfi_def_cfa_register 13
11904 @ sp needed
11905 0078 80BD pop {r7, pc}
11906 .cfi_endproc
11907 .LFE188:
11909 .section .text.I2C_ITSlaveSeqCplt,"ax",%progbits
11910 .align 1
11911 .syntax unified
11912 .thumb
11913 .thumb_func
11915 I2C_ITSlaveSeqCplt:
11916 .LFB189:
ARM GAS /tmp/cc5G5cqz.s page 315
5901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave sequential complete process.
5904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
5905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
5906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c)
5908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
11917 .loc 1 5908 1
11918 .cfi_startproc
11919 @ args = 0, pretend = 0, frame = 16
11920 @ frame_needed = 1, uses_anonymous_args = 0
11921 0000 80B5 push {r7, lr}
11922 .cfi_def_cfa_offset 8
11923 .cfi_offset 7, -8
11924 .cfi_offset 14, -4
11925 0002 84B0 sub sp, sp, #16
11926 .cfi_def_cfa_offset 24
11927 0004 00AF add r7, sp, #0
11928 .cfi_def_cfa_register 7
11929 0006 7860 str r0, [r7, #4]
5909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1);
11930 .loc 1 5909 26
11931 0008 7B68 ldr r3, [r7, #4]
11932 000a 1B68 ldr r3, [r3]
11933 .loc 1 5909 12
11934 000c 1B68 ldr r3, [r3]
11935 000e FB60 str r3, [r7, #12]
5910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset I2C handle mode */
5912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
11936 .loc 1 5912 14
11937 0010 7B68 ldr r3, [r7, #4]
11938 0012 0022 movs r2, #0
11939 0014 83F84220 strb r2, [r3, #66]
5913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */
5915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET)
11940 .loc 1 5915 7
11941 0018 FB68 ldr r3, [r7, #12]
11942 001a 9B0B lsrs r3, r3, #14
11943 001c 03F00103 and r3, r3, #1
11944 .loc 1 5915 6
11945 0020 002B cmp r3, #0
11946 0022 08D0 beq .L581
5916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
5918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
11947 .loc 1 5918 9
11948 0024 7B68 ldr r3, [r7, #4]
11949 0026 1B68 ldr r3, [r3]
11950 .loc 1 5918 19
11951 0028 1A68 ldr r2, [r3]
11952 .loc 1 5918 9
11953 002a 7B68 ldr r3, [r7, #4]
11954 002c 1B68 ldr r3, [r3]
11955 .loc 1 5918 25
ARM GAS /tmp/cc5G5cqz.s page 316
11956 002e 22F48042 bic r2, r2, #16384
11957 0032 1A60 str r2, [r3]
11958 0034 0DE0 b .L582
11959 .L581:
5919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)
11960 .loc 1 5920 12
11961 0036 FB68 ldr r3, [r7, #12]
11962 0038 DB0B lsrs r3, r3, #15
11963 003a 03F00103 and r3, r3, #1
11964 .loc 1 5920 11
11965 003e 002B cmp r3, #0
11966 0040 07D0 beq .L582
5921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
5923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
11967 .loc 1 5923 9
11968 0042 7B68 ldr r3, [r7, #4]
11969 0044 1B68 ldr r3, [r3]
11970 .loc 1 5923 19
11971 0046 1A68 ldr r2, [r3]
11972 .loc 1 5923 9
11973 0048 7B68 ldr r3, [r7, #4]
11974 004a 1B68 ldr r3, [r3]
11975 .loc 1 5923 25
11976 004c 22F40042 bic r2, r2, #32768
11977 0050 1A60 str r2, [r3]
11978 .L582:
5924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
5928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN)
11979 .loc 1 5930 11
11980 0052 7B68 ldr r3, [r7, #4]
11981 0054 93F84130 ldrb r3, [r3, #65]
11982 0058 DBB2 uxtb r3, r3
11983 .loc 1 5930 6
11984 005a 292B cmp r3, #41
11985 005c 12D1 bne .L583
5931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */
5933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
11986 .loc 1 5933 25
11987 005e 7B68 ldr r3, [r7, #4]
11988 0060 2822 movs r2, #40
11989 0062 83F84120 strb r2, [r3, #65]
5934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;
11990 .loc 1 5934 25
11991 0066 7B68 ldr r3, [r7, #4]
11992 0068 2122 movs r2, #33
11993 006a 1A63 str r2, [r3, #48]
5935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */
5937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
ARM GAS /tmp/cc5G5cqz.s page 317
11994 .loc 1 5937 5
11995 006c 0121 movs r1, #1
11996 006e 7868 ldr r0, [r7, #4]
11997 0070 FFF7FEFF bl I2C_Disable_IRQ
5938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
11998 .loc 1 5940 5
11999 0074 7B68 ldr r3, [r7, #4]
12000 0076 0022 movs r2, #0
12001 0078 83F84020 strb r2, [r3, #64]
5941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c);
5945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c);
12002 .loc 1 5946 5
12003 007c 7868 ldr r0, [r7, #4]
12004 007e FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback
5947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN)
5951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */
5953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
5954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;
5955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */
5957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
5958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
5960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
5961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
5963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
5964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c);
5965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
5966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c);
5967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
5968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
5970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
5972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
12005 .loc 1 5973 1
12006 0082 17E0 b .L585
12007 .L583:
5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12008 .loc 1 5950 16
12009 0084 7B68 ldr r3, [r7, #4]
12010 0086 93F84130 ldrb r3, [r3, #65]
12011 008a DBB2 uxtb r3, r3
5950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12012 .loc 1 5950 11
ARM GAS /tmp/cc5G5cqz.s page 318
12013 008c 2A2B cmp r3, #42
12014 008e 11D1 bne .L585
5953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;
12015 .loc 1 5953 25
12016 0090 7B68 ldr r3, [r7, #4]
12017 0092 2822 movs r2, #40
12018 0094 83F84120 strb r2, [r3, #65]
5954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12019 .loc 1 5954 25
12020 0098 7B68 ldr r3, [r7, #4]
12021 009a 2222 movs r2, #34
12022 009c 1A63 str r2, [r3, #48]
5957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12023 .loc 1 5957 5
12024 009e 0221 movs r1, #2
12025 00a0 7868 ldr r0, [r7, #4]
12026 00a2 FFF7FEFF bl I2C_Disable_IRQ
5960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12027 .loc 1 5960 5
12028 00a6 7B68 ldr r3, [r7, #4]
12029 00a8 0022 movs r2, #0
12030 00aa 83F84020 strb r2, [r3, #64]
5966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12031 .loc 1 5966 5
12032 00ae 7868 ldr r0, [r7, #4]
12033 00b0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback
12034 .L585:
12035 .loc 1 5973 1
12036 00b4 00BF nop
12037 00b6 1037 adds r7, r7, #16
12038 .cfi_def_cfa_offset 8
12039 00b8 BD46 mov sp, r7
12040 .cfi_def_cfa_register 13
12041 @ sp needed
12042 00ba 80BD pop {r7, pc}
12043 .cfi_endproc
12044 .LFE189:
12046 .section .text.I2C_ITMasterCplt,"ax",%progbits
12047 .align 1
12048 .syntax unified
12049 .thumb
12050 .thumb_func
12052 I2C_ITMasterCplt:
12053 .LFB190:
5974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
5976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Master complete process.
5977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
5978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
5979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
5980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
5981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)
5982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12054 .loc 1 5982 1
12055 .cfi_startproc
12056 @ args = 0, pretend = 0, frame = 24
12057 @ frame_needed = 1, uses_anonymous_args = 0
ARM GAS /tmp/cc5G5cqz.s page 319
12058 0000 80B5 push {r7, lr}
12059 .cfi_def_cfa_offset 8
12060 .cfi_offset 7, -8
12061 .cfi_offset 14, -4
12062 0002 86B0 sub sp, sp, #24
12063 .cfi_def_cfa_offset 32
12064 0004 00AF add r7, sp, #0
12065 .cfi_def_cfa_register 7
12066 0006 7860 str r0, [r7, #4]
12067 0008 3960 str r1, [r7]
5983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmperror;
5984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags;
12068 .loc 1 5984 12
12069 000a 3B68 ldr r3, [r7]
12070 000c 7B61 str r3, [r7, #20]
5985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __IO uint32_t tmpreg;
5986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
5988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
12071 .loc 1 5988 3
12072 000e 7B68 ldr r3, [r7, #4]
12073 0010 1B68 ldr r3, [r3]
12074 0012 2022 movs r2, #32
12075 0014 DA61 str r2, [r3, #28]
5989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
5990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */
5991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX)
12076 .loc 1 5991 11
12077 0016 7B68 ldr r3, [r7, #4]
12078 0018 93F84130 ldrb r3, [r3, #65]
12079 001c DBB2 uxtb r3, r3
12080 .loc 1 5991 6
12081 001e 212B cmp r3, #33
12082 0020 07D1 bne .L587
5992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
5993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);
12083 .loc 1 5993 5
12084 0022 0121 movs r1, #1
12085 0024 7868 ldr r0, [r7, #4]
12086 0026 FFF7FEFF bl I2C_Disable_IRQ
5994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX;
12087 .loc 1 5994 25
12088 002a 7B68 ldr r3, [r7, #4]
12089 002c 1122 movs r2, #17
12090 002e 1A63 str r2, [r3, #48]
12091 0030 0CE0 b .L588
12092 .L587:
5995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
5996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
12093 .loc 1 5996 16
12094 0032 7B68 ldr r3, [r7, #4]
12095 0034 93F84130 ldrb r3, [r3, #65]
12096 0038 DBB2 uxtb r3, r3
12097 .loc 1 5996 11
12098 003a 222B cmp r3, #34
12099 003c 06D1 bne .L588
5997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 320
5998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT);
12100 .loc 1 5998 5
12101 003e 0221 movs r1, #2
12102 0040 7868 ldr r0, [r7, #4]
12103 0042 FFF7FEFF bl I2C_Disable_IRQ
5999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
12104 .loc 1 5999 25
12105 0046 7B68 ldr r3, [r7, #4]
12106 0048 1222 movs r2, #18
12107 004a 1A63 str r2, [r3, #48]
12108 .L588:
6000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
6004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
6007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
12109 .loc 1 6007 3
12110 004c 7B68 ldr r3, [r7, #4]
12111 004e 1B68 ldr r3, [r3]
12112 0050 5968 ldr r1, [r3, #4]
12113 0052 7B68 ldr r3, [r7, #4]
12114 0054 1A68 ldr r2, [r3]
12115 0056 4D4B ldr r3, .L598
12116 0058 0B40 ands r3, r3, r1
12117 005a 5360 str r3, [r2, #4]
6008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */
6010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
12118 .loc 1 6010 23
12119 005c 7B68 ldr r3, [r7, #4]
12120 005e 0022 movs r2, #0
12121 0060 5A63 str r2, [r3, #52]
6011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
12122 .loc 1 6011 23
12123 0062 7B68 ldr r3, [r7, #4]
12124 0064 4A4A ldr r2, .L598+4
12125 0066 DA62 str r2, [r3, #44]
6012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET)
12126 .loc 1 6013 7
12127 0068 7B69 ldr r3, [r7, #20]
12128 006a 1B09 lsrs r3, r3, #4
12129 006c 03F00103 and r3, r3, #1
12130 .loc 1 6013 6
12131 0070 002B cmp r3, #0
12132 0072 09D0 beq .L589
6014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
6016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
12133 .loc 1 6016 5
12134 0074 7B68 ldr r3, [r7, #4]
12135 0076 1B68 ldr r3, [r3]
12136 0078 1022 movs r2, #16
12137 007a DA61 str r2, [r3, #28]
ARM GAS /tmp/cc5G5cqz.s page 321
6017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set acknowledge error code */
6019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
12138 .loc 1 6019 9
12139 007c 7B68 ldr r3, [r7, #4]
12140 007e 5B6C ldr r3, [r3, #68]
12141 .loc 1 6019 21
12142 0080 43F00402 orr r2, r3, #4
12143 0084 7B68 ldr r3, [r7, #4]
12144 0086 5A64 str r2, [r3, #68]
12145 .L589:
6020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Fetch Last receive data if any */
6023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET))
12146 .loc 1 6023 12
12147 0088 7B68 ldr r3, [r7, #4]
12148 008a 93F84130 ldrb r3, [r3, #65]
12149 008e DBB2 uxtb r3, r3
12150 .loc 1 6023 6
12151 0090 602B cmp r3, #96
12152 0092 0BD1 bne .L590
12153 .loc 1 6023 48 discriminator 1
12154 0094 7B69 ldr r3, [r7, #20]
12155 0096 9B08 lsrs r3, r3, #2
12156 0098 03F00103 and r3, r3, #1
12157 .loc 1 6023 44 discriminator 1
12158 009c 002B cmp r3, #0
12159 009e 05D0 beq .L590
6024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
6026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpreg = (uint8_t)hi2c->Instance->RXDR;
12160 .loc 1 6026 27
12161 00a0 7B68 ldr r3, [r7, #4]
12162 00a2 1B68 ldr r3, [r3]
12163 .loc 1 6026 37
12164 00a4 5B6A ldr r3, [r3, #36]
12165 .loc 1 6026 14
12166 00a6 DBB2 uxtb r3, r3
12167 .loc 1 6026 12
12168 00a8 FB60 str r3, [r7, #12]
6027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** UNUSED(tmpreg);
12169 .loc 1 6027 5
12170 00aa FB68 ldr r3, [r7, #12]
12171 .L590:
6028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
6031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
12172 .loc 1 6031 3
12173 00ac 7868 ldr r0, [r7, #4]
12174 00ae FFF7FEFF bl I2C_Flush_TXDR
6032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */
6034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmperror = hi2c->ErrorCode;
12175 .loc 1 6034 12
12176 00b2 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 322
12177 00b4 5B6C ldr r3, [r3, #68]
12178 00b6 3B61 str r3, [r7, #16]
6035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE))
12179 .loc 1 6037 12
12180 00b8 7B68 ldr r3, [r7, #4]
12181 00ba 93F84130 ldrb r3, [r3, #65]
12182 00be DBB2 uxtb r3, r3
12183 .loc 1 6037 6
12184 00c0 602B cmp r3, #96
12185 00c2 02D0 beq .L591
12186 .loc 1 6037 44 discriminator 1
12187 00c4 3B69 ldr r3, [r7, #16]
12188 00c6 002B cmp r3, #0
12189 00c8 06D0 beq .L592
12190 .L591:
6038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode);
12191 .loc 1 6040 27
12192 00ca 7B68 ldr r3, [r7, #4]
12193 00cc 5B6C ldr r3, [r3, #68]
12194 .loc 1 6040 5
12195 00ce 1946 mov r1, r3
12196 00d0 7868 ldr r0, [r7, #4]
12197 00d2 FFF7FEFF bl I2C_ITError
6041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_TX */
6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX)
6044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM)
6049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemTxCpltCallback(hi2c);
6058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemTxCpltCallback(hi2c);
6060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
ARM GAS /tmp/cc5G5cqz.s page 323
6071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c);
6072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c);
6074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */
6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
6079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM)
6084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MemRxCpltCallback(hi2c);
6093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MemRxCpltCallback(hi2c);
6095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
6100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c);
6107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c);
6109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
6115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
12198 .loc 1 6116 1
12199 00d6 54E0 b .L597
12200 .L592:
6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12201 .loc 1 6043 16
12202 00d8 7B68 ldr r3, [r7, #4]
12203 00da 93F84130 ldrb r3, [r3, #65]
12204 00de DBB2 uxtb r3, r3
6043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12205 .loc 1 6043 11
12206 00e0 212B cmp r3, #33
ARM GAS /tmp/cc5G5cqz.s page 324
12207 00e2 24D1 bne .L594
6045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12208 .loc 1 6045 17
12209 00e4 7B68 ldr r3, [r7, #4]
12210 00e6 2022 movs r2, #32
12211 00e8 83F84120 strb r2, [r3, #65]
6046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12212 .loc 1 6046 25
12213 00ec 7B68 ldr r3, [r7, #4]
12214 00ee 0022 movs r2, #0
12215 00f0 1A63 str r2, [r3, #48]
6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12216 .loc 1 6048 13
12217 00f2 7B68 ldr r3, [r7, #4]
12218 00f4 93F84230 ldrb r3, [r3, #66]
12219 00f8 DBB2 uxtb r3, r3
6048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12220 .loc 1 6048 8
12221 00fa 402B cmp r3, #64
12222 00fc 0BD1 bne .L595
6050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12223 .loc 1 6050 18
12224 00fe 7B68 ldr r3, [r7, #4]
12225 0100 0022 movs r2, #0
12226 0102 83F84220 strb r2, [r3, #66]
6053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12227 .loc 1 6053 7
12228 0106 7B68 ldr r3, [r7, #4]
12229 0108 0022 movs r2, #0
12230 010a 83F84020 strb r2, [r3, #64]
6059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12231 .loc 1 6059 7
12232 010e 7868 ldr r0, [r7, #4]
12233 0110 FFF7FEFF bl HAL_I2C_MemTxCpltCallback
12234 .loc 1 6116 1
12235 0114 35E0 b .L597
12236 .L595:
6064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12237 .loc 1 6064 18
12238 0116 7B68 ldr r3, [r7, #4]
12239 0118 0022 movs r2, #0
12240 011a 83F84220 strb r2, [r3, #66]
6067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12241 .loc 1 6067 7
12242 011e 7B68 ldr r3, [r7, #4]
12243 0120 0022 movs r2, #0
12244 0122 83F84020 strb r2, [r3, #64]
6073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12245 .loc 1 6073 7
12246 0126 7868 ldr r0, [r7, #4]
12247 0128 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback
12248 .loc 1 6116 1
12249 012c 29E0 b .L597
12250 .L594:
6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12251 .loc 1 6078 16
12252 012e 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 325
12253 0130 93F84130 ldrb r3, [r3, #65]
12254 0134 DBB2 uxtb r3, r3
6078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12255 .loc 1 6078 11
12256 0136 222B cmp r3, #34
12257 0138 23D1 bne .L597
6080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12258 .loc 1 6080 17
12259 013a 7B68 ldr r3, [r7, #4]
12260 013c 2022 movs r2, #32
12261 013e 83F84120 strb r2, [r3, #65]
6081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12262 .loc 1 6081 25
12263 0142 7B68 ldr r3, [r7, #4]
12264 0144 0022 movs r2, #0
12265 0146 1A63 str r2, [r3, #48]
6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12266 .loc 1 6083 13
12267 0148 7B68 ldr r3, [r7, #4]
12268 014a 93F84230 ldrb r3, [r3, #66]
12269 014e DBB2 uxtb r3, r3
6083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12270 .loc 1 6083 8
12271 0150 402B cmp r3, #64
12272 0152 0BD1 bne .L596
6085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12273 .loc 1 6085 18
12274 0154 7B68 ldr r3, [r7, #4]
12275 0156 0022 movs r2, #0
12276 0158 83F84220 strb r2, [r3, #66]
6088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12277 .loc 1 6088 7
12278 015c 7B68 ldr r3, [r7, #4]
12279 015e 0022 movs r2, #0
12280 0160 83F84020 strb r2, [r3, #64]
6094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12281 .loc 1 6094 7
12282 0164 7868 ldr r0, [r7, #4]
12283 0166 FFF7FEFF bl HAL_I2C_MemRxCpltCallback
12284 .loc 1 6116 1
12285 016a 0AE0 b .L597
12286 .L596:
6099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12287 .loc 1 6099 18
12288 016c 7B68 ldr r3, [r7, #4]
12289 016e 0022 movs r2, #0
12290 0170 83F84220 strb r2, [r3, #66]
6102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12291 .loc 1 6102 7
12292 0174 7B68 ldr r3, [r7, #4]
12293 0176 0022 movs r2, #0
12294 0178 83F84020 strb r2, [r3, #64]
6108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12295 .loc 1 6108 7
12296 017c 7868 ldr r0, [r7, #4]
12297 017e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback
12298 .L597:
ARM GAS /tmp/cc5G5cqz.s page 326
12299 .loc 1 6116 1
12300 0182 00BF nop
12301 0184 1837 adds r7, r7, #24
12302 .cfi_def_cfa_offset 8
12303 0186 BD46 mov sp, r7
12304 .cfi_def_cfa_register 13
12305 @ sp needed
12306 0188 80BD pop {r7, pc}
12307 .L599:
12308 018a 00BF .align 2
12309 .L598:
12310 018c 00E800FE .word -33495040
12311 0190 0000FFFF .word -65536
12312 .cfi_endproc
12313 .LFE190:
12315 .section .text.I2C_ITSlaveCplt,"ax",%progbits
12316 .align 1
12317 .syntax unified
12318 .thumb
12319 .thumb_func
12321 I2C_ITSlaveCplt:
12322 .LFB191:
6117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Slave complete process.
6120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
6121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
6122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)
6125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12323 .loc 1 6125 1
12324 .cfi_startproc
12325 @ args = 0, pretend = 0, frame = 24
12326 @ frame_needed = 1, uses_anonymous_args = 0
12327 0000 80B5 push {r7, lr}
12328 .cfi_def_cfa_offset 8
12329 .cfi_offset 7, -8
12330 .cfi_offset 14, -4
12331 0002 86B0 sub sp, sp, #24
12332 .cfi_def_cfa_offset 32
12333 0004 00AF add r7, sp, #0
12334 .cfi_def_cfa_register 7
12335 0006 7860 str r0, [r7, #4]
12336 0008 3960 str r1, [r7]
6126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1);
12337 .loc 1 6126 26
12338 000a 7B68 ldr r3, [r7, #4]
12339 000c 1B68 ldr r3, [r3]
12340 .loc 1 6126 12
12341 000e 1B68 ldr r3, [r3]
12342 0010 3B61 str r3, [r7, #16]
6127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags;
12343 .loc 1 6127 12
12344 0012 3B68 ldr r3, [r7]
12345 0014 7B61 str r3, [r7, #20]
6128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State;
ARM GAS /tmp/cc5G5cqz.s page 327
12346 .loc 1 6128 24
12347 0016 7B68 ldr r3, [r7, #4]
12348 0018 93F84130 ldrb r3, [r3, #65]
12349 001c FB73 strb r3, [r7, #15]
6129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
6131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
12350 .loc 1 6131 3
12351 001e 7B68 ldr r3, [r7, #4]
12352 0020 1B68 ldr r3, [r3]
12353 0022 2022 movs r2, #32
12354 0024 DA61 str r2, [r3, #28]
6132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */
6134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN))
12355 .loc 1 6134 6
12356 0026 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12357 0028 212B cmp r3, #33
12358 002a 02D0 beq .L601
12359 .loc 1 6134 43 discriminator 1
12360 002c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12361 002e 292B cmp r3, #41
12362 0030 08D1 bne .L602
12363 .L601:
6135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT);
12364 .loc 1 6136 5
12365 0032 48F20101 movw r1, #32769
12366 0036 7868 ldr r0, [r7, #4]
12367 0038 FFF7FEFF bl I2C_Disable_IRQ
6137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX;
12368 .loc 1 6137 25
12369 003c 7B68 ldr r3, [r7, #4]
12370 003e 2122 movs r2, #33
12371 0040 1A63 str r2, [r3, #48]
12372 0042 0DE0 b .L603
12373 .L602:
6138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))
12374 .loc 1 6139 11
12375 0044 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12376 0046 222B cmp r3, #34
12377 0048 02D0 beq .L604
12378 .loc 1 6139 48 discriminator 1
12379 004a FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12380 004c 2A2B cmp r3, #42
12381 004e 07D1 bne .L603
12382 .L604:
6140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT);
12383 .loc 1 6141 5
12384 0050 48F20201 movw r1, #32770
12385 0054 7868 ldr r0, [r7, #4]
12386 0056 FFF7FEFF bl I2C_Disable_IRQ
6142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX;
12387 .loc 1 6142 25
12388 005a 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 328
12389 005c 2222 movs r2, #34
12390 005e 1A63 str r2, [r3, #48]
12391 .L603:
6143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
6147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Address Acknowledge */
6150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
12392 .loc 1 6150 7
12393 0060 7B68 ldr r3, [r7, #4]
12394 0062 1B68 ldr r3, [r3]
12395 .loc 1 6150 17
12396 0064 5A68 ldr r2, [r3, #4]
12397 .loc 1 6150 7
12398 0066 7B68 ldr r3, [r7, #4]
12399 0068 1B68 ldr r3, [r3]
12400 .loc 1 6150 23
12401 006a 42F40042 orr r2, r2, #32768
12402 006e 5A60 str r2, [r3, #4]
6151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
6153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
12403 .loc 1 6153 3
12404 0070 7B68 ldr r3, [r7, #4]
12405 0072 1B68 ldr r3, [r3]
12406 0074 5968 ldr r1, [r3, #4]
12407 0076 7B68 ldr r3, [r7, #4]
12408 0078 1A68 ldr r2, [r3]
12409 007a 644B ldr r3, .L614
12410 007c 0B40 ands r3, r3, r1
12411 007e 5360 str r3, [r2, #4]
6154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
6156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
12412 .loc 1 6156 3
12413 0080 7868 ldr r0, [r7, #4]
12414 0082 FFF7FEFF bl I2C_Flush_TXDR
6157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */
6159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET)
12415 .loc 1 6159 7
12416 0086 3B69 ldr r3, [r7, #16]
12417 0088 9B0B lsrs r3, r3, #14
12418 008a 03F00103 and r3, r3, #1
12419 .loc 1 6159 6
12420 008e 002B cmp r3, #0
12421 0090 13D0 beq .L605
6160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
6162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
12422 .loc 1 6162 9
12423 0092 7B68 ldr r3, [r7, #4]
12424 0094 1B68 ldr r3, [r3]
12425 .loc 1 6162 19
ARM GAS /tmp/cc5G5cqz.s page 329
12426 0096 1A68 ldr r2, [r3]
12427 .loc 1 6162 9
12428 0098 7B68 ldr r3, [r7, #4]
12429 009a 1B68 ldr r3, [r3]
12430 .loc 1 6162 25
12431 009c 22F48042 bic r2, r2, #16384
12432 00a0 1A60 str r2, [r3]
6163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
12433 .loc 1 6164 13
12434 00a2 7B68 ldr r3, [r7, #4]
12435 00a4 9B6B ldr r3, [r3, #56]
12436 .loc 1 6164 8
12437 00a6 002B cmp r3, #0
12438 00a8 20D0 beq .L606
6165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx);
12439 .loc 1 6166 35
12440 00aa 7B68 ldr r3, [r7, #4]
12441 00ac 9B6B ldr r3, [r3, #56]
12442 00ae 1B68 ldr r3, [r3]
12443 00b0 5B68 ldr r3, [r3, #4]
12444 .loc 1 6166 25
12445 00b2 9AB2 uxth r2, r3
12446 .loc 1 6166 23
12447 00b4 7B68 ldr r3, [r7, #4]
12448 00b6 5A85 strh r2, [r3, #42] @ movhi
12449 00b8 18E0 b .L606
12450 .L605:
6167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)
12451 .loc 1 6169 12
12452 00ba 3B69 ldr r3, [r7, #16]
12453 00bc DB0B lsrs r3, r3, #15
12454 00be 03F00103 and r3, r3, #1
12455 .loc 1 6169 11
12456 00c2 002B cmp r3, #0
12457 00c4 12D0 beq .L606
6170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
6172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
12458 .loc 1 6172 9
12459 00c6 7B68 ldr r3, [r7, #4]
12460 00c8 1B68 ldr r3, [r3]
12461 .loc 1 6172 19
12462 00ca 1A68 ldr r2, [r3]
12463 .loc 1 6172 9
12464 00cc 7B68 ldr r3, [r7, #4]
12465 00ce 1B68 ldr r3, [r3]
12466 .loc 1 6172 25
12467 00d0 22F40042 bic r2, r2, #32768
12468 00d4 1A60 str r2, [r3]
6173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
12469 .loc 1 6174 13
12470 00d6 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 330
12471 00d8 DB6B ldr r3, [r3, #60]
12472 .loc 1 6174 8
12473 00da 002B cmp r3, #0
12474 00dc 06D0 beq .L606
6175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx);
12475 .loc 1 6176 35
12476 00de 7B68 ldr r3, [r7, #4]
12477 00e0 DB6B ldr r3, [r3, #60]
12478 00e2 1B68 ldr r3, [r3]
12479 00e4 5B68 ldr r3, [r3, #4]
12480 .loc 1 6176 25
12481 00e6 9AB2 uxth r2, r3
12482 .loc 1 6176 23
12483 00e8 7B68 ldr r3, [r7, #4]
12484 00ea 5A85 strh r2, [r3, #42] @ movhi
12485 .L606:
6177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Do nothing */
6182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */
6185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)
12486 .loc 1 6185 7
12487 00ec 7B69 ldr r3, [r7, #20]
12488 00ee 9B08 lsrs r3, r3, #2
12489 00f0 03F00103 and r3, r3, #1
12490 .loc 1 6185 6
12491 00f4 002B cmp r3, #0
12492 00f6 20D0 beq .L607
6186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */
6188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE;
12493 .loc 1 6188 16
12494 00f8 7B69 ldr r3, [r7, #20]
12495 00fa 23F00403 bic r3, r3, #4
12496 00fe 7B61 str r3, [r7, #20]
6189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
6191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
12497 .loc 1 6191 36
12498 0100 7B68 ldr r3, [r7, #4]
12499 0102 1B68 ldr r3, [r3]
12500 .loc 1 6191 46
12501 0104 5A6A ldr r2, [r3, #36]
12502 .loc 1 6191 10
12503 0106 7B68 ldr r3, [r7, #4]
12504 0108 5B6A ldr r3, [r3, #36]
12505 .loc 1 6191 23
12506 010a D2B2 uxtb r2, r2
12507 .loc 1 6191 21
12508 010c 1A70 strb r2, [r3]
6192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
ARM GAS /tmp/cc5G5cqz.s page 331
6194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
12509 .loc 1 6194 9
12510 010e 7B68 ldr r3, [r7, #4]
12511 0110 5B6A ldr r3, [r3, #36]
12512 .loc 1 6194 19
12513 0112 5A1C adds r2, r3, #1
12514 0114 7B68 ldr r3, [r7, #4]
12515 0116 5A62 str r2, [r3, #36]
6195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U))
12516 .loc 1 6196 14
12517 0118 7B68 ldr r3, [r7, #4]
12518 011a 1B8D ldrh r3, [r3, #40]
12519 .loc 1 6196 8
12520 011c 002B cmp r3, #0
12521 011e 0CD0 beq .L607
6197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
12522 .loc 1 6198 11
12523 0120 7B68 ldr r3, [r7, #4]
12524 0122 1B8D ldrh r3, [r3, #40]
12525 .loc 1 6198 21
12526 0124 013B subs r3, r3, #1
12527 0126 9AB2 uxth r2, r3
12528 0128 7B68 ldr r3, [r7, #4]
12529 012a 1A85 strh r2, [r3, #40] @ movhi
6199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
12530 .loc 1 6199 11
12531 012c 7B68 ldr r3, [r7, #4]
12532 012e 5B8D ldrh r3, [r3, #42] @ movhi
12533 0130 9BB2 uxth r3, r3
12534 .loc 1 6199 22
12535 0132 013B subs r3, r3, #1
12536 0134 9AB2 uxth r2, r3
12537 0136 7B68 ldr r3, [r7, #4]
12538 0138 5A85 strh r2, [r3, #42] @ movhi
12539 .L607:
6200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* All data are not transferred, so set error code accordingly */
6204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount != 0U)
12540 .loc 1 6204 11
12541 013a 7B68 ldr r3, [r7, #4]
12542 013c 5B8D ldrh r3, [r3, #42] @ movhi
12543 013e 9BB2 uxth r3, r3
12544 .loc 1 6204 6
12545 0140 002B cmp r3, #0
12546 0142 05D0 beq .L608
6205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */
6207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
12547 .loc 1 6207 9
12548 0144 7B68 ldr r3, [r7, #4]
12549 0146 5B6C ldr r3, [r3, #68]
12550 .loc 1 6207 21
12551 0148 43F00402 orr r2, r3, #4
ARM GAS /tmp/cc5G5cqz.s page 332
12552 014c 7B68 ldr r3, [r7, #4]
12553 014e 5A64 str r2, [r3, #68]
12554 .L608:
6208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
12555 .loc 1 6210 14
12556 0150 7B68 ldr r3, [r7, #4]
12557 0152 0022 movs r2, #0
12558 0154 83F84220 strb r2, [r3, #66]
6211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
12559 .loc 1 6211 17
12560 0158 7B68 ldr r3, [r7, #4]
12561 015a 0022 movs r2, #0
12562 015c 5A63 str r2, [r3, #52]
6212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE)
12563 .loc 1 6213 11
12564 015e 7B68 ldr r3, [r7, #4]
12565 0160 5B6C ldr r3, [r3, #68]
12566 .loc 1 6213 6
12567 0162 002B cmp r3, #0
12568 0164 10D0 beq .L609
6214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode);
12569 .loc 1 6216 27
12570 0166 7B68 ldr r3, [r7, #4]
12571 0168 5B6C ldr r3, [r3, #68]
12572 .loc 1 6216 5
12573 016a 1946 mov r1, r3
12574 016c 7868 ldr r0, [r7, #4]
12575 016e FFF7FEFF bl I2C_ITError
6217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */
6219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN)
12576 .loc 1 6219 13
12577 0172 7B68 ldr r3, [r7, #4]
12578 0174 93F84130 ldrb r3, [r3, #65]
12579 0178 DBB2 uxtb r3, r3
12580 .loc 1 6219 8
12581 017a 282B cmp r3, #40
12582 017c 41D1 bne .L613
6220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Listen complete process */
6222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags);
12583 .loc 1 6222 7
12584 017e 7969 ldr r1, [r7, #20]
12585 0180 7868 ldr r0, [r7, #4]
12586 0182 FFF7FEFF bl I2C_ITListenCplt
6223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)
6226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */
6228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
6229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 333
6230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
6231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */
6238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c);
6240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c);
6242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
6246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c);
6256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c);
6258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
6263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c);
6271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c);
6273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
12587 .loc 1 6275 1
12588 0186 3CE0 b .L613
12589 .L609:
6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12590 .loc 1 6225 16
12591 0188 7B68 ldr r3, [r7, #4]
12592 018a DB6A ldr r3, [r3, #44]
6225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12593 .loc 1 6225 11
12594 018c 13F5803F cmn r3, #65536
12595 0190 14D0 beq .L611
ARM GAS /tmp/cc5G5cqz.s page 334
6228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12596 .loc 1 6228 5
12597 0192 7868 ldr r0, [r7, #4]
12598 0194 FFF7FEFF bl I2C_ITSlaveSeqCplt
6230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
12599 .loc 1 6230 23
12600 0198 7B68 ldr r3, [r7, #4]
12601 019a 1D4A ldr r2, .L614+4
12602 019c DA62 str r2, [r3, #44]
6231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12603 .loc 1 6231 17
12604 019e 7B68 ldr r3, [r7, #4]
12605 01a0 2022 movs r2, #32
12606 01a2 83F84120 strb r2, [r3, #65]
6232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12607 .loc 1 6232 25
12608 01a6 7B68 ldr r3, [r7, #4]
12609 01a8 0022 movs r2, #0
12610 01aa 1A63 str r2, [r3, #48]
6235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12611 .loc 1 6235 5
12612 01ac 7B68 ldr r3, [r7, #4]
12613 01ae 0022 movs r2, #0
12614 01b0 83F84020 strb r2, [r3, #64]
6241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12615 .loc 1 6241 5
12616 01b4 7868 ldr r0, [r7, #4]
12617 01b6 FFF7FEFF bl HAL_I2C_ListenCpltCallback
12618 .loc 1 6275 1
12619 01ba 22E0 b .L613
12620 .L611:
6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12621 .loc 1 6245 16
12622 01bc 7B68 ldr r3, [r7, #4]
12623 01be 93F84130 ldrb r3, [r3, #65]
12624 01c2 DBB2 uxtb r3, r3
6245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12625 .loc 1 6245 11
12626 01c4 222B cmp r3, #34
12627 01c6 0ED1 bne .L612
6247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12628 .loc 1 6247 17
12629 01c8 7B68 ldr r3, [r7, #4]
12630 01ca 2022 movs r2, #32
12631 01cc 83F84120 strb r2, [r3, #65]
6248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12632 .loc 1 6248 25
12633 01d0 7B68 ldr r3, [r7, #4]
12634 01d2 0022 movs r2, #0
12635 01d4 1A63 str r2, [r3, #48]
6251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12636 .loc 1 6251 5
12637 01d6 7B68 ldr r3, [r7, #4]
12638 01d8 0022 movs r2, #0
12639 01da 83F84020 strb r2, [r3, #64]
6257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12640 .loc 1 6257 5
ARM GAS /tmp/cc5G5cqz.s page 335
12641 01de 7868 ldr r0, [r7, #4]
12642 01e0 FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback
12643 .loc 1 6275 1
12644 01e4 0DE0 b .L613
12645 .L612:
6262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12646 .loc 1 6262 17
12647 01e6 7B68 ldr r3, [r7, #4]
12648 01e8 2022 movs r2, #32
12649 01ea 83F84120 strb r2, [r3, #65]
6263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12650 .loc 1 6263 25
12651 01ee 7B68 ldr r3, [r7, #4]
12652 01f0 0022 movs r2, #0
12653 01f2 1A63 str r2, [r3, #48]
6266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
12654 .loc 1 6266 5
12655 01f4 7B68 ldr r3, [r7, #4]
12656 01f6 0022 movs r2, #0
12657 01f8 83F84020 strb r2, [r3, #64]
6272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
12658 .loc 1 6272 5
12659 01fc 7868 ldr r0, [r7, #4]
12660 01fe FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback
12661 .L613:
12662 .loc 1 6275 1
12663 0202 00BF nop
12664 0204 1837 adds r7, r7, #24
12665 .cfi_def_cfa_offset 8
12666 0206 BD46 mov sp, r7
12667 .cfi_def_cfa_register 13
12668 @ sp needed
12669 0208 80BD pop {r7, pc}
12670 .L615:
12671 020a 00BF .align 2
12672 .L614:
12673 020c 00E800FE .word -33495040
12674 0210 0000FFFF .word -65536
12675 .cfi_endproc
12676 .LFE191:
12678 .section .text.I2C_ITListenCplt,"ax",%progbits
12679 .align 1
12680 .syntax unified
12681 .thumb
12682 .thumb_func
12684 I2C_ITListenCplt:
12685 .LFB192:
6276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Listen complete process.
6279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
6280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle.
6281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags)
6284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12686 .loc 1 6284 1
ARM GAS /tmp/cc5G5cqz.s page 336
12687 .cfi_startproc
12688 @ args = 0, pretend = 0, frame = 8
12689 @ frame_needed = 1, uses_anonymous_args = 0
12690 0000 80B5 push {r7, lr}
12691 .cfi_def_cfa_offset 8
12692 .cfi_offset 7, -8
12693 .cfi_offset 14, -4
12694 0002 82B0 sub sp, sp, #8
12695 .cfi_def_cfa_offset 16
12696 0004 00AF add r7, sp, #0
12697 .cfi_def_cfa_register 7
12698 0006 7860 str r0, [r7, #4]
12699 0008 3960 str r1, [r7]
6285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */
6286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
12700 .loc 1 6286 21
12701 000a 7B68 ldr r3, [r7, #4]
12702 000c 264A ldr r2, .L618
12703 000e DA62 str r2, [r3, #44]
6287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
12704 .loc 1 6287 23
12705 0010 7B68 ldr r3, [r7, #4]
12706 0012 0022 movs r2, #0
12707 0014 1A63 str r2, [r3, #48]
6288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
12708 .loc 1 6288 15
12709 0016 7B68 ldr r3, [r7, #4]
12710 0018 2022 movs r2, #32
12711 001a 83F84120 strb r2, [r3, #65]
6289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
12712 .loc 1 6289 14
12713 001e 7B68 ldr r3, [r7, #4]
12714 0020 0022 movs r2, #0
12715 0022 83F84220 strb r2, [r3, #66]
6290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
12716 .loc 1 6290 17
12717 0026 7B68 ldr r3, [r7, #4]
12718 0028 0022 movs r2, #0
12719 002a 5A63 str r2, [r3, #52]
6291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */
6293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET)
12720 .loc 1 6293 7
12721 002c 3B68 ldr r3, [r7]
12722 002e 9B08 lsrs r3, r3, #2
12723 0030 03F00103 and r3, r3, #1
12724 .loc 1 6293 6
12725 0034 002B cmp r3, #0
12726 0036 22D0 beq .L617
6294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Read data from RXDR */
6296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
12727 .loc 1 6296 36
12728 0038 7B68 ldr r3, [r7, #4]
12729 003a 1B68 ldr r3, [r3]
12730 .loc 1 6296 46
12731 003c 5A6A ldr r2, [r3, #36]
ARM GAS /tmp/cc5G5cqz.s page 337
12732 .loc 1 6296 10
12733 003e 7B68 ldr r3, [r7, #4]
12734 0040 5B6A ldr r3, [r3, #36]
12735 .loc 1 6296 23
12736 0042 D2B2 uxtb r2, r2
12737 .loc 1 6296 21
12738 0044 1A70 strb r2, [r3]
6297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Increment Buffer pointer */
6299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr++;
12739 .loc 1 6299 9
12740 0046 7B68 ldr r3, [r7, #4]
12741 0048 5B6A ldr r3, [r3, #36]
12742 .loc 1 6299 19
12743 004a 5A1C adds r2, r3, #1
12744 004c 7B68 ldr r3, [r7, #4]
12745 004e 5A62 str r2, [r3, #36]
6300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferSize > 0U))
12746 .loc 1 6301 14
12747 0050 7B68 ldr r3, [r7, #4]
12748 0052 1B8D ldrh r3, [r3, #40]
12749 .loc 1 6301 8
12750 0054 002B cmp r3, #0
12751 0056 12D0 beq .L617
6302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize--;
12752 .loc 1 6303 11
12753 0058 7B68 ldr r3, [r7, #4]
12754 005a 1B8D ldrh r3, [r3, #40]
12755 .loc 1 6303 21
12756 005c 013B subs r3, r3, #1
12757 005e 9AB2 uxth r2, r3
12758 0060 7B68 ldr r3, [r7, #4]
12759 0062 1A85 strh r2, [r3, #40] @ movhi
6304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount--;
12760 .loc 1 6304 11
12761 0064 7B68 ldr r3, [r7, #4]
12762 0066 5B8D ldrh r3, [r3, #42] @ movhi
12763 0068 9BB2 uxth r3, r3
12764 .loc 1 6304 22
12765 006a 013B subs r3, r3, #1
12766 006c 9AB2 uxth r2, r3
12767 006e 7B68 ldr r3, [r7, #4]
12768 0070 5A85 strh r2, [r3, #42] @ movhi
6305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */
6307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
12769 .loc 1 6307 11
12770 0072 7B68 ldr r3, [r7, #4]
12771 0074 5B6C ldr r3, [r3, #68]
12772 .loc 1 6307 23
12773 0076 43F00402 orr r2, r3, #4
12774 007a 7B68 ldr r3, [r7, #4]
12775 007c 5A64 str r2, [r3, #68]
12776 .L617:
6308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 338
6309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all Interrupts*/
6312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
12777 .loc 1 6312 3
12778 007e 48F20301 movw r1, #32771
12779 0082 7868 ldr r0, [r7, #4]
12780 0084 FFF7FEFF bl I2C_Disable_IRQ
6313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACK Flag */
6315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
12781 .loc 1 6315 3
12782 0088 7B68 ldr r3, [r7, #4]
12783 008a 1B68 ldr r3, [r3]
12784 008c 1022 movs r2, #16
12785 008e DA61 str r2, [r3, #28]
6316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
12786 .loc 1 6318 3
12787 0090 7B68 ldr r3, [r7, #4]
12788 0092 0022 movs r2, #0
12789 0094 83F84020 strb r2, [r3, #64]
6319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */
6321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c);
6323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c);
12790 .loc 1 6324 3
12791 0098 7868 ldr r0, [r7, #4]
12792 009a FFF7FEFF bl HAL_I2C_ListenCpltCallback
6325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
12793 .loc 1 6326 1
12794 009e 00BF nop
12795 00a0 0837 adds r7, r7, #8
12796 .cfi_def_cfa_offset 8
12797 00a2 BD46 mov sp, r7
12798 .cfi_def_cfa_register 13
12799 @ sp needed
12800 00a4 80BD pop {r7, pc}
12801 .L619:
12802 00a6 00BF .align 2
12803 .L618:
12804 00a8 0000FFFF .word -65536
12805 .cfi_endproc
12806 .LFE192:
12808 .section .text.I2C_ITError,"ax",%progbits
12809 .align 1
12810 .syntax unified
12811 .thumb
12812 .thumb_func
12814 I2C_ITError:
12815 .LFB193:
6327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
ARM GAS /tmp/cc5G5cqz.s page 339
6329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C interrupts error process.
6330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
6331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param ErrorCode Error code to handle.
6332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode)
6335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
12816 .loc 1 6335 1
12817 .cfi_startproc
12818 @ args = 0, pretend = 0, frame = 16
12819 @ frame_needed = 1, uses_anonymous_args = 0
12820 0000 80B5 push {r7, lr}
12821 .cfi_def_cfa_offset 8
12822 .cfi_offset 7, -8
12823 .cfi_offset 14, -4
12824 0002 84B0 sub sp, sp, #16
12825 .cfi_def_cfa_offset 24
12826 0004 00AF add r7, sp, #0
12827 .cfi_def_cfa_register 7
12828 0006 7860 str r0, [r7, #4]
12829 0008 3960 str r1, [r7]
6336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State;
12830 .loc 1 6336 24
12831 000a 7B68 ldr r3, [r7, #4]
12832 000c 93F84130 ldrb r3, [r3, #65]
12833 0010 FB73 strb r3, [r7, #15]
6337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmppreviousstate;
6339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset handle parameters */
6341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
12834 .loc 1 6341 23
12835 0012 7B68 ldr r3, [r7, #4]
12836 0014 0022 movs r2, #0
12837 0016 83F84220 strb r2, [r3, #66]
6342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME;
12838 .loc 1 6342 23
12839 001a 7B68 ldr r3, [r7, #4]
12840 001c 6D4A ldr r2, .L640
12841 001e DA62 str r2, [r3, #44]
6343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferCount = 0U;
12842 .loc 1 6343 23
12843 0020 7B68 ldr r3, [r7, #4]
12844 0022 0022 movs r2, #0
12845 0024 5A85 strh r2, [r3, #42] @ movhi
6344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set new error code */
6346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= ErrorCode;
12846 .loc 1 6346 7
12847 0026 7B68 ldr r3, [r7, #4]
12848 0028 5A6C ldr r2, [r3, #68]
12849 .loc 1 6346 19
12850 002a 3B68 ldr r3, [r7]
12851 002c 1A43 orrs r2, r2, r3
12852 002e 7B68 ldr r3, [r7, #4]
12853 0030 5A64 str r2, [r3, #68]
6347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 340
6348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Interrupts */
6349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_LISTEN) ||
12854 .loc 1 6349 6
12855 0032 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12856 0034 282B cmp r3, #40
12857 0036 05D0 beq .L621
12858 .loc 1 6349 50 discriminator 1
12859 0038 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12860 003a 292B cmp r3, #41
12861 003c 02D0 beq .L621
6350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) ||
12862 .loc 1 6350 50
12863 003e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
12864 0040 2A2B cmp r3, #42
12865 0042 0BD1 bne .L622
12866 .L621:
6351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN))
6352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts, except interrupts related to LISTEN state */
6354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT);
12867 .loc 1 6354 5
12868 0044 0321 movs r1, #3
12869 0046 7868 ldr r0, [r7, #4]
12870 0048 FFF7FEFF bl I2C_Disable_IRQ
6355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* keep HAL_I2C_STATE_LISTEN if set */
6357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN;
12871 .loc 1 6357 25
12872 004c 7B68 ldr r3, [r7, #4]
12873 004e 2822 movs r2, #40
12874 0050 83F84120 strb r2, [r3, #65]
6358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT;
12875 .loc 1 6358 25
12876 0054 7B68 ldr r3, [r7, #4]
12877 0056 604A ldr r2, .L640+4
12878 0058 5A63 str r2, [r3, #52]
12879 005a 30E0 b .L623
12880 .L622:
6359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable all interrupts */
6363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT);
12881 .loc 1 6363 5
12882 005c 48F20301 movw r1, #32771
12883 0060 7868 ldr r0, [r7, #4]
12884 0062 FFF7FEFF bl I2C_Disable_IRQ
6364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
6366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
12885 .loc 1 6366 5
12886 0066 7868 ldr r0, [r7, #4]
12887 0068 FFF7FEFF bl I2C_Flush_TXDR
6367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If state is an abort treatment on going, don't change state */
6369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* This change will be do later */
6370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State != HAL_I2C_STATE_ABORT)
ARM GAS /tmp/cc5G5cqz.s page 341
12888 .loc 1 6370 13
12889 006c 7B68 ldr r3, [r7, #4]
12890 006e 93F84130 ldrb r3, [r3, #65]
12891 0072 DBB2 uxtb r3, r3
12892 .loc 1 6370 8
12893 0074 602B cmp r3, #96
12894 0076 1FD0 beq .L624
6371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set HAL_I2C_STATE_READY */
6373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
12895 .loc 1 6373 27
12896 0078 7B68 ldr r3, [r7, #4]
12897 007a 2022 movs r2, #32
12898 007c 83F84120 strb r2, [r3, #65]
6374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a STOPF is detected */
6376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET)
12899 .loc 1 6376 11
12900 0080 7B68 ldr r3, [r7, #4]
12901 0082 1B68 ldr r3, [r3]
12902 0084 9B69 ldr r3, [r3, #24]
12903 0086 03F02003 and r3, r3, #32
12904 .loc 1 6376 10
12905 008a 202B cmp r3, #32
12906 008c 14D1 bne .L624
6377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)
12907 .loc 1 6378 13
12908 008e 7B68 ldr r3, [r7, #4]
12909 0090 1B68 ldr r3, [r3]
12910 0092 9B69 ldr r3, [r3, #24]
12911 0094 03F01003 and r3, r3, #16
12912 .loc 1 6378 12
12913 0098 102B cmp r3, #16
12914 009a 09D1 bne .L625
6379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
12915 .loc 1 6380 11
12916 009c 7B68 ldr r3, [r7, #4]
12917 009e 1B68 ldr r3, [r3]
12918 00a0 1022 movs r2, #16
12919 00a2 DA61 str r2, [r3, #28]
6381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
12920 .loc 1 6381 15
12921 00a4 7B68 ldr r3, [r7, #4]
12922 00a6 5B6C ldr r3, [r3, #68]
12923 .loc 1 6381 27
12924 00a8 43F00402 orr r2, r3, #4
12925 00ac 7B68 ldr r3, [r7, #4]
12926 00ae 5A64 str r2, [r3, #68]
12927 .L625:
6382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
6385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
12928 .loc 1 6385 9
12929 00b0 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc5G5cqz.s page 342
12930 00b2 1B68 ldr r3, [r3]
12931 00b4 2022 movs r2, #32
12932 00b6 DA61 str r2, [r3, #28]
12933 .L624:
6386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferISR = NULL;
12934 .loc 1 6389 25
12935 00b8 7B68 ldr r3, [r7, #4]
12936 00ba 0022 movs r2, #0
12937 00bc 5A63 str r2, [r3, #52]
12938 .L623:
6390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX transfer if any */
6393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmppreviousstate = hi2c->PreviousState;
12939 .loc 1 6393 20
12940 00be 7B68 ldr r3, [r7, #4]
12941 00c0 1B6B ldr r3, [r3, #48]
12942 00c2 BB60 str r3, [r7, #8]
6394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \
12943 .loc 1 6395 12
12944 00c4 7B68 ldr r3, [r7, #4]
12945 00c6 9B6B ldr r3, [r3, #56]
12946 .loc 1 6395 6
12947 00c8 002B cmp r3, #0
12948 00ca 39D0 beq .L626
12949 .loc 1 6395 30 discriminator 1
12950 00cc BB68 ldr r3, [r7, #8]
12951 00ce 112B cmp r3, #17
12952 00d0 02D0 beq .L627
12953 .loc 1 6395 81 discriminator 2
12954 00d2 BB68 ldr r3, [r7, #8]
12955 00d4 212B cmp r3, #33
12956 00d6 33D1 bne .L626
12957 .L627:
6396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX)))
6397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN)
12958 .loc 1 6398 14
12959 00d8 7B68 ldr r3, [r7, #4]
12960 00da 1B68 ldr r3, [r3]
12961 .loc 1 6398 24
12962 00dc 1B68 ldr r3, [r3]
12963 .loc 1 6398 30
12964 00de 03F48043 and r3, r3, #16384
12965 .loc 1 6398 8
12966 00e2 B3F5804F cmp r3, #16384
12967 00e6 07D1 bne .L628
6399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
12968 .loc 1 6400 11
12969 00e8 7B68 ldr r3, [r7, #4]
12970 00ea 1B68 ldr r3, [r3]
12971 .loc 1 6400 21
ARM GAS /tmp/cc5G5cqz.s page 343
12972 00ec 1A68 ldr r2, [r3]
12973 .loc 1 6400 11
12974 00ee 7B68 ldr r3, [r7, #4]
12975 00f0 1B68 ldr r3, [r3]
12976 .loc 1 6400 27
12977 00f2 22F48042 bic r2, r2, #16384
12978 00f6 1A60 str r2, [r3]
12979 .L628:
6401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY)
12980 .loc 1 6403 9
12981 00f8 7B68 ldr r3, [r7, #4]
12982 00fa 9B6B ldr r3, [r3, #56]
12983 00fc 1846 mov r0, r3
12984 00fe FFF7FEFF bl HAL_DMA_GetState
12985 0102 0346 mov r3, r0
12986 .loc 1 6403 8 discriminator 1
12987 0104 012B cmp r3, #1
12988 0106 17D0 beq .L629
6404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
6406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
6407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort;
12989 .loc 1 6407 11
12990 0108 7B68 ldr r3, [r7, #4]
12991 010a 9B6B ldr r3, [r3, #56]
12992 .loc 1 6407 39
12993 010c 334A ldr r2, .L640+8
12994 010e 5A63 str r2, [r3, #52]
6408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
12995 .loc 1 6410 7
12996 0110 7B68 ldr r3, [r7, #4]
12997 0112 0022 movs r2, #0
12998 0114 83F84020 strb r2, [r3, #64]
6411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA TX */
6413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK)
12999 .loc 1 6413 11
13000 0118 7B68 ldr r3, [r7, #4]
13001 011a 9B6B ldr r3, [r3, #56]
13002 011c 1846 mov r0, r3
13003 011e FFF7FEFF bl HAL_DMA_Abort_IT
13004 0122 0346 mov r3, r0
13005 .loc 1 6413 10 discriminator 1
13006 0124 002B cmp r3, #0
13007 0126 4DD0 beq .L637
6414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */
6416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx);
13008 .loc 1 6416 13
13009 0128 7B68 ldr r3, [r7, #4]
13010 012a 9B6B ldr r3, [r3, #56]
13011 .loc 1 6416 21
13012 012c 5B6B ldr r3, [r3, #52]
ARM GAS /tmp/cc5G5cqz.s page 344
13013 .loc 1 6416 45
13014 012e 7A68 ldr r2, [r7, #4]
13015 0130 926B ldr r2, [r2, #56]
13016 .loc 1 6416 9
13017 0132 1046 mov r0, r2
13018 0134 9847 blx r3
13019 .LVL7:
6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13020 .loc 1 6403 8
13021 0136 45E0 b .L637
13022 .L629:
6417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c);
13023 .loc 1 6421 7
13024 0138 7868 ldr r0, [r7, #4]
13025 013a FFF7FEFF bl I2C_TreatErrorCallback
6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13026 .loc 1 6403 8
13027 013e 41E0 b .L637
13028 .L626:
6422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX transfer if any */
6425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \
13029 .loc 1 6425 17
13030 0140 7B68 ldr r3, [r7, #4]
13031 0142 DB6B ldr r3, [r3, #60]
13032 .loc 1 6425 11
13033 0144 002B cmp r3, #0
13034 0146 39D0 beq .L632
13035 .loc 1 6425 35 discriminator 1
13036 0148 BB68 ldr r3, [r7, #8]
13037 014a 122B cmp r3, #18
13038 014c 02D0 beq .L633
13039 .loc 1 6425 86 discriminator 2
13040 014e BB68 ldr r3, [r7, #8]
13041 0150 222B cmp r3, #34
13042 0152 33D1 bne .L632
13043 .L633:
6426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX)))
6427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN)
13044 .loc 1 6428 14
13045 0154 7B68 ldr r3, [r7, #4]
13046 0156 1B68 ldr r3, [r3]
13047 .loc 1 6428 24
13048 0158 1B68 ldr r3, [r3]
13049 .loc 1 6428 30
13050 015a 03F40043 and r3, r3, #32768
13051 .loc 1 6428 8
13052 015e B3F5004F cmp r3, #32768
13053 0162 07D1 bne .L634
6429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
ARM GAS /tmp/cc5G5cqz.s page 345
13054 .loc 1 6430 11
13055 0164 7B68 ldr r3, [r7, #4]
13056 0166 1B68 ldr r3, [r3]
13057 .loc 1 6430 21
13058 0168 1A68 ldr r2, [r3]
13059 .loc 1 6430 11
13060 016a 7B68 ldr r3, [r7, #4]
13061 016c 1B68 ldr r3, [r3]
13062 .loc 1 6430 27
13063 016e 22F40042 bic r2, r2, #32768
13064 0172 1A60 str r2, [r3]
13065 .L634:
6431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY)
13066 .loc 1 6433 9
13067 0174 7B68 ldr r3, [r7, #4]
13068 0176 DB6B ldr r3, [r3, #60]
13069 0178 1846 mov r0, r3
13070 017a FFF7FEFF bl HAL_DMA_GetState
13071 017e 0346 mov r3, r0
13072 .loc 1 6433 8 discriminator 1
13073 0180 012B cmp r3, #1
13074 0182 17D0 beq .L635
6434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the I2C DMA Abort callback :
6436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */
6437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort;
13075 .loc 1 6437 11
13076 0184 7B68 ldr r3, [r7, #4]
13077 0186 DB6B ldr r3, [r3, #60]
13078 .loc 1 6437 39
13079 0188 144A ldr r2, .L640+8
13080 018a 5A63 str r2, [r3, #52]
6438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
13081 .loc 1 6440 7
13082 018c 7B68 ldr r3, [r7, #4]
13083 018e 0022 movs r2, #0
13084 0190 83F84020 strb r2, [r3, #64]
6441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Abort DMA RX */
6443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK)
13085 .loc 1 6443 11
13086 0194 7B68 ldr r3, [r7, #4]
13087 0196 DB6B ldr r3, [r3, #60]
13088 0198 1846 mov r0, r3
13089 019a FFF7FEFF bl HAL_DMA_Abort_IT
13090 019e 0346 mov r3, r0
13091 .loc 1 6443 10 discriminator 1
13092 01a0 002B cmp r3, #0
13093 01a2 11D0 beq .L638
6444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */
6446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx);
13094 .loc 1 6446 13
ARM GAS /tmp/cc5G5cqz.s page 346
13095 01a4 7B68 ldr r3, [r7, #4]
13096 01a6 DB6B ldr r3, [r3, #60]
13097 .loc 1 6446 21
13098 01a8 5B6B ldr r3, [r3, #52]
13099 .loc 1 6446 45
13100 01aa 7A68 ldr r2, [r7, #4]
13101 01ac D26B ldr r2, [r2, #60]
13102 .loc 1 6446 9
13103 01ae 1046 mov r0, r2
13104 01b0 9847 blx r3
13105 .LVL8:
6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13106 .loc 1 6433 8
13107 01b2 09E0 b .L638
13108 .L635:
6447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c);
13109 .loc 1 6451 7
13110 01b4 7868 ldr r0, [r7, #4]
13111 01b6 FFF7FEFF bl I2C_TreatErrorCallback
6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13112 .loc 1 6433 8
13113 01ba 05E0 b .L638
13114 .L632:
6452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c);
13115 .loc 1 6456 5
13116 01bc 7868 ldr r0, [r7, #4]
13117 01be FFF7FEFF bl I2C_TreatErrorCallback
6457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13118 .loc 1 6458 1
13119 01c2 02E0 b .L639
13120 .L637:
6403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13121 .loc 1 6403 8
13122 01c4 00BF nop
13123 01c6 00E0 b .L639
13124 .L638:
6433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13125 .loc 1 6433 8
13126 01c8 00BF nop
13127 .L639:
13128 .loc 1 6458 1
13129 01ca 00BF nop
13130 01cc 1037 adds r7, r7, #16
13131 .cfi_def_cfa_offset 8
13132 01ce BD46 mov sp, r7
13133 .cfi_def_cfa_register 13
13134 @ sp needed
13135 01d0 80BD pop {r7, pc}
ARM GAS /tmp/cc5G5cqz.s page 347
13136 .L641:
13137 01d2 00BF .align 2
13138 .L640:
13139 01d4 0000FFFF .word -65536
13140 01d8 00000000 .word I2C_Slave_ISR_IT
13141 01dc 00000000 .word I2C_DMAAbort
13142 .cfi_endproc
13143 .LFE193:
13145 .section .text.I2C_TreatErrorCallback,"ax",%progbits
13146 .align 1
13147 .syntax unified
13148 .thumb
13149 .thumb_func
13151 I2C_TreatErrorCallback:
13152 .LFB194:
6459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Error callback treatment.
6462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
6463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c)
6466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13153 .loc 1 6466 1
13154 .cfi_startproc
13155 @ args = 0, pretend = 0, frame = 8
13156 @ frame_needed = 1, uses_anonymous_args = 0
13157 0000 80B5 push {r7, lr}
13158 .cfi_def_cfa_offset 8
13159 .cfi_offset 7, -8
13160 .cfi_offset 14, -4
13161 0002 82B0 sub sp, sp, #8
13162 .cfi_def_cfa_offset 16
13163 0004 00AF add r7, sp, #0
13164 .cfi_def_cfa_register 7
13165 0006 7860 str r0, [r7, #4]
6467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT)
13166 .loc 1 6467 11
13167 0008 7B68 ldr r3, [r7, #4]
13168 000a 93F84130 ldrb r3, [r3, #65]
13169 000e DBB2 uxtb r3, r3
13170 .loc 1 6467 6
13171 0010 602B cmp r3, #96
13172 0012 0ED1 bne .L643
6468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
13173 .loc 1 6469 17
13174 0014 7B68 ldr r3, [r7, #4]
13175 0016 2022 movs r2, #32
13176 0018 83F84120 strb r2, [r3, #65]
6470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
13177 .loc 1 6470 25
13178 001c 7B68 ldr r3, [r7, #4]
13179 001e 0022 movs r2, #0
13180 0020 1A63 str r2, [r3, #48]
6471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
ARM GAS /tmp/cc5G5cqz.s page 348
6473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
13181 .loc 1 6473 5
13182 0022 7B68 ldr r3, [r7, #4]
13183 0024 0022 movs r2, #0
13184 0026 83F84020 strb r2, [r3, #64]
6474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->AbortCpltCallback(hi2c);
6478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_AbortCpltCallback(hi2c);
13185 .loc 1 6479 5
13186 002a 7868 ldr r0, [r7, #4]
13187 002c FFF7FEFF bl HAL_I2C_AbortCpltCallback
6480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE;
6485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
6488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
6491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCallback(hi2c);
6492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #else
6493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ErrorCallback(hi2c);
6494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
6495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13188 .loc 1 6496 1
13189 0030 09E0 b .L645
13190 .L643:
6484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13191 .loc 1 6484 25
13192 0032 7B68 ldr r3, [r7, #4]
13193 0034 0022 movs r2, #0
13194 0036 1A63 str r2, [r3, #48]
6487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13195 .loc 1 6487 5
13196 0038 7B68 ldr r3, [r7, #4]
13197 003a 0022 movs r2, #0
13198 003c 83F84020 strb r2, [r3, #64]
6493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
13199 .loc 1 6493 5
13200 0040 7868 ldr r0, [r7, #4]
13201 0042 FFF7FEFF bl HAL_I2C_ErrorCallback
13202 .L645:
13203 .loc 1 6496 1
13204 0046 00BF nop
13205 0048 0837 adds r7, r7, #8
13206 .cfi_def_cfa_offset 8
13207 004a BD46 mov sp, r7
13208 .cfi_def_cfa_register 13
13209 @ sp needed
13210 004c 80BD pop {r7, pc}
ARM GAS /tmp/cc5G5cqz.s page 349
13211 .cfi_endproc
13212 .LFE194:
13214 .section .text.I2C_Flush_TXDR,"ax",%progbits
13215 .align 1
13216 .syntax unified
13217 .thumb
13218 .thumb_func
13220 I2C_Flush_TXDR:
13221 .LFB195:
6497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief I2C Tx data register flush process.
6500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
6501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c)
6504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13222 .loc 1 6504 1
13223 .cfi_startproc
13224 @ args = 0, pretend = 0, frame = 8
13225 @ frame_needed = 1, uses_anonymous_args = 0
13226 @ link register save eliminated.
13227 0000 80B4 push {r7}
13228 .cfi_def_cfa_offset 4
13229 .cfi_offset 7, -4
13230 0002 83B0 sub sp, sp, #12
13231 .cfi_def_cfa_offset 16
13232 0004 00AF add r7, sp, #0
13233 .cfi_def_cfa_register 7
13234 0006 7860 str r0, [r7, #4]
6505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If a pending TXIS flag is set */
6506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Write a dummy data in TXDR to clear it */
6507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET)
13235 .loc 1 6507 7
13236 0008 7B68 ldr r3, [r7, #4]
13237 000a 1B68 ldr r3, [r3]
13238 000c 9B69 ldr r3, [r3, #24]
13239 000e 03F00203 and r3, r3, #2
13240 .loc 1 6507 6
13241 0012 022B cmp r3, #2
13242 0014 03D1 bne .L647
6508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->TXDR = 0x00U;
13243 .loc 1 6509 9
13244 0016 7B68 ldr r3, [r7, #4]
13245 0018 1B68 ldr r3, [r3]
13246 .loc 1 6509 26
13247 001a 0022 movs r2, #0
13248 001c 9A62 str r2, [r3, #40]
13249 .L647:
6510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register if not empty */
6513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET)
13250 .loc 1 6513 7
13251 001e 7B68 ldr r3, [r7, #4]
13252 0020 1B68 ldr r3, [r3]
ARM GAS /tmp/cc5G5cqz.s page 350
13253 0022 9B69 ldr r3, [r3, #24]
13254 0024 03F00103 and r3, r3, #1
13255 .loc 1 6513 6
13256 0028 012B cmp r3, #1
13257 002a 07D0 beq .L649
6514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE);
13258 .loc 1 6515 5
13259 002c 7B68 ldr r3, [r7, #4]
13260 002e 1B68 ldr r3, [r3]
13261 0030 9A69 ldr r2, [r3, #24]
13262 0032 7B68 ldr r3, [r7, #4]
13263 0034 1B68 ldr r3, [r3]
13264 0036 42F00102 orr r2, r2, #1
13265 003a 9A61 str r2, [r3, #24]
13266 .L649:
6516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13267 .loc 1 6517 1
13268 003c 00BF nop
13269 003e 0C37 adds r7, r7, #12
13270 .cfi_def_cfa_offset 4
13271 0040 BD46 mov sp, r7
13272 .cfi_def_cfa_register 13
13273 @ sp needed
13274 0042 5DF8047B ldr r7, [sp], #4
13275 .cfi_restore 7
13276 .cfi_def_cfa_offset 0
13277 0046 7047 bx lr
13278 .cfi_endproc
13279 .LFE195:
13281 .section .text.I2C_DMAMasterTransmitCplt,"ax",%progbits
13282 .align 1
13283 .syntax unified
13284 .thumb
13285 .thumb_func
13287 I2C_DMAMasterTransmitCplt:
13288 .LFB196:
6518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master transmit process complete callback.
6521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle
6522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma)
6525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13289 .loc 1 6525 1
13290 .cfi_startproc
13291 @ args = 0, pretend = 0, frame = 16
13292 @ frame_needed = 1, uses_anonymous_args = 0
13293 0000 80B5 push {r7, lr}
13294 .cfi_def_cfa_offset 8
13295 .cfi_offset 7, -8
13296 .cfi_offset 14, -4
13297 0002 84B0 sub sp, sp, #16
13298 .cfi_def_cfa_offset 24
13299 0004 00AF add r7, sp, #0
ARM GAS /tmp/cc5G5cqz.s page 351
13300 .cfi_def_cfa_register 7
13301 0006 7860 str r0, [r7, #4]
6526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13302 .loc 1 6527 22
13303 0008 7B68 ldr r3, [r7, #4]
13304 000a 5B6A ldr r3, [r3, #36]
13305 000c FB60 str r3, [r7, #12]
6528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
6530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
13306 .loc 1 6530 7
13307 000e FB68 ldr r3, [r7, #12]
13308 0010 1B68 ldr r3, [r3]
13309 .loc 1 6530 17
13310 0012 1A68 ldr r2, [r3]
13311 .loc 1 6530 7
13312 0014 FB68 ldr r3, [r7, #12]
13313 0016 1B68 ldr r3, [r3]
13314 .loc 1 6530 23
13315 0018 22F48042 bic r2, r2, #16384
13316 001c 1A60 str r2, [r3]
6531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */
6533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U)
13317 .loc 1 6533 11
13318 001e FB68 ldr r3, [r7, #12]
13319 0020 5B8D ldrh r3, [r3, #42] @ movhi
13320 0022 9BB2 uxth r3, r3
13321 .loc 1 6533 6
13322 0024 002B cmp r3, #0
13323 0026 04D1 bne .L651
6534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */
6536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
13324 .loc 1 6536 5
13325 0028 2021 movs r1, #32
13326 002a F868 ldr r0, [r7, #12]
13327 002c FFF7FEFF bl I2C_Enable_IRQ
6537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */
6539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */
6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize;
6543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */
6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
6546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
6548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
6552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
ARM GAS /tmp/cc5G5cqz.s page 352
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
6556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
6557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);
6560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */
6564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13328 .loc 1 6567 1
13329 0030 2DE0 b .L656
13330 .L651:
6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13331 .loc 1 6542 9
13332 0032 FB68 ldr r3, [r7, #12]
13333 0034 5B6A ldr r3, [r3, #36]
6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13334 .loc 1 6542 27
13335 0036 FA68 ldr r2, [r7, #12]
13336 0038 128D ldrh r2, [r2, #40]
6542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13337 .loc 1 6542 20
13338 003a 1A44 add r2, r2, r3
13339 003c FB68 ldr r3, [r7, #12]
13340 003e 5A62 str r2, [r3, #36]
6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13341 .loc 1 6545 13
13342 0040 FB68 ldr r3, [r7, #12]
13343 0042 5B8D ldrh r3, [r3, #42] @ movhi
13344 0044 9BB2 uxth r3, r3
6545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13345 .loc 1 6545 8
13346 0046 FF2B cmp r3, #255
13347 0048 03D9 bls .L653
6547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13348 .loc 1 6547 22
13349 004a FB68 ldr r3, [r7, #12]
13350 004c FF22 movs r2, #255
13351 004e 1A85 strh r2, [r3, #40] @ movhi
13352 0050 04E0 b .L654
13353 .L653:
6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13354 .loc 1 6551 28
13355 0052 FB68 ldr r3, [r7, #12]
13356 0054 5B8D ldrh r3, [r3, #42] @ movhi
13357 0056 9AB2 uxth r2, r3
6551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13358 .loc 1 6551 22
13359 0058 FB68 ldr r3, [r7, #12]
13360 005a 1A85 strh r2, [r3, #40] @ movhi
13361 .L654:
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13362 .loc 1 6555 9
ARM GAS /tmp/cc5G5cqz.s page 353
13363 005c FB68 ldr r3, [r7, #12]
13364 005e 986B ldr r0, [r3, #56]
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13365 .loc 1 6555 54
13366 0060 FB68 ldr r3, [r7, #12]
13367 0062 5B6A ldr r3, [r3, #36]
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13368 .loc 1 6555 9
13369 0064 1946 mov r1, r3
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13370 .loc 1 6555 81
13371 0066 FB68 ldr r3, [r7, #12]
13372 0068 1B68 ldr r3, [r3]
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13373 .loc 1 6555 76
13374 006a 2833 adds r3, r3, #40
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13375 .loc 1 6555 9
13376 006c 1A46 mov r2, r3
6556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13377 .loc 1 6556 30
13378 006e FB68 ldr r3, [r7, #12]
13379 0070 1B8D ldrh r3, [r3, #40]
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13380 .loc 1 6555 9
13381 0072 FFF7FEFF bl HAL_DMA_Start_IT
13382 0076 0346 mov r3, r0
6555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13383 .loc 1 6555 8 discriminator 1
13384 0078 002B cmp r3, #0
13385 007a 04D0 beq .L655
6559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13386 .loc 1 6559 7
13387 007c 1021 movs r1, #16
13388 007e F868 ldr r0, [r7, #12]
13389 0080 FFF7FEFF bl I2C_ITError
13390 .loc 1 6567 1
13391 0084 03E0 b .L656
13392 .L655:
6564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13393 .loc 1 6564 7
13394 0086 4021 movs r1, #64
13395 0088 F868 ldr r0, [r7, #12]
13396 008a FFF7FEFF bl I2C_Enable_IRQ
13397 .L656:
13398 .loc 1 6567 1
13399 008e 00BF nop
13400 0090 1037 adds r7, r7, #16
13401 .cfi_def_cfa_offset 8
13402 0092 BD46 mov sp, r7
13403 .cfi_def_cfa_register 13
13404 @ sp needed
13405 0094 80BD pop {r7, pc}
13406 .cfi_endproc
13407 .LFE196:
13409 .section .text.I2C_DMASlaveTransmitCplt,"ax",%progbits
13410 .align 1
ARM GAS /tmp/cc5G5cqz.s page 354
13411 .syntax unified
13412 .thumb
13413 .thumb_func
13415 I2C_DMASlaveTransmitCplt:
13416 .LFB197:
6568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave transmit process complete callback.
6572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle
6573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma)
6576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13417 .loc 1 6576 1
13418 .cfi_startproc
13419 @ args = 0, pretend = 0, frame = 16
13420 @ frame_needed = 1, uses_anonymous_args = 0
13421 0000 80B5 push {r7, lr}
13422 .cfi_def_cfa_offset 8
13423 .cfi_offset 7, -8
13424 .cfi_offset 14, -4
13425 0002 84B0 sub sp, sp, #16
13426 .cfi_def_cfa_offset 24
13427 0004 00AF add r7, sp, #0
13428 .cfi_def_cfa_register 7
13429 0006 7860 str r0, [r7, #4]
6577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13430 .loc 1 6578 22
13431 0008 7B68 ldr r3, [r7, #4]
13432 000a 5B6A ldr r3, [r3, #36]
13433 000c FB60 str r3, [r7, #12]
6579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions;
13434 .loc 1 6579 12
13435 000e FB68 ldr r3, [r7, #12]
13436 0010 DB6A ldr r3, [r3, #44]
13437 0012 BB60 str r3, [r7, #8]
6580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))
13438 .loc 1 6581 6
13439 0014 BB68 ldr r3, [r7, #8]
13440 0016 B3F1807F cmp r3, #16777216
13441 001a 02D0 beq .L658
13442 .loc 1 6581 38 discriminator 1
13443 001c BB68 ldr r3, [r7, #8]
13444 001e 002B cmp r3, #0
13445 0020 0AD1 bne .L660
13446 .L658:
6582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
6584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
13447 .loc 1 6584 9
13448 0022 FB68 ldr r3, [r7, #12]
13449 0024 1B68 ldr r3, [r3]
13450 .loc 1 6584 19
13451 0026 1A68 ldr r2, [r3]
ARM GAS /tmp/cc5G5cqz.s page 355
13452 .loc 1 6584 9
13453 0028 FB68 ldr r3, [r7, #12]
13454 002a 1B68 ldr r3, [r3]
13455 .loc 1 6584 25
13456 002c 22F48042 bic r2, r2, #16384
13457 0030 1A60 str r2, [r3]
6585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Last Byte is Transmitted */
6587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
6588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
13458 .loc 1 6588 5
13459 0032 F868 ldr r0, [r7, #12]
13460 0034 FFF7FEFF bl I2C_ITSlaveSeqCplt
13461 .L660:
6589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */
6593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */
6594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */
6595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13462 .loc 1 6596 1
13463 0038 00BF nop
13464 003a 1037 adds r7, r7, #16
13465 .cfi_def_cfa_offset 8
13466 003c BD46 mov sp, r7
13467 .cfi_def_cfa_register 13
13468 @ sp needed
13469 003e 80BD pop {r7, pc}
13470 .cfi_endproc
13471 .LFE197:
13473 .section .text.I2C_DMAMasterReceiveCplt,"ax",%progbits
13474 .align 1
13475 .syntax unified
13476 .thumb
13477 .thumb_func
13479 I2C_DMAMasterReceiveCplt:
13480 .LFB198:
6597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C master receive process complete callback.
6601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle
6602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma)
6605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13481 .loc 1 6605 1
13482 .cfi_startproc
13483 @ args = 0, pretend = 0, frame = 16
13484 @ frame_needed = 1, uses_anonymous_args = 0
13485 0000 80B5 push {r7, lr}
13486 .cfi_def_cfa_offset 8
13487 .cfi_offset 7, -8
13488 .cfi_offset 14, -4
13489 0002 84B0 sub sp, sp, #16
ARM GAS /tmp/cc5G5cqz.s page 356
13490 .cfi_def_cfa_offset 24
13491 0004 00AF add r7, sp, #0
13492 .cfi_def_cfa_register 7
13493 0006 7860 str r0, [r7, #4]
6606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13494 .loc 1 6607 22
13495 0008 7B68 ldr r3, [r7, #4]
13496 000a 5B6A ldr r3, [r3, #36]
13497 000c FB60 str r3, [r7, #12]
6608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
6610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
13498 .loc 1 6610 7
13499 000e FB68 ldr r3, [r7, #12]
13500 0010 1B68 ldr r3, [r3]
13501 .loc 1 6610 17
13502 0012 1A68 ldr r2, [r3]
13503 .loc 1 6610 7
13504 0014 FB68 ldr r3, [r7, #12]
13505 0016 1B68 ldr r3, [r3]
13506 .loc 1 6610 23
13507 0018 22F40042 bic r2, r2, #32768
13508 001c 1A60 str r2, [r3]
6611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */
6613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount == 0U)
13509 .loc 1 6613 11
13510 001e FB68 ldr r3, [r7, #12]
13511 0020 5B8D ldrh r3, [r3, #42] @ movhi
13512 0022 9BB2 uxth r3, r3
13513 .loc 1 6613 6
13514 0024 002B cmp r3, #0
13515 0026 04D1 bne .L662
6614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupt */
6616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
13516 .loc 1 6616 5
13517 0028 2021 movs r1, #32
13518 002a F868 ldr r0, [r7, #12]
13519 002c FFF7FEFF bl I2C_Enable_IRQ
6617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */
6619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Buffer pointer */
6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize;
6623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Set the XferSize to transfer */
6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE)
6626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE;
6628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount;
6632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 357
6633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable the DMA channel */
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr,
6636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
6637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);
6640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */
6644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT);
6645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13520 .loc 1 6647 1
13521 0030 2DE0 b .L667
13522 .L662:
6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13523 .loc 1 6622 9
13524 0032 FB68 ldr r3, [r7, #12]
13525 0034 5B6A ldr r3, [r3, #36]
6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13526 .loc 1 6622 27
13527 0036 FA68 ldr r2, [r7, #12]
13528 0038 128D ldrh r2, [r2, #40]
6622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
13529 .loc 1 6622 20
13530 003a 1A44 add r2, r2, r3
13531 003c FB68 ldr r3, [r7, #12]
13532 003e 5A62 str r2, [r3, #36]
6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13533 .loc 1 6625 13
13534 0040 FB68 ldr r3, [r7, #12]
13535 0042 5B8D ldrh r3, [r3, #42] @ movhi
13536 0044 9BB2 uxth r3, r3
6625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13537 .loc 1 6625 8
13538 0046 FF2B cmp r3, #255
13539 0048 03D9 bls .L664
6627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13540 .loc 1 6627 22
13541 004a FB68 ldr r3, [r7, #12]
13542 004c FF22 movs r2, #255
13543 004e 1A85 strh r2, [r3, #40] @ movhi
13544 0050 04E0 b .L665
13545 .L664:
6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13546 .loc 1 6631 28
13547 0052 FB68 ldr r3, [r7, #12]
13548 0054 5B8D ldrh r3, [r3, #42] @ movhi
13549 0056 9AB2 uxth r2, r3
6631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13550 .loc 1 6631 22
13551 0058 FB68 ldr r3, [r7, #12]
13552 005a 1A85 strh r2, [r3, #40] @ movhi
13553 .L665:
ARM GAS /tmp/cc5G5cqz.s page 358
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13554 .loc 1 6635 9
13555 005c FB68 ldr r3, [r7, #12]
13556 005e D86B ldr r0, [r3, #60]
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13557 .loc 1 6635 55
13558 0060 FB68 ldr r3, [r7, #12]
13559 0062 1B68 ldr r3, [r3]
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13560 .loc 1 6635 50
13561 0064 2433 adds r3, r3, #36
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13562 .loc 1 6635 9
13563 0066 1946 mov r1, r3
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13564 .loc 1 6635 87
13565 0068 FB68 ldr r3, [r7, #12]
13566 006a 5B6A ldr r3, [r3, #36]
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13567 .loc 1 6635 9
13568 006c 1A46 mov r2, r3
6636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13569 .loc 1 6636 30
13570 006e FB68 ldr r3, [r7, #12]
13571 0070 1B8D ldrh r3, [r3, #40]
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13572 .loc 1 6635 9
13573 0072 FFF7FEFF bl HAL_DMA_Start_IT
13574 0076 0346 mov r3, r0
6635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK)
13575 .loc 1 6635 8 discriminator 1
13576 0078 002B cmp r3, #0
13577 007a 04D0 beq .L666
6639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13578 .loc 1 6639 7
13579 007c 1021 movs r1, #16
13580 007e F868 ldr r0, [r7, #12]
13581 0080 FFF7FEFF bl I2C_ITError
13582 .loc 1 6647 1
13583 0084 03E0 b .L667
13584 .L666:
6644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13585 .loc 1 6644 7
13586 0086 4021 movs r1, #64
13587 0088 F868 ldr r0, [r7, #12]
13588 008a FFF7FEFF bl I2C_Enable_IRQ
13589 .L667:
13590 .loc 1 6647 1
13591 008e 00BF nop
13592 0090 1037 adds r7, r7, #16
13593 .cfi_def_cfa_offset 8
13594 0092 BD46 mov sp, r7
13595 .cfi_def_cfa_register 13
13596 @ sp needed
13597 0094 80BD pop {r7, pc}
13598 .cfi_endproc
13599 .LFE198:
ARM GAS /tmp/cc5G5cqz.s page 359
13601 .section .text.I2C_DMASlaveReceiveCplt,"ax",%progbits
13602 .align 1
13603 .syntax unified
13604 .thumb
13605 .thumb_func
13607 I2C_DMASlaveReceiveCplt:
13608 .LFB199:
6648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C slave receive process complete callback.
6652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle
6653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma)
6656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13609 .loc 1 6656 1
13610 .cfi_startproc
13611 @ args = 0, pretend = 0, frame = 16
13612 @ frame_needed = 1, uses_anonymous_args = 0
13613 0000 80B5 push {r7, lr}
13614 .cfi_def_cfa_offset 8
13615 .cfi_offset 7, -8
13616 .cfi_offset 14, -4
13617 0002 84B0 sub sp, sp, #16
13618 .cfi_def_cfa_offset 24
13619 0004 00AF add r7, sp, #0
13620 .cfi_def_cfa_register 7
13621 0006 7860 str r0, [r7, #4]
6657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13622 .loc 1 6658 22
13623 0008 7B68 ldr r3, [r7, #4]
13624 000a 5B6A ldr r3, [r3, #36]
13625 000c FB60 str r3, [r7, #12]
6659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions;
13626 .loc 1 6659 12
13627 000e FB68 ldr r3, [r7, #12]
13628 0010 DB6A ldr r3, [r3, #44]
13629 0012 BB60 str r3, [r7, #8]
6660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \
13630 .loc 1 6661 8
13631 0014 FB68 ldr r3, [r7, #12]
13632 0016 DB6B ldr r3, [r3, #60]
13633 0018 1B68 ldr r3, [r3]
13634 001a 5B68 ldr r3, [r3, #4]
13635 .loc 1 6661 6
13636 001c 002B cmp r3, #0
13637 001e 0ED1 bne .L670
13638 .loc 1 6661 53 discriminator 1
13639 0020 BB68 ldr r3, [r7, #8]
13640 0022 13F5803F cmn r3, #65536
13641 0026 0AD0 beq .L670
6662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME))
6663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable DMA Request */
ARM GAS /tmp/cc5G5cqz.s page 360
6665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
13642 .loc 1 6665 9
13643 0028 FB68 ldr r3, [r7, #12]
13644 002a 1B68 ldr r3, [r3]
13645 .loc 1 6665 19
13646 002c 1A68 ldr r2, [r3]
13647 .loc 1 6665 9
13648 002e FB68 ldr r3, [r7, #12]
13649 0030 1B68 ldr r3, [r3]
13650 .loc 1 6665 25
13651 0032 22F40042 bic r2, r2, #32768
13652 0036 1A60 str r2, [r3]
6666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */
6668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c);
13653 .loc 1 6668 5
13654 0038 F868 ldr r0, [r7, #12]
13655 003a FFF7FEFF bl I2C_ITSlaveSeqCplt
13656 .L670:
6669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */
6673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */
6674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */
6675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13657 .loc 1 6676 1
13658 003e 00BF nop
13659 0040 1037 adds r7, r7, #16
13660 .cfi_def_cfa_offset 8
13661 0042 BD46 mov sp, r7
13662 .cfi_def_cfa_register 13
13663 @ sp needed
13664 0044 80BD pop {r7, pc}
13665 .cfi_endproc
13666 .LFE199:
13668 .section .text.I2C_DMAError,"ax",%progbits
13669 .align 1
13670 .syntax unified
13671 .thumb
13672 .thumb_func
13674 I2C_DMAError:
13675 .LFB200:
6677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication error callback.
6681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle
6682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma)
6685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13676 .loc 1 6685 1
13677 .cfi_startproc
13678 @ args = 0, pretend = 0, frame = 16
13679 @ frame_needed = 1, uses_anonymous_args = 0
ARM GAS /tmp/cc5G5cqz.s page 361
13680 0000 80B5 push {r7, lr}
13681 .cfi_def_cfa_offset 8
13682 .cfi_offset 7, -8
13683 .cfi_offset 14, -4
13684 0002 84B0 sub sp, sp, #16
13685 .cfi_def_cfa_offset 24
13686 0004 00AF add r7, sp, #0
13687 .cfi_def_cfa_register 7
13688 0006 7860 str r0, [r7, #4]
6686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13689 .loc 1 6687 22
13690 0008 7B68 ldr r3, [r7, #4]
13691 000a 5B6A ldr r3, [r3, #36]
13692 000c FB60 str r3, [r7, #12]
6688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable Acknowledge */
6690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK;
13693 .loc 1 6690 7
13694 000e FB68 ldr r3, [r7, #12]
13695 0010 1B68 ldr r3, [r3]
13696 .loc 1 6690 17
13697 0012 5A68 ldr r2, [r3, #4]
13698 .loc 1 6690 7
13699 0014 FB68 ldr r3, [r7, #12]
13700 0016 1B68 ldr r3, [r3]
13701 .loc 1 6690 23
13702 0018 42F40042 orr r2, r2, #32768
13703 001c 5A60 str r2, [r3, #4]
6691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */
6693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);
13704 .loc 1 6693 3
13705 001e 1021 movs r1, #16
13706 0020 F868 ldr r0, [r7, #12]
13707 0022 FFF7FEFF bl I2C_ITError
6694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13708 .loc 1 6694 1
13709 0026 00BF nop
13710 0028 1037 adds r7, r7, #16
13711 .cfi_def_cfa_offset 8
13712 002a BD46 mov sp, r7
13713 .cfi_def_cfa_register 13
13714 @ sp needed
13715 002c 80BD pop {r7, pc}
13716 .cfi_endproc
13717 .LFE200:
13719 .section .text.I2C_DMAAbort,"ax",%progbits
13720 .align 1
13721 .syntax unified
13722 .thumb
13723 .thumb_func
13725 I2C_DMAAbort:
13726 .LFB201:
6695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
ARM GAS /tmp/cc5G5cqz.s page 362
6698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief DMA I2C communication abort callback
6699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * (To be called at end of DMA Abort procedure).
6700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hdma DMA handle.
6701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
6702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma)
6704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13727 .loc 1 6704 1
13728 .cfi_startproc
13729 @ args = 0, pretend = 0, frame = 16
13730 @ frame_needed = 1, uses_anonymous_args = 0
13731 0000 80B5 push {r7, lr}
13732 .cfi_def_cfa_offset 8
13733 .cfi_offset 7, -8
13734 .cfi_offset 14, -4
13735 0002 84B0 sub sp, sp, #16
13736 .cfi_def_cfa_offset 24
13737 0004 00AF add r7, sp, #0
13738 .cfi_def_cfa_register 7
13739 0006 7860 str r0, [r7, #4]
6705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */
6706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
13740 .loc 1 6706 22
13741 0008 7B68 ldr r3, [r7, #4]
13742 000a 5B6A ldr r3, [r3, #36]
13743 000c FB60 str r3, [r7, #12]
6707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Reset AbortCpltCallback */
6709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmatx != NULL)
13744 .loc 1 6709 11
13745 000e FB68 ldr r3, [r7, #12]
13746 0010 9B6B ldr r3, [r3, #56]
13747 .loc 1 6709 6
13748 0012 002B cmp r3, #0
13749 0014 03D0 beq .L673
6710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL;
13750 .loc 1 6711 9
13751 0016 FB68 ldr r3, [r7, #12]
13752 0018 9B6B ldr r3, [r3, #56]
13753 .loc 1 6711 37
13754 001a 0022 movs r2, #0
13755 001c 5A63 str r2, [r3, #52]
13756 .L673:
6712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->hdmarx != NULL)
13757 .loc 1 6713 11
13758 001e FB68 ldr r3, [r7, #12]
13759 0020 DB6B ldr r3, [r3, #60]
13760 .loc 1 6713 6
13761 0022 002B cmp r3, #0
13762 0024 03D0 beq .L674
6714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL;
13763 .loc 1 6715 9
13764 0026 FB68 ldr r3, [r7, #12]
13765 0028 DB6B ldr r3, [r3, #60]
ARM GAS /tmp/cc5G5cqz.s page 363
13766 .loc 1 6715 37
13767 002a 0022 movs r2, #0
13768 002c 5A63 str r2, [r3, #52]
13769 .L674:
6716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c);
13770 .loc 1 6718 3
13771 002e F868 ldr r0, [r7, #12]
13772 0030 FFF7FEFF bl I2C_TreatErrorCallback
6719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13773 .loc 1 6719 1
13774 0034 00BF nop
13775 0036 1037 adds r7, r7, #16
13776 .cfi_def_cfa_offset 8
13777 0038 BD46 mov sp, r7
13778 .cfi_def_cfa_register 13
13779 @ sp needed
13780 003a 80BD pop {r7, pc}
13781 .cfi_endproc
13782 .LFE201:
13784 .section .text.I2C_WaitOnFlagUntilTimeout,"ax",%progbits
13785 .align 1
13786 .syntax unified
13787 .thumb
13788 .thumb_func
13790 I2C_WaitOnFlagUntilTimeout:
13791 .LFB202:
6720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout. It waits
6724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * until a flag is no longer in the specified status.
6725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
6726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
6727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Flag Specifies the I2C flag to check.
6728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Status The actual Flag status (SET or RESET).
6729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
6730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
6731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
6732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta
6734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart)
6735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13792 .loc 1 6735 1
13793 .cfi_startproc
13794 @ args = 4, pretend = 0, frame = 16
13795 @ frame_needed = 1, uses_anonymous_args = 0
13796 0000 80B5 push {r7, lr}
13797 .cfi_def_cfa_offset 8
13798 .cfi_offset 7, -8
13799 .cfi_offset 14, -4
13800 0002 84B0 sub sp, sp, #16
13801 .cfi_def_cfa_offset 24
13802 0004 00AF add r7, sp, #0
13803 .cfi_def_cfa_register 7
13804 0006 F860 str r0, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 364
13805 0008 B960 str r1, [r7, #8]
13806 000a 3B60 str r3, [r7]
13807 000c 1346 mov r3, r2
13808 000e FB71 strb r3, [r7, #7]
6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)
13809 .loc 1 6736 9
13810 0010 31E0 b .L677
13811 .L681:
6737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY)
13812 .loc 1 6739 8
13813 0012 3B68 ldr r3, [r7]
13814 0014 B3F1FF3F cmp r3, #-1
13815 0018 2DD0 beq .L677
6740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
13816 .loc 1 6741 13
13817 001a FFF7FEFF bl HAL_GetTick
13818 001e 0246 mov r2, r0
13819 .loc 1 6741 27 discriminator 1
13820 0020 BB69 ldr r3, [r7, #24]
13821 0022 D31A subs r3, r2, r3
13822 .loc 1 6741 10 discriminator 1
13823 0024 3A68 ldr r2, [r7]
13824 0026 9A42 cmp r2, r3
13825 0028 02D3 bcc .L678
13826 .loc 1 6741 51 discriminator 1
13827 002a 3B68 ldr r3, [r7]
13828 002c 002B cmp r3, #0
13829 002e 22D1 bne .L677
13830 .L678:
6742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status))
13831 .loc 1 6743 14
13832 0030 FB68 ldr r3, [r7, #12]
13833 0032 1B68 ldr r3, [r3]
13834 0034 9A69 ldr r2, [r3, #24]
13835 0036 BB68 ldr r3, [r7, #8]
13836 0038 1340 ands r3, r3, r2
13837 003a BA68 ldr r2, [r7, #8]
13838 003c 9A42 cmp r2, r3
13839 003e 0CBF ite eq
13840 0040 0123 moveq r3, #1
13841 0042 0023 movne r3, #0
13842 0044 DBB2 uxtb r3, r3
13843 0046 1A46 mov r2, r3
13844 .loc 1 6743 45
13845 0048 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
13846 .loc 1 6743 12
13847 004a 9A42 cmp r2, r3
13848 004c 13D1 bne .L677
6744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
13849 .loc 1 6745 15
13850 004e FB68 ldr r3, [r7, #12]
13851 0050 5B6C ldr r3, [r3, #68]
ARM GAS /tmp/cc5G5cqz.s page 365
13852 .loc 1 6745 27
13853 0052 43F02002 orr r2, r3, #32
13854 0056 FB68 ldr r3, [r7, #12]
13855 0058 5A64 str r2, [r3, #68]
6746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
13856 .loc 1 6746 23
13857 005a FB68 ldr r3, [r7, #12]
13858 005c 2022 movs r2, #32
13859 005e 83F84120 strb r2, [r3, #65]
6747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
13860 .loc 1 6747 22
13861 0062 FB68 ldr r3, [r7, #12]
13862 0064 0022 movs r2, #0
13863 0066 83F84220 strb r2, [r3, #66]
6748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
13864 .loc 1 6750 11
13865 006a FB68 ldr r3, [r7, #12]
13866 006c 0022 movs r2, #0
13867 006e 83F84020 strb r2, [r3, #64]
6751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
13868 .loc 1 6751 18
13869 0072 0123 movs r3, #1
13870 0074 0FE0 b .L680
13871 .L677:
6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13872 .loc 1 6736 10
13873 0076 FB68 ldr r3, [r7, #12]
13874 0078 1B68 ldr r3, [r3]
13875 007a 9A69 ldr r2, [r3, #24]
13876 007c BB68 ldr r3, [r7, #8]
13877 007e 1340 ands r3, r3, r2
13878 0080 BA68 ldr r2, [r7, #8]
13879 0082 9A42 cmp r2, r3
13880 0084 0CBF ite eq
13881 0086 0123 moveq r3, #1
13882 0088 0023 movne r3, #0
13883 008a DBB2 uxtb r3, r3
13884 008c 1A46 mov r2, r3
6736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13885 .loc 1 6736 41
13886 008e FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
13887 0090 9A42 cmp r2, r3
13888 0092 BED0 beq .L681
6752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
13889 .loc 1 6756 10
13890 0094 0023 movs r3, #0
13891 .L680:
6757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
13892 .loc 1 6757 1
13893 0096 1846 mov r0, r3
13894 0098 1037 adds r7, r7, #16
ARM GAS /tmp/cc5G5cqz.s page 366
13895 .cfi_def_cfa_offset 8
13896 009a BD46 mov sp, r7
13897 .cfi_def_cfa_register 13
13898 @ sp needed
13899 009c 80BD pop {r7, pc}
13900 .cfi_endproc
13901 .LFE202:
13903 .section .text.I2C_WaitOnTXISFlagUntilTimeout,"ax",%progbits
13904 .align 1
13905 .syntax unified
13906 .thumb
13907 .thumb_func
13909 I2C_WaitOnTXISFlagUntilTimeout:
13910 .LFB203:
6758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag.
6761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
6762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
6763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
6764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
6765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
6766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
6768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart)
6769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13911 .loc 1 6769 1
13912 .cfi_startproc
13913 @ args = 0, pretend = 0, frame = 16
13914 @ frame_needed = 1, uses_anonymous_args = 0
13915 0000 80B5 push {r7, lr}
13916 .cfi_def_cfa_offset 8
13917 .cfi_offset 7, -8
13918 .cfi_offset 14, -4
13919 0002 84B0 sub sp, sp, #16
13920 .cfi_def_cfa_offset 24
13921 0004 00AF add r7, sp, #0
13922 .cfi_def_cfa_register 7
13923 0006 F860 str r0, [r7, #12]
13924 0008 B960 str r1, [r7, #8]
13925 000a 7A60 str r2, [r7, #4]
6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)
13926 .loc 1 6770 9
13927 000c 33E0 b .L686
13928 .L689:
6771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */
6773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
13929 .loc 1 6773 9
13930 000e 7A68 ldr r2, [r7, #4]
13931 0010 B968 ldr r1, [r7, #8]
13932 0012 F868 ldr r0, [r7, #12]
13933 0014 FFF7FEFF bl I2C_IsErrorOccurred
13934 0018 0346 mov r3, r0
13935 .loc 1 6773 8 discriminator 1
13936 001a 002B cmp r3, #0
13937 001c 01D0 beq .L684
ARM GAS /tmp/cc5G5cqz.s page 367
6774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
13938 .loc 1 6775 14
13939 001e 0123 movs r3, #1
13940 0020 31E0 b .L685
13941 .L684:
6776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY)
13942 .loc 1 6779 8
13943 0022 BB68 ldr r3, [r7, #8]
13944 0024 B3F1FF3F cmp r3, #-1
13945 0028 25D0 beq .L686
6780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
13946 .loc 1 6781 13
13947 002a FFF7FEFF bl HAL_GetTick
13948 002e 0246 mov r2, r0
13949 .loc 1 6781 27 discriminator 1
13950 0030 7B68 ldr r3, [r7, #4]
13951 0032 D31A subs r3, r2, r3
13952 .loc 1 6781 10 discriminator 1
13953 0034 BA68 ldr r2, [r7, #8]
13954 0036 9A42 cmp r2, r3
13955 0038 02D3 bcc .L687
13956 .loc 1 6781 51 discriminator 1
13957 003a BB68 ldr r3, [r7, #8]
13958 003c 002B cmp r3, #0
13959 003e 1AD1 bne .L686
13960 .L687:
6782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET))
13961 .loc 1 6783 14
13962 0040 FB68 ldr r3, [r7, #12]
13963 0042 1B68 ldr r3, [r3]
13964 0044 9B69 ldr r3, [r3, #24]
13965 0046 03F00203 and r3, r3, #2
13966 .loc 1 6783 12
13967 004a 022B cmp r3, #2
13968 004c 13D0 beq .L686
6784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
13969 .loc 1 6785 15
13970 004e FB68 ldr r3, [r7, #12]
13971 0050 5B6C ldr r3, [r3, #68]
13972 .loc 1 6785 27
13973 0052 43F02002 orr r2, r3, #32
13974 0056 FB68 ldr r3, [r7, #12]
13975 0058 5A64 str r2, [r3, #68]
6786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
13976 .loc 1 6786 23
13977 005a FB68 ldr r3, [r7, #12]
13978 005c 2022 movs r2, #32
13979 005e 83F84120 strb r2, [r3, #65]
6787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
13980 .loc 1 6787 22
ARM GAS /tmp/cc5G5cqz.s page 368
13981 0062 FB68 ldr r3, [r7, #12]
13982 0064 0022 movs r2, #0
13983 0066 83F84220 strb r2, [r3, #66]
6788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
13984 .loc 1 6790 11
13985 006a FB68 ldr r3, [r7, #12]
13986 006c 0022 movs r2, #0
13987 006e 83F84020 strb r2, [r3, #64]
6791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
13988 .loc 1 6792 18
13989 0072 0123 movs r3, #1
13990 0074 07E0 b .L685
13991 .L686:
6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13992 .loc 1 6770 10
13993 0076 FB68 ldr r3, [r7, #12]
13994 0078 1B68 ldr r3, [r3]
13995 007a 9B69 ldr r3, [r3, #24]
13996 007c 03F00203 and r3, r3, #2
6770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
13997 .loc 1 6770 50
13998 0080 022B cmp r3, #2
13999 0082 C4D1 bne .L689
6793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
14000 .loc 1 6797 10
14001 0084 0023 movs r3, #0
14002 .L685:
6798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14003 .loc 1 6798 1
14004 0086 1846 mov r0, r3
14005 0088 1037 adds r7, r7, #16
14006 .cfi_def_cfa_offset 8
14007 008a BD46 mov sp, r7
14008 .cfi_def_cfa_register 13
14009 @ sp needed
14010 008c 80BD pop {r7, pc}
14011 .cfi_endproc
14012 .LFE203:
14014 .section .text.I2C_WaitOnSTOPFlagUntilTimeout,"ax",%progbits
14015 .align 1
14016 .syntax unified
14017 .thumb
14018 .thumb_func
14020 I2C_WaitOnSTOPFlagUntilTimeout:
14021 .LFB204:
6799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of STOP flag.
6802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
6803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
ARM GAS /tmp/cc5G5cqz.s page 369
6804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
6805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
6806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
6807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
6809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart)
6810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14022 .loc 1 6810 1
14023 .cfi_startproc
14024 @ args = 0, pretend = 0, frame = 16
14025 @ frame_needed = 1, uses_anonymous_args = 0
14026 0000 80B5 push {r7, lr}
14027 .cfi_def_cfa_offset 8
14028 .cfi_offset 7, -8
14029 .cfi_offset 14, -4
14030 0002 84B0 sub sp, sp, #16
14031 .cfi_def_cfa_offset 24
14032 0004 00AF add r7, sp, #0
14033 .cfi_def_cfa_register 7
14034 0006 F860 str r0, [r7, #12]
14035 0008 B960 str r1, [r7, #8]
14036 000a 7A60 str r2, [r7, #4]
6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)
14037 .loc 1 6811 9
14038 000c 2FE0 b .L691
14039 .L696:
6812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */
6814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
14040 .loc 1 6814 9
14041 000e 7A68 ldr r2, [r7, #4]
14042 0010 B968 ldr r1, [r7, #8]
14043 0012 F868 ldr r0, [r7, #12]
14044 0014 FFF7FEFF bl I2C_IsErrorOccurred
14045 0018 0346 mov r3, r0
14046 .loc 1 6814 8 discriminator 1
14047 001a 002B cmp r3, #0
14048 001c 01D0 beq .L692
6815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
14049 .loc 1 6816 14
14050 001e 0123 movs r3, #1
14051 0020 2DE0 b .L693
14052 .L692:
6817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
14053 .loc 1 6820 11
14054 0022 FFF7FEFF bl HAL_GetTick
14055 0026 0246 mov r2, r0
14056 .loc 1 6820 25 discriminator 1
14057 0028 7B68 ldr r3, [r7, #4]
14058 002a D31A subs r3, r2, r3
14059 .loc 1 6820 8 discriminator 1
14060 002c BA68 ldr r2, [r7, #8]
14061 002e 9A42 cmp r2, r3
ARM GAS /tmp/cc5G5cqz.s page 370
14062 0030 02D3 bcc .L694
14063 .loc 1 6820 49 discriminator 1
14064 0032 BB68 ldr r3, [r7, #8]
14065 0034 002B cmp r3, #0
14066 0036 1AD1 bne .L691
14067 .L694:
6821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET))
14068 .loc 1 6822 12
14069 0038 FB68 ldr r3, [r7, #12]
14070 003a 1B68 ldr r3, [r3]
14071 003c 9B69 ldr r3, [r3, #24]
14072 003e 03F02003 and r3, r3, #32
14073 .loc 1 6822 10
14074 0042 202B cmp r3, #32
14075 0044 13D0 beq .L691
6823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
14076 .loc 1 6824 13
14077 0046 FB68 ldr r3, [r7, #12]
14078 0048 5B6C ldr r3, [r3, #68]
14079 .loc 1 6824 25
14080 004a 43F02002 orr r2, r3, #32
14081 004e FB68 ldr r3, [r7, #12]
14082 0050 5A64 str r2, [r3, #68]
6825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
14083 .loc 1 6825 21
14084 0052 FB68 ldr r3, [r7, #12]
14085 0054 2022 movs r2, #32
14086 0056 83F84120 strb r2, [r3, #65]
6826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
14087 .loc 1 6826 20
14088 005a FB68 ldr r3, [r7, #12]
14089 005c 0022 movs r2, #0
14090 005e 83F84220 strb r2, [r3, #66]
6827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
14091 .loc 1 6829 9
14092 0062 FB68 ldr r3, [r7, #12]
14093 0064 0022 movs r2, #0
14094 0066 83F84020 strb r2, [r3, #64]
6830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
14095 .loc 1 6831 16
14096 006a 0123 movs r3, #1
14097 006c 07E0 b .L693
14098 .L691:
6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14099 .loc 1 6811 10
14100 006e FB68 ldr r3, [r7, #12]
14101 0070 1B68 ldr r3, [r3]
14102 0072 9B69 ldr r3, [r3, #24]
14103 0074 03F02003 and r3, r3, #32
6811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14104 .loc 1 6811 51
14105 0078 202B cmp r3, #32
ARM GAS /tmp/cc5G5cqz.s page 371
14106 007a C8D1 bne .L696
6832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
14107 .loc 1 6835 10
14108 007c 0023 movs r3, #0
14109 .L693:
6836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14110 .loc 1 6836 1
14111 007e 1846 mov r0, r3
14112 0080 1037 adds r7, r7, #16
14113 .cfi_def_cfa_offset 8
14114 0082 BD46 mov sp, r7
14115 .cfi_def_cfa_register 13
14116 @ sp needed
14117 0084 80BD pop {r7, pc}
14118 .cfi_endproc
14119 .LFE204:
14121 .section .text.I2C_WaitOnRXNEFlagUntilTimeout,"ax",%progbits
14122 .align 1
14123 .syntax unified
14124 .thumb
14125 .thumb_func
14127 I2C_WaitOnRXNEFlagUntilTimeout:
14128 .LFB205:
6837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag.
6840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
6841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
6842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
6843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
6844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
6845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
6847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Tickstart)
6848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14129 .loc 1 6848 1
14130 .cfi_startproc
14131 @ args = 0, pretend = 0, frame = 16
14132 @ frame_needed = 1, uses_anonymous_args = 0
14133 0000 80B5 push {r7, lr}
14134 .cfi_def_cfa_offset 8
14135 .cfi_offset 7, -8
14136 .cfi_offset 14, -4
14137 0002 84B0 sub sp, sp, #16
14138 .cfi_def_cfa_offset 24
14139 0004 00AF add r7, sp, #0
14140 .cfi_def_cfa_register 7
14141 0006 F860 str r0, [r7, #12]
14142 0008 B960 str r1, [r7, #8]
14143 000a 7A60 str r2, [r7, #4]
6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)
14144 .loc 1 6849 9
14145 000c 6BE0 b .L698
14146 .L707:
ARM GAS /tmp/cc5G5cqz.s page 372
6850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an error is detected */
6852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
14147 .loc 1 6852 9
14148 000e 7A68 ldr r2, [r7, #4]
14149 0010 B968 ldr r1, [r7, #8]
14150 0012 F868 ldr r0, [r7, #12]
14151 0014 FFF7FEFF bl I2C_IsErrorOccurred
14152 0018 0346 mov r3, r0
14153 .loc 1 6852 8 discriminator 1
14154 001a 002B cmp r3, #0
14155 001c 01D0 beq .L699
6853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
14156 .loc 1 6854 14
14157 001e 0123 movs r3, #1
14158 0020 69E0 b .L700
14159 .L699:
6855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a STOPF is detected */
6858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET)
14160 .loc 1 6858 9
14161 0022 FB68 ldr r3, [r7, #12]
14162 0024 1B68 ldr r3, [r3]
14163 0026 9B69 ldr r3, [r3, #24]
14164 0028 03F02003 and r3, r3, #32
14165 .loc 1 6858 8
14166 002c 202B cmp r3, #32
14167 002e 38D1 bne .L701
6859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an RXNE is pending */
6861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Store Last receive data if any */
6862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U))
14168 .loc 1 6862 12
14169 0030 FB68 ldr r3, [r7, #12]
14170 0032 1B68 ldr r3, [r3]
14171 0034 9B69 ldr r3, [r3, #24]
14172 0036 03F00403 and r3, r3, #4
14173 .loc 1 6862 10
14174 003a 042B cmp r3, #4
14175 003c 05D1 bne .L702
14176 .loc 1 6862 68 discriminator 1
14177 003e FB68 ldr r3, [r7, #12]
14178 0040 1B8D ldrh r3, [r3, #40]
14179 .loc 1 6862 60 discriminator 1
14180 0042 002B cmp r3, #0
14181 0044 01D0 beq .L702
6863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Return HAL_OK */
6865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* The Reading of data from RXDR will be done in caller function */
6866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
14182 .loc 1 6866 16
14183 0046 0023 movs r3, #0
14184 0048 55E0 b .L700
14185 .L702:
6867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 373
6868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)
14186 .loc 1 6870 13
14187 004a FB68 ldr r3, [r7, #12]
14188 004c 1B68 ldr r3, [r3]
14189 004e 9B69 ldr r3, [r3, #24]
14190 0050 03F01003 and r3, r3, #16
14191 .loc 1 6870 12
14192 0054 102B cmp r3, #16
14193 0056 07D1 bne .L703
6871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
14194 .loc 1 6872 11
14195 0058 FB68 ldr r3, [r7, #12]
14196 005a 1B68 ldr r3, [r3]
14197 005c 1022 movs r2, #16
14198 005e DA61 str r2, [r3, #28]
6873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_AF;
14199 .loc 1 6873 27
14200 0060 FB68 ldr r3, [r7, #12]
14201 0062 0422 movs r2, #4
14202 0064 5A64 str r2, [r3, #68]
14203 0066 02E0 b .L704
14204 .L703:
6874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
6876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
14205 .loc 1 6877 27
14206 0068 FB68 ldr r3, [r7, #12]
14207 006a 0022 movs r2, #0
14208 006c 5A64 str r2, [r3, #68]
14209 .L704:
6878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
6881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
14210 .loc 1 6881 9
14211 006e FB68 ldr r3, [r7, #12]
14212 0070 1B68 ldr r3, [r3]
14213 0072 2022 movs r2, #32
14214 0074 DA61 str r2, [r3, #28]
6882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
6884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
14215 .loc 1 6884 9
14216 0076 FB68 ldr r3, [r7, #12]
14217 0078 1B68 ldr r3, [r3]
14218 007a 5968 ldr r1, [r3, #4]
14219 007c FB68 ldr r3, [r7, #12]
14220 007e 1A68 ldr r2, [r3]
14221 0080 1F4B ldr r3, .L708
14222 0082 0B40 ands r3, r3, r1
14223 0084 5360 str r3, [r2, #4]
6885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
ARM GAS /tmp/cc5G5cqz.s page 374
14224 .loc 1 6886 21
14225 0086 FB68 ldr r3, [r7, #12]
14226 0088 2022 movs r2, #32
14227 008a 83F84120 strb r2, [r3, #65]
6887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
14228 .loc 1 6887 20
14229 008e FB68 ldr r3, [r7, #12]
14230 0090 0022 movs r2, #0
14231 0092 83F84220 strb r2, [r3, #66]
6888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
14232 .loc 1 6890 9
14233 0096 FB68 ldr r3, [r7, #12]
14234 0098 0022 movs r2, #0
14235 009a 83F84020 strb r2, [r3, #64]
6891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
14236 .loc 1 6892 16
14237 009e 0123 movs r3, #1
14238 00a0 29E0 b .L700
14239 .L701:
6893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
14240 .loc 1 6897 11
14241 00a2 FFF7FEFF bl HAL_GetTick
14242 00a6 0246 mov r2, r0
14243 .loc 1 6897 25 discriminator 1
14244 00a8 7B68 ldr r3, [r7, #4]
14245 00aa D31A subs r3, r2, r3
14246 .loc 1 6897 8 discriminator 1
14247 00ac BA68 ldr r2, [r7, #8]
14248 00ae 9A42 cmp r2, r3
14249 00b0 02D3 bcc .L705
14250 .loc 1 6897 49 discriminator 1
14251 00b2 BB68 ldr r3, [r7, #8]
14252 00b4 002B cmp r3, #0
14253 00b6 16D1 bne .L698
14254 .L705:
6898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET))
14255 .loc 1 6899 12
14256 00b8 FB68 ldr r3, [r7, #12]
14257 00ba 1B68 ldr r3, [r3]
14258 00bc 9B69 ldr r3, [r3, #24]
14259 00be 03F00403 and r3, r3, #4
14260 .loc 1 6899 10
14261 00c2 042B cmp r3, #4
14262 00c4 0FD0 beq .L698
6900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
14263 .loc 1 6901 13
14264 00c6 FB68 ldr r3, [r7, #12]
14265 00c8 5B6C ldr r3, [r3, #68]
ARM GAS /tmp/cc5G5cqz.s page 375
14266 .loc 1 6901 25
14267 00ca 43F02002 orr r2, r3, #32
14268 00ce FB68 ldr r3, [r7, #12]
14269 00d0 5A64 str r2, [r3, #68]
6902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
14270 .loc 1 6902 21
14271 00d2 FB68 ldr r3, [r7, #12]
14272 00d4 2022 movs r2, #32
14273 00d6 83F84120 strb r2, [r3, #65]
6903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
6905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
14274 .loc 1 6905 9
14275 00da FB68 ldr r3, [r7, #12]
14276 00dc 0022 movs r2, #0
14277 00de 83F84020 strb r2, [r3, #64]
6906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_ERROR;
14278 .loc 1 6907 16
14279 00e2 0123 movs r3, #1
14280 00e4 07E0 b .L700
14281 .L698:
6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14282 .loc 1 6849 10
14283 00e6 FB68 ldr r3, [r7, #12]
14284 00e8 1B68 ldr r3, [r3]
14285 00ea 9B69 ldr r3, [r3, #24]
14286 00ec 03F00403 and r3, r3, #4
6849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14287 .loc 1 6849 50
14288 00f0 042B cmp r3, #4
14289 00f2 8CD1 bne .L707
6908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return HAL_OK;
14290 .loc 1 6911 10
14291 00f4 0023 movs r3, #0
14292 .L700:
6912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14293 .loc 1 6912 1
14294 00f6 1846 mov r0, r3
14295 00f8 1037 adds r7, r7, #16
14296 .cfi_def_cfa_offset 8
14297 00fa BD46 mov sp, r7
14298 .cfi_def_cfa_register 13
14299 @ sp needed
14300 00fc 80BD pop {r7, pc}
14301 .L709:
14302 00fe 00BF .align 2
14303 .L708:
14304 0100 00E800FE .word -33495040
14305 .cfi_endproc
14306 .LFE205:
14308 .section .text.I2C_IsErrorOccurred,"ax",%progbits
14309 .align 1
14310 .syntax unified
ARM GAS /tmp/cc5G5cqz.s page 376
14311 .thumb
14312 .thumb_func
14314 I2C_IsErrorOccurred:
14315 .LFB206:
6913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
6915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief This function handles errors detection during an I2C Communication.
6916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
6917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
6918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Timeout Timeout duration
6919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Tickstart Tick start value
6920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval HAL status
6921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
6922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti
6923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14316 .loc 1 6923 1
14317 .cfi_startproc
14318 @ args = 0, pretend = 0, frame = 40
14319 @ frame_needed = 1, uses_anonymous_args = 0
14320 0000 80B5 push {r7, lr}
14321 .cfi_def_cfa_offset 8
14322 .cfi_offset 7, -8
14323 .cfi_offset 14, -4
14324 0002 8AB0 sub sp, sp, #40
14325 .cfi_def_cfa_offset 48
14326 0004 00AF add r7, sp, #0
14327 .cfi_def_cfa_register 7
14328 0006 F860 str r0, [r7, #12]
14329 0008 B960 str r1, [r7, #8]
14330 000a 7A60 str r2, [r7, #4]
6924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK;
14331 .loc 1 6924 21
14332 000c 0023 movs r3, #0
14333 000e 87F82730 strb r3, [r7, #39]
6925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR;
14334 .loc 1 6925 27
14335 0012 FB68 ldr r3, [r7, #12]
14336 0014 1B68 ldr r3, [r3]
14337 .loc 1 6925 12
14338 0016 9B69 ldr r3, [r3, #24]
14339 0018 BB61 str r3, [r7, #24]
6926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t error_code = 0;
14340 .loc 1 6926 12
14341 001a 0023 movs r3, #0
14342 001c 3B62 str r3, [r7, #32]
6927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tickstart = Tickstart;
14343 .loc 1 6927 12
14344 001e 7B68 ldr r3, [r7, #4]
14345 0020 FB61 str r3, [r7, #28]
6928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp1;
6929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp2;
6930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF))
14346 .loc 1 6931 7
14347 0022 BB69 ldr r3, [r7, #24]
14348 0024 03F01003 and r3, r3, #16
14349 .loc 1 6931 6
ARM GAS /tmp/cc5G5cqz.s page 377
14350 0028 002B cmp r3, #0
14351 002a 68D0 beq .L711
6932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear NACKF Flag */
6934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
14352 .loc 1 6934 5
14353 002c FB68 ldr r3, [r7, #12]
14354 002e 1B68 ldr r3, [r3]
14355 0030 1022 movs r2, #16
14356 0032 DA61 str r2, [r3, #28]
6935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Wait until STOP Flag is set or timeout occurred */
6937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* AutoEnd should be initiate after AF */
6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK))
14357 .loc 1 6938 11
14358 0034 49E0 b .L713
14359 .L720:
6939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY)
14360 .loc 1 6941 10
14361 0036 BB68 ldr r3, [r7, #8]
14362 0038 B3F1FF3F cmp r3, #-1
14363 003c 45D0 beq .L713
6942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
14364 .loc 1 6943 15
14365 003e FFF7FEFF bl HAL_GetTick
14366 0042 0246 mov r2, r0
14367 .loc 1 6943 29 discriminator 1
14368 0044 FB69 ldr r3, [r7, #28]
14369 0046 D31A subs r3, r2, r3
14370 .loc 1 6943 12 discriminator 1
14371 0048 BA68 ldr r2, [r7, #8]
14372 004a 9A42 cmp r2, r3
14373 004c 02D3 bcc .L714
14374 .loc 1 6943 53 discriminator 1
14375 004e BB68 ldr r3, [r7, #8]
14376 0050 002B cmp r3, #0
14377 0052 3AD1 bne .L713
14378 .L714:
6944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP);
14379 .loc 1 6945 33
14380 0054 FB68 ldr r3, [r7, #12]
14381 0056 1B68 ldr r3, [r3]
14382 .loc 1 6945 43
14383 0058 5B68 ldr r3, [r3, #4]
14384 .loc 1 6945 16
14385 005a 03F48043 and r3, r3, #16384
14386 005e 7B61 str r3, [r7, #20]
6946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmp2 = hi2c->Mode;
14387 .loc 1 6946 16
14388 0060 FB68 ldr r3, [r7, #12]
14389 0062 93F84230 ldrb r3, [r3, #66]
14390 0066 FB74 strb r3, [r7, #19]
6947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
ARM GAS /tmp/cc5G5cqz.s page 378
6948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case of I2C still busy, try to regenerate a STOP manually */
6949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \
14391 .loc 1 6949 16
14392 0068 FB68 ldr r3, [r7, #12]
14393 006a 1B68 ldr r3, [r3]
14394 006c 9B69 ldr r3, [r3, #24]
14395 006e 03F40043 and r3, r3, #32768
14396 .loc 1 6949 14
14397 0072 B3F5004F cmp r3, #32768
14398 0076 21D1 bne .L717
14399 .loc 1 6949 66 discriminator 1
14400 0078 7B69 ldr r3, [r7, #20]
14401 007a B3F5804F cmp r3, #16384
14402 007e 1DD0 beq .L717
6950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \
14403 .loc 1 6950 38
14404 0080 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
14405 0082 202B cmp r3, #32
14406 0084 1AD0 beq .L717
6951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (tmp2 != HAL_I2C_MODE_SLAVE))
6952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Generate Stop */
6954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP;
14407 .loc 1 6954 17
14408 0086 FB68 ldr r3, [r7, #12]
14409 0088 1B68 ldr r3, [r3]
14410 .loc 1 6954 27
14411 008a 5A68 ldr r2, [r3, #4]
14412 .loc 1 6954 17
14413 008c FB68 ldr r3, [r7, #12]
14414 008e 1B68 ldr r3, [r3]
14415 .loc 1 6954 33
14416 0090 42F48042 orr r2, r2, #16384
14417 0094 5A60 str r2, [r3, #4]
6955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Update Tick with new reference */
6957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tickstart = HAL_GetTick();
14418 .loc 1 6957 25
14419 0096 FFF7FEFF bl HAL_GetTick
14420 009a F861 str r0, [r7, #28]
6958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)
14421 .loc 1 6960 17
14422 009c 0EE0 b .L717
14423 .L718:
6961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check for the Timeout */
6963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF)
14424 .loc 1 6963 18
14425 009e FFF7FEFF bl HAL_GetTick
14426 00a2 0246 mov r2, r0
14427 .loc 1 6963 32 discriminator 1
14428 00a4 FB69 ldr r3, [r7, #28]
14429 00a6 D31A subs r3, r2, r3
14430 .loc 1 6963 16 discriminator 1
14431 00a8 192B cmp r3, #25
ARM GAS /tmp/cc5G5cqz.s page 379
14432 00aa 07D9 bls .L717
6964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_TIMEOUT;
14433 .loc 1 6965 26
14434 00ac 3B6A ldr r3, [r7, #32]
14435 00ae 43F02003 orr r3, r3, #32
14436 00b2 3B62 str r3, [r7, #32]
6966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6967:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
14437 .loc 1 6967 22
14438 00b4 0123 movs r3, #1
14439 00b6 87F82730 strb r3, [r7, #39]
6968:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6969:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** break;
14440 .loc 1 6969 15
14441 00ba 06E0 b .L713
14442 .L717:
6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14443 .loc 1 6960 18
14444 00bc FB68 ldr r3, [r7, #12]
14445 00be 1B68 ldr r3, [r3]
14446 00c0 9B69 ldr r3, [r3, #24]
14447 00c2 03F02003 and r3, r3, #32
6960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14448 .loc 1 6960 59
14449 00c6 202B cmp r3, #32
14450 00c8 E9D1 bne .L718
14451 .L713:
6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14452 .loc 1 6938 13
14453 00ca FB68 ldr r3, [r7, #12]
14454 00cc 1B68 ldr r3, [r3]
14455 00ce 9B69 ldr r3, [r3, #24]
14456 00d0 03F02003 and r3, r3, #32
6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14457 .loc 1 6938 64
14458 00d4 202B cmp r3, #32
14459 00d6 03D0 beq .L719
6938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14460 .loc 1 6938 64 is_stmt 0 discriminator 1
14461 00d8 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2
14462 00dc 002B cmp r3, #0
14463 00de AAD0 beq .L720
14464 .L719:
6970:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6971:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6972:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6973:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6974:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6975:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6976:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* In case STOP Flag is detected, clear it */
6977:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status == HAL_OK)
14465 .loc 1 6977 8 is_stmt 1
14466 00e0 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2
14467 00e4 002B cmp r3, #0
14468 00e6 03D1 bne .L721
6978:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 380
6979:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear STOP Flag */
6980:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
14469 .loc 1 6980 7
14470 00e8 FB68 ldr r3, [r7, #12]
14471 00ea 1B68 ldr r3, [r3]
14472 00ec 2022 movs r2, #32
14473 00ee DA61 str r2, [r3, #28]
14474 .L721:
6981:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6982:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6983:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_AF;
14475 .loc 1 6983 16
14476 00f0 3B6A ldr r3, [r7, #32]
14477 00f2 43F00403 orr r3, r3, #4
14478 00f6 3B62 str r3, [r7, #32]
6984:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6985:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
14479 .loc 1 6985 12
14480 00f8 0123 movs r3, #1
14481 00fa 87F82730 strb r3, [r7, #39]
14482 .L711:
6986:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
6987:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6988:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Refresh Content of Status register */
6989:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** itflag = hi2c->Instance->ISR;
14483 .loc 1 6989 16
14484 00fe FB68 ldr r3, [r7, #12]
14485 0100 1B68 ldr r3, [r3]
14486 .loc 1 6989 10
14487 0102 9B69 ldr r3, [r3, #24]
14488 0104 BB61 str r3, [r7, #24]
6990:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6991:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Then verify if an additional errors occurs */
6992:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if a Bus error occurred */
6993:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR))
14489 .loc 1 6993 7
14490 0106 BB69 ldr r3, [r7, #24]
14491 0108 03F48073 and r3, r3, #256
14492 .loc 1 6993 6
14493 010c 002B cmp r3, #0
14494 010e 0BD0 beq .L722
6994:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
6995:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_BERR;
14495 .loc 1 6995 16
14496 0110 3B6A ldr r3, [r7, #32]
14497 0112 43F00103 orr r3, r3, #1
14498 0116 3B62 str r3, [r7, #32]
6996:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
6997:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear BERR flag */
6998:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);
14499 .loc 1 6998 5
14500 0118 FB68 ldr r3, [r7, #12]
14501 011a 1B68 ldr r3, [r3]
14502 011c 4FF48072 mov r2, #256
14503 0120 DA61 str r2, [r3, #28]
6999:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7000:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
ARM GAS /tmp/cc5G5cqz.s page 381
14504 .loc 1 7000 12
14505 0122 0123 movs r3, #1
14506 0124 87F82730 strb r3, [r7, #39]
14507 .L722:
7001:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7002:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7003:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Over-Run/Under-Run error occurred */
7004:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR))
14508 .loc 1 7004 7
14509 0128 BB69 ldr r3, [r7, #24]
14510 012a 03F48063 and r3, r3, #1024
14511 .loc 1 7004 6
14512 012e 002B cmp r3, #0
14513 0130 0BD0 beq .L723
7005:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7006:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_OVR;
14514 .loc 1 7006 16
14515 0132 3B6A ldr r3, [r7, #32]
14516 0134 43F00803 orr r3, r3, #8
14517 0138 3B62 str r3, [r7, #32]
7007:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7008:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear OVR flag */
7009:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);
14518 .loc 1 7009 5
14519 013a FB68 ldr r3, [r7, #12]
14520 013c 1B68 ldr r3, [r3]
14521 013e 4FF48062 mov r2, #1024
14522 0142 DA61 str r2, [r3, #28]
7010:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7011:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
14523 .loc 1 7011 12
14524 0144 0123 movs r3, #1
14525 0146 87F82730 strb r3, [r7, #39]
14526 .L723:
7012:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7013:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7014:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check if an Arbitration Loss error occurred */
7015:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO))
14527 .loc 1 7015 7
14528 014a BB69 ldr r3, [r7, #24]
14529 014c 03F40073 and r3, r3, #512
14530 .loc 1 7015 6
14531 0150 002B cmp r3, #0
14532 0152 0BD0 beq .L724
7016:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7017:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_ARLO;
14533 .loc 1 7017 16
14534 0154 3B6A ldr r3, [r7, #32]
14535 0156 43F00203 orr r3, r3, #2
14536 015a 3B62 str r3, [r7, #32]
7018:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7019:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear ARLO flag */
7020:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);
14537 .loc 1 7020 5
14538 015c FB68 ldr r3, [r7, #12]
14539 015e 1B68 ldr r3, [r3]
14540 0160 4FF40072 mov r2, #512
ARM GAS /tmp/cc5G5cqz.s page 382
14541 0164 DA61 str r2, [r3, #28]
7021:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7022:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** status = HAL_ERROR;
14542 .loc 1 7022 12
14543 0166 0123 movs r3, #1
14544 0168 87F82730 strb r3, [r7, #39]
14545 .L724:
7023:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7024:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7025:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (status != HAL_OK)
14546 .loc 1 7025 6
14547 016c 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2
14548 0170 002B cmp r3, #0
14549 0172 1CD0 beq .L725
7026:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7027:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Flush TX register */
7028:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c);
14550 .loc 1 7028 5
14551 0174 F868 ldr r0, [r7, #12]
14552 0176 FFF7FEFF bl I2C_Flush_TXDR
7029:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7030:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Clear Configuration Register 2 */
7031:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_RESET_CR2(hi2c);
14553 .loc 1 7031 5
14554 017a FB68 ldr r3, [r7, #12]
14555 017c 1B68 ldr r3, [r3]
14556 017e 5968 ldr r1, [r3, #4]
14557 0180 FB68 ldr r3, [r7, #12]
14558 0182 1A68 ldr r2, [r3]
14559 0184 0D4B ldr r3, .L727
14560 0186 0B40 ands r3, r3, r1
14561 0188 5360 str r3, [r2, #4]
7032:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7033:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->ErrorCode |= error_code;
14562 .loc 1 7033 9
14563 018a FB68 ldr r3, [r7, #12]
14564 018c 5A6C ldr r2, [r3, #68]
14565 .loc 1 7033 21
14566 018e 3B6A ldr r3, [r7, #32]
14567 0190 1A43 orrs r2, r2, r3
14568 0192 FB68 ldr r3, [r7, #12]
14569 0194 5A64 str r2, [r3, #68]
7034:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY;
14570 .loc 1 7034 17
14571 0196 FB68 ldr r3, [r7, #12]
14572 0198 2022 movs r2, #32
14573 019a 83F84120 strb r2, [r3, #65]
7035:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE;
14574 .loc 1 7035 16
14575 019e FB68 ldr r3, [r7, #12]
14576 01a0 0022 movs r2, #0
14577 01a2 83F84220 strb r2, [r3, #66]
7036:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7037:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Process Unlocked */
7038:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_UNLOCK(hi2c);
14578 .loc 1 7038 5
14579 01a6 FB68 ldr r3, [r7, #12]
ARM GAS /tmp/cc5G5cqz.s page 383
14580 01a8 0022 movs r2, #0
14581 01aa 83F84020 strb r2, [r3, #64]
14582 .L725:
7039:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7040:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7041:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** return status;
14583 .loc 1 7041 10
14584 01ae 97F82730 ldrb r3, [r7, #39] @ zero_extendqisi2
7042:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14585 .loc 1 7042 1
14586 01b2 1846 mov r0, r3
14587 01b4 2837 adds r7, r7, #40
14588 .cfi_def_cfa_offset 8
14589 01b6 BD46 mov sp, r7
14590 .cfi_def_cfa_register 13
14591 @ sp needed
14592 01b8 80BD pop {r7, pc}
14593 .L728:
14594 01ba 00BF .align 2
14595 .L727:
14596 01bc 00E800FE .word -33495040
14597 .cfi_endproc
14598 .LFE206:
14600 .section .text.I2C_TransferConfig,"ax",%progbits
14601 .align 1
14602 .syntax unified
14603 .thumb
14604 .thumb_func
14606 I2C_TransferConfig:
14607 .LFB207:
7043:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7044:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
7045:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag ar
7046:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
7047:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param DevAddress Specifies the slave address to be programmed.
7048:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Size Specifies the number of bytes to be programmed.
7049:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter must be a value between 0 and 255.
7050:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Mode New state of the I2C START condition generation.
7051:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values:
7052:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_RELOAD_MODE Enable Reload mode .
7053:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode.
7054:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_SOFTEND_MODE Enable Software end mode.
7055:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param Request New state of the I2C START condition generation.
7056:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * This parameter can be one of the following values:
7057:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition.
7058:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0).
7059:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request.
7060:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request.
7061:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
7062:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
7063:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t
7064:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t Request)
7065:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14608 .loc 1 7065 1
14609 .cfi_startproc
14610 @ args = 4, pretend = 0, frame = 24
14611 @ frame_needed = 1, uses_anonymous_args = 0
ARM GAS /tmp/cc5G5cqz.s page 384
14612 @ link register save eliminated.
14613 0000 80B4 push {r7}
14614 .cfi_def_cfa_offset 4
14615 .cfi_offset 7, -4
14616 0002 87B0 sub sp, sp, #28
14617 .cfi_def_cfa_offset 32
14618 0004 00AF add r7, sp, #0
14619 .cfi_def_cfa_register 7
14620 0006 F860 str r0, [r7, #12]
14621 0008 7B60 str r3, [r7, #4]
14622 000a 0B46 mov r3, r1 @ movhi
14623 000c 7B81 strh r3, [r7, #10] @ movhi
14624 000e 1346 mov r3, r2
14625 0010 7B72 strb r3, [r7, #9]
7066:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Check the parameters */
7067:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
7068:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_MODE(Mode));
7069:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** assert_param(IS_TRANSFER_REQUEST(Request));
7070:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7071:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */
7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \
14626 .loc 1 7072 52
14627 0012 7B89 ldrh r3, [r7, #10]
14628 0014 C3F30902 ubfx r2, r3, #0, #10
7073:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
14629 .loc 1 7073 32
14630 0018 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
14631 .loc 1 7073 47
14632 001a 1B04 lsls r3, r3, #16
14633 .loc 1 7073 70
14634 001c 03F47F03 and r3, r3, #16711680
7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
14635 .loc 1 7072 68
14636 0020 1A43 orrs r2, r2, r3
14637 .loc 1 7073 88
14638 0022 7B68 ldr r3, [r7, #4]
14639 0024 1A43 orrs r2, r2, r3
7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
14640 .loc 1 7072 19
14641 0026 3B6A ldr r3, [r7, #32]
14642 0028 1343 orrs r3, r3, r2
7072:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
14643 .loc 1 7072 12
14644 002a 23F00043 bic r3, r3, #-2147483648
14645 002e 7B61 str r3, [r7, #20]
7074:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U));
7075:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7076:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* update CR2 register */
7077:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** MODIFY_REG(hi2c->Instance->CR2, \
14646 .loc 1 7077 3
14647 0030 FB68 ldr r3, [r7, #12]
14648 0032 1B68 ldr r3, [r3]
14649 0034 5A68 ldr r2, [r3, #4]
14650 0036 3B6A ldr r3, [r7, #32]
14651 0038 5B0D lsrs r3, r3, #21
14652 003a 03F48061 and r1, r3, #1024
14653 003e 084B ldr r3, .L730
ARM GAS /tmp/cc5G5cqz.s page 385
14654 0040 0B43 orrs r3, r3, r1
14655 0042 DB43 mvns r3, r3
14656 0044 02EA0301 and r1, r2, r3
14657 0048 FB68 ldr r3, [r7, #12]
14658 004a 1B68 ldr r3, [r3]
14659 004c 7A69 ldr r2, [r7, #20]
14660 004e 0A43 orrs r2, r2, r1
14661 0050 5A60 str r2, [r3, #4]
7078:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \
7079:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \
7080:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** I2C_CR2_START | I2C_CR2_STOP)), tmp);
7081:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14662 .loc 1 7081 1
14663 0052 00BF nop
14664 0054 1C37 adds r7, r7, #28
14665 .cfi_def_cfa_offset 4
14666 0056 BD46 mov sp, r7
14667 .cfi_def_cfa_register 13
14668 @ sp needed
14669 0058 5DF8047B ldr r7, [sp], #4
14670 .cfi_restore 7
14671 .cfi_def_cfa_offset 0
14672 005c 7047 bx lr
14673 .L731:
14674 005e 00BF .align 2
14675 .L730:
14676 0060 FF63FF03 .word 67068927
14677 .cfi_endproc
14678 .LFE207:
14680 .section .text.I2C_Enable_IRQ,"ax",%progbits
14681 .align 1
14682 .syntax unified
14683 .thumb
14684 .thumb_func
14686 I2C_Enable_IRQ:
14687 .LFB208:
7082:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7083:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
7084:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the enabling of Interrupts.
7085:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
7086:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
7087:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.
7088:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
7089:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
7090:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)
7091:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14688 .loc 1 7091 1
14689 .cfi_startproc
14690 @ args = 0, pretend = 0, frame = 16
14691 @ frame_needed = 1, uses_anonymous_args = 0
14692 @ link register save eliminated.
14693 0000 80B4 push {r7}
14694 .cfi_def_cfa_offset 4
14695 .cfi_offset 7, -4
14696 0002 85B0 sub sp, sp, #20
14697 .cfi_def_cfa_offset 24
14698 0004 00AF add r7, sp, #0
ARM GAS /tmp/cc5G5cqz.s page 386
14699 .cfi_def_cfa_register 7
14700 0006 7860 str r0, [r7, #4]
14701 0008 0B46 mov r3, r1
14702 000a 7B80 strh r3, [r7, #2] @ movhi
7092:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U;
14703 .loc 1 7092 12
14704 000c 0023 movs r3, #0
14705 000e FB60 str r3, [r7, #12]
7093:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \
14706 .loc 1 7094 12
14707 0010 7B68 ldr r3, [r7, #4]
14708 0012 5B6B ldr r3, [r3, #52]
14709 .loc 1 7094 6
14710 0014 3B4A ldr r2, .L745
14711 0016 9342 cmp r3, r2
14712 0018 32D0 beq .L733
7095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \
14713 .loc 1 7095 12
14714 001a 7B68 ldr r3, [r7, #4]
14715 001c 5B6B ldr r3, [r3, #52]
7094:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \
14716 .loc 1 7094 45 discriminator 1
14717 001e 3A4A ldr r2, .L745+4
14718 0020 9342 cmp r3, r2
14719 0022 2DD0 beq .L733
7096:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Mem_ISR_DMA))
14720 .loc 1 7096 12
14721 0024 7B68 ldr r3, [r7, #4]
14722 0026 5B6B ldr r3, [r3, #52]
7095:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \
14723 .loc 1 7095 44
14724 0028 384A ldr r2, .L745+8
14725 002a 9342 cmp r3, r2
14726 002c 28D0 beq .L733
7097:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7098:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
14727 .loc 1 7098 49
14728 002e B7F90230 ldrsh r3, [r7, #2]
14729 .loc 1 7098 8
14730 0032 002B cmp r3, #0
14731 0034 03DA bge .L734
7099:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */
7101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;
14732 .loc 1 7101 14
14733 0036 FB68 ldr r3, [r7, #12]
14734 0038 43F0B803 orr r3, r3, #184
14735 003c FB60 str r3, [r7, #12]
14736 .L734:
7102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
14737 .loc 1 7104 27
14738 003e 7B88 ldrh r3, [r7, #2]
14739 0040 03F00103 and r3, r3, #1
14740 .loc 1 7104 8
ARM GAS /tmp/cc5G5cqz.s page 387
14741 0044 002B cmp r3, #0
14742 0046 03D0 beq .L735
7105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */
7107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI;
14743 .loc 1 7107 14
14744 0048 FB68 ldr r3, [r7, #12]
14745 004a 43F0F203 orr r3, r3, #242
14746 004e FB60 str r3, [r7, #12]
14747 .L735:
7108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
14748 .loc 1 7110 27
14749 0050 7B88 ldrh r3, [r7, #2]
14750 0052 03F00203 and r3, r3, #2
14751 .loc 1 7110 8
14752 0056 002B cmp r3, #0
14753 0058 03D0 beq .L736
7111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */
7113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI;
14754 .loc 1 7113 14
14755 005a FB68 ldr r3, [r7, #12]
14756 005c 43F0F403 orr r3, r3, #244
14757 0060 FB60 str r3, [r7, #12]
14758 .L736:
7114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT)
14759 .loc 1 7116 8
14760 0062 7B88 ldrh r3, [r7, #2]
14761 0064 102B cmp r3, #16
14762 0066 03D1 bne .L737
7117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
7119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;
14763 .loc 1 7119 14
14764 0068 FB68 ldr r3, [r7, #12]
14765 006a 43F09003 orr r3, r3, #144
14766 006e FB60 str r3, [r7, #12]
14767 .L737:
7120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT)
14768 .loc 1 7122 8
14769 0070 7B88 ldrh r3, [r7, #2]
14770 0072 202B cmp r3, #32
14771 0074 38D1 bne .L739
7123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */
7125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI;
14772 .loc 1 7125 14
14773 0076 FB68 ldr r3, [r7, #12]
14774 0078 43F02003 orr r3, r3, #32
14775 007c FB60 str r3, [r7, #12]
7122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
ARM GAS /tmp/cc5G5cqz.s page 388
14776 .loc 1 7122 8
14777 007e 33E0 b .L739
14778 .L733:
7126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
7130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
14779 .loc 1 7131 49
14780 0080 B7F90230 ldrsh r3, [r7, #2]
14781 .loc 1 7131 8
14782 0084 002B cmp r3, #0
14783 0086 03DA bge .L740
7132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */
7134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;
14784 .loc 1 7134 14
14785 0088 FB68 ldr r3, [r7, #12]
14786 008a 43F0B803 orr r3, r3, #184
14787 008e FB60 str r3, [r7, #12]
14788 .L740:
7135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
14789 .loc 1 7137 27
14790 0090 7B88 ldrh r3, [r7, #2]
14791 0092 03F00103 and r3, r3, #1
14792 .loc 1 7137 8
14793 0096 002B cmp r3, #0
14794 0098 03D0 beq .L741
7138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */
7140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI;
14795 .loc 1 7140 14
14796 009a FB68 ldr r3, [r7, #12]
14797 009c 43F0F203 orr r3, r3, #242
14798 00a0 FB60 str r3, [r7, #12]
14799 .L741:
7141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
14800 .loc 1 7143 27
14801 00a2 7B88 ldrh r3, [r7, #2]
14802 00a4 03F00203 and r3, r3, #2
14803 .loc 1 7143 8
14804 00a8 002B cmp r3, #0
14805 00aa 03D0 beq .L742
7144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */
7146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI;
14806 .loc 1 7146 14
14807 00ac FB68 ldr r3, [r7, #12]
14808 00ae 43F0F403 orr r3, r3, #244
14809 00b2 FB60 str r3, [r7, #12]
14810 .L742:
7147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 389
7148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT)
14811 .loc 1 7149 8
14812 00b4 7B88 ldrh r3, [r7, #2]
14813 00b6 102B cmp r3, #16
14814 00b8 03D1 bne .L743
7150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
7152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;
14815 .loc 1 7152 14
14816 00ba FB68 ldr r3, [r7, #12]
14817 00bc 43F09003 orr r3, r3, #144
14818 00c0 FB60 str r3, [r7, #12]
14819 .L743:
7153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT)
14820 .loc 1 7155 8
14821 00c2 7B88 ldrh r3, [r7, #2]
14822 00c4 202B cmp r3, #32
14823 00c6 03D1 bne .L744
7156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */
7158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI);
14824 .loc 1 7158 14
14825 00c8 FB68 ldr r3, [r7, #12]
14826 00ca 43F06003 orr r3, r3, #96
14827 00ce FB60 str r3, [r7, #12]
14828 .L744:
7159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Mem_ISR_DMA) && (InterruptRequest == I2C_XFER_RELOAD_IT))
14829 .loc 1 7161 14
14830 00d0 7B68 ldr r3, [r7, #4]
14831 00d2 5B6B ldr r3, [r3, #52]
14832 .loc 1 7161 8
14833 00d4 0D4A ldr r2, .L745+8
14834 00d6 9342 cmp r3, r2
14835 00d8 06D0 beq .L739
14836 .loc 1 7161 44 discriminator 1
14837 00da 7B88 ldrh r3, [r7, #2]
14838 00dc 402B cmp r3, #64
14839 00de 03D1 bne .L739
7162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */
7164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI;
14840 .loc 1 7164 14
14841 00e0 FB68 ldr r3, [r7, #12]
14842 00e2 43F04003 orr r3, r3, #64
14843 00e6 FB60 str r3, [r7, #12]
14844 .L739:
7165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable interrupts only at the end */
7169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid the risk of I2C interrupt handle execution before */
7170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all interrupts requested done */
ARM GAS /tmp/cc5G5cqz.s page 390
7171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_ENABLE_IT(hi2c, tmpisr);
14845 .loc 1 7171 3
14846 00e8 7B68 ldr r3, [r7, #4]
14847 00ea 1B68 ldr r3, [r3]
14848 00ec 1968 ldr r1, [r3]
14849 00ee 7B68 ldr r3, [r7, #4]
14850 00f0 1B68 ldr r3, [r3]
14851 00f2 FA68 ldr r2, [r7, #12]
14852 00f4 0A43 orrs r2, r2, r1
14853 00f6 1A60 str r2, [r3]
7172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14854 .loc 1 7172 1
14855 00f8 00BF nop
14856 00fa 1437 adds r7, r7, #20
14857 .cfi_def_cfa_offset 4
14858 00fc BD46 mov sp, r7
14859 .cfi_def_cfa_register 13
14860 @ sp needed
14861 00fe 5DF8047B ldr r7, [sp], #4
14862 .cfi_restore 7
14863 .cfi_def_cfa_offset 0
14864 0102 7047 bx lr
14865 .L746:
14866 .align 2
14867 .L745:
14868 0104 00000000 .word I2C_Master_ISR_DMA
14869 0108 00000000 .word I2C_Slave_ISR_DMA
14870 010c 00000000 .word I2C_Mem_ISR_DMA
14871 .cfi_endproc
14872 .LFE208:
14874 .section .text.I2C_Disable_IRQ,"ax",%progbits
14875 .align 1
14876 .syntax unified
14877 .thumb
14878 .thumb_func
14880 I2C_Disable_IRQ:
14881 .LFB209:
7173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
7175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Manage the disabling of Interrupts.
7176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
7177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * the configuration information for the specified I2C.
7178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition.
7179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
7180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
7181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest)
7182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
14882 .loc 1 7182 1
14883 .cfi_startproc
14884 @ args = 0, pretend = 0, frame = 16
14885 @ frame_needed = 1, uses_anonymous_args = 0
14886 @ link register save eliminated.
14887 0000 80B4 push {r7}
14888 .cfi_def_cfa_offset 4
14889 .cfi_offset 7, -4
14890 0002 85B0 sub sp, sp, #20
14891 .cfi_def_cfa_offset 24
ARM GAS /tmp/cc5G5cqz.s page 391
14892 0004 00AF add r7, sp, #0
14893 .cfi_def_cfa_register 7
14894 0006 7860 str r0, [r7, #4]
14895 0008 0B46 mov r3, r1
14896 000a 7B80 strh r3, [r7, #2] @ movhi
7183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** uint32_t tmpisr = 0U;
14897 .loc 1 7183 12
14898 000c 0023 movs r3, #0
14899 000e FB60 str r3, [r7, #12]
7184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT)
14900 .loc 1 7185 25
14901 0010 7B88 ldrh r3, [r7, #2]
14902 0012 03F00103 and r3, r3, #1
14903 .loc 1 7185 6
14904 0016 002B cmp r3, #0
14905 0018 0FD0 beq .L748
7186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and TXI interrupts */
7188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_TXI;
14906 .loc 1 7188 12
14907 001a FB68 ldr r3, [r7, #12]
14908 001c 43F04203 orr r3, r3, #66
14909 0020 FB60 str r3, [r7, #12]
7189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)
14910 .loc 1 7190 24
14911 0022 7B68 ldr r3, [r7, #4]
14912 0024 93F84130 ldrb r3, [r3, #65]
14913 0028 DBB2 uxtb r3, r3
14914 .loc 1 7190 32
14915 002a 03F02803 and r3, r3, #40
14916 .loc 1 7190 8
14917 002e 282B cmp r3, #40
14918 0030 03D0 beq .L748
7191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */
7193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;
14919 .loc 1 7193 14
14920 0032 FB68 ldr r3, [r7, #12]
14921 0034 43F0B003 orr r3, r3, #176
14922 0038 FB60 str r3, [r7, #12]
14923 .L748:
7194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT)
14924 .loc 1 7197 25
14925 003a 7B88 ldrh r3, [r7, #2]
14926 003c 03F00203 and r3, r3, #2
14927 .loc 1 7197 6
14928 0040 002B cmp r3, #0
14929 0042 0FD0 beq .L749
7198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable TC and RXI interrupts */
7200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_RXI;
14930 .loc 1 7200 12
ARM GAS /tmp/cc5G5cqz.s page 392
14931 0044 FB68 ldr r3, [r7, #12]
14932 0046 43F04403 orr r3, r3, #68
14933 004a FB60 str r3, [r7, #12]
7201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN)
14934 .loc 1 7202 24
14935 004c 7B68 ldr r3, [r7, #4]
14936 004e 93F84130 ldrb r3, [r3, #65]
14937 0052 DBB2 uxtb r3, r3
14938 .loc 1 7202 32
14939 0054 03F02803 and r3, r3, #40
14940 .loc 1 7202 8
14941 0058 282B cmp r3, #40
14942 005a 03D0 beq .L749
7203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */
7205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;
14943 .loc 1 7205 14
14944 005c FB68 ldr r3, [r7, #12]
14945 005e 43F0B003 orr r3, r3, #176
14946 0062 FB60 str r3, [r7, #12]
14947 .L749:
7206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT)
14948 .loc 1 7209 47
14949 0064 B7F90230 ldrsh r3, [r7, #2]
14950 .loc 1 7209 6
14951 0068 002B cmp r3, #0
14952 006a 03DA bge .L750
7210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable ADDR, NACK and STOP interrupts */
7212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI;
14953 .loc 1 7212 12
14954 006c FB68 ldr r3, [r7, #12]
14955 006e 43F0B803 orr r3, r3, #184
14956 0072 FB60 str r3, [r7, #12]
14957 .L750:
7213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT)
14958 .loc 1 7215 6
14959 0074 7B88 ldrh r3, [r7, #2]
14960 0076 102B cmp r3, #16
14961 0078 03D1 bne .L751
7216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */
7218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;
14962 .loc 1 7218 12
14963 007a FB68 ldr r3, [r7, #12]
14964 007c 43F09003 orr r3, r3, #144
14965 0080 FB60 str r3, [r7, #12]
14966 .L751:
7219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT)
ARM GAS /tmp/cc5G5cqz.s page 393
14967 .loc 1 7221 6
14968 0082 7B88 ldrh r3, [r7, #2]
14969 0084 202B cmp r3, #32
14970 0086 03D1 bne .L752
7222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable STOP interrupts */
7224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI;
14971 .loc 1 7224 12
14972 0088 FB68 ldr r3, [r7, #12]
14973 008a 43F02003 orr r3, r3, #32
14974 008e FB60 str r3, [r7, #12]
14975 .L752:
7225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT)
14976 .loc 1 7227 6
14977 0090 7B88 ldrh r3, [r7, #2]
14978 0092 402B cmp r3, #64
14979 0094 03D1 bne .L753
7228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Enable TC interrupts */
7230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI;
14980 .loc 1 7230 12
14981 0096 FB68 ldr r3, [r7, #12]
14982 0098 43F04003 orr r3, r3, #64
14983 009c FB60 str r3, [r7, #12]
14984 .L753:
7231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Disable interrupts only at the end */
7234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* to avoid a breaking situation like at "t" time */
7235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* all disable interrupts request are not done */
7236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, tmpisr);
14985 .loc 1 7236 3
14986 009e 7B68 ldr r3, [r7, #4]
14987 00a0 1B68 ldr r3, [r3]
14988 00a2 1968 ldr r1, [r3]
14989 00a4 FB68 ldr r3, [r7, #12]
14990 00a6 DA43 mvns r2, r3
14991 00a8 7B68 ldr r3, [r7, #4]
14992 00aa 1B68 ldr r3, [r3]
14993 00ac 0A40 ands r2, r2, r1
14994 00ae 1A60 str r2, [r3]
7237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
14995 .loc 1 7237 1
14996 00b0 00BF nop
14997 00b2 1437 adds r7, r7, #20
14998 .cfi_def_cfa_offset 4
14999 00b4 BD46 mov sp, r7
15000 .cfi_def_cfa_register 13
15001 @ sp needed
15002 00b6 5DF8047B ldr r7, [sp], #4
15003 .cfi_restore 7
15004 .cfi_def_cfa_offset 0
15005 00ba 7047 bx lr
15006 .cfi_endproc
15007 .LFE209:
ARM GAS /tmp/cc5G5cqz.s page 394
15009 .section .text.I2C_ConvertOtherXferOptions,"ax",%progbits
15010 .align 1
15011 .syntax unified
15012 .thumb
15013 .thumb_func
15015 I2C_ConvertOtherXferOptions:
15016 .LFB210:
7238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c ****
7239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /**
7240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions.
7241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @param hi2c I2C handle.
7242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** * @retval None
7243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** */
7244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c)
7245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
15017 .loc 1 7245 1
15018 .cfi_startproc
15019 @ args = 0, pretend = 0, frame = 8
15020 @ frame_needed = 1, uses_anonymous_args = 0
15021 @ link register save eliminated.
15022 0000 80B4 push {r7}
15023 .cfi_def_cfa_offset 4
15024 .cfi_offset 7, -4
15025 0002 83B0 sub sp, sp, #12
15026 .cfi_def_cfa_offset 16
15027 0004 00AF add r7, sp, #0
15028 .cfi_def_cfa_register 7
15029 0006 7860 str r0, [r7, #4]
7246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* if user set XferOptions to I2C_OTHER_FRAME */
7247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */
7248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_FRAME */
7249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_OTHER_FRAME)
15030 .loc 1 7249 11
15031 0008 7B68 ldr r3, [r7, #4]
15032 000a DB6A ldr r3, [r3, #44]
15033 .loc 1 7249 6
15034 000c AA2B cmp r3, #170
15035 000e 03D1 bne .L755
7250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_FRAME;
15036 .loc 1 7251 23
15037 0010 7B68 ldr r3, [r7, #4]
15038 0012 0022 movs r2, #0
15039 0014 DA62 str r2, [r3, #44]
7252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */
7254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */
7255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* then generate a stop condition at the end of transfer */
7256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */
7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME)
7258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME;
7260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
7261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** else
7262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
7263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** /* Nothing to do */
7264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
ARM GAS /tmp/cc5G5cqz.s page 395
7265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
15040 .loc 1 7265 1
15041 0016 08E0 b .L757
15042 .L755:
7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
15043 .loc 1 7257 16
15044 0018 7B68 ldr r3, [r7, #4]
15045 001a DB6A ldr r3, [r3, #44]
7257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** {
15046 .loc 1 7257 11
15047 001c B3F52A4F cmp r3, #43520
15048 0020 03D1 bne .L757
7259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2c.c **** }
15049 .loc 1 7259 23
15050 0022 7B68 ldr r3, [r7, #4]
15051 0024 4FF00072 mov r2, #33554432
15052 0028 DA62 str r2, [r3, #44]
15053 .L757:
15054 .loc 1 7265 1
15055 002a 00BF nop
15056 002c 0C37 adds r7, r7, #12
15057 .cfi_def_cfa_offset 4
15058 002e BD46 mov sp, r7
15059 .cfi_def_cfa_register 13
15060 @ sp needed
15061 0030 5DF8047B ldr r7, [sp], #4
15062 .cfi_restore 7
15063 .cfi_def_cfa_offset 0
15064 0034 7047 bx lr
15065 .cfi_endproc
15066 .LFE210:
15068 .text
15069 .Letext0:
15070 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
15071 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
15072 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
15073 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h"
15074 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
15075 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
15076 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_i2c.h"
15077 .file 9 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
ARM GAS /tmp/cc5G5cqz.s page 396
DEFINED SYMBOLS
*ABS*:00000000 stm32f3xx_hal_i2c.c
/tmp/cc5G5cqz.s:21 .text.HAL_I2C_Init:00000000 $t
/tmp/cc5G5cqz.s:27 .text.HAL_I2C_Init:00000000 HAL_I2C_Init
/tmp/cc5G5cqz.s:320 .text.HAL_I2C_MspInit:00000000 HAL_I2C_MspInit
/tmp/cc5G5cqz.s:235 .text.HAL_I2C_DeInit:00000000 $t
/tmp/cc5G5cqz.s:241 .text.HAL_I2C_DeInit:00000000 HAL_I2C_DeInit
/tmp/cc5G5cqz.s:356 .text.HAL_I2C_MspDeInit:00000000 HAL_I2C_MspDeInit
/tmp/cc5G5cqz.s:314 .text.HAL_I2C_MspInit:00000000 $t
/tmp/cc5G5cqz.s:350 .text.HAL_I2C_MspDeInit:00000000 $t
/tmp/cc5G5cqz.s:386 .text.HAL_I2C_Master_Transmit:00000000 $t
/tmp/cc5G5cqz.s:392 .text.HAL_I2C_Master_Transmit:00000000 HAL_I2C_Master_Transmit
/tmp/cc5G5cqz.s:13790 .text.I2C_WaitOnFlagUntilTimeout:00000000 I2C_WaitOnFlagUntilTimeout
/tmp/cc5G5cqz.s:14606 .text.I2C_TransferConfig:00000000 I2C_TransferConfig
/tmp/cc5G5cqz.s:13909 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 I2C_WaitOnTXISFlagUntilTimeout
/tmp/cc5G5cqz.s:14020 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 I2C_WaitOnSTOPFlagUntilTimeout
/tmp/cc5G5cqz.s:705 .text.HAL_I2C_Master_Transmit:000001e0 $d
/tmp/cc5G5cqz.s:711 .text.HAL_I2C_Master_Receive:00000000 $t
/tmp/cc5G5cqz.s:717 .text.HAL_I2C_Master_Receive:00000000 HAL_I2C_Master_Receive
/tmp/cc5G5cqz.s:14127 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 I2C_WaitOnRXNEFlagUntilTimeout
/tmp/cc5G5cqz.s:1032 .text.HAL_I2C_Master_Receive:000001e4 $d
/tmp/cc5G5cqz.s:1038 .text.HAL_I2C_Slave_Transmit:00000000 $t
/tmp/cc5G5cqz.s:1044 .text.HAL_I2C_Slave_Transmit:00000000 HAL_I2C_Slave_Transmit
/tmp/cc5G5cqz.s:13220 .text.I2C_Flush_TXDR:00000000 I2C_Flush_TXDR
/tmp/cc5G5cqz.s:1461 .text.HAL_I2C_Slave_Receive:00000000 $t
/tmp/cc5G5cqz.s:1467 .text.HAL_I2C_Slave_Receive:00000000 HAL_I2C_Slave_Receive
/tmp/cc5G5cqz.s:1839 .text.HAL_I2C_Master_Transmit_IT:00000000 $t
/tmp/cc5G5cqz.s:1845 .text.HAL_I2C_Master_Transmit_IT:00000000 HAL_I2C_Master_Transmit_IT
/tmp/cc5G5cqz.s:14686 .text.I2C_Enable_IRQ:00000000 I2C_Enable_IRQ
/tmp/cc5G5cqz.s:1991 .text.HAL_I2C_Master_Transmit_IT:000000d4 $d
/tmp/cc5G5cqz.s:9171 .text.I2C_Master_ISR_IT:00000000 I2C_Master_ISR_IT
/tmp/cc5G5cqz.s:1998 .text.HAL_I2C_Master_Receive_IT:00000000 $t
/tmp/cc5G5cqz.s:2004 .text.HAL_I2C_Master_Receive_IT:00000000 HAL_I2C_Master_Receive_IT
/tmp/cc5G5cqz.s:2150 .text.HAL_I2C_Master_Receive_IT:000000d4 $d
/tmp/cc5G5cqz.s:2157 .text.HAL_I2C_Slave_Transmit_IT:00000000 $t
/tmp/cc5G5cqz.s:2163 .text.HAL_I2C_Slave_Transmit_IT:00000000 HAL_I2C_Slave_Transmit_IT
/tmp/cc5G5cqz.s:2315 .text.HAL_I2C_Slave_Transmit_IT:000000d4 $d
/tmp/cc5G5cqz.s:9982 .text.I2C_Slave_ISR_IT:00000000 I2C_Slave_ISR_IT
/tmp/cc5G5cqz.s:2321 .text.HAL_I2C_Slave_Receive_IT:00000000 $t
/tmp/cc5G5cqz.s:2327 .text.HAL_I2C_Slave_Receive_IT:00000000 HAL_I2C_Slave_Receive_IT
/tmp/cc5G5cqz.s:2438 .text.HAL_I2C_Slave_Receive_IT:00000098 $d
/tmp/cc5G5cqz.s:2444 .text.HAL_I2C_Master_Transmit_DMA:00000000 $t
/tmp/cc5G5cqz.s:2450 .text.HAL_I2C_Master_Transmit_DMA:00000000 HAL_I2C_Master_Transmit_DMA
/tmp/cc5G5cqz.s:2751 .text.HAL_I2C_Master_Transmit_DMA:000001c8 $d
/tmp/cc5G5cqz.s:10339 .text.I2C_Master_ISR_DMA:00000000 I2C_Master_ISR_DMA
/tmp/cc5G5cqz.s:13287 .text.I2C_DMAMasterTransmitCplt:00000000 I2C_DMAMasterTransmitCplt
/tmp/cc5G5cqz.s:13674 .text.I2C_DMAError:00000000 I2C_DMAError
/tmp/cc5G5cqz.s:2761 .text.HAL_I2C_Master_Receive_DMA:00000000 $t
/tmp/cc5G5cqz.s:2767 .text.HAL_I2C_Master_Receive_DMA:00000000 HAL_I2C_Master_Receive_DMA
/tmp/cc5G5cqz.s:3068 .text.HAL_I2C_Master_Receive_DMA:000001c8 $d
/tmp/cc5G5cqz.s:13479 .text.I2C_DMAMasterReceiveCplt:00000000 I2C_DMAMasterReceiveCplt
/tmp/cc5G5cqz.s:3078 .text.HAL_I2C_Slave_Transmit_DMA:00000000 $t
/tmp/cc5G5cqz.s:3084 .text.HAL_I2C_Slave_Transmit_DMA:00000000 HAL_I2C_Slave_Transmit_DMA
/tmp/cc5G5cqz.s:3397 .text.HAL_I2C_Slave_Transmit_DMA:000001c8 $d
/tmp/cc5G5cqz.s:11069 .text.I2C_Slave_ISR_DMA:00000000 I2C_Slave_ISR_DMA
/tmp/cc5G5cqz.s:13415 .text.I2C_DMASlaveTransmitCplt:00000000 I2C_DMASlaveTransmitCplt
/tmp/cc5G5cqz.s:3405 .text.HAL_I2C_Slave_Receive_DMA:00000000 $t
ARM GAS /tmp/cc5G5cqz.s page 397
/tmp/cc5G5cqz.s:3411 .text.HAL_I2C_Slave_Receive_DMA:00000000 HAL_I2C_Slave_Receive_DMA
/tmp/cc5G5cqz.s:3650 .text.HAL_I2C_Slave_Receive_DMA:0000015c $d
/tmp/cc5G5cqz.s:13607 .text.I2C_DMASlaveReceiveCplt:00000000 I2C_DMASlaveReceiveCplt
/tmp/cc5G5cqz.s:3658 .text.HAL_I2C_Mem_Write:00000000 $t
/tmp/cc5G5cqz.s:3664 .text.HAL_I2C_Mem_Write:00000000 HAL_I2C_Mem_Write
/tmp/cc5G5cqz.s:11380 .text.I2C_RequestMemoryWrite:00000000 I2C_RequestMemoryWrite
/tmp/cc5G5cqz.s:4018 .text.HAL_I2C_Mem_Write:00000224 $d
/tmp/cc5G5cqz.s:4023 .text.HAL_I2C_Mem_Read:00000000 $t
/tmp/cc5G5cqz.s:4029 .text.HAL_I2C_Mem_Read:00000000 HAL_I2C_Mem_Read
/tmp/cc5G5cqz.s:11512 .text.I2C_RequestMemoryRead:00000000 I2C_RequestMemoryRead
/tmp/cc5G5cqz.s:4388 .text.HAL_I2C_Mem_Read:0000022c $d
/tmp/cc5G5cqz.s:4394 .text.HAL_I2C_Mem_Write_IT:00000000 $t
/tmp/cc5G5cqz.s:4400 .text.HAL_I2C_Mem_Write_IT:00000000 HAL_I2C_Mem_Write_IT
/tmp/cc5G5cqz.s:4577 .text.HAL_I2C_Mem_Write_IT:00000100 $d
/tmp/cc5G5cqz.s:9572 .text.I2C_Mem_ISR_IT:00000000 I2C_Mem_ISR_IT
/tmp/cc5G5cqz.s:4584 .text.HAL_I2C_Mem_Read_IT:00000000 $t
/tmp/cc5G5cqz.s:4590 .text.HAL_I2C_Mem_Read_IT:00000000 HAL_I2C_Mem_Read_IT
/tmp/cc5G5cqz.s:4767 .text.HAL_I2C_Mem_Read_IT:00000100 $d
/tmp/cc5G5cqz.s:4774 .text.HAL_I2C_Mem_Write_DMA:00000000 $t
/tmp/cc5G5cqz.s:4780 .text.HAL_I2C_Mem_Write_DMA:00000000 HAL_I2C_Mem_Write_DMA
/tmp/cc5G5cqz.s:5078 .text.HAL_I2C_Mem_Write_DMA:000001b8 $d
/tmp/cc5G5cqz.s:10671 .text.I2C_Mem_ISR_DMA:00000000 I2C_Mem_ISR_DMA
/tmp/cc5G5cqz.s:5087 .text.HAL_I2C_Mem_Read_DMA:00000000 $t
/tmp/cc5G5cqz.s:5093 .text.HAL_I2C_Mem_Read_DMA:00000000 HAL_I2C_Mem_Read_DMA
/tmp/cc5G5cqz.s:5391 .text.HAL_I2C_Mem_Read_DMA:000001b8 $d
/tmp/cc5G5cqz.s:5400 .text.HAL_I2C_IsDeviceReady:00000000 $t
/tmp/cc5G5cqz.s:5406 .text.HAL_I2C_IsDeviceReady:00000000 HAL_I2C_IsDeviceReady
/tmp/cc5G5cqz.s:5744 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 $t
/tmp/cc5G5cqz.s:5750 .text.HAL_I2C_Master_Seq_Transmit_IT:00000000 HAL_I2C_Master_Seq_Transmit_IT
/tmp/cc5G5cqz.s:15015 .text.I2C_ConvertOtherXferOptions:00000000 I2C_ConvertOtherXferOptions
/tmp/cc5G5cqz.s:5934 .text.HAL_I2C_Master_Seq_Transmit_IT:00000100 $d
/tmp/cc5G5cqz.s:5940 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 $t
/tmp/cc5G5cqz.s:5946 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000 HAL_I2C_Master_Seq_Transmit_DMA
/tmp/cc5G5cqz.s:6285 .text.HAL_I2C_Master_Seq_Transmit_DMA:000001f4 $d
/tmp/cc5G5cqz.s:6294 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 $t
/tmp/cc5G5cqz.s:6300 .text.HAL_I2C_Master_Seq_Receive_IT:00000000 HAL_I2C_Master_Seq_Receive_IT
/tmp/cc5G5cqz.s:6484 .text.HAL_I2C_Master_Seq_Receive_IT:00000100 $d
/tmp/cc5G5cqz.s:6490 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 $t
/tmp/cc5G5cqz.s:6496 .text.HAL_I2C_Master_Seq_Receive_DMA:00000000 HAL_I2C_Master_Seq_Receive_DMA
/tmp/cc5G5cqz.s:6835 .text.HAL_I2C_Master_Seq_Receive_DMA:000001f4 $d
/tmp/cc5G5cqz.s:6844 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 $t
/tmp/cc5G5cqz.s:6850 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000 HAL_I2C_Slave_Seq_Transmit_IT
/tmp/cc5G5cqz.s:14880 .text.I2C_Disable_IRQ:00000000 I2C_Disable_IRQ
/tmp/cc5G5cqz.s:7084 .text.HAL_I2C_Slave_Seq_Transmit_IT:0000015c $d
/tmp/cc5G5cqz.s:13725 .text.I2C_DMAAbort:00000000 I2C_DMAAbort
/tmp/cc5G5cqz.s:7090 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 $t
/tmp/cc5G5cqz.s:7096 .text.HAL_I2C_Slave_Seq_Transmit_DMA:00000000 HAL_I2C_Slave_Seq_Transmit_DMA
/tmp/cc5G5cqz.s:7522 .text.HAL_I2C_Slave_Seq_Transmit_DMA:0000027c $d
/tmp/cc5G5cqz.s:7530 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 $t
/tmp/cc5G5cqz.s:7536 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000 HAL_I2C_Slave_Seq_Receive_IT
/tmp/cc5G5cqz.s:7770 .text.HAL_I2C_Slave_Seq_Receive_IT:0000015c $d
/tmp/cc5G5cqz.s:7776 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 $t
/tmp/cc5G5cqz.s:7782 .text.HAL_I2C_Slave_Seq_Receive_DMA:00000000 HAL_I2C_Slave_Seq_Receive_DMA
/tmp/cc5G5cqz.s:8208 .text.HAL_I2C_Slave_Seq_Receive_DMA:0000027c $d
/tmp/cc5G5cqz.s:8216 .text.HAL_I2C_EnableListen_IT:00000000 $t
/tmp/cc5G5cqz.s:8222 .text.HAL_I2C_EnableListen_IT:00000000 HAL_I2C_EnableListen_IT
/tmp/cc5G5cqz.s:8274 .text.HAL_I2C_EnableListen_IT:0000003c $d
ARM GAS /tmp/cc5G5cqz.s page 398
/tmp/cc5G5cqz.s:8279 .text.HAL_I2C_DisableListen_IT:00000000 $t
/tmp/cc5G5cqz.s:8285 .text.HAL_I2C_DisableListen_IT:00000000 HAL_I2C_DisableListen_IT
/tmp/cc5G5cqz.s:8361 .text.HAL_I2C_Master_Abort_IT:00000000 $t
/tmp/cc5G5cqz.s:8367 .text.HAL_I2C_Master_Abort_IT:00000000 HAL_I2C_Master_Abort_IT
/tmp/cc5G5cqz.s:8476 .text.HAL_I2C_Master_Abort_IT:0000009c $d
/tmp/cc5G5cqz.s:8481 .text.HAL_I2C_EV_IRQHandler:00000000 $t
/tmp/cc5G5cqz.s:8487 .text.HAL_I2C_EV_IRQHandler:00000000 HAL_I2C_EV_IRQHandler
/tmp/cc5G5cqz.s:8542 .text.HAL_I2C_ER_IRQHandler:00000000 $t
/tmp/cc5G5cqz.s:8548 .text.HAL_I2C_ER_IRQHandler:00000000 HAL_I2C_ER_IRQHandler
/tmp/cc5G5cqz.s:12814 .text.I2C_ITError:00000000 I2C_ITError
/tmp/cc5G5cqz.s:8683 .text.HAL_I2C_MasterTxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8689 .text.HAL_I2C_MasterTxCpltCallback:00000000 HAL_I2C_MasterTxCpltCallback
/tmp/cc5G5cqz.s:8719 .text.HAL_I2C_MasterRxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8725 .text.HAL_I2C_MasterRxCpltCallback:00000000 HAL_I2C_MasterRxCpltCallback
/tmp/cc5G5cqz.s:8755 .text.HAL_I2C_SlaveTxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8761 .text.HAL_I2C_SlaveTxCpltCallback:00000000 HAL_I2C_SlaveTxCpltCallback
/tmp/cc5G5cqz.s:8791 .text.HAL_I2C_SlaveRxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8797 .text.HAL_I2C_SlaveRxCpltCallback:00000000 HAL_I2C_SlaveRxCpltCallback
/tmp/cc5G5cqz.s:8827 .text.HAL_I2C_AddrCallback:00000000 $t
/tmp/cc5G5cqz.s:8833 .text.HAL_I2C_AddrCallback:00000000 HAL_I2C_AddrCallback
/tmp/cc5G5cqz.s:8867 .text.HAL_I2C_ListenCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8873 .text.HAL_I2C_ListenCpltCallback:00000000 HAL_I2C_ListenCpltCallback
/tmp/cc5G5cqz.s:8903 .text.HAL_I2C_MemTxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8909 .text.HAL_I2C_MemTxCpltCallback:00000000 HAL_I2C_MemTxCpltCallback
/tmp/cc5G5cqz.s:8939 .text.HAL_I2C_MemRxCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:8945 .text.HAL_I2C_MemRxCpltCallback:00000000 HAL_I2C_MemRxCpltCallback
/tmp/cc5G5cqz.s:8975 .text.HAL_I2C_ErrorCallback:00000000 $t
/tmp/cc5G5cqz.s:8981 .text.HAL_I2C_ErrorCallback:00000000 HAL_I2C_ErrorCallback
/tmp/cc5G5cqz.s:9011 .text.HAL_I2C_AbortCpltCallback:00000000 $t
/tmp/cc5G5cqz.s:9017 .text.HAL_I2C_AbortCpltCallback:00000000 HAL_I2C_AbortCpltCallback
/tmp/cc5G5cqz.s:9047 .text.HAL_I2C_GetState:00000000 $t
/tmp/cc5G5cqz.s:9053 .text.HAL_I2C_GetState:00000000 HAL_I2C_GetState
/tmp/cc5G5cqz.s:9087 .text.HAL_I2C_GetMode:00000000 $t
/tmp/cc5G5cqz.s:9093 .text.HAL_I2C_GetMode:00000000 HAL_I2C_GetMode
/tmp/cc5G5cqz.s:9127 .text.HAL_I2C_GetError:00000000 $t
/tmp/cc5G5cqz.s:9133 .text.HAL_I2C_GetError:00000000 HAL_I2C_GetError
/tmp/cc5G5cqz.s:9166 .text.I2C_Master_ISR_IT:00000000 $t
/tmp/cc5G5cqz.s:11822 .text.I2C_ITMasterSeqCplt:00000000 I2C_ITMasterSeqCplt
/tmp/cc5G5cqz.s:12052 .text.I2C_ITMasterCplt:00000000 I2C_ITMasterCplt
/tmp/cc5G5cqz.s:9567 .text.I2C_Mem_ISR_IT:00000000 $t
/tmp/cc5G5cqz.s:9971 .text.I2C_Mem_ISR_IT:0000024c $d
/tmp/cc5G5cqz.s:9977 .text.I2C_Slave_ISR_IT:00000000 $t
/tmp/cc5G5cqz.s:12321 .text.I2C_ITSlaveCplt:00000000 I2C_ITSlaveCplt
/tmp/cc5G5cqz.s:12684 .text.I2C_ITListenCplt:00000000 I2C_ITListenCplt
/tmp/cc5G5cqz.s:11915 .text.I2C_ITSlaveSeqCplt:00000000 I2C_ITSlaveSeqCplt
/tmp/cc5G5cqz.s:11644 .text.I2C_ITAddrCplt:00000000 I2C_ITAddrCplt
/tmp/cc5G5cqz.s:10334 .text.I2C_Master_ISR_DMA:00000000 $t
/tmp/cc5G5cqz.s:10666 .text.I2C_Mem_ISR_DMA:00000000 $t
/tmp/cc5G5cqz.s:11058 .text.I2C_Mem_ISR_DMA:00000240 $d
/tmp/cc5G5cqz.s:11064 .text.I2C_Slave_ISR_DMA:00000000 $t
/tmp/cc5G5cqz.s:11375 .text.I2C_RequestMemoryWrite:00000000 $t
/tmp/cc5G5cqz.s:11502 .text.I2C_RequestMemoryWrite:000000a4 $d
/tmp/cc5G5cqz.s:11507 .text.I2C_RequestMemoryRead:00000000 $t
/tmp/cc5G5cqz.s:11634 .text.I2C_RequestMemoryRead:000000a4 $d
/tmp/cc5G5cqz.s:11639 .text.I2C_ITAddrCplt:00000000 $t
/tmp/cc5G5cqz.s:11817 .text.I2C_ITMasterSeqCplt:00000000 $t
/tmp/cc5G5cqz.s:11910 .text.I2C_ITSlaveSeqCplt:00000000 $t
ARM GAS /tmp/cc5G5cqz.s page 399
/tmp/cc5G5cqz.s:12047 .text.I2C_ITMasterCplt:00000000 $t
/tmp/cc5G5cqz.s:12310 .text.I2C_ITMasterCplt:0000018c $d
/tmp/cc5G5cqz.s:12316 .text.I2C_ITSlaveCplt:00000000 $t
/tmp/cc5G5cqz.s:12673 .text.I2C_ITSlaveCplt:0000020c $d
/tmp/cc5G5cqz.s:12679 .text.I2C_ITListenCplt:00000000 $t
/tmp/cc5G5cqz.s:12804 .text.I2C_ITListenCplt:000000a8 $d
/tmp/cc5G5cqz.s:12809 .text.I2C_ITError:00000000 $t
/tmp/cc5G5cqz.s:13151 .text.I2C_TreatErrorCallback:00000000 I2C_TreatErrorCallback
/tmp/cc5G5cqz.s:13139 .text.I2C_ITError:000001d4 $d
/tmp/cc5G5cqz.s:13146 .text.I2C_TreatErrorCallback:00000000 $t
/tmp/cc5G5cqz.s:13215 .text.I2C_Flush_TXDR:00000000 $t
/tmp/cc5G5cqz.s:13282 .text.I2C_DMAMasterTransmitCplt:00000000 $t
/tmp/cc5G5cqz.s:13410 .text.I2C_DMASlaveTransmitCplt:00000000 $t
/tmp/cc5G5cqz.s:13474 .text.I2C_DMAMasterReceiveCplt:00000000 $t
/tmp/cc5G5cqz.s:13602 .text.I2C_DMASlaveReceiveCplt:00000000 $t
/tmp/cc5G5cqz.s:13669 .text.I2C_DMAError:00000000 $t
/tmp/cc5G5cqz.s:13720 .text.I2C_DMAAbort:00000000 $t
/tmp/cc5G5cqz.s:13785 .text.I2C_WaitOnFlagUntilTimeout:00000000 $t
/tmp/cc5G5cqz.s:13904 .text.I2C_WaitOnTXISFlagUntilTimeout:00000000 $t
/tmp/cc5G5cqz.s:14314 .text.I2C_IsErrorOccurred:00000000 I2C_IsErrorOccurred
/tmp/cc5G5cqz.s:14015 .text.I2C_WaitOnSTOPFlagUntilTimeout:00000000 $t
/tmp/cc5G5cqz.s:14122 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000000 $t
/tmp/cc5G5cqz.s:14304 .text.I2C_WaitOnRXNEFlagUntilTimeout:00000100 $d
/tmp/cc5G5cqz.s:14309 .text.I2C_IsErrorOccurred:00000000 $t
/tmp/cc5G5cqz.s:14596 .text.I2C_IsErrorOccurred:000001bc $d
/tmp/cc5G5cqz.s:14601 .text.I2C_TransferConfig:00000000 $t
/tmp/cc5G5cqz.s:14676 .text.I2C_TransferConfig:00000060 $d
/tmp/cc5G5cqz.s:14681 .text.I2C_Enable_IRQ:00000000 $t
/tmp/cc5G5cqz.s:14868 .text.I2C_Enable_IRQ:00000104 $d
/tmp/cc5G5cqz.s:14875 .text.I2C_Disable_IRQ:00000000 $t
/tmp/cc5G5cqz.s:15010 .text.I2C_ConvertOtherXferOptions:00000000 $t
UNDEFINED SYMBOLS
HAL_GetTick
HAL_DMA_Start_IT
HAL_DMA_Abort_IT
HAL_DMA_GetState