📄 stm32f10x_usart.s
字号:
///////////////////////////////////////////////////////////////////////////////
// /
// 30/Jul/2008 14:37:36 /
// 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_usart.c /
// Command line = E:\library\src\stm32f10x_usart.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_usart.s /
// /
// /
///////////////////////////////////////////////////////////////////////////////
NAME stm32f10x_usart
EXTERN RCC_APB1PeriphResetCmd
EXTERN RCC_APB2PeriphResetCmd
EXTERN RCC_GetClocksFreq
PUBLIC USART_ClearFlag
PUBLIC USART_ClearITPendingBit
PUBLIC USART_Cmd
PUBLIC USART_DMACmd
PUBLIC USART_DeInit
PUBLIC USART_GetFlagStatus
PUBLIC USART_GetITStatus
PUBLIC USART_HalfDuplexCmd
PUBLIC USART_ITConfig
PUBLIC USART_Init
PUBLIC USART_IrDACmd
PUBLIC USART_IrDAConfig
PUBLIC USART_LINBreakDetectLengthConfig
PUBLIC USART_LINCmd
PUBLIC USART_ReceiveData
PUBLIC USART_ReceiverWakeUpCmd
PUBLIC USART_SendBreak
PUBLIC USART_SendData
PUBLIC USART_SetAddress
PUBLIC USART_SetGuardTime
PUBLIC USART_SetPrescaler
PUBLIC USART_SmartCardCmd
PUBLIC USART_SmartCardNACKCmd
PUBLIC USART_StructInit
PUBLIC USART_WakeUpConfig
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_DeInit:
PUSH {R4,LR}
MOVS R4,R0
MOVS R0,R4
LDR.N R1,??USART_DeInit_0 ;; 0x40004400
SUBS R0,R0,R1
BEQ.N ??USART_DeInit_1
MOVS R1,#+1024
SUBS R0,R0,R1
BEQ.N ??USART_DeInit_2
MOVS R1,#+61440
SUBS R0,R0,R1
BNE.N ??USART_DeInit_3
??USART_DeInit_4:
MOVS R1,#+1
MOVS R0,#+16384
BL RCC_APB2PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+16384
BL RCC_APB2PeriphResetCmd
B.N ??USART_DeInit_3
??USART_DeInit_1:
MOVS R1,#+1
MOVS R0,#+131072
BL RCC_APB1PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+131072
BL RCC_APB1PeriphResetCmd
B.N ??USART_DeInit_3
??USART_DeInit_2:
MOVS R1,#+1
MOVS R0,#+262144
BL RCC_APB1PeriphResetCmd
MOVS R1,#+0
MOVS R0,#+262144
BL RCC_APB1PeriphResetCmd
??USART_DeInit_3:
POP {R4,PC} ;; return
Nop
DATA
??USART_DeInit_0:
DC32 0x40004400
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_Init:
PUSH {R4-R7,LR}
SUB SP,SP,#+28
MOVS R4,R0
MOVS R5,R1
MOVS R0,#+0
MOVS R7,R0
MOVS R0,#+0
STR R0,[SP, #+0]
MOVS R0,#+0
MOVS R6,R0
MOVS R0,#+0
STR R0,[SP, #+4]
LDRH R0,[R4, #+16]
MOVS R7,R0
MOVS R0,R7
LDR.N R7,??USART_Init_0 ;; 0xc0ff
ANDS R7,R7,R0
LDRH R0,[R5, #+6]
LDRH R1,[R5, #+14]
ORRS R1,R1,R0
LDRH R0,[R5, #+16]
ORRS R0,R0,R1
LDRH R1,[R5, #+18]
ORRS R1,R1,R0
LDRH R0,[R5, #+20]
ORRS R0,R0,R1
ORRS R0,R0,R7
MOVS R7,R0
MOVS R0,R7
STRH R0,[R4, #+16]
MOVS R0,#+0
MOVS R7,R0
LDRH R0,[R4, #+12]
MOVS R7,R0
MOVS R0,R7
LDR.N R7,??USART_Init_0+0x4 ;; 0xe9f3
ANDS R7,R7,R0
LDRH R0,[R5, #+4]
LDRH R1,[R5, #+8]
ORRS R1,R1,R0
LDRH R0,[R5, #+12]
ORRS R0,R0,R1
ORRS R0,R0,R7
MOVS R7,R0
MOVS R0,R7
STRH R0,[R4, #+12]
MOVS R0,#+0
MOVS R7,R0
LDRH R0,[R4, #+20]
MOVS R7,R0
MOVS R0,R7
LDR.N R7,??USART_Init_0+0x8 ;; 0xfcff
ANDS R7,R7,R0
MOVS R0,R7
LDRH R7,[R5, #+10]
ORRS R7,R7,R0
MOVS R0,R7
STRH R0,[R4, #+20]
MOVS R0,#+0
MOVS R7,R0
ADD R0,SP,#+8
BL RCC_GetClocksFreq
LDR.N R0,??USART_Init_0+0xC ;; 0x40013800
CMP R4,R0
BNE.N ??USART_Init_1
LDR R0,[SP, #+20]
STR R0,[SP, #+0]
B.N ??USART_Init_2
??USART_Init_1:
LDR R0,[SP, #+16]
STR R0,[SP, #+0]
??USART_Init_2:
LDR R0,[SP, #+0]
MOVS R1,#+25
MULS R0,R1,R0
LDR R1,[R5, #+0]
MOVS R2,#+4
MULS R1,R2,R1
UDIV R6,R0,R1
MOVS R0,#+100
UDIV R0,R6,R0
LSLS R7,R0,#+4
LSRS R0,R7,#+4
MOVS R1,#+100
MLS R0,R0,R1,R6
STR R0,[SP, #+4]
LDR R0,[SP, #+4]
MOVS R1,#+16
MULS R0,R1,R0
ADDS R0,R0,#+50
MOVS R1,#+100
UDIV R0,R0,R1
LSLS R0,R0,#+28 ;; ZeroExtS R0,R0,#+28,#+28
LSRS R0,R0,#+28
ORRS R0,R0,R7
MOVS R7,R0
MOVS R0,R7
STRH R0,[R4, #+8]
ADD SP,SP,#+28
POP {R4-R7,PC} ;; return
Nop
DATA
??USART_Init_0:
DC32 0xc0ff
DC32 0xe9f3
DC32 0xfcff
DC32 0x40013800
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_StructInit:
MOVS R1,#+9600
STR R1,[R0, #+0]
MOVS R1,#+0
STRH R1,[R0, #+4]
MOVS R1,#+0
STRH R1,[R0, #+6]
MOVS R1,#+0
STRH R1,[R0, #+8]
MOVS R1,#+0
STRH R1,[R0, #+10]
MOVS R1,#+12
STRH R1,[R0, #+12]
MOVS R1,#+0
STRH R1,[R0, #+14]
MOVS R1,#+0
STRH R1,[R0, #+16]
MOVS R1,#+0
STRH R1,[R0, #+18]
MOVS R1,#+0
STRH R1,[R0, #+20]
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_Cmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??USART_Cmd_0
LDRH R2,[R0, #+12]
ORRS R2,R2,#0x2000
STRH R2,[R0, #+12]
B.N ??USART_Cmd_1
??USART_Cmd_0:
LDRH R2,[R0, #+12]
LDR.N R3,??USART_Cmd_2 ;; 0xdfff
ANDS R3,R3,R2
STRH R3,[R0, #+12]
??USART_Cmd_1:
BX LR ;; return
Nop
DATA
??USART_Cmd_2:
DC32 0xdfff
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_ITConfig:
PUSH {R4-R7}
MOVS R7,#+0
MOVS R3,R7
MOVS R7,#+0
MOVS R4,R7
MOVS R7,#+0
MOVS R5,R7
MOVS R7,#+0
MOVS R6,R7
MOVS R7,R1
UXTB R7,R7 ;; ZeroExtS R7,R7,#+24,#+24
LSRS R7,R7,#+5
UXTB R7,R7 ;; ZeroExtS R7,R7,#+24,#+24
MOVS R3,R7
UXTH R1,R1 ;; ZeroExtS R1,R1,#+16,#+16
LSLS R7,R1,#+27 ;; ZeroExtS R7,R1,#+27,#+27
LSRS R7,R7,#+27
MOVS R4,R7
MOVS R7,#+1
LSLS R7,R7,R4
MOVS R5,R7
MOVS R6,R0
CMP R3,#+1
BNE.N ??USART_ITConfig_0
ADDS R6,R6,#+12
B.N ??USART_ITConfig_1
??USART_ITConfig_0:
CMP R3,#+2
BNE.N ??USART_ITConfig_2
ADDS R6,R6,#+16
B.N ??USART_ITConfig_1
??USART_ITConfig_2:
ADDS R6,R6,#+20
??USART_ITConfig_1:
UXTB R2,R2 ;; ZeroExtS R2,R2,#+24,#+24
CMP R2,#+0
BEQ.N ??USART_ITConfig_3
LDR R7,[R6, #+0]
ORRS R7,R7,R5
STR R7,[R6, #+0]
B.N ??USART_ITConfig_4
??USART_ITConfig_3:
LDR R7,[R6, #+0]
BICS R7,R7,R5
STR R7,[R6, #+0]
??USART_ITConfig_4:
POP {R4-R7}
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_DMACmd:
UXTB R2,R2 ;; ZeroExtS R2,R2,#+24,#+24
CMP R2,#+0
BEQ.N ??USART_DMACmd_0
LDRH R3,[R0, #+20]
ORRS R3,R3,R1
STRH R3,[R0, #+20]
B.N ??USART_DMACmd_1
??USART_DMACmd_0:
LDRH R3,[R0, #+20]
BICS R3,R3,R1
STRH R3,[R0, #+20]
??USART_DMACmd_1:
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
USART_SetAddress:
LDRH R2,[R0, #+16]
LDR.N R3,??USART_SetAddress_0 ;; 0xfff0
ANDS R3,R3,R2
STRH R3,[R0, #+16]
LDRH R2,[R0, #+16]
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
ORRS R2,R2,R1
STRH R2,[R0, #+16]
BX LR ;; return
Nop
DATA
??USART_SetAddress_0:
DC32 0xfff0
SECTION `.XML`:CODE:NOROOT(2)
THUMB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -