📄 stm32f10x_systick.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with Crescent Bay VAST 10.7u+w+:x ARM NEON, RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_systick.o --depend=..\obj\stm32f10x_systick.d --device=DARMSTM -O3 -Otime -I..\..\LAB6 -I..\..\library\inc -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --omf_browse=..\obj\stm32f10x_systick.crf ..\..\library\src\stm32f10x_systick.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=1
SysTick_CLKSourceConfig PROC
;;;51 void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
;;;52 {
000000 f04ff04f MOV r1,#0xe000e000
;;;53 /* Check the parameters */
;;;54 assert(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
;;;55
;;;56 if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
000004 2804 CMP r0,#4
;;;57 {
;;;58 SysTick->CTRL |= SysTick_CLKSource_HCLK;
000006 6908 LDR r0,[r1,#0x10]
;;;59 }
;;;60 else
;;;61 {
;;;62 SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
000008 bf14 ITE NE
00000a f020f020 BICNE r0,r0,#4
00000e f040f040 ORREQ r0,r0,#4
000012 6108 STR r0,[r1,#0x10]
;;;63 }
;;;64 }
000014 4770 BX lr
ENDP
SysTick_SetReload PROC
;;;78
;;;79 SysTick->LOAD = Reload;
000016 f04ff04f MOV r1,#0xe000e000
00001a 6148 STR r0,[r1,#0x14]
;;;80 }
00001c 4770 BX lr
ENDP
SysTick_CounterCmd PROC
;;;93 void SysTick_CounterCmd(u32 SysTick_Counter)
;;;94 {
00001e f04ff04f MOV r1,#0xe000e000
;;;95 /* Check the parameters */
;;;96 assert(IS_SYSTICK_COUNTER(SysTick_Counter));
;;;97
;;;98 if (SysTick_Counter == SysTick_Counter_Clear)
000022 2800 CMP r0,#0
;;;99 {
;;;100 SysTick->VAL = SysTick_Counter_Clear;
000024 bf04 ITT EQ
000026 6188 STREQ r0,[r1,#0x18]
;;;101 }
;;;102 else
;;;103 {
;;;104 if (SysTick_Counter == SysTick_Counter_Enable)
;;;105 {
;;;106 SysTick->CTRL |= SysTick_Counter_Enable;
;;;107 }
;;;108 else
;;;109 {
;;;110 SysTick->CTRL &= SysTick_Counter_Disable;
;;;111 }
;;;112 }
;;;113 }
000028 4770 BXEQ lr
00002a 2801 CMP r0,#1
00002c 6908 LDR r0,[r1,#0x10]
00002e bf14 ITE NE
000030 f020f020 BICNE r0,r0,#1
000034 f040f040 ORREQ r0,r0,#1
000038 6108 STR r0,[r1,#0x10]
00003a 4770 BX lr
ENDP
SysTick_ITConfig PROC
;;;123 void SysTick_ITConfig(FunctionalState NewState)
;;;124 {
00003c f04ff04f MOV r1,#0xe000e000
;;;125 /* Check the parameters */
;;;126 assert(IS_FUNCTIONAL_STATE(NewState));
;;;127
;;;128 if (NewState != DISABLE)
000040 2800 CMP r0,#0
;;;129 {
;;;130 SysTick->CTRL |= CTRL_TICKINT_Set;
000042 6908 LDR r0,[r1,#0x10]
;;;131 }
;;;132 else
;;;133 {
;;;134 SysTick->CTRL &= CTRL_TICKINT_Reset;
000044 bf0c ITE EQ
000046 f020f020 BICEQ r0,r0,#2
00004a f040f040 ORRNE r0,r0,#2
00004e 6108 STR r0,[r1,#0x10]
;;;135 }
;;;136 }
000050 4770 BX lr
ENDP
SysTick_GetCounter PROC
;;;146 {
;;;147 return(SysTick->VAL);
000052 f04ff04f MOV r0,#0xe000e000
000056 6980 LDR r0,[r0,#0x18]
;;;148 }
000058 4770 BX lr
ENDP
SysTick_GetFlagStatus PROC
;;;164 u32 statusreg = 0;
;;;165 FlagStatus bitstatus = RESET;
00005a 2200 MOVS r2,#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;
00005c 0941 LSRS r1,r0,#5
00005e f04ff04f MOV r3,#0xe000e000
;;;172
;;;173 if (tmp == 1) /* The flag to check is in CTRL register */
000062 2901 CMP r1,#1
;;;174 {
;;;175 statusreg = SysTick->CTRL;
;;;176 }
;;;177 else /* The flag to check is in CALIB register */
;;;178 {
;;;179 statusreg = SysTick->CALIB;
000064 bf14 ITE NE
000066 69d9 LDRNE r1,[r3,#0x1c]
000068 6919 LDREQ r1,[r3,#0x10]
;;;180 }
;;;181
;;;182 /* Get the flag position */
;;;183 tmp = SysTick_FLAG & FLAG_Mask;
00006a f000f000 AND r0,r0,#0x1f
;;;184
;;;185 if ((statusreg & ((u32)1 << tmp)) != (u32)RESET)
00006e 2301 MOVS r3,#1
000070 fa03fa03 LSL r0,r3,r0
000074 4208 TST r0,r1
;;;186 {
;;;187 bitstatus = SET;
000076 bf18 IT NE
000078 2201 MOVNE r2,#1
;;;188 }
;;;189 else
;;;190 {
;;;191 bitstatus = RESET;
;;;192 }
;;;193 return bitstatus;
00007a 4610 MOV r0,r2
;;;194 }
00007c 4770 BX lr
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -