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

📄 stm32f10x_systick.txt

📁 基于cortex arm stm32f103RB的智能卡(SmartCard)程序。编译通过
💻 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 + -