; generated by ARM C/C++ Compiler, RVCT4.0 [Build 728]
; commandline ArmCC [--debug -c --asm --interleave -o..\OBJ\stm32f10x_exti.o --depend=..\OBJ\stm32f10x_exti.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\USER\INC -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=..\OBJ\stm32f10x_exti.crf ..\..\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c]
                          THUMB

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

                  EXTI_DeInit PROC
;;;84       */
;;;85     void EXTI_DeInit(void)
000000  2000              MOVS     r0,#0
;;;86     {
;;;87       EXTI->IMR = 0x00000000;
000002  4947              LDR      r1,|L1.288|
000004  6008              STR      r0,[r1,#0]
;;;88       EXTI->EMR = 0x00000000;
000006  4947              LDR      r1,|L1.292|
000008  f8c10404          STR      r0,[r1,#0x404]
;;;89       EXTI->RTSR = 0x00000000; 
00000c  4946              LDR      r1,|L1.296|
00000e  6008              STR      r0,[r1,#0]
;;;90       EXTI->FTSR = 0x00000000; 
000010  f1010104          ADD      r1,r1,#4
000014  6008              STR      r0,[r1,#0]
;;;91       EXTI->PR = 0x000FFFFF;
000016  4845              LDR      r0,|L1.300|
000018  4945              LDR      r1,|L1.304|
00001a  6008              STR      r0,[r1,#0]
;;;92     }
00001c  4770              BX       lr
;;;93     
                          ENDP

                  EXTI_Init PROC
;;;100      */
;;;101    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
00001e  2100              MOVS     r1,#0
;;;102    {
;;;103      uint32_t tmp = 0;
;;;104    
;;;105      /* Check the parameters */
;;;106      assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;107      assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;108      assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  
;;;109      assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;110    
;;;111      tmp = (uint32_t)EXTI_BASE;
000020  493f              LDR      r1,|L1.288|
;;;112         
;;;113      if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000022  7982              LDRB     r2,[r0,#6]
000024  2a00              CMP      r2,#0
000026  d043              BEQ      |L1.176|
;;;114      {
;;;115        /* Clear EXTI line configuration */
;;;116        EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
000028  4a3e              LDR      r2,|L1.292|
00002a  f8d22400          LDR      r2,[r2,#0x400]
00002e  6803              LDR      r3,[r0,#0]
000030  439a              BICS     r2,r2,r3
000032  4b3c              LDR      r3,|L1.292|
000034  f8c32400          STR      r2,[r3,#0x400]
;;;117        EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000038  461a              MOV      r2,r3
00003a  f8d22404          LDR      r2,[r2,#0x404]
00003e  6803              LDR      r3,[r0,#0]
000040  439a              BICS     r2,r2,r3
000042  f1010304          ADD      r3,r1,#4
000046  601a              STR      r2,[r3,#0]
;;;118        
;;;119        tmp += EXTI_InitStruct->EXTI_Mode;
000048  7902              LDRB     r2,[r0,#4]
00004a  4411              ADD      r1,r1,r2
;;;120    
;;;121        *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
00004c  680a              LDR      r2,[r1,#0]
00004e  6803              LDR      r3,[r0,#0]
000050  ea420203          ORR      r2,r2,r3
000054  600a              STR      r2,[r1,#0]
;;;122    
;;;123        /* Clear Rising Falling edge configuration */
;;;124        EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000056  4a33              LDR      r2,|L1.292|
000058  f8d22408          LDR      r2,[r2,#0x408]
00005c  6803              LDR      r3,[r0,#0]
00005e  ea220203          BIC      r2,r2,r3
000062  4b30              LDR      r3,|L1.292|
000064  f8c32408          STR      r2,[r3,#0x408]
;;;125        EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
000068  461a              MOV      r2,r3
00006a  f8d2240c          LDR      r2,[r2,#0x40c]
00006e  6803              LDR      r3,[r0,#0]
000070  ea220203          BIC      r2,r2,r3
000074  4b2f              LDR      r3,|L1.308|
000076  601a              STR      r2,[r3,#0]
;;;126        
;;;127        /* Select the trigger for the selected external interrupts */
;;;128        if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
000078  7942              LDRB     r2,[r0,#5]
00007a  2a10              CMP      r2,#0x10
00007c  d110              BNE      |L1.160|
;;;129        {
;;;130          /* Rising Falling edge */
;;;131          EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
00007e  4a29              LDR      r2,|L1.292|
000080  f8d22408          LDR      r2,[r2,#0x408]
000084  6803              LDR      r3,[r0,#0]
000086  431a              ORRS     r2,r2,r3
000088  4b26              LDR      r3,|L1.292|
00008a  f8c32408          STR      r2,[r3,#0x408]
;;;132          EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
00008e  461a              MOV      r2,r3
000090  f8d2240c          LDR      r2,[r2,#0x40c]
000094  6803              LDR      r3,[r0,#0]
000096  431a              ORRS     r2,r2,r3
000098  4b22              LDR      r3,|L1.292|
00009a  f8c3240c          STR      r2,[r3,#0x40c]
00009e  e00d              B        |L1.188|
                  |L1.160|
;;;133        }
;;;134        else
;;;135        {
;;;136          tmp = (uint32_t)EXTI_BASE;
0000a0  491f              LDR      r1,|L1.288|
;;;137          tmp += EXTI_InitStruct->EXTI_Trigger;
0000a2  7942              LDRB     r2,[r0,#5]
0000a4  4411              ADD      r1,r1,r2
;;;138    
;;;139          *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
0000a6  680a              LDR      r2,[r1,#0]
0000a8  6803              LDR      r3,[r0,#0]
0000aa  431a              ORRS     r2,r2,r3
0000ac  600a              STR      r2,[r1,#0]
0000ae  e005              B        |L1.188|
                  |L1.176|
;;;140        }
;;;141      }
;;;142      else
;;;143      {
;;;144        tmp += EXTI_InitStruct->EXTI_Mode;
0000b0  7902              LDRB     r2,[r0,#4]
0000b2  4411              ADD      r1,r1,r2
;;;145    
;;;146        /* Disable the selected external lines */
;;;147        *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
0000b4  680a              LDR      r2,[r1,#0]
0000b6  6803              LDR      r3,[r0,#0]
0000b8  439a              BICS     r2,r2,r3
0000ba  600a              STR      r2,[r1,#0]
                  |L1.188|
;;;148      }
;;;149    }
0000bc  4770              BX       lr
;;;150    
                          ENDP

                  EXTI_StructInit PROC
;;;156      */
;;;157    void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
0000be  2100              MOVS     r1,#0
;;;158    {
;;;159      EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
0000c0  6001              STR      r1,[r0,#0]
;;;160      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
0000c2  7101              STRB     r1,[r0,#4]
;;;161      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
0000c4  210c              MOVS     r1,#0xc
0000c6  7141              STRB     r1,[r0,#5]
;;;162      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
0000c8  2100              MOVS     r1,#0
0000ca  7181              STRB     r1,[r0,#6]
;;;163    }
0000cc  4770              BX       lr
;;;164    
                          ENDP

                  EXTI_GenerateSWInterrupt PROC
;;;170      */
;;;171    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
0000ce  491a              LDR      r1,|L1.312|
;;;172    {
;;;173      /* Check the parameters */
;;;174      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;175      
;;;176      EXTI->SWIER |= EXTI_Line;
0000d0  6809              LDR      r1,[r1,#0]
0000d2  ea410100          ORR      r1,r1,r0
0000d6  4a13              LDR      r2,|L1.292|
0000d8  f8c21410          STR      r1,[r2,#0x410]
;;;177    }
0000dc  4770              BX       lr
;;;178    
                          ENDP

                  EXTI_GetFlagStatus PROC
;;;185      */
;;;186    FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
0000de  4601              MOV      r1,r0
;;;187    {
;;;188      FlagStatus bitstatus = RESET;
0000e0  2000              MOVS     r0,#0
;;;189      /* Check the parameters */
;;;190      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;191      
;;;192      if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
0000e2  4a13              LDR      r2,|L1.304|
0000e4  6812              LDR      r2,[r2,#0]
0000e6  420a              TST      r2,r1
0000e8  d001              BEQ      |L1.238|
;;;193      {
;;;194        bitstatus = SET;
0000ea  2001              MOVS     r0,#1
0000ec  e000              B        |L1.240|
                  |L1.238|
;;;195      }
;;;196      else
;;;197      {
;;;198        bitstatus = RESET;
0000ee  2000              MOVS     r0,#0
                  |L1.240|
;;;199      }
;;;200      return bitstatus;
;;;201    }
0000f0  4770              BX       lr
;;;202    
                          ENDP

                  EXTI_ClearFlag PROC
;;;208      */
;;;209    void EXTI_ClearFlag(uint32_t EXTI_Line)
0000f2  490f              LDR      r1,|L1.304|
;;;210    {
;;;211      /* Check the parameters */
;;;212      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;213      
;;;214      EXTI->PR = EXTI_Line;
0000f4  6008              STR      r0,[r1,#0]
;;;215    }
0000f6  4770              BX       lr
;;;216    
                          ENDP

                  EXTI_GetITStatus PROC
;;;223      */
;;;224    ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
0000f8  4601              MOV      r1,r0
;;;225    {
;;;226      ITStatus bitstatus = RESET;
0000fa  2000              MOVS     r0,#0
;;;227      uint32_t enablestatus = 0;
0000fc  2200              MOVS     r2,#0
;;;228      /* Check the parameters */
;;;229      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;230      
;;;231      enablestatus =  EXTI->IMR & EXTI_Line;
0000fe  4b08              LDR      r3,|L1.288|
000100  681b              LDR      r3,[r3,#0]
000102  ea030201          AND      r2,r3,r1
;;;232      if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
000106  4b07              LDR      r3,|L1.292|
000108  f8d33414          LDR      r3,[r3,#0x414]
00010c  420b              TST      r3,r1
00010e  d002              BEQ      |L1.278|
000110  b10a              CBZ      r2,|L1.278|
;;;233      {
;;;234        bitstatus = SET;
000112  2001              MOVS     r0,#1
000114  e000              B        |L1.280|
                  |L1.278|
;;;235      }
;;;236      else
;;;237      {
;;;238        bitstatus = RESET;
000116  2000              MOVS     r0,#0
                  |L1.280|
;;;239      }
;;;240      return bitstatus;
;;;241    }
000118  4770              BX       lr
;;;242    
                          ENDP

                  EXTI_ClearITPendingBit PROC
;;;248      */
;;;249    void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
00011a  4905              LDR      r1,|L1.304|
;;;250    {
;;;251      /* Check the parameters */
;;;252      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;253      
;;;254      EXTI->PR = EXTI_Line;
00011c  6008              STR      r0,[r1,#0]
;;;255    }
00011e  4770              BX       lr
;;;256    
                          ENDP

                  |L1.288|
                          DCD      0x40010400
                  |L1.292|
                          DCD      0x40010000
                  |L1.296|
                          DCD      0x40010408
                  |L1.300|
                          DCD      0x000fffff
                  |L1.304|
                          DCD      0x40010414
                  |L1.308|
                          DCD      0x4001040c
                  |L1.312|
                          DCD      0x40010410
