⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_systick.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\stm32f10x_systick.o --depend=.\Obj\stm32f10x_systick.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\..\FWLib\library\src\stm32f10x_systick.c]
                          THUMB

                          AREA ||i.SysTick_CLKSourceConfig||, CODE, READONLY, ALIGN=1

                  SysTick_CLKSourceConfig PROC
;;;42     *******************************************************************************/
;;;43     void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
000000  f04f21e0          MOV      r1,#0xe000e000
;;;44     {
;;;45       /* Check the parameters */
;;;46       assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
;;;47     
;;;48       if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
000004  2804              CMP      r0,#4
;;;49       {
;;;50         SysTick->CTRL |= SysTick_CLKSource_HCLK;
000006  6908              LDR      r0,[r1,#0x10]
000008  d102              BNE      |L1.16|
00000a  f0400004          ORR      r0,r0,#4
00000e  e001              B        |L1.20|
                  |L1.16|
;;;51       }
;;;52       else
;;;53       {
;;;54         SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
000010  f0200004          BIC      r0,r0,#4
                  |L1.20|
000014  6108              STR      r0,[r1,#0x10]         ;50
;;;55       }
;;;56     }
000016  4770              BX       lr
;;;57     
                          ENDP


                          AREA ||i.SysTick_CounterCmd||, CODE, READONLY, ALIGN=1

                  SysTick_CounterCmd PROC
;;;84     *******************************************************************************/
;;;85     void SysTick_CounterCmd(u32 SysTick_Counter)
000000  f04f21e0          MOV      r1,#0xe000e000
;;;86     {
;;;87       /* Check the parameters */
;;;88       assert_param(IS_SYSTICK_COUNTER(SysTick_Counter));
;;;89     
;;;90       if (SysTick_Counter == SysTick_Counter_Enable)
000004  2801              CMP      r0,#1
000006  d103              BNE      |L2.16|
;;;91       {
;;;92         SysTick->CTRL |= SysTick_Counter_Enable;
000008  6908              LDR      r0,[r1,#0x10]
00000a  f0400001          ORR      r0,r0,#1
00000e  e004              B        |L2.26|
                  |L2.16|
;;;93       }
;;;94       else if (SysTick_Counter == SysTick_Counter_Disable) 
000010  1c80              ADDS     r0,r0,#2
000012  d104              BNE      |L2.30|
;;;95       {
;;;96         SysTick->CTRL &= SysTick_Counter_Disable;
000014  6908              LDR      r0,[r1,#0x10]
000016  f0200001          BIC      r0,r0,#1
                  |L2.26|
00001a  6108              STR      r0,[r1,#0x10]         ;92
;;;97       }
;;;98       else /* SysTick_Counter == SysTick_Counter_Clear */
;;;99       {
;;;100        SysTick->VAL = SysTick_Counter_Clear;
;;;101      }    
;;;102    }
00001c  4770              BX       lr
                  |L2.30|
00001e  2000              MOVS     r0,#0                 ;100
000020  6188              STR      r0,[r1,#0x18]         ;100
000022  4770              BX       lr
;;;103    
                          ENDP


                          AREA ||i.SysTick_GetCounter||, CODE, READONLY, ALIGN=1

                  SysTick_GetCounter PROC
;;;133    *******************************************************************************/
;;;134    u32 SysTick_GetCounter(void)
000000  f04f20e0          MOV      r0,#0xe000e000
;;;135    {
;;;136      return(SysTick->VAL);
000004  6980              LDR      r0,[r0,#0x18]
;;;137    }
000006  4770              BX       lr
;;;138    
                          ENDP


                          AREA ||i.SysTick_GetFlagStatus||, CODE, READONLY, ALIGN=1

                  SysTick_GetFlagStatus PROC
;;;149    *******************************************************************************/
;;;150    FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG)
000000  4602              MOV      r2,r0
;;;151    {
;;;152      u32 statusreg = 0, tmp = 0 ;
;;;153      FlagStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;154    
;;;155      /* Check the parameters */
;;;156      assert_param(IS_SYSTICK_FLAG(SysTick_FLAG));
;;;157    
;;;158      /* Get the SysTick register index */
;;;159      tmp = SysTick_FLAG >> 3;
000004  08d1              LSRS     r1,r2,#3
;;;160    
;;;161      if (tmp == 2) /* The flag to check is in CTRL register */
;;;162      {
;;;163        statusreg = SysTick->CTRL;
000006  f04f23e0          MOV      r3,#0xe000e000
00000a  2902              CMP      r1,#2                 ;161
00000c  d101              BNE      |L4.18|
00000e  6919              LDR      r1,[r3,#0x10]
000010  e000              B        |L4.20|
                  |L4.18|
;;;164      }
;;;165      else          /* The flag to check is in CALIB register */
;;;166      {
;;;167        statusreg = SysTick->CALIB;
000012  69d9              LDR      r1,[r3,#0x1c]
                  |L4.20|
;;;168      }
;;;169    
;;;170      if ((statusreg & ((u32)1 << SysTick_FLAG)) != (u32)RESET)
000014  2301              MOVS     r3,#1
000016  4093              LSLS     r3,r3,r2
000018  420b              TST      r3,r1
00001a  d000              BEQ      |L4.30|
;;;171      {
;;;172        bitstatus = SET;
00001c  2001              MOVS     r0,#1
                  |L4.30|
;;;173      }
;;;174      else
;;;175      {
;;;176        bitstatus = RESET;
;;;177      }
;;;178      return bitstatus;
;;;179    }
00001e  4770              BX       lr
;;;180    
                          ENDP


                          AREA ||i.SysTick_ITConfig||, CODE, READONLY, ALIGN=1

                  SysTick_ITConfig PROC
;;;111    *******************************************************************************/
;;;112    void SysTick_ITConfig(FunctionalState NewState)
000000  f04f21e0          MOV      r1,#0xe000e000
;;;113    {
;;;114      /* Check the parameters */
;;;115      assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;116    
;;;117      if (NewState != DISABLE)
000004  2800              CMP      r0,#0
;;;118      {
;;;119        SysTick->CTRL |= CTRL_TICKINT_Set;
000006  6908              LDR      r0,[r1,#0x10]
000008  d002              BEQ      |L5.16|
00000a  f0400002          ORR      r0,r0,#2
00000e  e001              B        |L5.20|
                  |L5.16|
;;;120      }
;;;121      else
;;;122      {
;;;123        SysTick->CTRL &= CTRL_TICKINT_Reset;
000010  f0200002          BIC      r0,r0,#2
                  |L5.20|
000014  6108              STR      r0,[r1,#0x10]         ;119
;;;124      }
;;;125    }
000016  4770              BX       lr
;;;126    
                          ENDP


                          AREA ||i.SysTick_SetReload||, CODE, READONLY, ALIGN=1

                  SysTick_SetReload PROC
;;;65     *******************************************************************************/
;;;66     void SysTick_SetReload(u32 Reload)
000000  f04f21e0          MOV      r1,#0xe000e000
;;;67     {
;;;68       /* Check the parameters */
;;;69       assert_param(IS_SYSTICK_RELOAD(Reload));
;;;70     
;;;71       SysTick->LOAD = Reload;
000004  6148              STR      r0,[r1,#0x14]
;;;72     }
000006  4770              BX       lr
;;;73     
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -