; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\STM324xG_EVAL\stm32f4xx_gpio.o --asm_dir=.\STM324xG_EVAL\ --list_dir=.\STM324xG_EVAL\ --depend=.\STM324xG_EVAL\stm32f4xx_gpio.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_gpio.crf ..\..\..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.c]
                          THUMB

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

                  GPIO_DeInit PROC
;;;119      */
;;;120    void GPIO_DeInit(GPIO_TypeDef* GPIOx)
000000  b510              PUSH     {r4,lr}
;;;121    {
000002  4604              MOV      r4,r0
;;;122      /* Check the parameters */
;;;123      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;124    
;;;125      if (GPIOx == GPIOA)
000004  4835              LDR      r0,|L1.220|
000006  4284              CMP      r4,r0
000008  d108              BNE      |L1.28|
;;;126      {
;;;127        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
00000a  2101              MOVS     r1,#1
00000c  4608              MOV      r0,r1
00000e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;128        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, DISABLE);
000012  2100              MOVS     r1,#0
000014  2001              MOVS     r0,#1
000016  f7fffffe          BL       RCC_AHB1PeriphResetCmd
00001a  e05e              B        |L1.218|
                  |L1.28|
;;;129      }
;;;130      else if (GPIOx == GPIOB)
00001c  4830              LDR      r0,|L1.224|
00001e  4284              CMP      r4,r0
000020  d108              BNE      |L1.52|
;;;131      {
;;;132        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, ENABLE);
000022  2101              MOVS     r1,#1
000024  2002              MOVS     r0,#2
000026  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;133        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, DISABLE);
00002a  2100              MOVS     r1,#0
00002c  2002              MOVS     r0,#2
00002e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
000032  e052              B        |L1.218|
                  |L1.52|
;;;134      }
;;;135      else if (GPIOx == GPIOC)
000034  482b              LDR      r0,|L1.228|
000036  4284              CMP      r4,r0
000038  d108              BNE      |L1.76|
;;;136      {
;;;137        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, ENABLE);
00003a  2101              MOVS     r1,#1
00003c  2004              MOVS     r0,#4
00003e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;138        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, DISABLE);
000042  2100              MOVS     r1,#0
000044  2004              MOVS     r0,#4
000046  f7fffffe          BL       RCC_AHB1PeriphResetCmd
00004a  e046              B        |L1.218|
                  |L1.76|
;;;139      }
;;;140      else if (GPIOx == GPIOD)
00004c  4826              LDR      r0,|L1.232|
00004e  4284              CMP      r4,r0
000050  d108              BNE      |L1.100|
;;;141      {
;;;142        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, ENABLE);
000052  2101              MOVS     r1,#1
000054  2008              MOVS     r0,#8
000056  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;143        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, DISABLE);
00005a  2100              MOVS     r1,#0
00005c  2008              MOVS     r0,#8
00005e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
000062  e03a              B        |L1.218|
                  |L1.100|
;;;144      }
;;;145      else if (GPIOx == GPIOE)
000064  4821              LDR      r0,|L1.236|
000066  4284              CMP      r4,r0
000068  d108              BNE      |L1.124|
;;;146      {
;;;147        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, ENABLE);
00006a  2101              MOVS     r1,#1
00006c  2010              MOVS     r0,#0x10
00006e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;148        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, DISABLE);
000072  2100              MOVS     r1,#0
000074  2010              MOVS     r0,#0x10
000076  f7fffffe          BL       RCC_AHB1PeriphResetCmd
00007a  e02e              B        |L1.218|
                  |L1.124|
;;;149      }
;;;150      else if (GPIOx == GPIOF)
00007c  481c              LDR      r0,|L1.240|
00007e  4284              CMP      r4,r0
000080  d108              BNE      |L1.148|
;;;151      {
;;;152        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, ENABLE);
000082  2101              MOVS     r1,#1
000084  2020              MOVS     r0,#0x20
000086  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;153        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, DISABLE);
00008a  2100              MOVS     r1,#0
00008c  2020              MOVS     r0,#0x20
00008e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
000092  e022              B        |L1.218|
                  |L1.148|
;;;154      }
;;;155      else if (GPIOx == GPIOG)
000094  4817              LDR      r0,|L1.244|
000096  4284              CMP      r4,r0
000098  d108              BNE      |L1.172|
;;;156      {
;;;157        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, ENABLE);
00009a  2101              MOVS     r1,#1
00009c  2040              MOVS     r0,#0x40
00009e  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;158        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, DISABLE);
0000a2  2100              MOVS     r1,#0
0000a4  2040              MOVS     r0,#0x40
0000a6  f7fffffe          BL       RCC_AHB1PeriphResetCmd
0000aa  e016              B        |L1.218|
                  |L1.172|
;;;159      }
;;;160      else if (GPIOx == GPIOH)
0000ac  4812              LDR      r0,|L1.248|
0000ae  4284              CMP      r4,r0
0000b0  d108              BNE      |L1.196|
;;;161      {
;;;162        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, ENABLE);
0000b2  2101              MOVS     r1,#1
0000b4  2080              MOVS     r0,#0x80
0000b6  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;163        RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, DISABLE);
0000ba  2100              MOVS     r1,#0
0000bc  2080              MOVS     r0,#0x80
0000be  f7fffffe          BL       RCC_AHB1PeriphResetCmd
0000c2  e00a              B        |L1.218|
                  |L1.196|
;;;164      }
;;;165      else
;;;166      {
;;;167        if (GPIOx == GPIOI)
0000c4  480d              LDR      r0,|L1.252|
0000c6  4284              CMP      r4,r0
0000c8  d107              BNE      |L1.218|
;;;168        {
;;;169          RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, ENABLE);
0000ca  2101              MOVS     r1,#1
0000cc  1580              ASRS     r0,r0,#22
0000ce  f7fffffe          BL       RCC_AHB1PeriphResetCmd
;;;170          RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, DISABLE);
0000d2  2100              MOVS     r1,#0
0000d4  15a0              ASRS     r0,r4,#22
0000d6  f7fffffe          BL       RCC_AHB1PeriphResetCmd
                  |L1.218|
;;;171        }
;;;172      }
;;;173    }
0000da  bd10              POP      {r4,pc}
;;;174    
                          ENDP

                  |L1.220|
                          DCD      0x40020000
                  |L1.224|
                          DCD      0x40020400
                  |L1.228|
                          DCD      0x40020800
                  |L1.232|
                          DCD      0x40020c00
                  |L1.236|
                          DCD      0x40021000
                  |L1.240|
                          DCD      0x40021400
                  |L1.244|
                          DCD      0x40021800
                  |L1.248|
                          DCD      0x40021c00
                  |L1.252|
                          DCD      0x40022000

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

                  GPIO_Init PROC
;;;181      */
;;;182    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
000000  b570              PUSH     {r4-r6,lr}
;;;183    {
000002  460a              MOV      r2,r1
;;;184      uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;
000004  2100              MOVS     r1,#0
000006  2300              MOVS     r3,#0
000008  468c              MOV      r12,r1
;;;185    
;;;186      /* Check the parameters */
;;;187      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;188      assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
;;;189      assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
;;;190      assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));
;;;191    
;;;192      /* -------------------------Configure the port pins---------------- */
;;;193      /*-- GPIO Mode Configuration --*/
;;;194      for (pinpos = 0x00; pinpos < 0x10; pinpos++)
00000a  bf00              NOP      
00000c  e03d              B        |L2.138|
                  |L2.14|
