stm32f4xx_exti.txt 13.4 KB
; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\flash\obj\stm32f4xx_exti.o --asm_dir=.\Flash\List\ --list_dir=.\Flash\List\ --depend=.\flash\obj\stm32f4xx_exti.d --cpu=Cortex-M4.fp --apcs=interwork -O1 --diag_suppress=9931,870 -I..\..\Libraries\CMSIS\Include -I..\..\Libraries\CMSIS\Device\ST\STM32F4xx\Include -I..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\..\uCOS-III\uC-CPU -I..\..\uCOS-III\uC-LIB -I..\..\uCOS-III\uCOS-III\Ports -I..\..\uCOS-III\uCOS-III\Source -I..\..\uCOS-III\uC-CPU\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uC-LIB\Ports\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView -I..\..\User -I..\..\User\bsp -I..\..\User\bsp\inc -I..\..\User\libapp -I..\..\RL-ARM\Config -I..\..\RL-ARM\Driver -I..\..\RL-ARM\RL-RTX\inc -I..\..\User\bsp\BSP -I..\..\RL-ARM\RL-CAN -I..\..\Libraries\DSP_LIB\Include -I..\..\MODBUS\modbus\rtu -I..\..\MODBUS\BARE\port -I..\..\MODBUS\modbus\include -I..\..\User\bsp\BSP -I..\..\PLC -I..\..\Avoid -I..\..\User\parameter -I..\..\User\LaserMotionCtr -I..\..\User\W5100S -I..\..\User\bsp -I..\..\User\CHASSIS -I..\..\User\CONTROLFUNCTION -I..\..\User\DATAUPDATE -I..\..\User\HARAWARE -I..\..\User\MOTORDRIVER -I..\..\User\NAVAGATION -I..\..\User\PLATFORM -I..\..\User\SENSOR -I.\RTE\_Flash -IC:\Users\YDJ\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\YDJ\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.13.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION=527 -D_RTE_ -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -D__RTX -D__FPU_USED=1 --omf_browse=.\flash\obj\stm32f4xx_exti.crf ..\..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c]
                          THUMB

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

                  EXTI_ClearFlag PROC
