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

📄 stm32f10x_gpio.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  GPIO_ReadInputDataBit PROC
;;;243    u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;244    {
000000  4602              MOV      r2,r0
;;;245      u8 bitstatus = 0x00;
;;;246      
;;;247      /* Check the parameters */
;;;248      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;249      assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;250      
;;;251      if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000002  6892              LDR      r2,[r2,#8]
000004  2000              MOVS     r0,#0                 ;245
000006  420a              TST      r2,r1
000008  d000              BEQ      |L5.12|
;;;252      {
;;;253        bitstatus = (u8)Bit_SET;
00000a  2001              MOVS     r0,#1
                  |L5.12|
;;;254      }
;;;255      else
;;;256      {
;;;257        bitstatus = (u8)Bit_RESET;
;;;258      }
;;;259      return bitstatus;
;;;260    }
00000c  4770              BX       lr
;;;261    
                          ENDP


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

                  GPIO_ReadInputData PROC
;;;273      
;;;274      return ((u16)GPIOx->IDR);
000000  6880              LDR      r0,[r0,#8]
000002  b280              UXTH     r0,r0
;;;275    }
000004  4770              BX       lr
;;;276    
                          ENDP


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

                  GPIO_ReadOutputDataBit PROC
;;;286    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;287    {
000000  4602              MOV      r2,r0
;;;288      u8 bitstatus = 0x00;
;;;289    
;;;290      /* Check the parameters */
;;;291      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;292      assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;293      
;;;294      if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000002  68d2              LDR      r2,[r2,#0xc]
000004  2000              MOVS     r0,#0                 ;288
000006  420a              TST      r2,r1
000008  d000              BEQ      |L7.12|
;;;295      {
;;;296        bitstatus = (u8)Bit_SET;
00000a  2001              MOVS     r0,#1
                  |L7.12|
;;;297      }
;;;298      else
;;;299      {
;;;300        bitstatus = (u8)Bit_RESET;
;;;301      }
;;;302      return bitstatus;
;;;303    }
00000c  4770              BX       lr
;;;304    
                          ENDP


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

                  GPIO_ReadOutputData PROC
;;;316        
;;;317      return ((u16)GPIOx->ODR);
000000  68c0              LDR      r0,[r0,#0xc]
000002  b280              UXTH     r0,r0
;;;318    }
000004  4770              BX       lr
;;;319    
                          ENDP


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

                  GPIO_SetBits PROC
;;;335      
;;;336      GPIOx->BSRR = GPIO_Pin;
000000  6101              STR      r1,[r0,#0x10]
;;;337    }
000002  4770              BX       lr
;;;338    
                          ENDP


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

                  GPIO_ResetBits PROC
;;;354      
;;;355      GPIOx->BRR = GPIO_Pin;
000000  6141              STR      r1,[r0,#0x14]
;;;356    }
000002  4770              BX       lr
;;;357    
                          ENDP


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

                  GPIO_WriteBit PROC
;;;377      
;;;378      if (BitVal != Bit_RESET)
000000  b10a              CBZ      r2,|L11.6|
;;;379      {
;;;380        GPIOx->BSRR = GPIO_Pin;
000002  6101              STR      r1,[r0,#0x10]
;;;381      }
;;;382      else
;;;383      {
;;;384        GPIOx->BRR = GPIO_Pin;
;;;385      }
;;;386    }
000004  4770              BX       lr
                  |L11.6|
000006  6141              STR      r1,[r0,#0x14]         ;384
000008  4770              BX       lr
;;;387    
                          ENDP


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

                  GPIO_Write PROC
;;;401      
;;;402      GPIOx->ODR = PortVal;
000000  60c1              STR      r1,[r0,#0xc]
;;;403    }
000002  4770              BX       lr
;;;404    
                          ENDP


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

                  GPIO_PinLockConfig PROC
;;;422      
;;;423      tmp |= GPIO_Pin;
000000  f441f441          ORR      r2,r1,#0x10000
;;;424      /* Set LCKK bit */
;;;425      GPIOx->LCKR = tmp;
000004  6182              STR      r2,[r0,#0x18]
;;;426      /* Reset LCKK bit */
;;;427      GPIOx->LCKR =  GPIO_Pin;
000006  6181              STR      r1,[r0,#0x18]
;;;428      /* Set LCKK bit */
;;;429      GPIOx->LCKR = tmp;
000008  6182              STR      r2,[r0,#0x18]
;;;430      /* Read LCKK bit*/
;;;431      tmp = GPIOx->LCKR;
00000a  6981              LDR      r1,[r0,#0x18]
;;;432      /* Read LCKK bit*/
;;;433      tmp = GPIOx->LCKR;
00000c  6980              LDR      r0,[r0,#0x18]
;;;434    }
00000e  4770              BX       lr
;;;435    
                          ENDP


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

                  GPIO_EventOutputConfig PROC
;;;448    void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;449    {
000000  b510              PUSH     {r4,lr}
;;;450      u32 tmpreg = 0x00;
;;;451    
;;;452      /* Check the parameters */
;;;453      assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource));
;;;454      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;455        
;;;456      tmpreg = AFIO->EVCR;
000002  4b05              LDR      r3,|L14.24|
000004  681a              LDR      r2,[r3,#0]
;;;457      /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;458      tmpreg &= EVCR_PORTPINCONFIG_MASK;
000006  f64ff64f          MOV      r4,#0xff80
00000a  4022              ANDS     r2,r2,r4
;;;459      tmpreg |= (u32)GPIO_PortSource << 0x04;
00000c  ea42ea42          ORR      r0,r2,r0,LSL #4
;;;460      tmpreg |= GPIO_PinSource;
000010  4308              ORRS     r0,r0,r1
;;;461    
;;;462      AFIO->EVCR = tmpreg;
000012  6018              STR      r0,[r3,#0]
;;;463    }
000014  bd10              POP      {r4,pc}
;;;464    
                          ENDP

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

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

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

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

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

                  GPIO_PinRemapConfig PROC
;;;516    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;517    {
000000  b5f0              PUSH     {r4-r7,lr}
;;;518      u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;519    
;;;520      /* Check the parameters */
;;;521      assert_param(IS_GPIO_REMAP(GPIO_Remap));
;;;522      assert_param(IS_FUNCTIONAL_STATE(NewState));  
;;;523      
;;;524      tmpreg = AFIO->MAPR;
000002  4d10              LDR      r5,|L16.68|
000004  686b              LDR      r3,[r5,#4]
;;;525    
;;;526      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
;;;527      tmp = GPIO_Remap & LSB_MASK;
;;;528    
;;;529      if ((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK))
000006  0d44              LSRS     r4,r0,#21
000008  0126              LSLS     r6,r4,#4
00000a  b284              UXTH     r4,r0
00000c  f3c0f3c0          UBFX     r7,r0,#20,#2
000010  40b4              LSLS     r4,r4,r6
000012  f3c0f3c0          UBFX     r2,r0,#16,#4          ;526
000016  2f03              CMP      r7,#3
000018  d106              BNE      |L16.40|
;;;530      {
;;;531        tmpreg &= DBGAFR_SWJCFG_MASK;
;;;532        AFIO->MAPR &= DBGAFR_SWJCFG_MASK;
00001a  6868              LDR      r0,[r5,#4]
00001c  f023f023          BIC      r2,r3,#0xf000000      ;531
000020  f020f020          BIC      r0,r0,#0xf000000
000024  6068              STR      r0,[r5,#4]
000026  e008              B        |L16.58|
                  |L16.40|
;;;533      }
;;;534      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000028  02c0              LSLS     r0,r0,#11
00002a  d503              BPL      |L16.52|
;;;535      {
;;;536        tmp1 = ((u32)0x03) << tmpmask;
00002c  2003              MOVS     r0,#3
00002e  4090              LSLS     r0,r0,r2
;;;537        tmpreg &= ~tmp1;
000030  4383              BICS     r3,r3,r0
;;;538        tmpreg |= ~DBGAFR_SWJCFG_MASK;
000032  e000              B        |L16.54|
                  |L16.52|
;;;539      }
;;;540      else
;;;541      {
;;;542        tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10));
000034  43a3              BICS     r3,r3,r4
                  |L16.54|
000036  f043f043          ORR      r2,r3,#0xf000000      ;538
                  |L16.58|
;;;543        tmpreg |= ~DBGAFR_SWJCFG_MASK;
;;;544      }
;;;545    
;;;546      if (NewState != DISABLE)
00003a  b101              CBZ      r1,|L16.62|
;;;547      {
;;;548        tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10));
00003c  4322              ORRS     r2,r2,r4
                  |L16.62|
;;;549      }
;;;550    
;;;551      AFIO->MAPR = tmpreg;
00003e  606a              STR      r2,[r5,#4]
;;;552    }
000040  bdf0              POP      {r4-r7,pc}
;;;553    
                          ENDP

000042  0000              DCW      0x0000
                  |L16.68|
000044  40010000          DCD      0x40010000

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

                  GPIO_EXTILineConfig PROC
;;;566    void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;567    {
000000  b510              PUSH     {r4,lr}
;;;568      u32 tmp = 0x00;
;;;569    
;;;570      /* Check the parameters */
;;;571      assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
;;;572      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;573      
;;;574      tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000002  078a              LSLS     r2,r1,#30
;;;575    
;;;576      AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000004  f021f021          BIC      r4,r1,#3
000008  4906              LDR      r1,|L17.36|
00000a  0f12              LSRS     r2,r2,#28             ;574
00000c  4421              ADD      r1,r1,r4
00000e  230f              MOVS     r3,#0xf               ;574
000010  688c              LDR      r4,[r1,#8]
000012  4093              LSLS     r3,r3,r2              ;574
000014  439c              BICS     r4,r4,r3
000016  608c              STR      r4,[r1,#8]
;;;577      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]
;;;578    }
000020  bd10              POP      {r4,pc}
;;;579    
                          ENDP

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

⌨️ 快捷键说明

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