;;;195      {
;;;196        pos = ((uint32_t)0x01) << pinpos;
00000e  2401              MOVS     r4,#1
000010  fa04f301          LSL      r3,r4,r1
;;;197        /* Get the port pins position */
;;;198        currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
000014  6814              LDR      r4,[r2,#0]
000016  ea040c03          AND      r12,r4,r3
;;;199    
;;;200        if (currentpin == pos)
00001a  459c              CMP      r12,r3
00001c  d134              BNE      |L2.136|
;;;201        {
;;;202          GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));
00001e  6804              LDR      r4,[r0,#0]
000020  004e              LSLS     r6,r1,#1
000022  2503              MOVS     r5,#3
000024  40b5              LSLS     r5,r5,r6
000026  43ac              BICS     r4,r4,r5
000028  6004              STR      r4,[r0,#0]
;;;203          GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2));
00002a  7914              LDRB     r4,[r2,#4]
00002c  004d              LSLS     r5,r1,#1
00002e  40ac              LSLS     r4,r4,r5
000030  6805              LDR      r5,[r0,#0]
000032  432c              ORRS     r4,r4,r5
000034  6004              STR      r4,[r0,#0]
;;;204    
;;;205          if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF))
000036  7914              LDRB     r4,[r2,#4]
000038  2c01              CMP      r4,#1
00003a  d002              BEQ      |L2.66|
00003c  7914              LDRB     r4,[r2,#4]
00003e  2c02              CMP      r4,#2
000040  d116              BNE      |L2.112|
                  |L2.66|
;;;206          {
;;;207            /* Check Speed mode parameters */
;;;208            assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
;;;209    
;;;210            /* Speed mode configuration */
;;;211            GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2));
000042  6884              LDR      r4,[r0,#8]
000044  004e              LSLS     r6,r1,#1
000046  2503              MOVS     r5,#3
000048  40b5              LSLS     r5,r5,r6
00004a  43ac              BICS     r4,r4,r5
00004c  6084              STR      r4,[r0,#8]
;;;212            GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2));
00004e  7954              LDRB     r4,[r2,#5]
000050  004d              LSLS     r5,r1,#1
000052  40ac              LSLS     r4,r4,r5
000054  6885              LDR      r5,[r0,#8]
000056  432c              ORRS     r4,r4,r5
000058  6084              STR      r4,[r0,#8]
;;;213    
;;;214            /* Check Output mode parameters */
;;;215            assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));
;;;216    
;;;217            /* Output mode configuration*/
;;;218            GPIOx->OTYPER  &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ;
00005a  6844              LDR      r4,[r0,#4]
00005c  2501              MOVS     r5,#1
00005e  408d              LSLS     r5,r5,r1
000060  43ac              BICS     r4,r4,r5
000062  6044              STR      r4,[r0,#4]
;;;219            GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos));
000064  6844              LDR      r4,[r0,#4]
000066  7995              LDRB     r5,[r2,#6]
000068  408d              LSLS     r5,r5,r1
00006a  b2ad              UXTH     r5,r5
00006c  432c              ORRS     r4,r4,r5
00006e  6044              STR      r4,[r0,#4]
                  |L2.112|
;;;220          }
;;;221    
;;;222          /* Pull-up Pull down resistor configuration*/
;;;223          GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));
000070  68c4              LDR      r4,[r0,#0xc]
000072  004e              LSLS     r6,r1,#1
000074  2503              MOVS     r5,#3
000076  40b5              LSLS     r5,r5,r6
000078  43ac              BICS     r4,r4,r5
00007a  60c4              STR      r4,[r0,#0xc]
;;;224          GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));
00007c  79d4              LDRB     r4,[r2,#7]
00007e  004d              LSLS     r5,r1,#1
000080  40ac              LSLS     r4,r4,r5
000082  68c5              LDR      r5,[r0,#0xc]
000084  432c              ORRS     r4,r4,r5
000086  60c4              STR      r4,[r0,#0xc]
                  |L2.136|
000088  1c49              ADDS     r1,r1,#1              ;194
                  |L2.138|
00008a  2910              CMP      r1,#0x10              ;194
00008c  d3bf              BCC      |L2.14|
;;;225        }
;;;226      }
;;;227    }
00008e  bd70              POP      {r4-r6,pc}
;;;228    
                          ENDP


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

                  GPIO_PinAFConfig PROC
;;;528      */
;;;529    void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
000000  b570              PUSH     {r4-r6,lr}
;;;530    {
;;;531      uint32_t temp = 0x00;
000002  2300              MOVS     r3,#0
;;;532      uint32_t temp_2 = 0x00;
000004  469c              MOV      r12,r3
;;;533      
;;;534      /* Check the parameters */
;;;535      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;536      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;537      assert_param(IS_GPIO_AF(GPIO_AF));
;;;538      
;;;539      temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
000006  074c              LSLS     r4,r1,#29
000008  0ee4              LSRS     r4,r4,#27
00000a  fa02f304          LSL      r3,r2,r4
;;;540      GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
00000e  10cd              ASRS     r5,r1,#3
000010  f1000420          ADD      r4,r0,#0x20
000014  f8544025          LDR      r4,[r4,r5,LSL #2]
000018  074d              LSLS     r5,r1,#29
00001a  0eee              LSRS     r6,r5,#27
00001c  250f              MOVS     r5,#0xf
00001e  40b5              LSLS     r5,r5,r6
000020  43ac              BICS     r4,r4,r5
000022  10ce              ASRS     r6,r1,#3
000024  f1000520          ADD      r5,r0,#0x20
000028  f8454026          STR      r4,[r5,r6,LSL #2]
;;;541      temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
00002c  10cd              ASRS     r5,r1,#3
00002e  f1000420          ADD      r4,r0,#0x20
000032  f8544025          LDR      r4,[r4,r5,LSL #2]
000036  ea440c03          ORR      r12,r4,r3
;;;542      GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
00003a  10cd              ASRS     r5,r1,#3
00003c  f1000420          ADD      r4,r0,#0x20
000040  f844c025          STR      r12,[r4,r5,LSL #2]
;;;543    }
000044  bd70              POP      {r4-r6,pc}
;;;544    
                          ENDP


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

                  GPIO_PinLockConfig PROC
;;;254      */
;;;255    void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  f44f3280          MOV      r2,#0x10000
;;;256    {
;;;257      __IO uint32_t tmp = 0x00010000;
;;;258    
;;;259      /* Check the parameters */
;;;260      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;261      assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;262    
;;;263      tmp |= GPIO_Pin;
000004  430a              ORRS     r2,r2,r1
;;;264      /* Set LCKK bit */
;;;265      GPIOx->LCKR = tmp;
000006  61c2              STR      r2,[r0,#0x1c]
;;;266      /* Reset LCKK bit */
;;;267      GPIOx->LCKR =  GPIO_Pin;
000008  61c1              STR      r1,[r0,#0x1c]
;;;268      /* Set LCKK bit */
;;;269      GPIOx->LCKR = tmp;
00000a  61c2              STR      r2,[r0,#0x1c]
;;;270      /* Read LCKK bit*/
;;;271      tmp = GPIOx->LCKR;
00000c  69c2              LDR      r2,[r0,#0x1c]
;;;272      /* Read LCKK bit*/
;;;273      tmp = GPIOx->LCKR;
00000e  69c2              LDR      r2,[r0,#0x1c]
;;;274    }
000010  4770              BX       lr
;;;275    
                          ENDP


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

                  GPIO_ReadInputData PROC
;;;322      */
;;;323    uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
000000  4601              MOV      r1,r0
;;;324    {
;;;325      /* Check the parameters */
;;;326      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;327    
;;;328      return ((uint16_t)GPIOx->IDR);
000002  6908              LDR      r0,[r1,#0x10]
000004  b280              UXTH     r0,r0
;;;329    }
000006  4770              BX       lr
;;;330    
                          ENDP


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

                  GPIO_ReadInputDataBit PROC
;;;298      */
;;;299    uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  4602              MOV      r2,r0
;;;300    {
;;;301      uint8_t bitstatus = 0x00;
000002  2000              MOVS     r0,#0
;;;302    
;;;303      /* Check the parameters */
;;;304      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;305      assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
;;;306    
;;;307      if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
000004  6913              LDR      r3,[r2,#0x10]
000006  420b              TST      r3,r1
000008  d001              BEQ      |L6.14|
;;;308      {
;;;309        bitstatus = (uint8_t)Bit_SET;
00000a  2001              MOVS     r0,#1
00000c  e000              B        |L6.16|
                  |L6.14|
;;;310      }
;;;311      else
;;;312      {
;;;313        bitstatus = (uint8_t)Bit_RESET;
00000e  2000              MOVS     r0,#0
                  |L6.16|
;;;314      }
;;;315      return bitstatus;
;;;316    }
000010  4770              BX       lr
;;;317    
                          ENDP


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

                  GPIO_ReadOutputData PROC
;;;361      */
;;;362    uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
000000  4601              MOV      r1,r0
;;;363    {
;;;364      /* Check the parameters */
;;;365      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;366    
;;;367      return ((uint16_t)GPIOx->ODR);
000002  6948              LDR      r0,[r1,#0x14]
000004  b280              UXTH     r0,r0
;;;368    }
000006  4770              BX       lr
;;;369    
                          ENDP


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

                  GPIO_ReadOutputDataBit PROC
;;;337      */
;;;338    uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  4602              MOV      r2,r0
;;;339    {
;;;340      uint8_t bitstatus = 0x00;
000002  2000              MOVS     r0,#0
;;;341    
;;;342      /* Check the parameters */
;;;343      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;344      assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
;;;345    
;;;346      if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET)
000004  6953              LDR      r3,[r2,#0x14]
000006  420b              TST      r3,r1
000008  d001              BEQ      |L8.14|
;;;347      {
;;;348        bitstatus = (uint8_t)Bit_SET;
00000a  2001              MOVS     r0,#1
00000c  e000              B        |L8.16|
                  |L8.14|
;;;349      }
;;;350      else
;;;351      {
;;;352        bitstatus = (uint8_t)Bit_RESET;
00000e  2000              MOVS     r0,#0
                  |L8.16|
;;;353      }
;;;354      return bitstatus;
;;;355    }
000010  4770              BX       lr
;;;356    
                          ENDP


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

                  GPIO_ResetBits PROC
;;;398      */
;;;399    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  8341              STRH     r1,[r0,#0x1a]
;;;400    {
;;;401      /* Check the parameters */
;;;402      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;403      assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;404    
;;;405      GPIOx->BSRRH = GPIO_Pin;
;;;406    }
000002  4770              BX       lr
;;;407    
                          ENDP


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

                  GPIO_SetBits PROC
;;;379      */
;;;380    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  8301              STRH     r1,[r0,#0x18]
;;;381    {
;;;382      /* Check the parameters */
;;;383      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;384      assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;385    
;;;386      GPIOx->BSRRL = GPIO_Pin;
;;;387    }
000002  4770              BX       lr
;;;388    
                          ENDP


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

                  GPIO_StructInit PROC
;;;233      */
;;;234    void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
000000  f64f71ff          MOV      r1,#0xffff
;;;235    {
;;;236      /* Reset GPIO init structure parameters values */
;;;237      GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
000004  6001              STR      r1,[r0,#0]
;;;238      GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
000006  2100              MOVS     r1,#0
000008  7101              STRB     r1,[r0,#4]
;;;239      GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
00000a  7141              STRB     r1,[r0,#5]
;;;240      GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
00000c  7181              STRB     r1,[r0,#6]
;;;241      GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;
00000e  71c1              STRB     r1,[r0,#7]
;;;242    }
000010  4770              BX       lr
;;;243    
                          ENDP


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

                  GPIO_ToggleBits PROC
;;;455      */
;;;456    void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
000000  6942              LDR      r2,[r0,#0x14]
;;;457    {
;;;458      /* Check the parameters */
;;;459      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;460    
;;;461      GPIOx->ODR ^= GPIO_Pin;
000002  404a              EORS     r2,r2,r1
000004  6142              STR      r2,[r0,#0x14]
;;;462    }
000006  4770              BX       lr
;;;463    
                          ENDP


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

                  GPIO_Write PROC
;;;441      */
;;;442    void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
000000  6141              STR      r1,[r0,#0x14]
;;;443    {
;;;444      /* Check the parameters */
;;;445      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;446    
;;;447      GPIOx->ODR = PortVal;
;;;448    }
000002  4770              BX       lr
;;;449    
                          ENDP


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

                  GPIO_WriteBit PROC
;;;418      */
;;;419    void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
000000  b10a              CBZ      r2,|L14.6|
;;;420    {
;;;421      /* Check the parameters */
;;;422      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;423      assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
;;;424      assert_param(IS_GPIO_BIT_ACTION(BitVal));
;;;425    
;;;426      if (BitVal != Bit_RESET)
;;;427      {
;;;428        GPIOx->BSRRL = GPIO_Pin;
000002  8301              STRH     r1,[r0,#0x18]
000004  e000              B        |L14.8|
                  |L14.6|
;;;429      }
;;;430      else
;;;431      {
;;;432        GPIOx->BSRRH = GPIO_Pin ;
000006  8341              STRH     r1,[r0,#0x1a]
                  |L14.8|
;;;433      }
;;;434    }
000008  4770              BX       lr
;;;435    
                          ENDP


;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
