; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\STM324xG_EVAL\stm32f4xx_exti.o --asm_dir=.\STM324xG_EVAL\ --list_dir=.\STM324xG_EVAL\ --depend=.\STM324xG_EVAL\stm32f4xx_exti.d --cpu=Cortex-M4.fp --apcs=interwork -O0 -Otime -I..\ -I..\..\..\Libraries\CMSIS\Device\ST\STM32F4xx\Include -I..\..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\..\..\Utilities\STM32_EVAL\Common -I..\..\..\Utilities\STM32_EVAL\STM3240_41_G_EVAL -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\ST\STM32F4xx -D__MICROLIB -DUSE_STM324xG_EVAL -DSTM32F4XX -DUSE_STDPERIPH_DRIVER --omf_browse=.\STM324xG_EVAL\stm32f4xx_exti.crf ..\..\..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c]
                          THUMB

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

                  EXTI_ClearFlag PROC
;;;242      */
;;;243    void EXTI_ClearFlag(uint32_t EXTI_Line)
000000  4901              LDR      r1,|L1.8|
;;;244    {
;;;245      /* Check the parameters */
;;;246      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;247      
;;;248      EXTI->PR = EXTI_Line;
000002  6008              STR      r0,[r1,#0]
;;;249    }
000004  4770              BX       lr
;;;250    
                          ENDP

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

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

                  EXTI_ClearITPendingBit PROC
;;;281      */
;;;282    void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
000000  4901              LDR      r1,|L2.8|
;;;283    {
;;;284      /* Check the parameters */
;;;285      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;286      
;;;287      EXTI->PR = EXTI_Line;
000002  6008              STR      r0,[r1,#0]
;;;288    }
000004  4770              BX       lr
;;;289    
                          ENDP

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

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

                  EXTI_DeInit PROC
;;;102      */
;;;103    void EXTI_DeInit(void)
000000  2000              MOVS     r0,#0
;;;104    {
;;;105      EXTI->IMR = 0x00000000;
000002  4906              LDR      r1,|L3.28|
000004  6008              STR      r0,[r1,#0]
;;;106      EXTI->EMR = 0x00000000;
000006  1d09              ADDS     r1,r1,#4
000008  6008              STR      r0,[r1,#0]
;;;107      EXTI->RTSR = 0x00000000;
00000a  1d09              ADDS     r1,r1,#4
00000c  6008              STR      r0,[r1,#0]
;;;108      EXTI->FTSR = 0x00000000;
00000e  1d09              ADDS     r1,r1,#4
000010  6008              STR      r0,[r1,#0]
;;;109      EXTI->PR = 0x007FFFFF;
000012  4803              LDR      r0,|L3.32|
000014  4901              LDR      r1,|L3.28|
000016  3114              ADDS     r1,r1,#0x14
000018  6008              STR      r0,[r1,#0]
;;;110    }
00001a  4770              BX       lr
;;;111    
                          ENDP

                  |L3.28|
                          DCD      0x40013c00
                  |L3.32|
                          DCD      0x007fffff

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

                  EXTI_GenerateSWInterrupt PROC
;;;189      */
;;;190    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
000000  4902              LDR      r1,|L4.12|
;;;191    {
;;;192      /* Check the parameters */
;;;193      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;194      
;;;195      EXTI->SWIER |= EXTI_Line;
000002  6809              LDR      r1,[r1,#0]
000004  4301              ORRS     r1,r1,r0
000006  4a01              LDR      r2,|L4.12|
000008  6011              STR      r1,[r2,#0]
;;;196    }
00000a  4770              BX       lr
;;;197    
                          ENDP

                  |L4.12|
                          DCD      0x40013c10

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

                  EXTI_GetFlagStatus PROC
;;;219      */
;;;220    FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
000000  4601              MOV      r1,r0
;;;221    {
;;;222      FlagStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;223      /* Check the parameters */
;;;224      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;225      
;;;226      if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
000004  4a03              LDR      r2,|L5.20|
000006  6812              LDR      r2,[r2,#0]
000008  420a              TST      r2,r1
00000a  d001              BEQ      |L5.16|
;;;227      {
;;;228        bitstatus = SET;
00000c  2001              MOVS     r0,#1
00000e  e000              B        |L5.18|
                  |L5.16|
;;;229      }
;;;230      else
;;;231      {
;;;232        bitstatus = RESET;
000010  2000              MOVS     r0,#0
                  |L5.18|
;;;233      }
;;;234      return bitstatus;
;;;235    }
000012  4770              BX       lr
;;;236    
                          ENDP

                  |L5.20|
                          DCD      0x40013c14

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

                  EXTI_GetITStatus PROC
;;;256      */
;;;257    ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
000000  4601              MOV      r1,r0
;;;258    {
;;;259      ITStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;260      uint32_t enablestatus = 0;
000004  2200              MOVS     r2,#0
;;;261      /* Check the parameters */
;;;262      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;263      
;;;264      enablestatus =  EXTI->IMR & EXTI_Line;
000006  4b07              LDR      r3,|L6.36|
000008  681b              LDR      r3,[r3,#0]
00000a  ea030201          AND      r2,r3,r1
;;;265      if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
00000e  4b05              LDR      r3,|L6.36|
000010  3314              ADDS     r3,r3,#0x14
000012  681b              LDR      r3,[r3,#0]
000014  420b              TST      r3,r1
000016  d002              BEQ      |L6.30|
000018  b10a              CBZ      r2,|L6.30|
;;;266      {
;;;267        bitstatus = SET;
00001a  2001              MOVS     r0,#1
00001c  e000              B        |L6.32|
                  |L6.30|
;;;268      }
;;;269      else
;;;270      {
;;;271        bitstatus = RESET;
00001e  2000              MOVS     r0,#0
                  |L6.32|
;;;272      }
;;;273      return bitstatus;
;;;274    }
000020  4770              BX       lr
;;;275    
                          ENDP

000022  0000              DCW      0x0000
                  |L6.36|
                          DCD      0x40013c00

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

                  EXTI_Init PROC
;;;118      */
;;;119    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
000000  2100              MOVS     r1,#0
;;;120    {
;;;121      uint32_t tmp = 0;
;;;122    
;;;123      /* Check the parameters */
;;;124      assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;125      assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;126      assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  
;;;127      assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;128    
;;;129      tmp = (uint32_t)EXTI_BASE;
000002  4923              LDR      r1,|L7.144|
;;;130         
;;;131      if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000004  7982              LDRB     r2,[r0,#6]
000006  2a00              CMP      r2,#0
000008  d03a              BEQ      |L7.128|
;;;132      {
;;;133        /* Clear EXTI line configuration */
;;;134        EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
00000a  460a              MOV      r2,r1
00000c  6812              LDR      r2,[r2,#0]
00000e  6803              LDR      r3,[r0,#0]
000010  439a              BICS     r2,r2,r3
000012  460b              MOV      r3,r1
000014  601a              STR      r2,[r3,#0]
;;;135        EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000016  1d0a              ADDS     r2,r1,#4
000018  6812              LDR      r2,[r2,#0]
00001a  6803              LDR      r3,[r0,#0]
00001c  439a              BICS     r2,r2,r3
00001e  1d0b              ADDS     r3,r1,#4
000020  601a              STR      r2,[r3,#0]
;;;136        
;;;137        tmp += EXTI_InitStruct->EXTI_Mode;
000022  7902              LDRB     r2,[r0,#4]
000024  4411              ADD      r1,r1,r2
;;;138    
;;;139        *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000026  680a              LDR      r2,[r1,#0]
000028  6803              LDR      r3,[r0,#0]
00002a  431a              ORRS     r2,r2,r3
00002c  600a              STR      r2,[r1,#0]
;;;140    
;;;141        /* Clear Rising Falling edge configuration */
;;;142        EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
00002e  4a18              LDR      r2,|L7.144|
000030  3208              ADDS     r2,r2,#8
000032  6812              LDR      r2,[r2,#0]
000034  6803              LDR      r3,[r0,#0]
000036  439a              BICS     r2,r2,r3
000038  4b15              LDR      r3,|L7.144|
00003a  3308              ADDS     r3,r3,#8
00003c  601a              STR      r2,[r3,#0]
;;;143        EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00003e  1d1a              ADDS     r2,r3,#4
000040  6812              LDR      r2,[r2,#0]
000042  6803              LDR      r3,[r0,#0]
000044  439a              BICS     r2,r2,r3
000046  4b12              LDR      r3,|L7.144|
000048  330c              ADDS     r3,r3,#0xc
00004a  601a              STR      r2,[r3,#0]
;;;144        
;;;145        /* Select the trigger for the selected external interrupts */
;;;146        if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
00004c  7942              LDRB     r2,[r0,#5]
00004e  2a10              CMP      r2,#0x10
000050  d10e              BNE      |L7.112|
;;;147        {
;;;148          /* Rising Falling edge */
;;;149          EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
000052  1f1a              SUBS     r2,r3,#4
000054  6812              LDR      r2,[r2,#0]
000056  6803              LDR      r3,[r0,#0]
000058  431a              ORRS     r2,r2,r3
00005a  4b0d              LDR      r3,|L7.144|
00005c  3308              ADDS     r3,r3,#8
00005e  601a              STR      r2,[r3,#0]
;;;150          EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
000060  1d1a              ADDS     r2,r3,#4
000062  6812              LDR      r2,[r2,#0]
000064  6803              LDR      r3,[r0,#0]
000066  431a              ORRS     r2,r2,r3
000068  4b09              LDR      r3,|L7.144|
00006a  330c              ADDS     r3,r3,#0xc
00006c  601a              STR      r2,[r3,#0]
00006e  e00d              B        |L7.140|
                  |L7.112|
;;;151        }
;;;152        else
;;;153        {
;;;154          tmp = (uint32_t)EXTI_BASE;
000070  4907              LDR      r1,|L7.144|
;;;155          tmp += EXTI_InitStruct->EXTI_Trigger;
000072  7942              LDRB     r2,[r0,#5]
000074  4411              ADD      r1,r1,r2
;;;156    
;;;157          *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000076  680a              LDR      r2,[r1,#0]
000078  6803              LDR      r3,[r0,#0]
00007a  431a              ORRS     r2,r2,r3
00007c  600a              STR      r2,[r1,#0]
00007e  e005              B        |L7.140|
                  |L7.128|
;;;158        }
;;;159      }
;;;160      else
;;;161      {
;;;162        tmp += EXTI_InitStruct->EXTI_Mode;
000080  7902              LDRB     r2,[r0,#4]
000082  4411              ADD      r1,r1,r2
;;;163    
;;;164        /* Disable the selected external lines */
;;;165        *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
000084  680a              LDR      r2,[r1,#0]
000086  6803              LDR      r3,[r0,#0]
000088  439a              BICS     r2,r2,r3
00008a  600a              STR      r2,[r1,#0]
                  |L7.140|
;;;166      }
;;;167    }
00008c  4770              BX       lr
;;;168    
                          ENDP

00008e  0000              DCW      0x0000
                  |L7.144|
                          DCD      0x40013c00

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

                  EXTI_StructInit PROC
;;;174      */
;;;175    void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
000000  2100              MOVS     r1,#0
;;;176    {
;;;177      EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
000002  6001              STR      r1,[r0,#0]
;;;178      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
000004  7101              STRB     r1,[r0,#4]
;;;179      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
000006  210c              MOVS     r1,#0xc
000008  7141              STRB     r1,[r0,#5]
;;;180      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
00000a  2100              MOVS     r1,#0
00000c  7181              STRB     r1,[r0,#6]
;;;181    }
00000e  4770              BX       lr
;;;182    
                          ENDP


;*** Start embedded assembler ***

#line 1 "..\\..\\..\\Libraries\\STM32F4xx_StdPeriph_Driver\\src\\stm32f4xx_exti.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REV16|
#line 114 "C:\\Keil\\ARM\\CMSIS\\Include\\core_cmInstr.h"
|__asm___16_stm32f4xx_exti_c_28b3b60e____REV16| PROC
#line 115

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH|
#line 128
|__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH| PROC
#line 129

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
