📄 stm32f10x_exti.lst
字号:
###############################################################################
# #
# IAR ANSI C/C++ Compiler V6.10.2.52244/W32 for ARM 07/Aug/2011 12:10:36 #
# 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_exti.c #
# Command line = F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10 #
# x_StdPeriph_Driver\src\stm32f10x_exti.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_exti.lst #
# Object file = F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Obj #
# \stm32f10x_exti.o #
# #
# #
###############################################################################
F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c
1 /**
2 ******************************************************************************
3 * @file stm32f10x_exti.c
4 * @author MCD Application Team
5 * @version V3.4.0
6 * @date 10/15/2010
7 * @brief This file provides all the EXTI 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_exti.h"
23
24 /** @addtogroup STM32F10x_StdPeriph_Driver
25 * @{
26 */
27
28 /** @defgroup EXTI
29 * @brief EXTI driver modules
30 * @{
31 */
32
33 /** @defgroup EXTI_Private_TypesDefinitions
34 * @{
35 */
36
37 /**
38 * @}
39 */
40
41 /** @defgroup EXTI_Private_Defines
42 * @{
43 */
44
45 #define EXTI_LINENONE ((uint32_t)0x00000) /* No interrupt selected */
46
47 /**
48 * @}
49 */
50
51 /** @defgroup EXTI_Private_Macros
52 * @{
53 */
54
55 /**
56 * @}
57 */
58
59 /** @defgroup EXTI_Private_Variables
60 * @{
61 */
62
63 /**
64 * @}
65 */
66
67 /** @defgroup EXTI_Private_FunctionPrototypes
68 * @{
69 */
70
71 /**
72 * @}
73 */
74
75 /** @defgroup EXTI_Private_Functions
76 * @{
77 */
78
79 /**
80 * @brief Deinitializes the EXTI peripheral registers to their default reset values.
81 * @param None
82 * @retval None
83 */
\ In section .text, align 2, keep-with-next
84 void EXTI_DeInit(void)
85 {
86 EXTI->IMR = 0x00000000;
\ EXTI_DeInit:
\ 00000000 .... LDR.N R0,??DataTable6 ;; 0x40010400
\ 00000002 0021 MOVS R1,#+0
\ 00000004 0160 STR R1,[R0, #+0]
87 EXTI->EMR = 0x00000000;
\ 00000006 .... LDR.N R0,??DataTable6_1 ;; 0x40010404
\ 00000008 0021 MOVS R1,#+0
\ 0000000A 0160 STR R1,[R0, #+0]
88 EXTI->RTSR = 0x00000000;
\ 0000000C .... LDR.N R0,??DataTable6_2 ;; 0x40010408
\ 0000000E 0021 MOVS R1,#+0
\ 00000010 0160 STR R1,[R0, #+0]
89 EXTI->FTSR = 0x00000000;
\ 00000012 .... LDR.N R0,??DataTable6_3 ;; 0x4001040c
\ 00000014 0021 MOVS R1,#+0
\ 00000016 0160 STR R1,[R0, #+0]
90 EXTI->PR = 0x000FFFFF;
\ 00000018 .... LDR.N R0,??DataTable6_4 ;; 0x40010414
\ 0000001A .... LDR.N R1,??DataTable6_5 ;; 0xfffff
\ 0000001C 0160 STR R1,[R0, #+0]
91 }
\ 0000001E 7047 BX LR ;; return
92
93 /**
94 * @brief Initializes the EXTI peripheral according to the specified
95 * parameters in the EXTI_InitStruct.
96 * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure
97 * that contains the configuration information for the EXTI peripheral.
98 * @retval None
99 */
\ In section .text, align 2, keep-with-next
100 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
101 {
102 uint32_t tmp = 0;
\ EXTI_Init:
\ 00000000 0021 MOVS R1,#+0
103
104 /* Check the parameters */
105 assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
106 assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
107 assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
108 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
109
110 tmp = (uint32_t)EXTI_BASE;
\ 00000002 .... LDR.N R2,??DataTable6 ;; 0x40010400
\ 00000004 1100 MOVS R1,R2
111
112 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
\ 00000006 8279 LDRB R2,[R0, #+6]
\ 00000008 002A CMP R2,#+0
\ 0000000A 36D0 BEQ.N ??EXTI_Init_0
113 {
114 /* Clear EXTI line configuration */
115 EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
\ 0000000C .... LDR.N R2,??DataTable6 ;; 0x40010400
\ 0000000E 1268 LDR R2,[R2, #+0]
\ 00000010 0368 LDR R3,[R0, #+0]
\ 00000012 9A43 BICS R2,R2,R3
\ 00000014 .... LDR.N R3,??DataTable6 ;; 0x40010400
\ 00000016 1A60 STR R2,[R3, #+0]
116 EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
\ 00000018 .... LDR.N R2,??DataTable6_1 ;; 0x40010404
\ 0000001A 1268 LDR R2,[R2, #+0]
\ 0000001C 0368 LDR R3,[R0, #+0]
\ 0000001E 9A43 BICS R2,R2,R3
\ 00000020 .... LDR.N R3,??DataTable6_1 ;; 0x40010404
\ 00000022 1A60 STR R2,[R3, #+0]
117
118 tmp += EXTI_InitStruct->EXTI_Mode;
\ 00000024 0279 LDRB R2,[R0, #+4]
\ 00000026 5118 ADDS R1,R2,R1
119
120 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
\ 00000028 0A68 LDR R2,[R1, #+0]
\ 0000002A 0368 LDR R3,[R0, #+0]
\ 0000002C 1A43 ORRS R2,R3,R2
\ 0000002E 0A60 STR R2,[R1, #+0]
121
122 /* Clear Rising Falling edge configuration */
123 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
\ 00000030 .... LDR.N R2,??DataTable6_2 ;; 0x40010408
\ 00000032 1268 LDR R2,[R2, #+0]
\ 00000034 0368 LDR R3,[R0, #+0]
\ 00000036 9A43 BICS R2,R2,R3
\ 00000038 .... LDR.N R3,??DataTable6_2 ;; 0x40010408
\ 0000003A 1A60 STR R2,[R3, #+0]
124 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
\ 0000003C .... LDR.N R2,??DataTable6_3 ;; 0x4001040c
\ 0000003E 1268 LDR R2,[R2, #+0]
\ 00000040 0368 LDR R3,[R0, #+0]
\ 00000042 9A43 BICS R2,R2,R3
\ 00000044 .... LDR.N R3,??DataTable6_3 ;; 0x4001040c
\ 00000046 1A60 STR R2,[R3, #+0]
125
126 /* Select the trigger for the selected external interrupts */
127 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
\ 00000048 4279 LDRB R2,[R0, #+5]
\ 0000004A 102A CMP R2,#+16
\ 0000004C 0CD1 BNE.N ??EXTI_Init_1
128 {
129 /* Rising Falling edge */
130 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
\ 0000004E .... LDR.N R2,??DataTable6_2 ;; 0x40010408
\ 00000050 1268 LDR R2,[R2, #+0]
\ 00000052 0368 LDR R3,[R0, #+0]
\ 00000054 1A43 ORRS R2,R3,R2
\ 00000056 .... LDR.N R3,??DataTable6_2 ;; 0x40010408
\ 00000058 1A60 STR R2,[R3, #+0]
131 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
\ 0000005A .... LDR.N R2,??DataTable6_3 ;; 0x4001040c
\ 0000005C 1268 LDR R2,[R2, #+0]
\ 0000005E 0368 LDR R3,[R0, #+0]
\ 00000060 1A43 ORRS R2,R3,R2
\ 00000062 .... LDR.N R3,??DataTable6_3 ;; 0x4001040c
\ 00000064 1A60 STR R2,[R3, #+0]
\ 00000066 0EE0 B.N ??EXTI_Init_2
132 }
133 else
134 {
135 tmp = (uint32_t)EXTI_BASE;
\ ??EXTI_Init_1:
\ 00000068 .... LDR.N R2,??DataTable6 ;; 0x40010400
\ 0000006A 1100 MOVS R1,R2
136 tmp += EXTI_InitStruct->EXTI_Trigger;
\ 0000006C 4279 LDRB R2,[R0, #+5]
\ 0000006E 5118 ADDS R1,R2,R1
137
138 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
\ 00000070 0A68 LDR R2,[R1, #+0]
\ 00000072 0368 LDR R3,[R0, #+0]
\ 00000074 1A43 ORRS R2,R3,R2
\ 00000076 0A60 STR R2,[R1, #+0]
\ 00000078 05E0 B.N ??EXTI_Init_2
139 }
140 }
141 else
142 {
143 tmp += EXTI_InitStruct->EXTI_Mode;
\ ??EXTI_Init_0:
\ 0000007A 0279 LDRB R2,[R0, #+4]
\ 0000007C 5118 ADDS R1,R2,R1
144
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -