⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_gpio.txt

📁 基于cortex arm stm32f103RB的智能卡(SmartCard)程序。编译通过
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;237      if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000002  6892              LDR      r2,[r2,#8]
000004  2000              MOVS     r0,#0
000006  420a              TST      r2,r1
000008  d000              BEQ      |L5.12|
;;;238      {
;;;239        bitstatus = (u8)Bit_SET;
00000a  2001              MOVS     r0,#1
                  |L5.12|
;;;240      }
;;;241      else
;;;242      {
;;;243        bitstatus = (u8)Bit_RESET;
;;;244      }
;;;245      return bitstatus;
;;;246    }
00000c  4770              BX       lr
                          ENDP


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

                  GPIO_ReadInputData PROC
;;;256    {
;;;257      return ((u16)GPIOx->IDR);
000000  6880              LDR      r0,[r0,#8]
000002  b280              UXTH     r0,r0
;;;258    }
000004  4770              BX       lr
                          ENDP


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

                  GPIO_ReadOutputDataBit PROC
;;;269    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;270    {
000000  4602              MOV      r2,r0
;;;271      u8 bitstatus = 0x00;
;;;272    
;;;273      /* Check the parameters */
;;;274      assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;275      
;;;276      if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000002  68d2              LDR      r2,[r2,#0xc]
000004  2000              MOVS     r0,#0
000006  420a              TST      r2,r1
000008  d000              BEQ      |L7.12|
;;;277      {
;;;278        bitstatus = (u8)Bit_SET;
00000a  2001              MOVS     r0,#1
                  |L7.12|
;;;279      }
;;;280      else
;;;281      {
;;;282        bitstatus = (u8)Bit_RESET;
;;;283      }
;;;284      return bitstatus;
;;;285    }
00000c  4770              BX       lr
                          ENDP


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

                  GPIO_ReadOutputData PROC
;;;295    {
;;;296      return ((u16)GPIOx->ODR);
000000  68c0              LDR      r0,[r0,#0xc]
000002  b280              UXTH     r0,r0
;;;297    }
000004  4770              BX       lr
                          ENDP


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

                  GPIO_SetBits PROC
;;;312      assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;313      GPIOx->BSRR = GPIO_Pin;
000000  6101              STR      r1,[r0,#0x10]
;;;314    }
000002  4770              BX       lr
                          ENDP


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

                  GPIO_ResetBits PROC
;;;329      assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;330      GPIOx->BRR = GPIO_Pin;
000000  6141              STR      r1,[r0,#0x14]
;;;331    }
000002  4770              BX       lr
                          ENDP


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

                  GPIO_WriteBit PROC
;;;351      
;;;352      if (BitVal != Bit_RESET)
000000  b10a              CBZ      r2,|L11.6|
;;;353      {
;;;354        GPIOx->BSRR = GPIO_Pin;
000002  6101              STR      r1,[r0,#0x10]
;;;355      }
;;;356      else
;;;357      {
;;;358        GPIOx->BRR = GPIO_Pin;
;;;359      }
;;;360    }
000004  4770              BX       lr
                  |L11.6|
000006  6141              STR      r1,[r0,#0x14]
000008  4770              BX       lr
                          ENDP


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

                  GPIO_Write PROC
;;;372    {
;;;373      GPIOx->ODR = PortVal;
000000  60c1              STR      r1,[r0,#0xc]
;;;374    }
000002  4770              BX       lr
                          ENDP


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

                  GPIO_PinLockConfig PROC
;;;392      
;;;393      tmp |= GPIO_Pin;
000000  f441f441          ORR      r2,r1,#0x10000
;;;394      /* Set LCKK bit */
;;;395      GPIOx->LCKR = tmp;
000004  6182              STR      r2,[r0,#0x18]
;;;396      /* Reset LCKK bit */
;;;397      GPIOx->LCKR =  GPIO_Pin;
000006  6181              STR      r1,[r0,#0x18]
;;;398      /* Set LCKK bit */
;;;399      GPIOx->LCKR = tmp;
000008  6182              STR      r2,[r0,#0x18]
;;;400      /* Read LCKK bit*/
;;;401      tmp = GPIOx->LCKR;
00000a  6981              LDR      r1,[r0,#0x18]
;;;402      /* Read LCKK bit*/
;;;403      tmp = GPIOx->LCKR;
00000c  6980              LDR      r0,[r0,#0x18]
;;;404    }
00000e  4770              BX       lr
                          ENDP


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

                  GPIO_EventOutputConfig PROC
;;;418    void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;419    {
000000  b510              PUSH     {r4,lr}
;;;420      u32 tmpreg = 0x00;
;;;421    
;;;422      /* Check the parameters */
;;;423      assert_param(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;424      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;425        
;;;426      tmpreg = AFIO->EVCR;
000002  4b05              LDR      r3,|L14.24|
000004  681a              LDR      r2,[r3,#0]
;;;427      /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;428      tmpreg &= EVCR_PORTPINCONFIG_MASK;
000006  f64ff64f          MOV      r4,#0xff80
00000a  4022              ANDS     r2,r2,r4
;;;429      tmpreg |= (u32)GPIO_PortSource << 0x04;
00000c  ea42ea42          ORR      r0,r2,r0,LSL #4
;;;430      tmpreg |= GPIO_PinSource;
000010  4308              ORRS     r0,r0,r1
;;;431    
;;;432      AFIO->EVCR = tmpreg;
000012  6018              STR      r0,[r3,#0]
;;;433    }
000014  bd10              POP      {r4,pc}
                          ENDP

000016  0000              DCW      0x0000
                  |L14.24|
000018  40010000          DCD      0x40010000

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

                  GPIO_EventOutputCmd PROC
;;;447      
;;;448      *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
000000  4901              LDR      r1,|L15.8|
000002  61c8              STR      r0,[r1,#0x1c]
;;;449    }
000004  4770              BX       lr
                          ENDP

000006  0000              DCW      0x0000
                  |L15.8|
000008  42200000          DCD      0x42200000

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

                  GPIO_PinRemapConfig PROC
;;;481    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;482    {
000000  b570              PUSH     {r4-r6,lr}
;;;483      u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;484    
;;;485      /* Check the parameters */
;;;486      assert_param(IS_GPIO_REMAP(GPIO_Remap));
;;;487      assert_param(IS_FUNCTIONAL_STATE(NewState));  
;;;488      
;;;489      tmpreg = AFIO->MAPR;
000002  4e0d              LDR      r6,|L16.56|
000004  6872              LDR      r2,[r6,#4]
;;;490    
;;;491      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
000006  f3c0f3c0          UBFX     r5,r0,#16,#4
;;;492      tmp = GPIO_Remap & LSB_MASK;
00000a  b283              UXTH     r3,r0
;;;493    
;;;494      if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
00000c  0284              LSLS     r4,r0,#10
00000e  d502              BPL      |L16.22|
;;;495      {
;;;496        tmpreg &= DBGAFR_SWJCFG_MASK;
000010  f022f022          BIC      r2,r2,#0x7000000
000014  e006              B        |L16.36|
                  |L16.22|
;;;497      }
;;;498      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000016  02c4              LSLS     r4,r0,#11
000018  d503              BPL      |L16.34|
;;;499      {
;;;500        tmp1 = ((u32)0x03) << tmpmask;
00001a  2403              MOVS     r4,#3
00001c  40ac              LSLS     r4,r4,r5
;;;501        tmpreg &= ~tmp1;
00001e  43a2              BICS     r2,r2,r4
000020  e000              B        |L16.36|
                  |L16.34|
;;;502      }
;;;503      else
;;;504      {
;;;505        tmpreg &= ~tmp;
000022  439a              BICS     r2,r2,r3
                  |L16.36|
;;;506      }
;;;507    
;;;508      if (NewState != DISABLE)
000024  b129              CBZ      r1,|L16.50|
;;;509      {
;;;510        if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000026  0280              LSLS     r0,r0,#10
000028  d502              BPL      |L16.48|
;;;511        {
;;;512          tmpreg |= (tmp << 0x10);
00002a  ea42ea42          ORR      r2,r2,r3,LSL #16
00002e  e000              B        |L16.50|
                  |L16.48|
;;;513        }
;;;514        else
;;;515        {
;;;516          tmpreg |= tmp;
000030  431a              ORRS     r2,r2,r3
                  |L16.50|
;;;517        }
;;;518      }
;;;519      AFIO->MAPR = tmpreg;
000032  6072              STR      r2,[r6,#4]
;;;520    }
000034  bd70              POP      {r4-r6,pc}
                          ENDP

000036  0000              DCW      0x0000
                  |L16.56|
000038  40010000          DCD      0x40010000

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

                  GPIO_EXTILineConfig PROC
;;;532    void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;533    {
000000  b510              PUSH     {r4,lr}
;;;534      u32 tmp = 0x00;
;;;535    
;;;536      /* Check the parameters */
;;;537      assert_param(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;538      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;539      
;;;540      tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000002  078a              LSLS     r2,r1,#30
;;;541    
;;;542      AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000004  f021f021          BIC      r4,r1,#3
000008  4906              LDR      r1,|L17.36|
00000a  0f12              LSRS     r2,r2,#28
00000c  4421              ADD      r1,r1,r4
00000e  230f              MOVS     r3,#0xf
000010  688c              LDR      r4,[r1,#8]
000012  4093              LSLS     r3,r3,r2
000014  439c              BICS     r4,r4,r3
000016  608c              STR      r4,[r1,#8]
;;;543      AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
000018  688b              LDR      r3,[r1,#8]
00001a  4090              LSLS     r0,r0,r2
00001c  4303              ORRS     r3,r3,r0
00001e  608b              STR      r3,[r1,#8]
;;;544    }
000020  bd10              POP      {r4,pc}
                          ENDP

000022  0000              DCW      0x0000
                  |L17.36|
000024  40010000          DCD      0x40010000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -