; 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\int_interrupt.o --asm_dir=..\List\ --list_dir=..\List\ --depend=..\output\int_interrupt.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\int_interrupt.crf ..\Apps\INT_Interrupt.c]
                          THUMB

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

                  INT_Example_Function PROC
;;;11     
;;;12     void INT_Example_Function(void)
000000  b51f              PUSH     {r0-r4,lr}
;;;13     {
;;;14       INT_InitTypeDef INT_InitStruct; //定义INT初始化结构体变量
;;;15       GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO初始化结构体变量，定义为外部中断前需要将IO口设置为上拉输入
;;;16       
;;;17       //PA0设置为上升沿中断
;;;18       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
000002  2401              MOVS     r4,#1
000004  4669              MOV      r1,sp
000006  810c              STRH     r4,[r1,#8]
;;;19       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_PU;
000008  814c              STRH     r4,[r1,#0xa]
;;;20       GPIO_Init(GPIOA, &GPIO_InitStruct);
00000a  a902              ADD      r1,sp,#8
00000c  482d              LDR      r0,|L1.196|
00000e  f7fffffe          BL       GPIO_Init
;;;21       
;;;22       INT_InitStruct.INT_Channel = INT_Channel_0;
000012  4669              MOV      r1,sp
000014  800c              STRH     r4,[r1,#0]
;;;23       INT_InitStruct.INT_INTSEL = INT_INTSEL_PA;
000016  2000              MOVS     r0,#0
000018  8088              STRH     r0,[r1,#4]
;;;24       INT_InitStruct.INT_Trigger = INT_Trigger_Rising;
00001a  804c              STRH     r4,[r1,#2]
;;;25       INT_Init(&INT_InitStruct);
00001c  4668              MOV      r0,sp
00001e  f7fffffe          BL       INT_Init
;;;26     
;;;27       //PB2设置为上升沿中断
;;;28       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
000022  2504              MOVS     r5,#4
000024  4669              MOV      r1,sp
000026  810d              STRH     r5,[r1,#8]
;;;29       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_PU;
000028  814c              STRH     r4,[r1,#0xa]
;;;30       GPIO_Init(GPIOB, &GPIO_InitStruct);
00002a  a902              ADD      r1,sp,#8
00002c  4826              LDR      r0,|L1.200|
00002e  f7fffffe          BL       GPIO_Init
;;;31       
;;;32       INT_InitStruct.INT_Channel = INT_Channel_2;
000032  4669              MOV      r1,sp
000034  800d              STRH     r5,[r1,#0]
;;;33       INT_InitStruct.INT_INTSEL = INT_INTSEL_PB;
000036  808c              STRH     r4,[r1,#4]
;;;34       INT_InitStruct.INT_Trigger = INT_Trigger_Falling;
000038  2502              MOVS     r5,#2
00003a  804d              STRH     r5,[r1,#2]
;;;35       INT_Init(&INT_InitStruct);
00003c  4668              MOV      r0,sp
00003e  f7fffffe          BL       INT_Init
;;;36     
;;;37       
;;;38       //PC9设置为上升下降沿中断
;;;39       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
000042  0266              LSLS     r6,r4,#9
000044  4669              MOV      r1,sp
000046  810e              STRH     r6,[r1,#8]
;;;40       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_PU;
000048  814c              STRH     r4,[r1,#0xa]
;;;41       GPIO_Init(GPIOC, &GPIO_InitStruct);
00004a  a902              ADD      r1,sp,#8
00004c  481f              LDR      r0,|L1.204|
00004e  f7fffffe          BL       GPIO_Init
;;;42       INT_InitStruct.INT_Channel = INT_Channel_9;
000052  4669              MOV      r1,sp
000054  800e              STRH     r6,[r1,#0]
;;;43       INT_InitStruct.INT_INTSEL = INT_INTSEL_PC;
000056  808d              STRH     r5,[r1,#4]
;;;44       INT_InitStruct.INT_Trigger = INT_Trigger_Rising_Falling;
000058  2003              MOVS     r0,#3
00005a  8048              STRH     r0,[r1,#2]
;;;45       INT_Init(&INT_InitStruct);
00005c  4668              MOV      r0,sp
00005e  f7fffffe          BL       INT_Init
;;;46       
;;;47       //PC12设置为上升下降沿中断
;;;48       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
000062  0327              LSLS     r7,r4,#12
000064  4669              MOV      r1,sp
000066  810f              STRH     r7,[r1,#8]
;;;49       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_PU;
000068  814c              STRH     r4,[r1,#0xa]
;;;50       GPIO_Init(GPIOC, &GPIO_InitStruct);
00006a  a902              ADD      r1,sp,#8
00006c  4817              LDR      r0,|L1.204|
00006e  f7fffffe          BL       GPIO_Init
;;;51       INT_InitStruct.INT_Channel = INT_Channel_12;
000072  4669              MOV      r1,sp
000074  800f              STRH     r7,[r1,#0]
;;;52       INT_InitStruct.INT_INTSEL = INT_INTSEL_PC;
000076  808d              STRH     r5,[r1,#4]
;;;53       INT_InitStruct.INT_Trigger = INT_Trigger_Rising_Falling;
000078  2003              MOVS     r0,#3
00007a  8048              STRH     r0,[r1,#2]
;;;54       INT_Init(&INT_InitStruct);
00007c  4668              MOV      r0,sp
00007e  f7fffffe          BL       INT_Init
;;;55     
;;;56       /* 开启对应的中断 */
;;;57       INT_ITConfig(INT_Channel_0, INT_IT_Rising, ENABLE);
000082  2201              MOVS     r2,#1
000084  4611              MOV      r1,r2
000086  4610              MOV      r0,r2
000088  f7fffffe          BL       INT_ITConfig
;;;58       NVIC_EnableIRQ(INT0_IRQn);
00008c  2000              MOVS     r0,#0
00008e  f7fffffe          BL       __NVIC_EnableIRQ
;;;59     
;;;60       INT_ITConfig(INT_Channel_2, INT_Trigger_Falling, ENABLE);
000092  2201              MOVS     r2,#1
000094  2102              MOVS     r1,#2
000096  2004              MOVS     r0,#4
000098  f7fffffe          BL       INT_ITConfig
;;;61       NVIC_EnableIRQ(INT1_7_IRQn);
00009c  2001              MOVS     r0,#1
00009e  f7fffffe          BL       __NVIC_EnableIRQ
;;;62     
;;;63       INT_ITConfig(INT_Channel_9, INT_Trigger_Rising_Falling, ENABLE);
0000a2  2201              MOVS     r2,#1
0000a4  2103              MOVS     r1,#3
0000a6  4630              MOV      r0,r6
0000a8  f7fffffe          BL       INT_ITConfig
;;;64       NVIC_EnableIRQ(INT8_11_IRQn);
0000ac  2002              MOVS     r0,#2
0000ae  f7fffffe          BL       __NVIC_EnableIRQ
;;;65       
;;;66       INT_ITConfig(INT_Channel_12, INT_Trigger_Rising_Falling, ENABLE);
0000b2  2201              MOVS     r2,#1
0000b4  2103              MOVS     r1,#3
0000b6  4638              MOV      r0,r7
0000b8  f7fffffe          BL       INT_ITConfig
;;;67       NVIC_EnableIRQ(INT12_15_IRQn);
0000bc  2003              MOVS     r0,#3
0000be  f7fffffe          BL       __NVIC_EnableIRQ
                  |L1.194|
;;;68       while(1);
0000c2  e7fe              B        |L1.194|
;;;69     }
;;;70     
                          ENDP

                  |L1.196|
                          DCD      0x40011000
                  |L1.200|
                          DCD      0x40011100
                  |L1.204|
                          DCD      0x40011200

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

                  INT_Example_INT0Handler PROC
;;;70     
;;;71     void INT_Example_INT0Handler(void)
000000  b510              PUSH     {r4,lr}
;;;72     {
;;;73       if(INT_GetFlagStatus(INT_Channel_0, INT_Flag_Rising)) //判断INT0标志位
000002  2101              MOVS     r1,#1
000004  4608              MOV      r0,r1
000006  f7fffffe          BL       INT_GetFlagStatus
00000a  2800              CMP      r0,#0
00000c  d005              BEQ      |L2.26|
;;;74       {
;;;75         INT_ClearFlag(INT_Channel_0);
00000e  2001              MOVS     r0,#1
000010  f7fffffe          BL       INT_ClearFlag
;;;76         printf("INT0上升沿中断已触发！\r\n");
000014  a001              ADR      r0,|L2.28|
000016  f7fffffe          BL       __2printf
                  |L2.26|
;;;77       }
;;;78     }
00001a  bd10              POP      {r4,pc}
;;;79     
                          ENDP

                  |L2.28|
00001c  494e5430          DCB      "INT0",201,207,201,253,209,216,214,208,182,207,210,209,180
000020  c9cfc9fd
000024  d1d8d6d0
000028  b6cfd2d1
00002c  b4      
00002d  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
000031  a10d0a00
000035  00                DCB      0
000036  00                DCB      0
000037  00                DCB      0

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

                  INT_Example_INT12_15_Handler PROC
;;;102    
;;;103    void INT_Example_INT12_15_Handler(void)
000000  b510              PUSH     {r4,lr}
;;;104    {
;;;105      if(INT_GetFlagStatus(INT_Channel_12, INT_Flag_Rising)) //判断INT12_15标志位
000002  2101              MOVS     r1,#1
000004  030c              LSLS     r4,r1,#12
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       INT_GetFlagStatus
00000c  2800              CMP      r0,#0
00000e  d005              BEQ      |L3.28|
;;;106      {
;;;107        INT_ClearFlag(INT_Channel_12);
000010  4620              MOV      r0,r4
000012  f7fffffe          BL       INT_ClearFlag
;;;108        printf("INT12上升沿中断已触发！\r\n");
000016  a008              ADR      r0,|L3.56|
000018  f7fffffe          BL       __2printf
                  |L3.28|
;;;109      }
;;;110      if(INT_GetFlagStatus(INT_Channel_12, INT_Flag_Falling)) //判断INT12_15标志位
00001c  2102              MOVS     r1,#2
00001e  4620              MOV      r0,r4
000020  f7fffffe          BL       INT_GetFlagStatus
000024  2800              CMP      r0,#0
000026  d005              BEQ      |L3.52|
;;;111      {
;;;112        INT_ClearFlag(INT_Channel_12);
000028  4620              MOV      r0,r4
00002a  f7fffffe          BL       INT_ClearFlag
;;;113        printf("INT12下降沿中断已触发！\r\n");
00002e  a009              ADR      r0,|L3.84|
000030  f7fffffe          BL       __2printf
                  |L3.52|
;;;114      }
;;;115    }
000034  bd10              POP      {r4,pc}
                          ENDP

000036  0000              DCW      0x0000
                  |L3.56|
000038  494e5431          DCB      "INT12",201,207,201,253,209,216,214,208,182,207,210,209,180
00003c  32c9cfc9
000040  fdd1d8d6
000044  d0b6cfd2
000048  d1b4    
00004a  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
00004e  a10d0a00
000052  00                DCB      0
000053  00                DCB      0
                  |L3.84|
000054  494e5431          DCB      "INT12",207,194,189,181,209,216,214,208,182,207,210,209,180
000058  32cfc2bd
00005c  b5d1d8d6
000060  d0b6cfd2
000064  d1b4    
000066  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
00006a  a10d0a00
00006e  00                DCB      0
00006f  00                DCB      0

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

                  INT_Example_INT1_7Handler PROC
;;;79     
;;;80     void INT_Example_INT1_7Handler(void)
000000  b510              PUSH     {r4,lr}
;;;81     {
;;;82       if(INT_GetFlagStatus(INT_Channel_2, INT_Flag_Falling)) //判断INT1_7标志位
000002  2102              MOVS     r1,#2
000004  2004              MOVS     r0,#4
000006  f7fffffe          BL       INT_GetFlagStatus
00000a  2800              CMP      r0,#0
00000c  d005              BEQ      |L4.26|
;;;83       {
;;;84         INT_ClearFlag(INT_Channel_2);
00000e  2004              MOVS     r0,#4
000010  f7fffffe          BL       INT_ClearFlag
;;;85         printf("INT2下降沿中断已触发！\r\n");
000014  a001              ADR      r0,|L4.28|
000016  f7fffffe          BL       __2printf
                  |L4.26|
;;;86       }
;;;87     }
00001a  bd10              POP      {r4,pc}
;;;88     
                          ENDP

                  |L4.28|
00001c  494e5432          DCB      "INT2",207,194,189,181,209,216,214,208,182,207,210,209,180
000020  cfc2bdb5
000024  d1d8d6d0
000028  b6cfd2d1
00002c  b4      
00002d  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
000031  a10d0a00
000035  00                DCB      0
000036  00                DCB      0
000037  00                DCB      0

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

                  INT_Example_INT8_11_Handler PROC
;;;88     
;;;89     void INT_Example_INT8_11_Handler(void)
000000  b510              PUSH     {r4,lr}
;;;90     {
;;;91       if(INT_GetFlagStatus(INT_Channel_9, INT_Flag_Rising)) //判断INT8_11标志位
000002  2101              MOVS     r1,#1
000004  024c              LSLS     r4,r1,#9
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       INT_GetFlagStatus
00000c  2800              CMP      r0,#0
00000e  d005              BEQ      |L5.28|
;;;92       {
;;;93         INT_ClearFlag(INT_Channel_9);
000010  4620              MOV      r0,r4
000012  f7fffffe          BL       INT_ClearFlag
;;;94         printf("INT9上升沿中断已触发！\r\n");
000016  a008              ADR      r0,|L5.56|
000018  f7fffffe          BL       __2printf
                  |L5.28|
;;;95       }
;;;96       if(INT_GetFlagStatus(INT_Channel_9, INT_Flag_Falling)) //判断INT8_11标志位
00001c  2102              MOVS     r1,#2
00001e  4620              MOV      r0,r4
000020  f7fffffe          BL       INT_GetFlagStatus
000024  2800              CMP      r0,#0
000026  d005              BEQ      |L5.52|
;;;97       {
;;;98         INT_ClearFlag(INT_Channel_9);
000028  4620              MOV      r0,r4
00002a  f7fffffe          BL       INT_ClearFlag
;;;99         printf("INT9下降沿中断已触发！\r\n");
00002e  a009              ADR      r0,|L5.84|
000030  f7fffffe          BL       __2printf
                  |L5.52|
;;;100      }
;;;101    }
000034  bd10              POP      {r4,pc}
;;;102    
                          ENDP

000036  0000              DCW      0x0000
                  |L5.56|
000038  494e5439          DCB      "INT9",201,207,201,253,209,216,214,208,182,207,210,209,180
00003c  c9cfc9fd
000040  d1d8d6d0
000044  b6cfd2d1
000048  b4      
000049  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
00004d  a10d0a00
000051  00                DCB      0
000052  00                DCB      0
000053  00                DCB      0
                  |L5.84|
000054  494e5439          DCB      "INT9",207,194,189,181,209,216,214,208,182,207,210,209,180
000058  cfc2bdb5
00005c  d1d8d6d0
000060  b6cfd2d1
000064  b4      
000065  a5b7a2a3          DCB      165,183,162,163,161,"\r\n",0
000069  a10d0a00
00006d  00                DCB      0
00006e  00                DCB      0
00006f  00                DCB      0

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

                  __NVIC_EnableIRQ PROC
;;;740     */
;;;741    __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
000000  2800              CMP      r0,#0
;;;742    {
000002  db05              BLT      |L6.16|
;;;743      if ((int32_t)(IRQn) >= 0)
;;;744      {
;;;745        NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
000004  06c1              LSLS     r1,r0,#27
000006  0ec9              LSRS     r1,r1,#27
000008  2001              MOVS     r0,#1
00000a  4088              LSLS     r0,r0,r1
00000c  4901              LDR      r1,|L6.20|
00000e  6008              STR      r0,[r1,#0]
                  |L6.16|
;;;746      }
;;;747    }
000010  4770              BX       lr
;;;748    
                          ENDP

000012  0000              DCW      0x0000
                  |L6.20|
                          DCD      0xe000e100

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
