; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\gpio.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\gpio.d --cpu=Cortex-M0 --apcs=interwork -Otime --diag_suppress=9931 -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\M0A21\Include -I..\..\..\..\Library\StdDriver\inc -I..\ -IC:\Keil_v5\ARM\RV31\INC -IC:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=538 --omf_browse=.\obj\gpio.crf ..\..\..\..\Library\StdDriver\src\gpio.c]
                          THUMB

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

                  GPIO_DisableInt PROC
;;;91      */
;;;92     void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin)
000000  6982              LDR      r2,[r0,#0x18]
;;;93     {
;;;94         /* Configure interrupt mode of specified pin */
;;;95         port->INTTYPE &= ~(1UL << u32Pin);
000002  2301              MOVS     r3,#1
000004  408b              LSLS     r3,r3,r1
000006  439a              BICS     r2,r2,r3
000008  6182              STR      r2,[r0,#0x18]
;;;96     
;;;97         /* Disable interrupt function of specified pin */
;;;98         port->INTEN &= ~((0x00010001UL) << u32Pin);
00000a  69c2              LDR      r2,[r0,#0x1c]
00000c  4b02              LDR      r3,|L1.24|
00000e  408b              LSLS     r3,r3,r1
000010  439a              BICS     r2,r2,r3
000012  61c2              STR      r2,[r0,#0x1c]
;;;99     }
000014  4770              BX       lr
;;;100    
                          ENDP

000016  0000              DCW      0x0000
                  |L1.24|
                          DCD      0x00010001

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

                  GPIO_EnableInt PROC
;;;71      */
;;;72     void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs)
000000  b410              PUSH     {r4}
;;;73     {
;;;74         /* Configure interrupt mode of specified pin */
;;;75         port->INTTYPE |= (((u32IntAttribs >> 24) & 0xFFUL) << u32Pin);
000002  6983              LDR      r3,[r0,#0x18]
000004  0e14              LSRS     r4,r2,#24
000006  408c              LSLS     r4,r4,r1
000008  4323              ORRS     r3,r3,r4
00000a  6183              STR      r3,[r0,#0x18]
;;;76     
;;;77         /* Enable interrupt function of specified pin */
;;;78         port->INTEN |= ((u32IntAttribs & 0xFFFFFFUL) << u32Pin);
00000c  69c3              LDR      r3,[r0,#0x1c]
00000e  0212              LSLS     r2,r2,#8
000010  0a12              LSRS     r2,r2,#8
000012  408a              LSLS     r2,r2,r1
000014  4313              ORRS     r3,r3,r2
000016  61c3              STR      r3,[r0,#0x1c]
;;;79     }
000018  bc10              POP      {r4}
00001a  4770              BX       lr
;;;80     
                          ENDP


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

                  GPIO_SetMode PROC
;;;41      */
;;;42     void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
000000  b4f0              PUSH     {r4-r7}
;;;43     {
;;;44         uint32_t i;
;;;45     
;;;46         for(i = 0; i < GPIO_PIN_MAX; i++)
000002  2300              MOVS     r3,#0
;;;47         {
;;;48             if(u32PinMask & (1 << i))
000004  2701              MOVS     r7,#1
                  |L3.6|
000006  463c              MOV      r4,r7
000008  409c              LSLS     r4,r4,r3
00000a  420c              TST      r4,r1
00000c  d008              BEQ      |L3.32|
;;;49             {
;;;50                 port->MODE = (port->MODE & ~(GPIO_MODE_MODE0_Msk << (i << 1))) | (u32Mode << (i << 1));
00000e  6805              LDR      r5,[r0,#0]
000010  005c              LSLS     r4,r3,#1
000012  2603              MOVS     r6,#3
000014  40a6              LSLS     r6,r6,r4
000016  43b5              BICS     r5,r5,r6
000018  4616              MOV      r6,r2
00001a  40a6              LSLS     r6,r6,r4
00001c  4335              ORRS     r5,r5,r6
00001e  6005              STR      r5,[r0,#0]
                  |L3.32|
000020  1c5b              ADDS     r3,r3,#1
000022  2b10              CMP      r3,#0x10              ;46
000024  d3ef              BCC      |L3.6|
;;;51             }
;;;52         }
;;;53     }
000026  bcf0              POP      {r4-r7}
000028  4770              BX       lr
;;;54     
                          ENDP


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

                  GPIO_SetPullCtl PROC
;;;114     */
;;;115    void GPIO_SetPullCtl(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
000000  b470              PUSH     {r4-r6}
;;;116    {
;;;117        uint32_t i;
;;;118    
;;;119        for(i = 0ul; i < GPIO_PIN_MAX; i++)
000002  2300              MOVS     r3,#0
;;;120        {
;;;121            if(u32PinMask & (BIT0 << i))
000004  2601              MOVS     r6,#1
                  |L4.6|
000006  4634              MOV      r4,r6
000008  409c              LSLS     r4,r4,r3
00000a  420c              TST      r4,r1
00000c  d005              BEQ      |L4.26|
;;;122            {
;;;123                port->PUSEL = (port->PUSEL & ~(GPIO_PUSEL_PUSEL0_Msk << i)) | (u32Mode << i);
00000e  6b05              LDR      r5,[r0,#0x30]
000010  43a5              BICS     r5,r5,r4
000012  4614              MOV      r4,r2
000014  409c              LSLS     r4,r4,r3
000016  4325              ORRS     r5,r5,r4
000018  6305              STR      r5,[r0,#0x30]
                  |L4.26|
00001a  1c5b              ADDS     r3,r3,#1
00001c  2b10              CMP      r3,#0x10              ;119
00001e  d3f2              BCC      |L4.6|
;;;124            }
;;;125        }
;;;126    }
000020  bc70              POP      {r4-r6}
000022  4770              BX       lr
;;;127    
                          ENDP


;*** Start embedded assembler ***

#line 1 "..\\..\\..\\..\\Library\\StdDriver\\src\\gpio.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___6_gpio_c_f8f858a7____REV16|
#line 464 "..\\..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___6_gpio_c_f8f858a7____REV16| PROC
#line 465

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
