📄 stm32f10x_i2c.lst
字号:
###############################################################################
# #
# IAR ANSI C/C++ Compiler V6.10.2.52244/W32 for ARM 07/Aug/2011 12:10:18 #
# Copyright 1999-2010 IAR Systems AB. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10 #
# x_StdPeriph_Driver\src\stm32f10x_i2c.c #
# Command line = F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10 #
# x_StdPeriph_Driver\src\stm32f10x_i2c.c -D #
# USE_STDPERIPH_DRIVER -D STM32F10X_CL -lCN #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Lis #
# t\ -o F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Fla #
# sh\Obj\ --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian=little --cpu=Cortex-M3 #
# -e --fpu=None --dlib_config #
# D:\arm\INC\c\DLib_Config_Normal.h -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\APP\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ #
# -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP #
# \ST\CMSIS\CM3\CoreSupport\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ST #
# \CMSIS\CM3\DeviceSupport\ST\STM32F10x\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ST #
# \STM32F10x_StdPeriph_Driver\inc\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\uC #
# OS-II\ -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II #
# \..\..\uCOS-II\Ports\ARM-Cortex-M3\Generic\IAR\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\..\uCO #
# S-II\Source\ -I F:\stm32\我的程序\Micrium\Software\EWARM #
# \OS-II\..\..\uC-LIB\ -I F:\stm32\我的程序\Micrium\Softwa #
# re\EWARM\OS-II\..\..\uC-LIB\Ports\ARM-Cortex-M3\IAR\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\..\uC- #
# CPU\ -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\. #
# .\..\uC-CPU\ARM-Cortex-M3\IAR\ -On --use_c++_inline #
# List file = F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Lis #
# t\stm32f10x_i2c.lst #
# Object file = F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Obj #
# \stm32f10x_i2c.o #
# #
# #
###############################################################################
F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c
1 /**
2 ******************************************************************************
3 * @file stm32f10x_i2c.c
4 * @author MCD Application Team
5 * @version V3.4.0
6 * @date 10/15/2010
7 * @brief This file provides all the I2C firmware functions.
8 ******************************************************************************
9 * @copy
10 *
11 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
17 *
18 * <h2><center>© COPYRIGHT 2010 STMicroelectronics</center></h2>
19 */
20
21 /* Includes ------------------------------------------------------------------*/
22 #include "stm32f10x_i2c.h"
23 #include "stm32f10x_rcc.h"
24
25
26 /** @addtogroup STM32F10x_StdPeriph_Driver
27 * @{
28 */
29
30 /** @defgroup I2C
31 * @brief I2C driver modules
32 * @{
33 */
34
35 /** @defgroup I2C_Private_TypesDefinitions
36 * @{
37 */
38
39 /**
40 * @}
41 */
42
43 /** @defgroup I2C_Private_Defines
44 * @{
45 */
46
47 /* I2C SPE mask */
48 #define CR1_PE_Set ((uint16_t)0x0001)
49 #define CR1_PE_Reset ((uint16_t)0xFFFE)
50
51 /* I2C START mask */
52 #define CR1_START_Set ((uint16_t)0x0100)
53 #define CR1_START_Reset ((uint16_t)0xFEFF)
54
55 /* I2C STOP mask */
56 #define CR1_STOP_Set ((uint16_t)0x0200)
57 #define CR1_STOP_Reset ((uint16_t)0xFDFF)
58
59 /* I2C ACK mask */
60 #define CR1_ACK_Set ((uint16_t)0x0400)
61 #define CR1_ACK_Reset ((uint16_t)0xFBFF)
62
63 /* I2C ENGC mask */
64 #define CR1_ENGC_Set ((uint16_t)0x0040)
65 #define CR1_ENGC_Reset ((uint16_t)0xFFBF)
66
67 /* I2C SWRST mask */
68 #define CR1_SWRST_Set ((uint16_t)0x8000)
69 #define CR1_SWRST_Reset ((uint16_t)0x7FFF)
70
71 /* I2C PEC mask */
72 #define CR1_PEC_Set ((uint16_t)0x1000)
73 #define CR1_PEC_Reset ((uint16_t)0xEFFF)
74
75 /* I2C ENPEC mask */
76 #define CR1_ENPEC_Set ((uint16_t)0x0020)
77 #define CR1_ENPEC_Reset ((uint16_t)0xFFDF)
78
79 /* I2C ENARP mask */
80 #define CR1_ENARP_Set ((uint16_t)0x0010)
81 #define CR1_ENARP_Reset ((uint16_t)0xFFEF)
82
83 /* I2C NOSTRETCH mask */
84 #define CR1_NOSTRETCH_Set ((uint16_t)0x0080)
85 #define CR1_NOSTRETCH_Reset ((uint16_t)0xFF7F)
86
87 /* I2C registers Masks */
88 #define CR1_CLEAR_Mask ((uint16_t)0xFBF5)
89
90 /* I2C DMAEN mask */
91 #define CR2_DMAEN_Set ((uint16_t)0x0800)
92 #define CR2_DMAEN_Reset ((uint16_t)0xF7FF)
93
94 /* I2C LAST mask */
95 #define CR2_LAST_Set ((uint16_t)0x1000)
96 #define CR2_LAST_Reset ((uint16_t)0xEFFF)
97
98 /* I2C FREQ mask */
99 #define CR2_FREQ_Reset ((uint16_t)0xFFC0)
100
101 /* I2C ADD0 mask */
102 #define OAR1_ADD0_Set ((uint16_t)0x0001)
103 #define OAR1_ADD0_Reset ((uint16_t)0xFFFE)
104
105 /* I2C ENDUAL mask */
106 #define OAR2_ENDUAL_Set ((uint16_t)0x0001)
107 #define OAR2_ENDUAL_Reset ((uint16_t)0xFFFE)
108
109 /* I2C ADD2 mask */
110 #define OAR2_ADD2_Reset ((uint16_t)0xFF01)
111
112 /* I2C F/S mask */
113 #define CCR_FS_Set ((uint16_t)0x8000)
114
115 /* I2C CCR mask */
116 #define CCR_CCR_Set ((uint16_t)0x0FFF)
117
118 /* I2C FLAG mask */
119 #define FLAG_Mask ((uint32_t)0x00FFFFFF)
120
121 /* I2C Interrupt Enable mask */
122 #define ITEN_Mask ((uint32_t)0x07000000)
123
124 /**
125 * @}
126 */
127
128 /** @defgroup I2C_Private_Macros
129 * @{
130 */
131
132 /**
133 * @}
134 */
135
136 /** @defgroup I2C_Private_Variables
137 * @{
138 */
139
140 /**
141 * @}
142 */
143
144 /** @defgroup I2C_Private_FunctionPrototypes
145 * @{
146 */
147
148 /**
149 * @}
150 */
151
152 /** @defgroup I2C_Private_Functions
153 * @{
154 */
155
156 /**
157 * @brief Deinitializes the I2Cx peripheral registers to their default reset values.
158 * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral.
159 * @retval None
160 */
\ In section .text, align 2, keep-with-next
161 void I2C_DeInit(I2C_TypeDef* I2Cx)
162 {
\ I2C_DeInit:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
163 /* Check the parameters */
164 assert_param(IS_I2C_ALL_PERIPH(I2Cx));
165
166 if (I2Cx == I2C1)
\ 00000004 .... LDR.N R0,??DataTable1 ;; 0x40005400
\ 00000006 8442 CMP R4,R0
\ 00000008 0AD1 BNE.N ??I2C_DeInit_0
167 {
168 /* Enable I2C1 reset state */
169 RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
\ 0000000A 0121 MOVS R1,#+1
\ 0000000C 5FF40010 MOVS R0,#+2097152
\ 00000010 ........ BL RCC_APB1PeriphResetCmd
170 /* Release I2C1 from reset state */
171 RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
\ 00000014 0021 MOVS R1,#+0
\ 00000016 5FF40010 MOVS R0,#+2097152
\ 0000001A ........ BL RCC_APB1PeriphResetCmd
\ 0000001E 09E0 B.N ??I2C_DeInit_1
172 }
173 else
174 {
175 /* Enable I2C2 reset state */
176 RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE);
\ ??I2C_DeInit_0:
\ 00000020 0121 MOVS R1,#+1
\ 00000022 5FF48000 MOVS R0,#+4194304
\ 00000026 ........ BL RCC_APB1PeriphResetCmd
177 /* Release I2C2 from reset state */
178 RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE);
\ 0000002A 0021 MOVS R1,#+0
\ 0000002C 5FF48000 MOVS R0,#+4194304
\ 00000030 ........ BL RCC_APB1PeriphResetCmd
179 }
180 }
\ ??I2C_DeInit_1:
\ 00000034 10BD POP {R4,PC} ;; return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -