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

📄 stm32f10x_exti.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_exti.o --depend=..\obj\stm32f10x_exti.d --device=DARMSTM -O3 -Otime -I..\..\LAB6 -I..\..\library\inc -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --omf_browse=..\obj\stm32f10x_exti.crf ..\..\library\src\stm32f10x_exti.c]
                          THUMB

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

                  EXTI_DeInit PROC
;;;42     {
;;;43       EXTI->IMR = 0x00000000;
000000  4835              LDR      r0,|L1.216|
000002  2100              MOVS     r1,#0
000004  6001              STR      r1,[r0,#0]
;;;44       EXTI->EMR = 0x00000000;
000006  6041              STR      r1,[r0,#4]
;;;45       EXTI->RTSR = 0x00000000; 
000008  6081              STR      r1,[r0,#8]
;;;46       EXTI->FTSR = 0x00000000; 
00000a  60c1              STR      r1,[r0,#0xc]
;;;47       EXTI->PR = 0x0007FFFF;
00000c  4933              LDR      r1,|L1.220|
00000e  6141              STR      r1,[r0,#0x14]
;;;48     }
000010  4770              BX       lr
                          ENDP

                  EXTI_Init PROC
;;;67          
;;;68       if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000012  7982              LDRB     r2,[r0,#6]
000014  7903              LDRB     r3,[r0,#4]
000016  2a00              CMP      r2,#0
000018  f103f103          ADD      r2,r3,#0x40000000
00001c  f502f502          ADD      r2,r2,#0x10000
000020  6801              LDR      r1,[r0,#0]
000022  f8d2f8d2          LDR      r3,[r2,#0x400]
;;;69       {
;;;70         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
;;;71     
;;;72         /* Clear Rising Falling edge configuration */
;;;73         EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
;;;74         EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
;;;75         
;;;76         /* Select the trigger for the selected external interrupts */
;;;77         if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
;;;78         {
;;;79           /* Rising Falling edge */
;;;80           EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
;;;81           EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
;;;82         }
;;;83         else
;;;84         {
;;;85           *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
;;;86         }
;;;87       }
;;;88       else
;;;89       {
;;;90         /* Disable the selected external lines */
;;;91         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
000026  bf02              ITTT     EQ
000028  ea23ea23          BICEQ    r0,r3,r1
00002c  f8c2f8c2          STREQ    r0,[r2,#0x400]
;;;92       }
;;;93     }
000030  4770              BXEQ     lr
000032  4319              ORRS     r1,r1,r3
000034  f8c2f8c2          STR      r1,[r2,#0x400]
000038  4a29              LDR      r2,|L1.224|
00003a  f8d2f8d2          LDR      r1,[r2,#0x408]
00003e  6803              LDR      r3,[r0,#0]
000040  4399              BICS     r1,r1,r3
000042  f8c2f8c2          STR      r1,[r2,#0x408]
000046  f8d2f8d2          LDR      r1,[r2,#0x40c]
00004a  6803              LDR      r3,[r0,#0]
00004c  4399              BICS     r1,r1,r3
00004e  f8c2f8c2          STR      r1,[r2,#0x40c]
000052  7941              LDRB     r1,[r0,#5]
000054  2910              CMP      r1,#0x10
000056  d10c              BNE      |L1.114|
000058  f8d2f8d2          LDR      r1,[r2,#0x408]
00005c  6803              LDR      r3,[r0,#0]
00005e  4319              ORRS     r1,r1,r3
000060  f8c2f8c2          STR      r1,[r2,#0x408]
000064  f8d2f8d2          LDR      r1,[r2,#0x40c]
000068  6800              LDR      r0,[r0,#0]
00006a  4308              ORRS     r0,r0,r1
00006c  f8c2f8c2          STR      r0,[r2,#0x40c]
000070  4770              BX       lr
                  |L1.114|
000072  f101f101          ADD      r1,r1,#0x40000000
000076  f501f501          ADD      r1,r1,#0x10000
00007a  f8d1f8d1          LDR      r2,[r1,#0x400]
00007e  6800              LDR      r0,[r0,#0]
000080  4310              ORRS     r0,r0,r2
000082  f8c1f8c1          STR      r0,[r1,#0x400]
000086  4770              BX       lr
                          ENDP

                  EXTI_StructInit PROC
;;;104    {
;;;105      EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
000088  2100              MOVS     r1,#0
;;;106      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
00008a  6001              STR      r1,[r0,#0]
00008c  7101              STRB     r1,[r0,#4]
;;;107      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
00008e  220c              MOVS     r2,#0xc
000090  7142              STRB     r2,[r0,#5]
;;;108      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
000092  7181              STRB     r1,[r0,#6]
;;;109    }
000094  4770              BX       lr
                          ENDP

                  EXTI_GenerateSWInterrupt PROC
;;;121    void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
;;;122    {
000096  4913              LDR      r1,|L1.228|
;;;123      /* Check the parameters */
;;;124      assert(IS_EXTI_LINE(EXTI_Line));
;;;125      
;;;126      EXTI->SWIER |= EXTI_Line;
000098  680a              LDR      r2,[r1,#0]
00009a  4310              ORRS     r0,r0,r2
00009c  6008              STR      r0,[r1,#0]
;;;127    }
00009e  4770              BX       lr
                          ENDP

                  EXTI_GetFlagStatus PROC
;;;139    {
;;;140      FlagStatus bitstatus = RESET;
0000a0  4a11              LDR      r2,|L1.232|
0000a2  4601              MOV      r1,r0
;;;141    
;;;142      /* Check the parameters */
;;;143      assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;144      
;;;145      if ((EXTI->PR & EXTI_Line) != (u32)RESET)
0000a4  6812              LDR      r2,[r2,#0]
0000a6  2000              MOVS     r0,#0
0000a8  420a              TST      r2,r1
;;;146      {
;;;147        bitstatus = SET;
0000aa  bf18              IT       NE
0000ac  2001              MOVNE    r0,#1
;;;148      }
;;;149      else
;;;150      {
;;;151        bitstatus = RESET;
;;;152      }
;;;153      return bitstatus;
;;;154    }
0000ae  4770              BX       lr
                          ENDP

                  EXTI_ClearFlag PROC
;;;165    void EXTI_ClearFlag(u32 EXTI_Line)
;;;166    {
0000b0  490d              LDR      r1,|L1.232|
;;;167      /* Check the parameters */
;;;168      assert(IS_EXTI_LINE(EXTI_Line));
;;;169      
;;;170      EXTI->PR = EXTI_Line;
0000b2  6008              STR      r0,[r1,#0]
;;;171    }
0000b4  4770              BX       lr
                          ENDP

                  EXTI_GetITStatus PROC
;;;189      
;;;190      enablestatus =  EXTI->IMR & EXTI_Line;
0000b6  4a0a              LDR      r2,|L1.224|
0000b8  2100              MOVS     r1,#0
0000ba  f8d2f8d2          LDR      r12,[r2,#0x400]
;;;191    
;;;192      if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
0000be  f8d2f8d2          LDR      r3,[r2,#0x414]
0000c2  ea0cea0c          AND      r2,r12,r0
0000c6  4203              TST      r3,r0
0000c8  bf1c              ITT      NE
0000ca  2a00              CMPNE    r2,#0
;;;193      {
;;;194        bitstatus = SET;
0000cc  2101              MOVNE    r1,#1
;;;195      }
;;;196      else
;;;197      {
;;;198        bitstatus = RESET;
;;;199      }
;;;200      return bitstatus;
0000ce  4608              MOV      r0,r1
;;;201    }
0000d0  4770              BX       lr
                          ENDP

                  EXTI_ClearITPendingBit PROC
;;;212    void EXTI_ClearITPendingBit(u32 EXTI_Line)
;;;213    {
0000d2  4905              LDR      r1,|L1.232|
;;;214      /* Check the parameters */
;;;215      assert(IS_EXTI_LINE(EXTI_Line));
;;;216      
;;;217      EXTI->PR = EXTI_Line;
0000d4  6008              STR      r0,[r1,#0]
;;;218    }
0000d6  4770              BX       lr
                          ENDP

                  |L1.216|
0000d8  40010400          DCD      0x40010400
                  |L1.220|
0000dc  0007ffff          DCD      0x0007ffff
                  |L1.224|
0000e0  40010000          DCD      0x40010000
                  |L1.228|
0000e4  40010410          DCD      0x40010410
                  |L1.232|
0000e8  40010414          DCD      0x40010414

⌨️ 快捷键说明

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