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

📄 stm32f10x_exti.txt

📁 STM32 demo板的例程
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_exti.o --depend=..\obj\stm32f10x_exti.d --device=DARMSTM --apcs=interwork -O0 -I..\..\LAB5 -I..\..\library\inc -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_RAM --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  2000              MOVS     r0,#0
000002  4948              LDR      r1,|L1.292|
000004  6008              STR      r0,[r1,#0]
;;;44       EXTI->EMR = 0x00000000;
000006  4948              LDR      r1,|L1.296|
000008  f8c1f8c1          STR      r0,[r1,#0x404]
;;;45       EXTI->RTSR = 0x00000000; 
00000c  4945              LDR      r1,|L1.292|
00000e  3108              ADDS     r1,r1,#8
000010  6008              STR      r0,[r1,#0]
;;;46       EXTI->FTSR = 0x00000000; 
000012  1d09              ADDS     r1,r1,#4
000014  6008              STR      r0,[r1,#0]
;;;47       EXTI->PR = 0x0007FFFF;
000016  4845              LDR      r0,|L1.300|
000018  4942              LDR      r1,|L1.292|
00001a  3114              ADDS     r1,r1,#0x14
00001c  6008              STR      r0,[r1,#0]
;;;48     }
00001e  4770              BX       lr
;;;49     
                          ENDP

                  EXTI_Init PROC
;;;67          
;;;68       if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000020  7981              LDRB     r1,[r0,#6]
000022  b379              CBZ      r1,|L1.132|
;;;69       {
;;;70         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
000024  7901              LDRB     r1,[r0,#4]
000026  4a40              LDR      r2,|L1.296|
000028  4411              ADD      r1,r1,r2
00002a  f8d1f8d1          LDR      r1,[r1,#0x400]
00002e  6802              LDR      r2,[r0,#0]
000030  4311              ORRS     r1,r1,r2
000032  7902              LDRB     r2,[r0,#4]
000034  4b3c              LDR      r3,|L1.296|
000036  441a              ADD      r2,r2,r3
000038  f8c2f8c2          STR      r1,[r2,#0x400]
;;;71     
;;;72         /* Clear Rising Falling edge configuration */
;;;73         EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
00003c  4619              MOV      r1,r3
00003e  f8d1f8d1          LDR      r1,[r1,#0x408]
000042  6802              LDR      r2,[r0,#0]
000044  4391              BICS     r1,r1,r2
000046  461a              MOV      r2,r3
000048  f8c2f8c2          STR      r1,[r2,#0x408]
;;;74         EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00004c  4611              MOV      r1,r2
00004e  f8d1f8d1          LDR      r1,[r1,#0x40c]
000052  6802              LDR      r2,[r0,#0]
000054  4391              BICS     r1,r1,r2
000056  4a33              LDR      r2,|L1.292|
000058  320c              ADDS     r2,r2,#0xc
00005a  6011              STR      r1,[r2,#0]
;;;75         
;;;76         /* Select the trigger for the selected external interrupts */
;;;77         if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
00005c  7941              LDRB     r1,[r0,#5]
00005e  2910              CMP      r1,#0x10
000060  d111              BNE      |L1.134|
;;;78         {
;;;79           /* Rising Falling edge */
;;;80           EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
000062  4931              LDR      r1,|L1.296|
000064  f8d1f8d1          LDR      r1,[r1,#0x408]
000068  6802              LDR      r2,[r0,#0]
00006a  4311              ORRS     r1,r1,r2
00006c  4a2e              LDR      r2,|L1.296|
00006e  f8c2f8c2          STR      r1,[r2,#0x408]
;;;81           EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
000072  4611              MOV      r1,r2
000074  f8d1f8d1          LDR      r1,[r1,#0x40c]
000078  6802              LDR      r2,[r0,#0]
00007a  4311              ORRS     r1,r1,r2
00007c  4a2a              LDR      r2,|L1.296|
00007e  f8c2f8c2          STR      r1,[r2,#0x40c]
000082  e019              B        |L1.184|
                  |L1.132|
000084  e00c              B        |L1.160|
                  |L1.134|
;;;82         }
;;;83         else
;;;84         {
;;;85           *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
000086  7941              LDRB     r1,[r0,#5]
000088  4a27              LDR      r2,|L1.296|
00008a  4411              ADD      r1,r1,r2
00008c  f8d1f8d1          LDR      r1,[r1,#0x400]
000090  6802              LDR      r2,[r0,#0]
000092  4311              ORRS     r1,r1,r2
000094  7942              LDRB     r2,[r0,#5]
000096  4b24              LDR      r3,|L1.296|
000098  441a              ADD      r2,r2,r3
00009a  f8c2f8c2          STR      r1,[r2,#0x400]
00009e  e00b              B        |L1.184|
                  |L1.160|
;;;86         }
;;;87       }
;;;88       else
;;;89       {
;;;90         /* Disable the selected external lines */
;;;91         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
0000a0  7901              LDRB     r1,[r0,#4]
0000a2  4a21              LDR      r2,|L1.296|
0000a4  4411              ADD      r1,r1,r2
0000a6  f8d1f8d1          LDR      r1,[r1,#0x400]
0000aa  6802              LDR      r2,[r0,#0]
0000ac  4391              BICS     r1,r1,r2
0000ae  7902              LDRB     r2,[r0,#4]
0000b0  4b1d              LDR      r3,|L1.296|
0000b2  441a              ADD      r2,r2,r3
0000b4  f8c2f8c2          STR      r1,[r2,#0x400]
                  |L1.184|
;;;92       }
;;;93     }
0000b8  4770              BX       lr
;;;94     
                          ENDP

                  EXTI_StructInit PROC
;;;104    {
;;;105      EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
0000ba  2100              MOVS     r1,#0
0000bc  6001              STR      r1,[r0,#0]
;;;106      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
0000be  7101              STRB     r1,[r0,#4]
;;;107      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
0000c0  210c              MOVS     r1,#0xc
0000c2  7141              STRB     r1,[r0,#5]
;;;108      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
0000c4  2100              MOVS     r1,#0
0000c6  7181              STRB     r1,[r0,#6]
;;;109    }
0000c8  4770              BX       lr
;;;110    
                          ENDP

                  EXTI_GenerateSWInterrupt PROC
;;;125      
;;;126      EXTI->SWIER |= EXTI_Line;
0000ca  4916              LDR      r1,|L1.292|
0000cc  3110              ADDS     r1,r1,#0x10
0000ce  6809              LDR      r1,[r1,#0]
0000d0  4301              ORRS     r1,r1,r0
0000d2  4a15              LDR      r2,|L1.296|
0000d4  f8c2f8c2          STR      r1,[r2,#0x410]
;;;127    }
0000d8  4770              BX       lr
;;;128    
                          ENDP

                  EXTI_GetFlagStatus PROC
;;;138    FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
;;;139    {
0000da  4601              MOV      r1,r0
;;;140      FlagStatus bitstatus = RESET;
0000dc  2000              MOVS     r0,#0
;;;141    
;;;142      /* Check the parameters */
;;;143      assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;144      
;;;145      if ((EXTI->PR & EXTI_Line) != (u32)RESET)
0000de  4a11              LDR      r2,|L1.292|
0000e0  3214              ADDS     r2,r2,#0x14
0000e2  6812              LDR      r2,[r2,#0]
0000e4  420a              TST      r2,r1
0000e6  d001              BEQ      |L1.236|
;;;146      {
;;;147        bitstatus = SET;
0000e8  2001              MOVS     r0,#1
0000ea  e000              B        |L1.238|
                  |L1.236|
;;;148      }
;;;149      else
;;;150      {
;;;151        bitstatus = RESET;
0000ec  2000              MOVS     r0,#0
                  |L1.238|
;;;152      }
;;;153      return bitstatus;
;;;154    }
0000ee  4770              BX       lr
;;;155    
                          ENDP

                  EXTI_ClearFlag PROC
;;;169      
;;;170      EXTI->PR = EXTI_Line;
0000f0  490c              LDR      r1,|L1.292|
0000f2  3114              ADDS     r1,r1,#0x14
0000f4  6008              STR      r0,[r1,#0]
;;;171    }
0000f6  4770              BX       lr
;;;172    
                          ENDP

                  EXTI_GetITStatus PROC
;;;182    ITStatus EXTI_GetITStatus(u32 EXTI_Line)
;;;183    {
0000f8  4601              MOV      r1,r0
;;;184      ITStatus bitstatus = RESET;
0000fa  2000              MOVS     r0,#0
;;;185      u32 enablestatus = 0;
0000fc  2200              MOVS     r2,#0
;;;186    
;;;187      /* Check the parameters */
;;;188      assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;189      
;;;190      enablestatus =  EXTI->IMR & EXTI_Line;
0000fe  4b09              LDR      r3,|L1.292|
000100  681b              LDR      r3,[r3,#0]
000102  ea03ea03          AND      r2,r3,r1
;;;191    
;;;192      if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
000106  4b08              LDR      r3,|L1.296|
000108  f8d3f8d3          LDR      r3,[r3,#0x414]
00010c  420b              TST      r3,r1
00010e  d002              BEQ      |L1.278|
000110  b10a              CBZ      r2,|L1.278|
;;;193      {
;;;194        bitstatus = SET;
000112  2001              MOVS     r0,#1
000114  e000              B        |L1.280|
                  |L1.278|
;;;195      }
;;;196      else
;;;197      {
;;;198        bitstatus = RESET;
000116  2000              MOVS     r0,#0
                  |L1.280|
;;;199      }
;;;200      return bitstatus;
;;;201    }
000118  4770              BX       lr
;;;202    
                          ENDP

                  EXTI_ClearITPendingBit PROC
;;;216      
;;;217      EXTI->PR = EXTI_Line;
00011a  4902              LDR      r1,|L1.292|
00011c  3114              ADDS     r1,r1,#0x14
00011e  6008              STR      r0,[r1,#0]
;;;218    }
000120  4770              BX       lr
;;;219    
                          ENDP

000122  0000              DCW      0x0000
                  |L1.292|
000124  40010400          DCD      0x40010400
                  |L1.296|
000128  40010000          DCD      0x40010000
                  |L1.300|
00012c  0007ffff          DCD      0x0007ffff

⌨️ 快捷键说明

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