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

📄 stm32f10x_systick.txt

📁 STM32 demo板的例程
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_systick.o --depend=..\obj\stm32f10x_systick.d --device=DARMSTM -I..\..\LAB2 -I..\..\library\src -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_RAM --omf_browse=..\obj\stm32f10x_systick.crf ..\..\library\src\stm32f10x_systick.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=1

                  SysTick_CLKSourceConfig PROC
;;;55     
;;;56       if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
000000  2804              CMP      r0,#4
000002  d108              BNE      |L1.22|
;;;57       {
;;;58         SysTick->CTRL |= SysTick_CLKSource_HCLK;
000004  f04ff04f          MOV      r1,#0xe000e000
000008  6909              LDR      r1,[r1,#0x10]
00000a  f041f041          ORR      r1,r1,#4
00000e  f04ff04f          MOV      r2,#0xe000e000
000012  6111              STR      r1,[r2,#0x10]
000014  e007              B        |L1.38|
                  |L1.22|
;;;59       }
;;;60       else
;;;61       {
;;;62         SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
000016  f04ff04f          MOV      r1,#0xe000e000
00001a  6909              LDR      r1,[r1,#0x10]
00001c  f021f021          BIC      r1,r1,#4
000020  f04ff04f          MOV      r2,#0xe000e000
000024  6111              STR      r1,[r2,#0x10]
                  |L1.38|
;;;63       }
;;;64     }
000026  4770              BX       lr
                          ENDP

                  SysTick_SetReload PROC
;;;78     
;;;79       SysTick->LOAD = Reload;
000028  f04ff04f          MOV      r1,#0xe000e000
00002c  6148              STR      r0,[r1,#0x14]
;;;80     }
00002e  4770              BX       lr
                          ENDP

                  SysTick_CounterCmd PROC
;;;97     
;;;98       if (SysTick_Counter == SysTick_Counter_Clear)
000030  b920              CBNZ     r0,|L1.60|
;;;99       {
;;;100        SysTick->VAL = SysTick_Counter_Clear;
000032  2100              MOVS     r1,#0
000034  f04ff04f          MOV      r2,#0xe000e000
000038  6191              STR      r1,[r2,#0x18]
00003a  e012              B        |L1.98|
                  |L1.60|
;;;101      }
;;;102      else
;;;103      {
;;;104        if (SysTick_Counter == SysTick_Counter_Enable)
00003c  2801              CMP      r0,#1
00003e  d108              BNE      |L1.82|
;;;105        {
;;;106          SysTick->CTRL |= SysTick_Counter_Enable;
000040  f04ff04f          MOV      r1,#0xe000e000
000044  6909              LDR      r1,[r1,#0x10]
000046  f041f041          ORR      r1,r1,#1
00004a  f04ff04f          MOV      r2,#0xe000e000
00004e  6111              STR      r1,[r2,#0x10]
000050  e007              B        |L1.98|
                  |L1.82|
;;;107        }
;;;108        else
;;;109        {
;;;110          SysTick->CTRL &= SysTick_Counter_Disable;
000052  f04ff04f          MOV      r1,#0xe000e000
000056  6909              LDR      r1,[r1,#0x10]
000058  f021f021          BIC      r1,r1,#1
00005c  f04ff04f          MOV      r2,#0xe000e000
000060  6111              STR      r1,[r2,#0x10]
                  |L1.98|
;;;111        }
;;;112      }
;;;113    }
000062  4770              BX       lr
                          ENDP

                  SysTick_ITConfig PROC
;;;127    
;;;128      if (NewState != DISABLE)
000064  b140              CBZ      r0,|L1.120|
;;;129      {
;;;130        SysTick->CTRL |= CTRL_TICKINT_Set;
000066  f04ff04f          MOV      r1,#0xe000e000
00006a  6909              LDR      r1,[r1,#0x10]
00006c  f041f041          ORR      r1,r1,#2
000070  f04ff04f          MOV      r2,#0xe000e000
000074  6111              STR      r1,[r2,#0x10]
000076  e007              B        |L1.136|
                  |L1.120|
;;;131      }
;;;132      else
;;;133      {
;;;134        SysTick->CTRL &= CTRL_TICKINT_Reset;
000078  f04ff04f          MOV      r1,#0xe000e000
00007c  6909              LDR      r1,[r1,#0x10]
00007e  f021f021          BIC      r1,r1,#2
000082  f04ff04f          MOV      r2,#0xe000e000
000086  6111              STR      r1,[r2,#0x10]
                  |L1.136|
;;;135      }
;;;136    }
000088  4770              BX       lr
                          ENDP

                  SysTick_GetCounter PROC
;;;146    {
;;;147      return(SysTick->VAL);
00008a  f04ff04f          MOV      r0,#0xe000e000
00008e  6980              LDR      r0,[r0,#0x18]
;;;148    }
000090  4770              BX       lr
                          ENDP

                  SysTick_GetFlagStatus PROC
;;;161    FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG)
;;;162    {
000092  b510              PUSH     {r4,lr}
000094  4601              MOV      r1,r0
;;;163      u32 tmp = 0;
000096  2200              MOVS     r2,#0
;;;164      u32 statusreg = 0;
000098  2300              MOVS     r3,#0
;;;165      FlagStatus bitstatus = RESET;
00009a  2000              MOVS     r0,#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;
00009c  114a              ASRS     r2,r1,#5
;;;172    
;;;173      if (tmp == 1) /* The flag to check is in CTRL register */
00009e  2a01              CMP      r2,#1
0000a0  d103              BNE      |L1.170|
;;;174      {
;;;175        statusreg = SysTick->CTRL;
0000a2  f04ff04f          MOV      r4,#0xe000e000
0000a6  6923              LDR      r3,[r4,#0x10]
0000a8  e002              B        |L1.176|
                  |L1.170|
;;;176      }
;;;177      else          /* The flag to check is in CALIB register */
;;;178      {
;;;179        statusreg = SysTick->CALIB;
0000aa  f04ff04f          MOV      r4,#0xe000e000
0000ae  69e3              LDR      r3,[r4,#0x1c]
                  |L1.176|
;;;180      }
;;;181    
;;;182      /* Get the flag position */
;;;183      tmp = SysTick_FLAG & FLAG_Mask;
0000b0  f001f001          AND      r2,r1,#0x1f
;;;184    
;;;185      if ((statusreg & ((u32)1 << tmp)) != (u32)RESET)
0000b4  2401              MOVS     r4,#1
0000b6  4094              LSLS     r4,r4,r2
0000b8  421c              TST      r4,r3
0000ba  d001              BEQ      |L1.192|
;;;186      {
;;;187        bitstatus = SET;
0000bc  2001              MOVS     r0,#1
0000be  e000              B        |L1.194|
                  |L1.192|
;;;188      }
;;;189      else
;;;190      {
;;;191        bitstatus = RESET;
0000c0  2000              MOVS     r0,#0
                  |L1.194|
;;;192      }
;;;193      return bitstatus;
;;;194    }
0000c2  bd10              POP      {r4,pc}
                          ENDP

⌨️ 快捷键说明

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