;;;248      */
;;;249    void EXTI_ClearFlag(uint32_t EXTI_Line)
000000  4901              LDR      r1,|L1.8|
;;;250    {
;;;251      /* Check the parameters */
;;;252      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;253      
;;;254      EXTI->PR = EXTI_Line;
000002  6008              STR      r0,[r1,#0]
;;;255    }
000004  4770              BX       lr
;;;256    
                          ENDP

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

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

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

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

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

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

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

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

                  EXTI_GenerateSWInterrupt PROC
;;;195      */
;;;196    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
000000  4902              LDR      r1,|L4.12|
;;;197    {
;;;198      /* Check the parameters */
;;;199      assert_param(IS_EXTI_LINE(EXTI_Line));
;;;200      
;;;201      EXTI->SWIER |= EXTI_Line;
000002  680a              LDR      r2,[r1,#0]
000004  4302              ORRS     r2,r2,r0
000006  600a              STR      r2,[r1,#0]
;;;202    }
000008  4770              BX       lr
;;;203    
                          ENDP

00000a  0000              DCW      0x0000
                  |L4.12|
                          DCD      0x40013c10

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

                  EXTI_GetFlagStatus PROC
;;;225      */
;;;226    FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
000000  4601              MOV      r1,r0
;;;227    {
;;;228      FlagStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;229      /* Check the parameters */
;;;230      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;231      
;;;232      if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
000004  4a02              LDR      r2,|L5.16|
000006  6812              LDR      r2,[r2,#0]
000008  420a              TST      r2,r1
00000a  d000              BEQ      |L5.14|
;;;233      {
;;;234        bitstatus = SET;
00000c  2001              MOVS     r0,#1
                  |L5.14|
;;;235      }
;;;236      else
;;;237      {
;;;238        bitstatus = RESET;
;;;239      }
;;;240      return bitstatus;
;;;241    }
00000e  4770              BX       lr
;;;242    
                          ENDP

                  |L5.16|
                          DCD      0x40013c14

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

                  EXTI_GetITStatus PROC
;;;262      */
;;;263    ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
000000  4601              MOV      r1,r0
;;;264    {
;;;265      FlagStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;266      /* Check the parameters */
;;;267      assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;268      
;;;269      if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
000004  4a02              LDR      r2,|L6.16|
000006  6812              LDR      r2,[r2,#0]
000008  420a              TST      r2,r1
00000a  d000              BEQ      |L6.14|
;;;270      {
;;;271        bitstatus = SET;
00000c  2001              MOVS     r0,#1
                  |L6.14|
;;;272      }
;;;273      else
;;;274      {
;;;275        bitstatus = RESET;
;;;276      }
;;;277      return bitstatus;
;;;278      
;;;279    }
00000e  4770              BX       lr
;;;280    
                          ENDP

                  |L6.16|
                          DCD      0x40013c14

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

                  EXTI_Init PROC
;;;124      */
;;;125    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
000000  b530              PUSH     {r4,r5,lr}
;;;126    {
;;;127      uint32_t tmp = 0;
;;;128    
;;;129      /* Check the parameters */
;;;130      assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;131      assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;132      assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  
;;;133      assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;134    
;;;135      tmp = (uint32_t)EXTI_BASE;
000002  4a1b              LDR      r2,|L7.112|
;;;136         
;;;137      if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000004  7983              LDRB     r3,[r0,#6]
000006  6801              LDR      r1,[r0,#0]
000008  2b00              CMP      r3,#0
00000a  d02a              BEQ      |L7.98|
;;;138      {
;;;139        /* Clear EXTI line configuration */
;;;140        EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
00000c  6813              LDR      r3,[r2,#0]
00000e  438b              BICS     r3,r3,r1
000010  6013              STR      r3,[r2,#0]
;;;141        EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000012  1d11              ADDS     r1,r2,#4
000014  680b              LDR      r3,[r1,#0]
000016  6804              LDR      r4,[r0,#0]
000018  43a3              BICS     r3,r3,r4
00001a  600b              STR      r3,[r1,#0]
;;;142        
;;;143        tmp += EXTI_InitStruct->EXTI_Mode;
00001c  7901              LDRB     r1,[r0,#4]
00001e  4411              ADD      r1,r1,r2
;;;144    
;;;145        *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000020  680b              LDR      r3,[r1,#0]
000022  6804              LDR      r4,[r0,#0]
000024  4323              ORRS     r3,r3,r4
000026  600b              STR      r3,[r1,#0]
;;;146    
;;;147        /* Clear Rising Falling edge configuration */
;;;148        EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000028  4c11              LDR      r4,|L7.112|
00002a  3408              ADDS     r4,r4,#8
00002c  6821              LDR      r1,[r4,#0]
00002e  6803              LDR      r3,[r0,#0]
000030  4399              BICS     r1,r1,r3
000032  6021              STR      r1,[r4,#0]
;;;149        EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
000034  1d23              ADDS     r3,r4,#4
000036  6819              LDR      r1,[r3,#0]
000038  6805              LDR      r5,[r0,#0]
00003a  43a9              BICS     r1,r1,r5
00003c  6019              STR      r1,[r3,#0]
;;;150        
;;;151        /* Select the trigger for the selected external interrupts */
;;;152        if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
00003e  7941              LDRB     r1,[r0,#5]
000040  2910              CMP      r1,#0x10
000042  d005              BEQ      |L7.80|
;;;153        {
;;;154          /* Rising Falling edge */
;;;155          EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
;;;156          EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
;;;157        }
;;;158        else
;;;159        {
;;;160          tmp = (uint32_t)EXTI_BASE;
;;;161          tmp += EXTI_InitStruct->EXTI_Trigger;
000044  4411              ADD      r1,r1,r2
;;;162    
;;;163          *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000046  680a              LDR      r2,[r1,#0]
000048  6800              LDR      r0,[r0,#0]
00004a  4302              ORRS     r2,r2,r0
00004c  600a              STR      r2,[r1,#0]
;;;164        }
;;;165      }
;;;166      else
;;;167      {
;;;168        tmp += EXTI_InitStruct->EXTI_Mode;
;;;169    
;;;170        /* Disable the selected external lines */
;;;171        *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
;;;172      }
;;;173    }
00004e  bd30              POP      {r4,r5,pc}
                  |L7.80|
000050  6821              LDR      r1,[r4,#0]            ;155
000052  6802              LDR      r2,[r0,#0]            ;155
000054  4311              ORRS     r1,r1,r2              ;155
000056  6021              STR      r1,[r4,#0]            ;155
000058  6819              LDR      r1,[r3,#0]            ;156
00005a  6800              LDR      r0,[r0,#0]            ;156
00005c  4301              ORRS     r1,r1,r0              ;156
00005e  6019              STR      r1,[r3,#0]            ;156
000060  bd30              POP      {r4,r5,pc}
                  |L7.98|
000062  7900              LDRB     r0,[r0,#4]            ;168
000064  4410              ADD      r0,r0,r2              ;168
000066  6802              LDR      r2,[r0,#0]            ;171
000068  438a              BICS     r2,r2,r1              ;171
00006a  6002              STR      r2,[r0,#0]            ;171
00006c  bd30              POP      {r4,r5,pc}
;;;174    
                          ENDP

00006e  0000              DCW      0x0000
                  |L7.112|
                          DCD      0x40013c00

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

                  EXTI_StructInit PROC
;;;180      */
;;;181    void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
000000  2100              MOVS     r1,#0
;;;182    {
;;;183      EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
000002  6001              STR      r1,[r0,#0]
;;;184      EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
000004  7101              STRB     r1,[r0,#4]
;;;185      EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
000006  220c              MOVS     r2,#0xc
000008  7142              STRB     r2,[r0,#5]
;;;186      EXTI_InitStruct->EXTI_LineCmd = DISABLE;
00000a  7181              STRB     r1,[r0,#6]
;;;187    }
00000c  4770              BX       lr
;;;188    
                          ENDP


;*** Start embedded assembler ***

#line 1 "..\\..\\Libraries\\STM32F4xx_StdPeriph_Driver\\src\\stm32f4xx_exti.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REV16|
#line 129 "..\\..\\Libraries\\CMSIS\\Include\\core_cmInstr.h"
|__asm___16_stm32f4xx_exti_c_28b3b60e____REV16| PROC
#line 130

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH|
#line 144
|__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH| PROC
#line 145

 revsh r0, r0
 bx lr
	ENDP
	AREA ||.rrx_text||, CODE
	THUMB
	EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____RRX|
#line 300
|__asm___16_stm32f4xx_exti_c_28b3b60e____RRX| PROC
#line 301

 rrx r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***