📄 stm32f10x_gpio.s
字号:
///////////////////////////////////////////////////////////////////////////////
// /
// 30/Jul/2008 14:37:39 /
// IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION /
// Copyright 1999-2007 IAR Systems. All rights reserved. /
// /
// Cpu mode = thumb /
// Endian = little /
// Source file = E:\library\src\stm32f10x_gpio.c /
// Command line = E:\library\src\stm32f10x_gpio.c -D EMB_FLASH -lCN /
// E:\ELE\yten\pro\Debug\List\ -lb /
// E:\ELE\yten\pro\Debug\List\ -o /
// E:\ELE\yten\pro\Debug\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 "C:\Program /
// Files\IAR Systems\Embedded Workbench 5.0 /
// Evaluation\ARM\INC\DLib_Config_Normal.h" -I /
// E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I /
// "C:\Program Files\IAR Systems\Embedded Workbench 5.0 /
// Evaluation\ARM\INC\" --section .text=.XML -On /
// List file = E:\ELE\yten\pro\Debug\List\stm32f10x_gpio.s /
// /
// /
///////////////////////////////////////////////////////////////////////////////
NAME stm32f10x_gpio
EXTERN RCC_APB2PeriphResetCmd
PUBLIC GPIO_AFIODeInit
PUBLIC GPIO_DeInit
PUBLIC GPIO_EXTILineConfig
PUBLIC GPIO_EventOutputCmd
PUBLIC GPIO_EventOutputConfig
PUBLIC GPIO_Init
PUBLIC GPIO_PinLockConfig
PUBLIC GPIO_PinRemapConfig
PUBLIC GPIO_ReadInputData
PUBLIC GPIO_ReadInputDataBit
PUBLIC GPIO_ReadOutputData
PUBLIC GPIO_ReadOutputDataBit
PUBLIC GPIO_ResetBits
PUBLIC GPIO_SetBits
PUBLIC GPIO_StructInit
PUBLIC GPIO_Write
PUBLIC GPIO_WriteBit
SECTION `.XML`:CODE:NOROOT(2)
THUMB
GPIO_DeInit:
PUSH {R4,LR}
MOVS R4,R0
MOVS R0,R4
LDR.N R1,??GPIO_DeInit_0 ;; 0x40010800
SUBS R0,R0,R1
BEQ.N ??GPIO_DeInit_1
MOVS R1,#+1024
SUBS R0,R0,R1
BEQ.N ??GPIO_DeInit_2
MOVS R1,#+1024
SUBS R0,R0,R1
BEQ.N ??GPIO_DeInit_3
MOVS R1,#+1024
SUBS R0,R0,R1
BEQ.N ??GPIO_DeInit_4
MOVS R1,#+1024
SUBS R0,R0,R1
BEQ.N ??GPIO_DeInit_5
B.N ??GPIO_DeInit_6
??GPIO_DeInit_1:
MOVS R1,#+1
MOVS R0,#+4
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+4
BL RCC_APB2PeriphResetCmd
B.N ??GPIO_DeInit_6
??GPIO_DeInit_2:
MOVS R1,#+1
MOVS R0,#+8
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+8
BL RCC_APB2PeriphResetCmd
B.N ??GPIO_DeInit_6
??GPIO_DeInit_3:
MOVS R1,#+1
MOVS R0,#+16
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+16
BL RCC_APB2PeriphResetCmd
B.N ??GPIO_DeInit_6
??GPIO_DeInit_4:
MOVS R1,#+1
MOVS R0,#+32
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+32
BL RCC_APB2PeriphResetCmd
B.N ??GPIO_DeInit_6
??GPIO_DeInit_5:
MOVS R1,#+1
MOVS R0,#+64
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+64
BL RCC_APB2PeriphResetCmd
??GPIO_DeInit_6:
POP {R4,PC} ;; return
DATA
??GPIO_DeInit_0:
DC32 0x40010800
SECTION `.XML`:CODE:NOROOT(2)
THUMB
GPIO_AFIODeInit:
PUSH {R0,LR}
MOVS R1,#+1
MOVS R0,#+1
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+1
BL RCC_APB2PeriphResetCmd
ADD SP,SP,#+4
POP {PC} ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
GPIO_Init:
PUSH {R0,R1,R4-R7}
MOVS R6,#+0
MOVS R5,R6
MOVS R6,#+0
STR R6,[SP, #+0]
MOVS R6,#+0
MOVS R2,R6
MOVS R6,#+0
MOVS R3,R6
MOVS R6,#+0
MOVS R4,R6
MOVS R6,#+0
STR R6,[SP, #+4]
LDRB R6,[R1, #+3]
LSLS R6,R6,#+28 ;; ZeroExtS R6,R6,#+28,#+28
LSRS R6,R6,#+28
MOVS R5,R6
LDRB R6,[R1, #+3]
LSLS R6,R6,#+27
BPL.N ??GPIO_Init_0
MOVS R6,R5
LDRB R5,[R1, #+2]
ORRS R5,R5,R6
??GPIO_Init_0:
LDRH R6,[R1, #+0]
LSLS R6,R6,#+24
BEQ.N ??GPIO_Init_1
LDR R6,[R0, #+0]
MOVS R4,R6
MOVS R6,#+0
MOVS R2,R6
??GPIO_Init_2:
CMP R2,#+8
BCS.N ??GPIO_Init_3
MOVS R6,#+1
LSLS R6,R6,R2
MOVS R3,R6
LDRH R6,[R1, #+0]
ANDS R6,R6,R3
STR R6,[SP, #+0]
LDR R6,[SP, #+0]
CMP R6,R3
BNE.N ??GPIO_Init_4
LSLS R3,R2,#+2
MOVS R6,#+15
LSLS R6,R6,R3
STR R6,[SP, #+4]
LDR R6,[SP, #+4]
BICS R4,R4,R6
MOVS R6,R4
MOVS R4,R5
LSLS R4,R4,R3
ORRS R4,R4,R6
LDRB R6,[R1, #+3]
CMP R6,#+40
BNE.N ??GPIO_Init_5
MOVS R6,#+1
LSLS R6,R6,R2
STR R6,[R0, #+20]
??GPIO_Init_5:
LDRB R6,[R1, #+3]
CMP R6,#+72
BNE.N ??GPIO_Init_4
MOVS R6,#+1
LSLS R6,R6,R2
STR R6,[R0, #+16]
??GPIO_Init_4:
ADDS R2,R2,#+1
B.N ??GPIO_Init_2
??GPIO_Init_3:
STR R4,[R0, #+0]
MOVS R6,#+0
MOVS R4,R6
??GPIO_Init_1:
LDRH R6,[R1, #+0]
MOVS R7,#+256
CMP R6,R7
BCC.N ??GPIO_Init_6
LDR R6,[R0, #+4]
MOVS R4,R6
MOVS R6,#+0
MOVS R2,R6
??GPIO_Init_7:
CMP R2,#+8
BCS.N ??GPIO_Init_8
MOVS R6,#+1
MOVS R7,R2
ADDS R7,R7,#+8
LSLS R6,R6,R7
MOVS R3,R6
LDRH R6,[R1, #+0]
ANDS R6,R6,R3
STR R6,[SP, #+0]
LDR R6,[SP, #+0]
CMP R6,R3
BNE.N ??GPIO_Init_9
LSLS R3,R2,#+2
MOVS R6,#+15
LSLS R6,R6,R3
STR R6,[SP, #+4]
LDR R6,[SP, #+4]
BICS R4,R4,R6
MOVS R6,R4
MOVS R4,R5
LSLS R4,R4,R3
ORRS R4,R4,R6
LDRB R6,[R1, #+3]
CMP R6,#+40
BNE.N ??GPIO_Init_10
MOVS R6,#+1
MOVS R7,R2
ADDS R7,R7,#+8
LSLS R6,R6,R7
STR R6,[R0, #+20]
??GPIO_Init_10:
LDRB R6,[R1, #+3]
CMP R6,#+72
BNE.N ??GPIO_Init_9
MOVS R6,#+1
MOVS R7,R2
ADDS R7,R7,#+8
LSLS R6,R6,R7
STR R6,[R0, #+16]
??GPIO_Init_9:
ADDS R2,R2,#+1
B.N ??GPIO_Init_7
??GPIO_Init_8:
STR R4,[R0, #+4]
??GPIO_Init_6:
ADD SP,SP,#+8
POP {R4-R7}
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
GPIO_StructInit:
LDR.N R1,??GPIO_StructInit_0 ;; 0xffff
STRH R1,[R0, #+0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -