📄 stm32f10x_rcc.s
字号:
SUBS R1,R1,#+1
BEQ.N ??RCC_LSEConfig_0
SUBS R1,R1,#+3
BEQ.N ??RCC_LSEConfig_1
B.N ??RCC_LSEConfig_2
??RCC_LSEConfig_0:
LDR.N R1,??DataTable44 ;; 0x40021020
MOVS R2,#+1
STRB R2,[R1, #+0]
B.N ??RCC_LSEConfig_2
??RCC_LSEConfig_1:
LDR.N R1,??DataTable44 ;; 0x40021020
MOVS R2,#+5
STRB R2,[R1, #+0]
??RCC_LSEConfig_2:
ADD SP,SP,#+4
POP {PC} ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_LSICmd:
LDR.N R1,??RCC_LSICmd_0 ;; 0x42420480
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
STR R0,[R1, #+0]
BX LR ;; return
DATA
??RCC_LSICmd_0:
DC32 0x42420480
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_RTCCLKConfig:
LDR.N R1,??DataTable44 ;; 0x40021020
LDR R1,[R1, #+0]
ORRS R1,R1,R0
LDR.N R2,??DataTable44 ;; 0x40021020
STR R1,[R2, #+0]
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
DATA
??DataTable44:
DC32 0x40021020
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_RTCCLKCmd:
LDR.N R1,??RCC_RTCCLKCmd_0 ;; 0x4242043c
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
STR R0,[R1, #+0]
BX LR ;; return
DATA
??RCC_RTCCLKCmd_0:
DC32 0x4242043c
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_GetClocksFreq:
PUSH {R4-R6,LR}
MOVS R5,#+0
MOVS R1,R5
MOVS R5,#+0
MOVS R2,R5
MOVS R5,#+0
MOVS R3,R5
MOVS R5,#+0
MOVS R4,R5
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R1,R5,#0xC
MOVS R5,R1
CMP R5,#+0
BEQ.N ??RCC_GetClocksFreq_1
SUBS R5,R5,#+4
BEQ.N ??RCC_GetClocksFreq_2
SUBS R5,R5,#+4
BEQ.N ??RCC_GetClocksFreq_3
B.N ??RCC_GetClocksFreq_4
??RCC_GetClocksFreq_1:
LDR.N R5,??RCC_GetClocksFreq_0+0x4 ;; 0x7a1200
STR R5,[R0, #+0]
B.N ??RCC_GetClocksFreq_5
??RCC_GetClocksFreq_2:
LDR.N R5,??RCC_GetClocksFreq_0+0x4 ;; 0x7a1200
STR R5,[R0, #+0]
B.N ??RCC_GetClocksFreq_5
??RCC_GetClocksFreq_3:
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R2,R5,#0x3C0000
LSRS R2,R2,#+18
ADDS R2,R2,#+2
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
MOVS R6,#+65536
ANDS R6,R6,R5
MOVS R3,R6
CMP R3,#+0
BNE.N ??RCC_GetClocksFreq_6
LDR.N R5,??RCC_GetClocksFreq_0+0x8 ;; 0x3d0900
MULS R5,R2,R5
STR R5,[R0, #+0]
B.N ??RCC_GetClocksFreq_5
??RCC_GetClocksFreq_6:
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
LSLS R5,R5,#+14
BPL.N ??RCC_GetClocksFreq_7
LDR.N R5,??RCC_GetClocksFreq_0+0x8 ;; 0x3d0900
MULS R5,R2,R5
STR R5,[R0, #+0]
B.N ??RCC_GetClocksFreq_5
??RCC_GetClocksFreq_7:
LDR.N R5,??RCC_GetClocksFreq_0+0x4 ;; 0x7a1200
MULS R5,R2,R5
STR R5,[R0, #+0]
B.N ??RCC_GetClocksFreq_5
??RCC_GetClocksFreq_4:
LDR.N R5,??RCC_GetClocksFreq_0+0x4 ;; 0x7a1200
STR R5,[R0, #+0]
??RCC_GetClocksFreq_5:
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R1,R5,#0xF0
LSRS R1,R1,#+4
LDR.N R5,??RCC_GetClocksFreq_0+0xC ;; APBAHBPrescTable
LDRB R5,[R5, R1]
MOVS R4,R5
LDR R5,[R0, #+0]
LSRS R5,R5,R4
STR R5,[R0, #+4]
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R1,R5,#0x700
LSRS R1,R1,#+8
LDR.N R5,??RCC_GetClocksFreq_0+0xC ;; APBAHBPrescTable
LDRB R5,[R5, R1]
MOVS R4,R5
LDR R5,[R0, #+4]
LSRS R5,R5,R4
STR R5,[R0, #+8]
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R1,R5,#0x3800
LSRS R1,R1,#+11
LDR.N R5,??RCC_GetClocksFreq_0+0xC ;; APBAHBPrescTable
LDRB R5,[R5, R1]
MOVS R4,R5
LDR R5,[R0, #+4]
LSRS R5,R5,R4
STR R5,[R0, #+12]
LDR.N R5,??RCC_GetClocksFreq_0 ;; 0x40021004
LDR R5,[R5, #+0]
ANDS R1,R5,#0xC000
LSRS R1,R1,#+14
LDR.N R5,??RCC_GetClocksFreq_0+0x10 ;; ADCPrescTable
LDRB R5,[R5, R1]
MOVS R4,R5
LDR R5,[R0, #+12]
UDIV R5,R5,R4
STR R5,[R0, #+16]
POP {R4-R6,PC} ;; return
Nop
DATA
??RCC_GetClocksFreq_0:
DC32 0x40021004
DC32 0x7a1200
DC32 0x3d0900
DC32 APBAHBPrescTable
DC32 ADCPrescTable
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_AHBPeriphClockCmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??RCC_AHBPeriphClockCmd_0
LDR.N R2,??RCC_AHBPeriphClockCmd_1 ;; 0x40021014
LDR R2,[R2, #+0]
ORRS R2,R2,R0
LDR.N R3,??RCC_AHBPeriphClockCmd_1 ;; 0x40021014
STR R2,[R3, #+0]
B.N ??RCC_AHBPeriphClockCmd_2
??RCC_AHBPeriphClockCmd_0:
LDR.N R2,??RCC_AHBPeriphClockCmd_1 ;; 0x40021014
LDR R2,[R2, #+0]
BICS R2,R2,R0
LDR.N R3,??RCC_AHBPeriphClockCmd_1 ;; 0x40021014
STR R2,[R3, #+0]
??RCC_AHBPeriphClockCmd_2:
BX LR ;; return
Nop
DATA
??RCC_AHBPeriphClockCmd_1:
DC32 0x40021014
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_APB2PeriphClockCmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??RCC_APB2PeriphClockCmd_0
LDR.N R2,??RCC_APB2PeriphClockCmd_1 ;; 0x40021018
LDR R2,[R2, #+0]
ORRS R2,R2,R0
LDR.N R3,??RCC_APB2PeriphClockCmd_1 ;; 0x40021018
STR R2,[R3, #+0]
B.N ??RCC_APB2PeriphClockCmd_2
??RCC_APB2PeriphClockCmd_0:
LDR.N R2,??RCC_APB2PeriphClockCmd_1 ;; 0x40021018
LDR R2,[R2, #+0]
BICS R2,R2,R0
LDR.N R3,??RCC_APB2PeriphClockCmd_1 ;; 0x40021018
STR R2,[R3, #+0]
??RCC_APB2PeriphClockCmd_2:
BX LR ;; return
Nop
DATA
??RCC_APB2PeriphClockCmd_1:
DC32 0x40021018
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_APB1PeriphClockCmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??RCC_APB1PeriphClockCmd_0
LDR.N R2,??RCC_APB1PeriphClockCmd_1 ;; 0x4002101c
LDR R2,[R2, #+0]
ORRS R2,R2,R0
LDR.N R3,??RCC_APB1PeriphClockCmd_1 ;; 0x4002101c
STR R2,[R3, #+0]
B.N ??RCC_APB1PeriphClockCmd_2
??RCC_APB1PeriphClockCmd_0:
LDR.N R2,??RCC_APB1PeriphClockCmd_1 ;; 0x4002101c
LDR R2,[R2, #+0]
BICS R2,R2,R0
LDR.N R3,??RCC_APB1PeriphClockCmd_1 ;; 0x4002101c
STR R2,[R3, #+0]
??RCC_APB1PeriphClockCmd_2:
BX LR ;; return
Nop
DATA
??RCC_APB1PeriphClockCmd_1:
DC32 0x4002101c
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_APB2PeriphResetCmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??RCC_APB2PeriphResetCmd_0
LDR.N R2,??RCC_APB2PeriphResetCmd_1 ;; 0x4002100c
LDR R2,[R2, #+0]
ORRS R2,R2,R0
LDR.N R3,??RCC_APB2PeriphResetCmd_1 ;; 0x4002100c
STR R2,[R3, #+0]
B.N ??RCC_APB2PeriphResetCmd_2
??RCC_APB2PeriphResetCmd_0:
LDR.N R2,??RCC_APB2PeriphResetCmd_1 ;; 0x4002100c
LDR R2,[R2, #+0]
BICS R2,R2,R0
LDR.N R3,??RCC_APB2PeriphResetCmd_1 ;; 0x4002100c
STR R2,[R3, #+0]
??RCC_APB2PeriphResetCmd_2:
BX LR ;; return
Nop
DATA
??RCC_APB2PeriphResetCmd_1:
DC32 0x4002100c
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_APB1PeriphResetCmd:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
CMP R1,#+0
BEQ.N ??RCC_APB1PeriphResetCmd_0
LDR.N R2,??RCC_APB1PeriphResetCmd_1 ;; 0x40021010
LDR R2,[R2, #+0]
ORRS R2,R2,R0
LDR.N R3,??RCC_APB1PeriphResetCmd_1 ;; 0x40021010
STR R2,[R3, #+0]
B.N ??RCC_APB1PeriphResetCmd_2
??RCC_APB1PeriphResetCmd_0:
LDR.N R2,??RCC_APB1PeriphResetCmd_1 ;; 0x40021010
LDR R2,[R2, #+0]
BICS R2,R2,R0
LDR.N R3,??RCC_APB1PeriphResetCmd_1 ;; 0x40021010
STR R2,[R3, #+0]
??RCC_APB1PeriphResetCmd_2:
BX LR ;; return
Nop
DATA
??RCC_APB1PeriphResetCmd_1:
DC32 0x40021010
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_BackupResetCmd:
LDR.N R1,??RCC_BackupResetCmd_0 ;; 0x42420440
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
STR R0,[R1, #+0]
BX LR ;; return
DATA
??RCC_BackupResetCmd_0:
DC32 0x42420440
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_ClockSecuritySystemCmd:
LDR.N R1,??RCC_ClockSecuritySystemCmd_0 ;; 0x4242004c
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
STR R0,[R1, #+0]
BX LR ;; return
DATA
??RCC_ClockSecuritySystemCmd_0:
DC32 0x4242004c
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_MCOConfig:
LDR.N R1,??RCC_MCOConfig_0 ;; 0x40021007
STRB R0,[R1, #+0]
BX LR ;; return
Nop
DATA
??RCC_MCOConfig_0:
DC32 0x40021007
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_GetFlagStatus:
PUSH {R0,R4}
MOVS R1,R0
MOVS R4,#+0
MOVS R2,R4
MOVS R4,#+0
MOVS R3,R4
MOVS R4,#+0
MOVS R0,R4
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
LSRS R4,R1,#+5
UXTB R4,R4 ;; ZeroExtS R4,R4,#+24,#+24
MOVS R2,R4
CMP R2,#+1
BNE.N ??RCC_GetFlagStatus_0
LDR.N R4,??RCC_GetFlagStatus_1 ;; 0x40021000
LDR R4,[R4, #+0]
MOVS R3,R4
B.N ??RCC_GetFlagStatus_2
??RCC_GetFlagStatus_0:
CMP R2,#+2
BNE.N ??RCC_GetFlagStatus_3
LDR.N R4,??RCC_GetFlagStatus_1+0x4 ;; 0x40021020
LDR R4,[R4, #+0]
MOVS R3,R4
B.N ??RCC_GetFlagStatus_2
??RCC_GetFlagStatus_3:
LDR.N R4,??RCC_GetFlagStatus_1+0x8 ;; 0x40021024
LDR R4,[R4, #+0]
MOVS R3,R4
??RCC_GetFlagStatus_2:
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
LSLS R4,R1,#+27 ;; ZeroExtS R4,R1,#+27,#+27
LSRS R4,R4,#+27
MOVS R2,R4
MOVS R4,#+1
LSLS R4,R4,R2
ANDS R4,R4,R3
SUBS R4,R4,#+1
SBCS R4,R4,R4
MVNS R4,R4
LSRS R4,R4,#+31
MOVS R0,R4
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
ADD SP,SP,#+4
POP {R4}
BX LR ;; return
Nop
DATA
??RCC_GetFlagStatus_1:
DC32 0x40021000
DC32 0x40021020
DC32 0x40021024
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_ClearFlag:
LDR.N R0,??RCC_ClearFlag_0 ;; 0x40021024
LDR R0,[R0, #+0]
ORRS R0,R0,#0x1000000
LDR.N R1,??RCC_ClearFlag_0 ;; 0x40021024
STR R0,[R1, #+0]
BX LR ;; return
Nop
DATA
??RCC_ClearFlag_0:
DC32 0x40021024
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_GetITStatus:
MOVS R1,R0
MOVS R2,#+0
MOVS R0,R2
LDR.N R2,??RCC_GetITStatus_0 ;; 0x40021008
LDR R2,[R2, #+0]
ANDS R2,R2,R1
MOVS R3,R2
UXTB R3,R3 ;; ZeroExtS R3,R3,#+24,#+24
SUBS R3,R3,#+1
SBCS R3,R3,R3
MVNS R3,R3
LSRS R3,R3,#+31
MOVS R0,R3
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
BX LR ;; return
Nop
DATA
??RCC_GetITStatus_0:
DC32 0x40021008
SECTION `.XML`:CODE:NOROOT(2)
THUMB
RCC_ClearITPendingBit:
LDR.N R1,??RCC_ClearITPendingBit_0 ;; 0x4002100a
STRB R0,[R1, #+0]
BX LR ;; return
Nop
DATA
??RCC_ClearITPendingBit_0:
DC32 0x4002100a
END
//
// 1 256 bytes in section .XML
// 5 bytes in section .bss
// 20 bytes in section .rodata
//
// 1 256 bytes of CODE memory
// 20 bytes of CONST memory
// 5 bytes of DATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -