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

📄 stm32f10x_exti.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_exti.o --depend=.\Obj\stm32f10x_exti.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_exti.crf ..\..\..\FWLib\library\src\stm32f10x_exti.c]
                          THUMB

                          AREA ||i.EXTI_DeInit||, CODE, READONLY, ALIGN=2

                  EXTI_DeInit PROC
;;;37     {
;;;38       EXTI->IMR = 0x00000000;
000000  4804              LDR      r0,|L1.20|
000002  2100              MOVS     r1,#0
000004  6001              STR      r1,[r0,#0]
;;;39       EXTI->EMR = 0x00000000;
000006  6041              STR      r1,[r0,#4]
;;;40       EXTI->RTSR = 0x00000000; 
000008  6081              STR      r1,[r0,#8]
;;;41       EXTI->FTSR = 0x00000000; 
00000a  60c1              STR      r1,[r0,#0xc]
;;;42       EXTI->PR = 0x0007FFFF;
00000c  4902              LDR      r1,|L1.24|
00000e  6141              STR      r1,[r0,#0x14]
;;;43     }
000010  4770              BX       lr
                          ENDP

000012  0000              DCW      0x0000
                  |L1.20|
000014  40010400          DCD      0x40010400
                  |L1.24|
000018  0007ffff          DCD      0x0007ffff

                          AREA ||i.EXTI_Init||, CODE, READONLY, ALIGN=2

                  EXTI_Init PROC
;;;55     void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
;;;56     {
000000  b530              PUSH     {r4,r5,lr}
;;;57       /* Check the parameters */
;;;58       assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;59       assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;60       assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  
;;;61       assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;62          
;;;63       if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000002  4c18              LDR      r4,|L2.100|
000004  7901              LDRB     r1,[r0,#4]
000006  7985              LDRB     r5,[r0,#6]
000008  190a              ADDS     r2,r1,r4
00000a  f8d2f8d2          LDR      r1,[r2,#0x400]
00000e  6803              LDR      r3,[r0,#0]
000010  b325              CBZ      r5,|L2.92|
;;;64       {
;;;65         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
000012  4319              ORRS     r1,r1,r3
;;;66     
;;;67         /* Clear Rising Falling edge configuration */
;;;68         EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000014  f8c2f8c2          STR      r1,[r2,#0x400]
000018  f8d4f8d4          LDR      r1,[r4,#0x408]
00001c  6802              LDR      r2,[r0,#0]
00001e  4391              BICS     r1,r1,r2
000020  f8c4f8c4          STR      r1,[r4,#0x408]
;;;69         EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
000024  f8d4f8d4          LDR      r1,[r4,#0x40c]
000028  6802              LDR      r2,[r0,#0]
00002a  4391              BICS     r1,r1,r2
00002c  f8c4f8c4          STR      r1,[r4,#0x40c]
;;;70         
;;;71         /* Select the trigger for the selected external interrupts */
;;;72         if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
000030  7941              LDRB     r1,[r0,#5]
000032  2910              CMP      r1,#0x10
000034  d10a              BNE      |L2.76|
000036  f504f504          ADD      r4,r4,#0x408
;;;73         {
;;;74           /* Rising Falling edge */
;;;75           EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
00003a  6821              LDR      r1,[r4,#0]
00003c  6802              LDR      r2,[r0,#0]
00003e  4311              ORRS     r1,r1,r2
000040  6021              STR      r1,[r4,#0]
;;;76           EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
000042  6861              LDR      r1,[r4,#4]
000044  6800              LDR      r0,[r0,#0]
000046  4301              ORRS     r1,r1,r0
000048  6061              STR      r1,[r4,#4]
;;;77         }
;;;78         else
;;;79         {
;;;80           *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
;;;81         }
;;;82       }
;;;83       else
;;;84       {
;;;85         /* Disable the selected external lines */
;;;86         *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
;;;87       }
;;;88     }
00004a  bd30              POP      {r4,r5,pc}
                  |L2.76|
00004c  4421              ADD      r1,r1,r4
00004e  f8d1f8d1          LDR      r2,[r1,#0x400]
000052  6800              LDR      r0,[r0,#0]
000054  4302              ORRS     r2,r2,r0
000056  f8c1f8c1          STR      r2,[r1,#0x400]
00005a  bd30              POP      {r4,r5,pc}
                  |L2.92|
00005c  4399              BICS     r1,r1,r3
00005e  f8c2f8c2          STR      r1,[r2,#0x400]
000062  bd30              POP      {r4,r5,pc}
                          ENDP

                  |L2.100|
000064  40010000          DCD      0x40010000

                          AREA ||i.EXTI_StructInit||, CODE, READONLY, ALIGN=1

                  EXTI_StructInit PROC
;;;99     {
;;;100      EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
000000  2100              MOVS     r1,#0
;;;101      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
000002  6001              STR      r1,[r0,#0]
000004  7101              STRB     r1,[r0,#4]
;;;102      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
000006  220c              MOVS     r2,#0xc
000008  7142              STRB     r2,[r0,#5]
;;;103      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
00000a  7181              STRB     r1,[r0,#6]
;;;104    }
00000c  4770              BX       lr
                          ENDP


                          AREA ||i.EXTI_GenerateSWInterrupt||, CODE, READONLY, ALIGN=2

                  EXTI_GenerateSWInterrupt PROC
;;;116    void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
;;;117    {
000000  4a02              LDR      r2,|L4.12|
;;;118      /* Check the parameters */
;;;119      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;120      
;;;121      EXTI->SWIER |= EXTI_Line;
000002  6811              LDR      r1,[r2,#0]
000004  4301              ORRS     r1,r1,r0
000006  6011              STR      r1,[r2,#0]
;;;122    }
000008  4770              BX       lr
                          ENDP

00000a  0000              DCW      0x0000
                  |L4.12|
00000c  40010410          DCD      0x40010410

                          AREA ||i.EXTI_GetFlagStatus||, CODE, READONLY, ALIGN=2

                  EXTI_GetFlagStatus PROC
;;;134    {
;;;135      FlagStatus bitstatus = RESET;
000000  4903              LDR      r1,|L5.16|
000002  4602              MOV      r2,r0
;;;136    
;;;137      /* Check the parameters */
;;;138      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;139      
;;;140      if ((EXTI->PR & EXTI_Line) != (u32)RESET)
000004  6809              LDR      r1,[r1,#0]
000006  2000              MOVS     r0,#0
000008  4211              TST      r1,r2
00000a  d000              BEQ      |L5.14|
;;;141      {
;;;142        bitstatus = SET;
00000c  2001              MOVS     r0,#1
                  |L5.14|
;;;143      }
;;;144      else
;;;145      {
;;;146        bitstatus = RESET;
;;;147      }
;;;148      return bitstatus;
;;;149    }
00000e  4770              BX       lr
                          ENDP

                  |L5.16|
000010  40010414          DCD      0x40010414

                          AREA ||i.EXTI_ClearFlag||, CODE, READONLY, ALIGN=2

                  EXTI_ClearFlag PROC
;;;160    void EXTI_ClearFlag(u32 EXTI_Line)
;;;161    {
000000  4901              LDR      r1,|L6.8|
;;;162      /* Check the parameters */
;;;163      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;164      
;;;165      EXTI->PR = EXTI_Line;
000002  6008              STR      r0,[r1,#0]
;;;166    }
000004  4770              BX       lr
                          ENDP

000006  0000              DCW      0x0000
                  |L6.8|
000008  40010414          DCD      0x40010414

                          AREA ||i.EXTI_GetITStatus||, CODE, READONLY, ALIGN=2

                  EXTI_GetITStatus PROC
;;;178    {
;;;179      ITStatus bitstatus = RESET;
000000  4b05              LDR      r3,|L7.24|
000002  4601              MOV      r1,r0
;;;180      u32 enablestatus = 0;
;;;181    
;;;182      /* Check the parameters */
;;;183      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;184      
;;;185      enablestatus =  EXTI->IMR & EXTI_Line;
000004  681a              LDR      r2,[r3,#0]
000006  2000              MOVS     r0,#0
;;;186    
;;;187      if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
000008  695b              LDR      r3,[r3,#0x14]
00000a  400a              ANDS     r2,r2,r1
00000c  420b              TST      r3,r1
00000e  d002              BEQ      |L7.22|
000010  2a00              CMP      r2,#0
000012  d000              BEQ      |L7.22|
;;;188      {
;;;189        bitstatus = SET;
000014  2001              MOVS     r0,#1
                  |L7.22|
;;;190      }
;;;191      else
;;;192      {
;;;193        bitstatus = RESET;
;;;194      }
;;;195      return bitstatus;
;;;196    }
000016  4770              BX       lr
                          ENDP

                  |L7.24|
000018  40010400          DCD      0x40010400

                          AREA ||i.EXTI_ClearITPendingBit||, CODE, READONLY, ALIGN=2

                  EXTI_ClearITPendingBit PROC
;;;207    void EXTI_ClearITPendingBit(u32 EXTI_Line)
;;;208    {
000000  4901              LDR      r1,|L8.8|
;;;209      /* Check the parameters */
;;;210      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;211      
;;;212      EXTI->PR = EXTI_Line;
000002  6008              STR      r0,[r1,#0]
;;;213    }
000004  4770              BX       lr
                          ENDP

000006  0000              DCW      0x0000
                  |L8.8|
000008  40010414          DCD      0x40010414

⌨️ 快捷键说明

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