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

📄 stm32f10x_systick.txt

📁 STM32 demo板的例程
💻 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 + -