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

📄 stm32f10x_exti.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\stm32f10x_exti.o --depend=.\Obj\stm32f10x_exti.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\..\FWLib\library\src\stm32f10x_exti.c]
                          THUMB

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

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

000006  0000              DCW      0x0000
                  |L1.8|
                          DCD      0x40010414

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

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

000006  0000              DCW      0x0000
                  |L2.8|
                          DCD      0x40010414

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

                  EXTI_DeInit PROC
;;;35     *******************************************************************************/
;;;36     void EXTI_DeInit(void)
000000  4804              LDR      r0,|L3.20|
;;;37     {
;;;38       EXTI->IMR = 0x00000000;
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,|L3.24|
00000e  6141              STR      r1,[r0,#0x14]
;;;43     }
000010  4770              BX       lr
;;;44     
                          ENDP

000012  0000              DCW      0x0000
                  |L3.20|
                          DCD      0x40010400
                  |L3.24|
                          DCD      0x0007ffff

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

                  EXTI_GenerateSWInterrupt PROC
;;;119    *******************************************************************************/
;;;120    void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
000000  4902              LDR      r1,|L4.12|
;;;121    {
;;;122      /* Check the parameters */
;;;123      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;124      
;;;125      EXTI->SWIER |= EXTI_Line;
000002  680a              LDR      r2,[r1,#0]
000004  4302              ORRS     r2,r2,r0
000006  600a              STR      r2,[r1,#0]
;;;126    }
000008  4770              BX       lr
;;;127    
                          ENDP

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

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

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

                  |L5.16|
                          DCD      0x40010414

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

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

                  |L6.24|
                          DCD      0x40010400

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

                  EXTI_Init PROC
;;;54     *******************************************************************************/
;;;55     void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
000000  b510              PUSH     {r4,lr}
;;;56     {
;;;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  7983              LDRB     r3,[r0,#6]
;;;64       {
;;;65         /* Clear EXTI line configuration */
;;;66         EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
000004  4920              LDR      r1,|L7.136|
000006  6802              LDR      r2,[r0,#0]            ;63
000008  b3a3              CBZ      r3,|L7.116|
00000a  f8d13400          LDR      r3,[r1,#0x400]
00000e  4393              BICS     r3,r3,r2
000010  f8c13400          STR      r3,[r1,#0x400]
;;;67         EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000014  f8d12404          LDR      r2,[r1,#0x404]
000018  6803              LDR      r3,[r0,#0]
00001a  439a              BICS     r2,r2,r3
00001c  f8c12404          STR      r2,[r1,#0x404]
;;;68         
;;;69         *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
000020  7902              LDRB     r2,[r0,#4]
000022  6804              LDR      r4,[r0,#0]
000024  440a              ADD      r2,r2,r1
000026  f8d23400          LDR      r3,[r2,#0x400]
00002a  4323              ORRS     r3,r3,r4
00002c  f8c23400          STR      r3,[r2,#0x400]
;;;70     
;;;71         /* Clear Rising Falling edge configuration */
;;;72         EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000030  f8d12408          LDR      r2,[r1,#0x408]
000034  6803              LDR      r3,[r0,#0]
000036  439a              BICS     r2,r2,r3
000038  f8c12408          STR      r2,[r1,#0x408]
;;;73         EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00003c  f8d1240c          LDR      r2,[r1,#0x40c]
000040  6803              LDR      r3,[r0,#0]
000042  439a              BICS     r2,r2,r3
000044  f8c1240c          STR      r2,[r1,#0x40c]
;;;74         
;;;75         /* Select the trigger for the selected external interrupts */
;;;76         if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
000048  7942              LDRB     r2,[r0,#5]
00004a  2a10              CMP      r2,#0x10
00004c  d10a              BNE      |L7.100|
00004e  f5016181          ADD      r1,r1,#0x408
;;;77         {
;;;78           /* Rising Falling edge */
;;;79           EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
000052  680a              LDR      r2,[r1,#0]
000054  6803              LDR      r3,[r0,#0]
000056  431a              ORRS     r2,r2,r3
000058  600a              STR      r2,[r1,#0]
;;;80           EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
00005a  684a              LDR      r2,[r1,#4]
00005c  6800              LDR      r0,[r0,#0]
00005e  4302              ORRS     r2,r2,r0
000060  604a              STR      r2,[r1,#4]
;;;81         }
;;;82         else
;;;83         {
;;;84           *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
;;;85         }
;;;86       }
;;;87       else
;;;88       {
;;;89         /* Disable the selected external lines */
;;;90         *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
;;;91       }
;;;92     }
000062  bd10              POP      {r4,pc}
                  |L7.100|
000064  4411              ADD      r1,r1,r2              ;84
000066  f8d12400          LDR      r2,[r1,#0x400]        ;84
00006a  6800              LDR      r0,[r0,#0]            ;84
00006c  4302              ORRS     r2,r2,r0              ;84
00006e  f8c12400          STR      r2,[r1,#0x400]        ;84
                  |L7.114|
000072  bd10              POP      {r4,pc}
                  |L7.116|
000074  e7ff              B        |L7.118|
                  |L7.118|
000076  7900              LDRB     r0,[r0,#4]            ;90
000078  4408              ADD      r0,r0,r1              ;90
00007a  f8d01400          LDR      r1,[r0,#0x400]        ;90
00007e  4391              BICS     r1,r1,r2              ;90
000080  f8c01400          STR      r1,[r0,#0x400]        ;90
000084  e7f5              B        |L7.114|
;;;93     
                          ENDP

000086  0000              DCW      0x0000
                  |L7.136|
                          DCD      0x40010000

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

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

⌨️ 快捷键说明

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