; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o..\output\gpio_inputoutput.o --asm_dir=..\List\ --list_dir=..\List\ --depend=..\output\gpio_inputoutput.d --cpu=Cortex-M0+ --apcs=interwork --diag_suppress=9931 -I..\FWLib\SC32F1XXX_Lib\inc -I..\User\HeadFiles -I..\User -I..\Drivers -I..\Apps -I..\CMSIS -IF:\Users\SOC\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\Device\ARM\ARMCM0plus\Include -D__UVISION_VERSION=536 -DARMCM0P -DSC32f10xx --omf_browse=..\output\gpio_inputoutput.crf ..\Apps\GPIO_InputOutput.c]
                          THUMB

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

                  GPIO_InOut_Function PROC
;;;14     
;;;15     void GPIO_InOut_Function(void)
000000  b51c              PUSH     {r2-r4,lr}
;;;16     {
;;;17       GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO初始化结构体变量
;;;18       FlagStatus GPIO_Flag = SET;
000002  2401              MOVS     r4,#1
;;;19       
;;;20       printf(" GPIO测试！\r\n ");
000004  a01c              ADR      r0,|L1.120|
000006  f7fffffe          BL       __2printf
;;;21       
;;;22       /* PA10、PA11设置为推挽输出 */
;;;23       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
00000a  2003              MOVS     r0,#3
00000c  0280              LSLS     r0,r0,#10
00000e  4669              MOV      r1,sp
000010  8008              STRH     r0,[r1,#0]
;;;24       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT_PP;
000012  2002              MOVS     r0,#2
;;;25       GPIO_Init(GPIOA, &GPIO_InitStruct);
000014  4d1c              LDR      r5,|L1.136|
000016  8048              STRH     r0,[r1,#2]            ;24
000018  4628              MOV      r0,r5
00001a  f7fffffe          BL       GPIO_Init
;;;26       
;;;27       /* PA8、PA9设置为上拉输入 */
;;;28       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
00001e  2003              MOVS     r0,#3
000020  0200              LSLS     r0,r0,#8
000022  4669              MOV      r1,sp
000024  8008              STRH     r0,[r1,#0]
;;;29       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_PU;
000026  2601              MOVS     r6,#1
000028  804e              STRH     r6,[r1,#2]
;;;30       GPIO_Init(GPIOA, &GPIO_InitStruct);
00002a  4628              MOV      r0,r5
00002c  f7fffffe          BL       GPIO_Init
;;;31     	
;;;32         /* PB12设置为浮空输入 */
;;;33         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
000030  0320              LSLS     r0,r4,#12
000032  4669              MOV      r1,sp
000034  8008              STRH     r0,[r1,#0]
;;;34         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_HI;
000036  2000              MOVS     r0,#0
000038  8048              STRH     r0,[r1,#2]
;;;35         GPIO_Init(GPIOB, &GPIO_InitStruct);
00003a  4814              LDR      r0,|L1.140|
00003c  f7fffffe          BL       GPIO_Init
;;;36       while(1)
;;;37       {
;;;38         /* PA10的输出与PA8的输入一致 */
;;;39         if(GPIO_ReadDataBit(GPIOA, GPIO_Pin_8) == Bit_SET)
000040  0227              LSLS     r7,r4,#8
                  |L1.66|
000042  4639              MOV      r1,r7
000044  4628              MOV      r0,r5
000046  f7fffffe          BL       GPIO_ReadDataBit
00004a  2801              CMP      r0,#1
;;;40         {
;;;41           GPIO_SetBits(GPIOA, GPIO_Pin_10);
;;;42         }
;;;43         else
;;;44         {
;;;45           GPIO_ResetBits(GPIOA, GPIO_Pin_10);
00004c  4910              LDR      r1,|L1.144|
00004e  4628              MOV      r0,r5
000050  d00b              BEQ      |L1.106|
000052  f7fffffe          BL       GPIO_ResetBits
                  |L1.86|
;;;46         }
;;;47     
;;;48         /* PA11的输出跟随PA9的翻转而翻转 */
;;;49         if((PA_BIT(9) == 0) && (GPIO_Flag == SET))
000056  7a68              LDRB     r0,[r5,#9]
000058  2800              CMP      r0,#0
00005a  d009              BEQ      |L1.112|
;;;50         {
;;;51           /* PA9由高变低 */
;;;52           GPIO_Flag = RESET;
;;;53           PA_OT(11);
;;;54         }
;;;55         if((PA_BIT(9) == 1) && (GPIO_Flag == RESET))
00005c  2801              CMP      r0,#1
00005e  d1f0              BNE      |L1.66|
000060  2c00              CMP      r4,#0
000062  d1ee              BNE      |L1.66|
;;;56         {
;;;57           /* PA9由低变高 */
;;;58           GPIO_Flag = SET;
000064  2401              MOVS     r4,#1
                  |L1.102|
000066  76ee              STRB     r6,[r5,#0x1b]         ;53
000068  e7eb              B        |L1.66|
                  |L1.106|
00006a  f7fffffe          BL       GPIO_SetBits
00006e  e7f2              B        |L1.86|
                  |L1.112|
000070  2c01              CMP      r4,#1                 ;49
000072  d1e6              BNE      |L1.66|
000074  2400              MOVS     r4,#0                 ;52
000076  e7f6              B        |L1.102|
;;;59           PA_OT(11);
;;;60         }
;;;61       }
;;;62     }
                          ENDP

                  |L1.120|
000078  20475049          DCB      " GPIO",178,226,202,212,163,161,"\r\n ",0
00007c  4fb2e2ca
000080  d4a3a10d
000084  0a2000  
000087  00                DCB      0
                  |L1.136|
                          DCD      0x40011000
                  |L1.140|
                          DCD      0x40011100
                  |L1.144|
                          DCD      0x00000400

;*** Start embedded assembler ***

#line 1 "..\\Apps\\GPIO_InputOutput.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___18_GPIO_InputOutput_c_ddaedd1a____REV16|
#line 463 "..\\CMSIS\\cmsis_armcc.h"
|__asm___18_GPIO_InputOutput_c_ddaedd1a____REV16| PROC
#line 464

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___18_GPIO_InputOutput_c_ddaedd1a____REVSH|
#line 478
|__asm___18_GPIO_InputOutput_c_ddaedd1a____REVSH| PROC
#line 479

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
