📄 stm32f10x_systick.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_systick.o --depend=..\obj\stm32f10x_systick.d --device=DARMSTM -I..\..\LAB2 -I..\..\library\src -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_RAM --omf_browse=..\obj\stm32f10x_systick.crf ..\..\library\src\stm32f10x_systick.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=1
SysTick_CLKSourceConfig PROC
;;;55
;;;56 if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
000000 2804 CMP r0,#4
000002 d108 BNE |L1.22|
;;;57 {
;;;58 SysTick->CTRL |= SysTick_CLKSource_HCLK;
000004 f04ff04f MOV r1,#0xe000e000
000008 6909 LDR r1,[r1,#0x10]
00000a f041f041 ORR r1,r1,#4
00000e f04ff04f MOV r2,#0xe000e000
000012 6111 STR r1,[r2,#0x10]
000014 e007 B |L1.38|
|L1.22|
;;;59 }
;;;60 else
;;;61 {
;;;62 SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
000016 f04ff04f MOV r1,#0xe000e000
00001a 6909 LDR r1,[r1,#0x10]
00001c f021f021 BIC r1,r1,#4
000020 f04ff04f MOV r2,#0xe000e000
000024 6111 STR r1,[r2,#0x10]
|L1.38|
;;;63 }
;;;64 }
000026 4770 BX lr
ENDP
SysTick_SetReload PROC
;;;78
;;;79 SysTick->LOAD = Reload;
000028 f04ff04f MOV r1,#0xe000e000
00002c 6148 STR r0,[r1,#0x14]
;;;80 }
00002e 4770 BX lr
ENDP
SysTick_CounterCmd PROC
;;;97
;;;98 if (SysTick_Counter == SysTick_Counter_Clear)
000030 b920 CBNZ r0,|L1.60|
;;;99 {
;;;100 SysTick->VAL = SysTick_Counter_Clear;
000032 2100 MOVS r1,#0
000034 f04ff04f MOV r2,#0xe000e000
000038 6191 STR r1,[r2,#0x18]
00003a e012 B |L1.98|
|L1.60|
;;;101 }
;;;102 else
;;;103 {
;;;104 if (SysTick_Counter == SysTick_Counter_Enable)
00003c 2801 CMP r0,#1
00003e d108 BNE |L1.82|
;;;105 {
;;;106 SysTick->CTRL |= SysTick_Counter_Enable;
000040 f04ff04f MOV r1,#0xe000e000
000044 6909 LDR r1,[r1,#0x10]
000046 f041f041 ORR r1,r1,#1
00004a f04ff04f MOV r2,#0xe000e000
00004e 6111 STR r1,[r2,#0x10]
000050 e007 B |L1.98|
|L1.82|
;;;107 }
;;;108 else
;;;109 {
;;;110 SysTick->CTRL &= SysTick_Counter_Disable;
000052 f04ff04f MOV r1,#0xe000e000
000056 6909 LDR r1,[r1,#0x10]
000058 f021f021 BIC r1,r1,#1
00005c f04ff04f MOV r2,#0xe000e000
000060 6111 STR r1,[r2,#0x10]
|L1.98|
;;;111 }
;;;112 }
;;;113 }
000062 4770 BX lr
ENDP
SysTick_ITConfig PROC
;;;127
;;;128 if (NewState != DISABLE)
000064 b140 CBZ r0,|L1.120|
;;;129 {
;;;130 SysTick->CTRL |= CTRL_TICKINT_Set;
000066 f04ff04f MOV r1,#0xe000e000
00006a 6909 LDR r1,[r1,#0x10]
00006c f041f041 ORR r1,r1,#2
000070 f04ff04f MOV r2,#0xe000e000
000074 6111 STR r1,[r2,#0x10]
000076 e007 B |L1.136|
|L1.120|
;;;131 }
;;;132 else
;;;133 {
;;;134 SysTick->CTRL &= CTRL_TICKINT_Reset;
000078 f04ff04f MOV r1,#0xe000e000
00007c 6909 LDR r1,[r1,#0x10]
00007e f021f021 BIC r1,r1,#2
000082 f04ff04f MOV r2,#0xe000e000
000086 6111 STR r1,[r2,#0x10]
|L1.136|
;;;135 }
;;;136 }
000088 4770 BX lr
ENDP
SysTick_GetCounter PROC
;;;146 {
;;;147 return(SysTick->VAL);
00008a f04ff04f MOV r0,#0xe000e000
00008e 6980 LDR r0,[r0,#0x18]
;;;148 }
000090 4770 BX lr
ENDP
SysTick_GetFlagStatus PROC
;;;161 FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG)
;;;162 {
000092 b510 PUSH {r4,lr}
000094 4601 MOV r1,r0
;;;163 u32 tmp = 0;
000096 2200 MOVS r2,#0
;;;164 u32 statusreg = 0;
000098 2300 MOVS r3,#0
;;;165 FlagStatus bitstatus = RESET;
00009a 2000 MOVS r0,#0
;;;166
;;;167 /* Check the parameters */
;;;168 assert(IS_SYSTICK_FLAG(SysTick_FLAG));
;;;169
;;;170 /* Get the SysTick register index */
;;;171 tmp = SysTick_FLAG >> 5;
00009c 114a ASRS r2,r1,#5
;;;172
;;;173 if (tmp == 1) /* The flag to check is in CTRL register */
00009e 2a01 CMP r2,#1
0000a0 d103 BNE |L1.170|
;;;174 {
;;;175 statusreg = SysTick->CTRL;
0000a2 f04ff04f MOV r4,#0xe000e000
0000a6 6923 LDR r3,[r4,#0x10]
0000a8 e002 B |L1.176|
|L1.170|
;;;176 }
;;;177 else /* The flag to check is in CALIB register */
;;;178 {
;;;179 statusreg = SysTick->CALIB;
0000aa f04ff04f MOV r4,#0xe000e000
0000ae 69e3 LDR r3,[r4,#0x1c]
|L1.176|
;;;180 }
;;;181
;;;182 /* Get the flag position */
;;;183 tmp = SysTick_FLAG & FLAG_Mask;
0000b0 f001f001 AND r2,r1,#0x1f
;;;184
;;;185 if ((statusreg & ((u32)1 << tmp)) != (u32)RESET)
0000b4 2401 MOVS r4,#1
0000b6 4094 LSLS r4,r4,r2
0000b8 421c TST r4,r3
0000ba d001 BEQ |L1.192|
;;;186 {
;;;187 bitstatus = SET;
0000bc 2001 MOVS r0,#1
0000be e000 B |L1.194|
|L1.192|
;;;188 }
;;;189 else
;;;190 {
;;;191 bitstatus = RESET;
0000c0 2000 MOVS r0,#0
|L1.194|
;;;192 }
;;;193 return bitstatus;
;;;194 }
0000c2 bd10 POP {r4,pc}
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -