📄 stm32f10x_systick.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\stm32f10x_systick.o --depend=.\Obj\stm32f10x_systick.d --device=DARMSTM --apcs=interwork -O2 -I..\..\..\FWLib\library\inc -I..\..\include -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DVECT_TAB_FLASH --omf_browse=.\Obj\stm32f10x_systick.crf ..\..\..\FWLib\library\src\stm32f10x_systick.c]
THUMB
AREA ||i.SysTick_CLKSourceConfig||, CODE, READONLY, ALIGN=1
SysTick_CLKSourceConfig PROC
;;;46 void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
;;;47 {
000000 f04ff04f MOV r1,#0xe000e000
;;;48 /* Check the parameters */
;;;49 assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
;;;50
;;;51 if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
000004 2804 CMP r0,#4
;;;52 {
;;;53 SysTick->CTRL |= SysTick_CLKSource_HCLK;
000006 6908 LDR r0,[r1,#0x10]
000008 d102 BNE |L1.16|
00000a f040f040 ORR r0,r0,#4
00000e e001 B |L1.20|
|L1.16|
;;;54 }
;;;55 else
;;;56 {
;;;57 SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
000010 f020f020 BIC r0,r0,#4
|L1.20|
000014 6108 STR r0,[r1,#0x10]
;;;58 }
;;;59 }
000016 4770 BX lr
ENDP
AREA ||i.SysTick_SetReload||, CODE, READONLY, ALIGN=1
SysTick_SetReload PROC
;;;73
;;;74 SysTick->LOAD = Reload;
000000 f04ff04f MOV r1,#0xe000e000
000004 6148 STR r0,[r1,#0x14]
;;;75 }
000006 4770 BX lr
ENDP
AREA ||i.SysTick_CounterCmd||, CODE, READONLY, ALIGN=1
SysTick_CounterCmd PROC
;;;88 void SysTick_CounterCmd(u32 SysTick_Counter)
;;;89 {
000000 f04ff04f MOV r1,#0xe000e000
;;;90 /* Check the parameters */
;;;91 assert_param(IS_SYSTICK_COUNTER(SysTick_Counter));
;;;92
;;;93 if (SysTick_Counter == SysTick_Counter_Clear)
000004 b910 CBNZ r0,|L3.12|
;;;94 {
;;;95 SysTick->VAL = SysTick_Counter_Clear;
000006 2000 MOVS r0,#0
000008 6188 STR r0,[r1,#0x18]
;;;96 }
;;;97 else
;;;98 {
;;;99 if (SysTick_Counter == SysTick_Counter_Enable)
;;;100 {
;;;101 SysTick->CTRL |= SysTick_Counter_Enable;
;;;102 }
;;;103 else
;;;104 {
;;;105 SysTick->CTRL &= SysTick_Counter_Disable;
;;;106 }
;;;107 }
;;;108 }
00000a 4770 BX lr
|L3.12|
00000c 2801 CMP r0,#1
00000e 6908 LDR r0,[r1,#0x10]
000010 d102 BNE |L3.24|
000012 f040f040 ORR r0,r0,#1
000016 e001 B |L3.28|
|L3.24|
000018 f020f020 BIC r0,r0,#1
|L3.28|
00001c 6108 STR r0,[r1,#0x10]
00001e 4770 BX lr
ENDP
AREA ||i.SysTick_ITConfig||, CODE, READONLY, ALIGN=1
SysTick_ITConfig PROC
;;;118 void SysTick_ITConfig(FunctionalState NewState)
;;;119 {
000000 f04ff04f MOV r1,#0xe000e000
;;;120 /* Check the parameters */
;;;121 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;122
;;;123 if (NewState != DISABLE)
000004 2800 CMP r0,#0
;;;124 {
;;;125 SysTick->CTRL |= CTRL_TICKINT_Set;
000006 6908 LDR r0,[r1,#0x10]
000008 d002 BEQ |L4.16|
00000a f040f040 ORR r0,r0,#2
00000e e001 B |L4.20|
|L4.16|
;;;126 }
;;;127 else
;;;128 {
;;;129 SysTick->CTRL &= CTRL_TICKINT_Reset;
000010 f020f020 BIC r0,r0,#2
|L4.20|
000014 6108 STR r0,[r1,#0x10]
;;;130 }
;;;131 }
000016 4770 BX lr
ENDP
AREA ||i.SysTick_GetCounter||, CODE, READONLY, ALIGN=1
SysTick_GetCounter PROC
;;;141 {
;;;142 return(SysTick->VAL);
000000 f04ff04f MOV r0,#0xe000e000
000004 6980 LDR r0,[r0,#0x18]
;;;143 }
000006 4770 BX lr
ENDP
AREA ||i.SysTick_GetFlagStatus||, CODE, READONLY, ALIGN=1
SysTick_GetFlagStatus PROC
;;;156 FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG)
;;;157 {
000000 4602 MOV r2,r0
;;;158 u32 tmp = 0;
;;;159 u32 statusreg = 0;
;;;160 FlagStatus bitstatus = RESET;
000002 2000 MOVS r0,#0
;;;161
;;;162 /* Check the parameters */
;;;163 assert_param(IS_SYSTICK_FLAG(SysTick_FLAG));
;;;164
;;;165 /* Get the SysTick register index */
;;;166 tmp = SysTick_FLAG >> 5;
000004 0951 LSRS r1,r2,#5
000006 f04ff04f MOV r3,#0xe000e000
;;;167
;;;168 if (tmp == 1) /* The flag to check is in CTRL register */
00000a 2901 CMP r1,#1
00000c d101 BNE |L6.18|
;;;169 {
;;;170 statusreg = SysTick->CTRL;
00000e 6919 LDR r1,[r3,#0x10]
000010 e000 B |L6.20|
|L6.18|
;;;171 }
;;;172 else /* The flag to check is in CALIB register */
;;;173 {
;;;174 statusreg = SysTick->CALIB;
000012 69d9 LDR r1,[r3,#0x1c]
|L6.20|
;;;175 }
;;;176
;;;177 /* Get the flag position */
;;;178 tmp = SysTick_FLAG & FLAG_Mask;
000014 f002f002 AND r2,r2,#0x1f
;;;179
;;;180 if ((statusreg & ((u32)1 << tmp)) != (u32)RESET)
000018 2301 MOVS r3,#1
00001a 4093 LSLS r3,r3,r2
00001c 420b TST r3,r1
00001e d000 BEQ |L6.34|
;;;181 {
;;;182 bitstatus = SET;
000020 2001 MOVS r0,#1
|L6.34|
;;;183 }
;;;184 else
;;;185 {
;;;186 bitstatus = RESET;
;;;187 }
;;;188 return bitstatus;
;;;189 }
000022 4770 BX lr
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -