; generated by ARM C/C++ Compiler, 5.03 [Build 24]
; commandline ArmCC [--list --debug -c --asm --interleave -o..\OBJ\stm32f10x_exti.o --asm_dir=..\LIST\ --list_dir=..\LIST\ --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\RV31\INC -IC:\Keil\ARM\CMSIS\Include -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  4944              LDR      r1,|L1.276|
000004  6008              STR      r0,[r1,#0]
;;;88       EXTI->EMR = 0x00000000;
000006  1d09              ADDS     r1,r1,#4
000008  6008              STR      r0,[r1,#0]
;;;89       EXTI->RTSR = 0x00000000; 
00000a  1d09              ADDS     r1,r1,#4
00000c  6008              STR      r0,[r1,#0]
;;;90       EXTI->FTSR = 0x00000000; 
00000e  1d09              ADDS     r1,r1,#4
000010  6008              STR      r0,[r1,#0]
;;;91       EXTI->PR = 0x000FFFFF;
000012  4841              LDR      r0,|L1.280|
000014  493f              LDR      r1,|L1.276|
000016  3114              ADDS     r1,r1,#0x14
000018  6008              STR      r0,[r1,#0]
;;;92     }
00001a  4770              BX       lr
;;;93     
                          ENDP

                  EXTI_Init PROC
;;;100      */
;;;101    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
00001c  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;
00001e  493d              LDR      r1,|L1.276|
;;;112         
;;;113      if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000020  7982              LDRB     r2,[r0,#6]
000022  2a00              CMP      r2,#0
000024  d03a              BEQ      |L1.156|
;;;114      {
;;;115        /* Clear EXTI line configuration */
;;;116        EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
000026  460a              MOV      r2,r1
000028  6812              LDR      r2,[r2,#0]
00002a  6803              LDR      r3,[r0,#0]
00002c  439a              BICS     r2,r2,r3
00002e  460b              MOV      r3,r1
000030  601a              STR      r2,[r3,#0]
;;;117        EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000032  1d0a              ADDS     r2,r1,#4
000034  6812              LDR      r2,[r2,#0]
000036  6803              LDR      r3,[r0,#0]
000038  439a              BICS     r2,r2,r3
00003a  1d0b              ADDS     r3,r1,#4
00003c  601a              STR      r2,[r3,#0]
;;;118        
;;;119        tmp += EXTI_InitStruct->EXTI_Mode;
00003e  7902              LDRB     r2,[r0,#4]
000040  4411              ADD      r1,r1,r2
;;;120    
;;;121        *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000042  680a              LDR      r2,[r1,#0]
000044  6803              LDR      r3,[r0,#0]
000046  431a              ORRS     r2,r2,r3
000048  600a              STR      r2,[r1,#0]
;;;122    
;;;123        /* Clear Rising Falling edge configuration */
;;;124        EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
00004a  4a32              LDR      r2,|L1.276|
00004c  3208              ADDS     r2,r2,#8
00004e  6812              LDR      r2,[r2,#0]
000050  6803              LDR      r3,[r0,#0]
000052  439a              BICS     r2,r2,r3
000054  4b2f              LDR      r3,|L1.276|
000056  3308              ADDS     r3,r3,#8
000058  601a              STR      r2,[r3,#0]
;;;125        EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00005a  1d1a              ADDS     r2,r3,#4
00005c  6812              LDR      r2,[r2,#0]
00005e  6803              LDR      r3,[r0,#0]
000060  439a              BICS     r2,r2,r3
000062  4b2c              LDR      r3,|L1.276|
000064  330c              ADDS     r3,r3,#0xc
000066  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)
000068  7942              LDRB     r2,[r0,#5]
00006a  2a10              CMP      r2,#0x10
00006c  d10e              BNE      |L1.140|
;;;129        {
;;;130          /* Rising Falling edge */
;;;131          EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
00006e  1f1a              SUBS     r2,r3,#4
000070  6812              LDR      r2,[r2,#0]
000072  6803              LDR      r3,[r0,#0]
000074  431a              ORRS     r2,r2,r3
000076  4b27              LDR      r3,|L1.276|
000078  3308              ADDS     r3,r3,#8
00007a  601a              STR      r2,[r3,#0]
;;;132          EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
00007c  1d1a              ADDS     r2,r3,#4
00007e  6812              LDR      r2,[r2,#0]
000080  6803              LDR      r3,[r0,#0]
000082  431a              ORRS     r2,r2,r3
000084  4b23              LDR      r3,|L1.276|
000086  330c              ADDS     r3,r3,#0xc
000088  601a              STR      r2,[r3,#0]
00008a  e00d              B        |L1.168|
                  |L1.140|
;;;133        }
;;;134        else
;;;135        {
;;;136          tmp = (uint32_t)EXTI_BASE;
00008c  4921              LDR      r1,|L1.276|
;;;137          tmp += EXTI_InitStruct->EXTI_Trigger;
00008e  7942              LDRB     r2,[r0,#5]
000090  4411              ADD      r1,r1,r2
;;;138    
;;;139          *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000092  680a              LDR      r2,[r1,#0]
000094  6803              LDR      r3,[r0,#0]
000096  431a              ORRS     r2,r2,r3
000098  600a              STR      r2,[r1,#0]
00009a  e005              B        |L1.168|
                  |L1.156|
;;;140        }
;;;141      }
;;;142      else
;;;143      {
;;;144        tmp += EXTI_InitStruct->EXTI_Mode;
00009c  7902              LDRB     r2,[r0,#4]
00009e  4411              ADD      r1,r1,r2
;;;145    
;;;146        /* Disable the selected external lines */
;;;147        *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
0000a0  680a              LDR      r2,[r1,#0]
0000a2  6803              LDR      r3,[r0,#0]
0000a4  439a              BICS     r2,r2,r3
0000a6  600a              STR      r2,[r1,#0]
                  |L1.168|
;;;148      }
;;;149    }
0000a8  4770              BX       lr
;;;150    
                          ENDP

                  EXTI_StructInit PROC
;;;156      */
;;;157    void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
0000aa  2100              MOVS     r1,#0
;;;158    {
;;;159      EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
0000ac  6001              STR      r1,[r0,#0]
;;;160      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
0000ae  7101              STRB     r1,[r0,#4]
;;;161      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
0000b0  210c              MOVS     r1,#0xc
0000b2  7141              STRB     r1,[r0,#5]
;;;162      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
0000b4  2100              MOVS     r1,#0
0000b6  7181              STRB     r1,[r0,#6]
;;;163    }
0000b8  4770              BX       lr
;;;164    
                          ENDP

                  EXTI_GenerateSWInterrupt PROC
;;;170      */
;;;171    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
0000ba  4916              LDR      r1,|L1.276|
;;;172    {
;;;173      /* Check the parameters */
;;;174      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;175      
;;;176      EXTI->SWIER |= EXTI_Line;
0000bc  3110              ADDS     r1,r1,#0x10
0000be  6809              LDR      r1,[r1,#0]
0000c0  4301              ORRS     r1,r1,r0
0000c2  4a14              LDR      r2,|L1.276|
0000c4  3210              ADDS     r2,r2,#0x10
0000c6  6011              STR      r1,[r2,#0]
;;;177    }
0000c8  4770              BX       lr
;;;178    
                          ENDP

                  EXTI_GetFlagStatus PROC
;;;185      */
;;;186    FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
0000ca  4601              MOV      r1,r0
;;;187    {
;;;188      FlagStatus bitstatus = RESET;
0000cc  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)
0000ce  4a11              LDR      r2,|L1.276|
0000d0  3214              ADDS     r2,r2,#0x14
0000d2  6812              LDR      r2,[r2,#0]
0000d4  420a              TST      r2,r1
0000d6  d001              BEQ      |L1.220|
;;;193      {
;;;194        bitstatus = SET;
0000d8  2001              MOVS     r0,#1
0000da  e000              B        |L1.222|
                  |L1.220|
;;;195      }
;;;196      else
;;;197      {
;;;198        bitstatus = RESET;
0000dc  2000              MOVS     r0,#0
                  |L1.222|
;;;199      }
;;;200      return bitstatus;
;;;201    }
0000de  4770              BX       lr
;;;202    
                          ENDP

                  EXTI_ClearFlag PROC
;;;208      */
;;;209    void EXTI_ClearFlag(uint32_t EXTI_Line)
0000e0  490c              LDR      r1,|L1.276|
;;;210    {
;;;211      /* Check the parameters */
;;;212      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;213      
;;;214      EXTI->PR = EXTI_Line;
0000e2  3114              ADDS     r1,r1,#0x14
0000e4  6008              STR      r0,[r1,#0]
;;;215    }
0000e6  4770              BX       lr
;;;216    
                          ENDP

                  EXTI_GetITStatus PROC
;;;223      */
;;;224    ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
0000e8  4601              MOV      r1,r0
;;;225    {
;;;226      ITStatus bitstatus = RESET;
0000ea  2000              MOVS     r0,#0
;;;227      uint32_t enablestatus = 0;
0000ec  2200              MOVS     r2,#0
;;;228      /* Check the parameters */
;;;229      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;230      
;;;231      enablestatus =  EXTI->IMR & EXTI_Line;
0000ee  4b09              LDR      r3,|L1.276|
0000f0  681b              LDR      r3,[r3,#0]
0000f2  ea030201          AND      r2,r3,r1
;;;232      if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
0000f6  4b07              LDR      r3,|L1.276|
0000f8  3314              ADDS     r3,r3,#0x14
0000fa  681b              LDR      r3,[r3,#0]
0000fc  420b              TST      r3,r1
0000fe  d002              BEQ      |L1.262|
000100  b10a              CBZ      r2,|L1.262|
;;;233      {
;;;234        bitstatus = SET;
000102  2001              MOVS     r0,#1
000104  e000              B        |L1.264|
                  |L1.262|
;;;235      }
;;;236      else
;;;237      {
;;;238        bitstatus = RESET;
000106  2000              MOVS     r0,#0
                  |L1.264|
;;;239      }
;;;240      return bitstatus;
;;;241    }
000108  4770              BX       lr
;;;242    
                          ENDP

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

000112  0000              DCW      0x0000
                  |L1.276|
                          DCD      0x40010400
                  |L1.280|
                          DCD      0x000fffff
