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

📄 stm32f10x_gpio.txt

📁 STM32 demo板的例程
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                          ENDP

                  GPIO_StructInit PROC
;;;220      /* Reset GPIO init structure parameters values */
;;;221      GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
00016e  f64ff64f          MOV      r1,#0xffff
000172  8001              STRH     r1,[r0,#0]
;;;222      GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
000174  2102              MOVS     r1,#2
000176  7081              STRB     r1,[r0,#2]
;;;223      GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
000178  2104              MOVS     r1,#4
00017a  70c1              STRB     r1,[r0,#3]
;;;224    }
00017c  4770              BX       lr
                          ENDP

                  GPIO_ReadInputDataBit PROC
;;;235    u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;236    {
00017e  4602              MOV      r2,r0
;;;237      u8 bitstatus = 0x00;
;;;238      
;;;239      /* Check the parameters */
;;;240      assert(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;241      
;;;242      if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000180  6892              LDR      r2,[r2,#8]
000182  2000              MOVS     r0,#0
000184  420a              TST      r2,r1
;;;243      {
;;;244        bitstatus = (u8)Bit_SET;
000186  bf18              IT       NE
000188  2001              MOVNE    r0,#1
;;;245      }
;;;246      else
;;;247      {
;;;248        bitstatus = (u8)Bit_RESET;
;;;249      }
;;;250      return bitstatus;
;;;251    }
00018a  4770              BX       lr
                          ENDP

                  GPIO_ReadInputData PROC
;;;261    {
;;;262      return ((u16)GPIOx->IDR);
00018c  6880              LDR      r0,[r0,#8]
00018e  b280              UXTH     r0,r0
;;;263    }
000190  4770              BX       lr
                          ENDP

                  GPIO_ReadOutputDataBit PROC
;;;274    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;275    {
000192  4602              MOV      r2,r0
;;;276      u8 bitstatus = 0x00;
;;;277    
;;;278      /* Check the parameters */
;;;279      assert(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;280      
;;;281      if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000194  68d2              LDR      r2,[r2,#0xc]
000196  2000              MOVS     r0,#0
000198  420a              TST      r2,r1
;;;282      {
;;;283        bitstatus = (u8)Bit_SET;
00019a  bf18              IT       NE
00019c  2001              MOVNE    r0,#1
;;;284      }
;;;285      else
;;;286      {
;;;287        bitstatus = (u8)Bit_RESET;
;;;288      }
;;;289      return bitstatus;
;;;290    }
00019e  4770              BX       lr
                          ENDP

                  GPIO_ReadOutputData PROC
;;;300    {
;;;301      return ((u16)GPIOx->ODR);
0001a0  68c0              LDR      r0,[r0,#0xc]
0001a2  b280              UXTH     r0,r0
;;;302    }
0001a4  4770              BX       lr
                          ENDP

                  GPIO_SetBits PROC
;;;317      assert(IS_GPIO_PIN(GPIO_Pin));
;;;318      GPIOx->BSRR = GPIO_Pin;
0001a6  6101              STR      r1,[r0,#0x10]
;;;319    }
0001a8  4770              BX       lr
                          ENDP

                  GPIO_ResetBits PROC
;;;334      assert(IS_GPIO_PIN(GPIO_Pin));
;;;335      GPIOx->BRR = GPIO_Pin;
0001aa  6141              STR      r1,[r0,#0x14]
;;;336    }
0001ac  4770              BX       lr
                          ENDP

                  GPIO_WriteBit PROC
;;;356      
;;;357      if (BitVal != Bit_RESET)
0001ae  2a00              CMP      r2,#0
;;;358      {
;;;359        GPIOx->BSRR = GPIO_Pin;
;;;360      }
;;;361      else
;;;362      {
;;;363        GPIOx->BRR = GPIO_Pin;
0001b0  bf0c              ITE      EQ
0001b2  6141              STREQ    r1,[r0,#0x14]
0001b4  6101              STRNE    r1,[r0,#0x10]
;;;364      }
;;;365    }
0001b6  4770              BX       lr
                          ENDP

                  GPIO_Write PROC
;;;377    {
;;;378      GPIOx->ODR = PortVal;
0001b8  60c1              STR      r1,[r0,#0xc]
;;;379    }
0001ba  4770              BX       lr
                          ENDP

                  GPIO_PinLockConfig PROC
;;;397      
;;;398      tmp |= GPIO_Pin;
0001bc  f441f441          ORR      r2,r1,#0x10000
;;;399      /* Set LCKK bit */
;;;400      GPIOx->LCKR = tmp;
0001c0  6182              STR      r2,[r0,#0x18]
;;;401      /* Reset LCKK bit */
;;;402      GPIOx->LCKR =  GPIO_Pin;
0001c2  6181              STR      r1,[r0,#0x18]
;;;403      /* Set LCKK bit */
;;;404      GPIOx->LCKR = tmp;
0001c4  6182              STR      r2,[r0,#0x18]
;;;405      /* Read LCKK bit*/
;;;406      tmp = GPIOx->LCKR;
0001c6  6981              LDR      r1,[r0,#0x18]
;;;407      /* Read LCKK bit*/
;;;408      tmp = GPIOx->LCKR;
0001c8  6980              LDR      r0,[r0,#0x18]
;;;409    }
0001ca  4770              BX       lr
                          ENDP

                  GPIO_EventOutputConfig PROC
;;;430        
;;;431      tmpreg = AFIO->EVCR;
0001cc  4b20              LDR      r3,|L1.592|
0001ce  681a              LDR      r2,[r3,#0]
;;;432      /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;433      tmpreg &= EVCR_PORTPINCONFIG_MASK;
0001d0  f64ff64f          MOV      r12,#0xff80
0001d4  ea02ea02          AND      r2,r2,r12
;;;434      tmpreg |= (u32)GPIO_PortSource << 0x04;
0001d8  ea42ea42          ORR      r0,r2,r0,LSL #4
;;;435      tmpreg |= GPIO_PinSource;
0001dc  4308              ORRS     r0,r0,r1
;;;436    
;;;437      AFIO->EVCR = tmpreg;
0001de  6018              STR      r0,[r3,#0]
;;;438    }
0001e0  4770              BX       lr
                          ENDP

                  GPIO_EventOutputCmd PROC
;;;452      
;;;453      *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
0001e2  491c              LDR      r1,|L1.596|
0001e4  61c8              STR      r0,[r1,#0x1c]
;;;454    }
0001e6  4770              BX       lr
                          ENDP

                  GPIO_PinRemapConfig PROC
;;;486    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;487    {
0001e8  b430              PUSH     {r4,r5}
;;;488      u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;489    
;;;490      /* Check the parameters */
;;;491      assert(IS_GPIO_REMAP(GPIO_Remap));
;;;492      assert(IS_FUNCTIONAL_STATE(NewState));  
;;;493      
;;;494      tmpreg = AFIO->MAPR;
0001ea  4c19              LDR      r4,|L1.592|
0001ec  6862              LDR      r2,[r4,#4]
;;;495    
;;;496      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
0001ee  f3c0f3c0          UBFX     r12,r0,#16,#4
;;;497      tmp = GPIO_Remap & LSB_MASK;
0001f2  b283              UXTH     r3,r0
;;;498    
;;;499      if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
0001f4  f410f410          TST      r0,#0x200000
;;;500      {
;;;501        tmpreg &= DBGAFR_SWJCFG_MASK;
0001f8  bf18              IT       NE
0001fa  f022f022          BICNE    r2,r2,#0x7000000
0001fe  d108              BNE      |L1.530|
;;;502      }
;;;503      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000200  f410f410          TST      r0,#0x100000
;;;504      {
;;;505        tmp1 = ((u32)0x03) << tmpmask;
;;;506        tmpreg &= ~tmp1;
;;;507      }
;;;508      else
;;;509      {
;;;510        tmpreg &= ~tmp;
000204  bf0f              ITEEE    EQ
000206  439a              BICEQ    r2,r2,r3
000208  2503              MOVNE    r5,#3
00020a  fa05fa05          LSLNE    r12,r5,r12
00020e  ea22ea22          BICNE    r2,r2,r12
                  |L1.530|
;;;511      }
;;;512    
;;;513      if (NewState != DISABLE)
000212  b129              CBZ      r1,|L1.544|
;;;514      {
;;;515        if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000214  f410f410          TST      r0,#0x200000
;;;516        {
;;;517          tmpreg |= (tmp << 0x10);
;;;518        }
;;;519        else
;;;520        {
;;;521          tmpreg |= tmp;
000218  bf0c              ITE      EQ
00021a  431a              ORREQ    r2,r2,r3
00021c  ea42ea42          ORRNE    r2,r2,r3,LSL #16
                  |L1.544|
;;;522        }
;;;523      }
;;;524      AFIO->MAPR = tmpreg;
000220  6062              STR      r2,[r4,#4]
;;;525    }
000222  bc30              POP      {r4,r5}
000224  4770              BX       lr
                          ENDP

                  GPIO_EXTILineConfig PROC
;;;544      
;;;545      tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000226  078a              LSLS     r2,r1,#30
;;;546    
;;;547      AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000228  f021f021          BIC      r1,r1,#3
00022c  f101f101          ADD      r1,r1,#0x40000000
000230  0f12              LSRS     r2,r2,#28
000232  230f              MOVS     r3,#0xf
000234  f501f501          ADD      r1,r1,#0x10000
000238  4093              LSLS     r3,r3,r2
00023a  f8d1f8d1          LDR      r12,[r1,#8]
;;;548      AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
00023e  fa00fa00          LSL      r2,r0,r2
000242  ea2cea2c          BIC      r0,r12,r3
000246  4310              ORRS     r0,r0,r2
;;;549    }
000248  6088              STR      r0,[r1,#8]
00024a  4770              BX       lr
                          ENDP

                  |L1.588|
00024c  40011000          DCD      0x40011000
                  |L1.592|
000250  40010000          DCD      0x40010000
                  |L1.596|
000254  42200000          DCD      0x42200000

⌨️ 快捷键说明

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