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

📄 stm32f10x_gpio.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000164  7081              STRB     r1,[r0,#2]
;;;223      GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
000166  2104              MOVS     r1,#4
000168  70c1              STRB     r1,[r0,#3]
;;;224    }
00016a  4770              BX       lr
;;;225    
                          ENDP

                  GPIO_ReadInputDataBit PROC
;;;235    u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;236    {
00016c  4602              MOV      r2,r0
;;;237      u8 bitstatus = 0x00;
00016e  2000              MOVS     r0,#0
;;;238      
;;;239      /* Check the parameters */
;;;240      assert(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;241      
;;;242      if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000170  6892              LDR      r2,[r2,#8]
000172  420a              TST      r2,r1
000174  d000              BEQ      |L1.376|
;;;243      {
;;;244        bitstatus = (u8)Bit_SET;
000176  2001              MOVS     r0,#1
                  |L1.376|
;;;245      }
;;;246      else
;;;247      {
;;;248        bitstatus = (u8)Bit_RESET;
;;;249      }
;;;250      return bitstatus;
;;;251    }
000178  4770              BX       lr
;;;252    
                          ENDP

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

                  GPIO_ReadOutputDataBit PROC
;;;274    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;275    {
000180  4602              MOV      r2,r0
;;;276      u8 bitstatus = 0x00;
000182  2000              MOVS     r0,#0
;;;277    
;;;278      /* Check the parameters */
;;;279      assert(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;280      
;;;281      if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000184  68d2              LDR      r2,[r2,#0xc]
000186  420a              TST      r2,r1
000188  d000              BEQ      |L1.396|
;;;282      {
;;;283        bitstatus = (u8)Bit_SET;
00018a  2001              MOVS     r0,#1
                  |L1.396|
;;;284      }
;;;285      else
;;;286      {
;;;287        bitstatus = (u8)Bit_RESET;
;;;288      }
;;;289      return bitstatus;
;;;290    }
00018c  4770              BX       lr
;;;291    
                          ENDP

                  GPIO_ReadOutputData PROC
;;;300    {
;;;301      return ((u16)GPIOx->ODR);
00018e  68c0              LDR      r0,[r0,#0xc]
000190  b280              UXTH     r0,r0
;;;302    }
000192  4770              BX       lr
;;;303    
                          ENDP

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

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

                  GPIO_WriteBit PROC
;;;356      
;;;357      if (BitVal != Bit_RESET)
00019c  b10a              CBZ      r2,|L1.418|
;;;358      {
;;;359        GPIOx->BSRR = GPIO_Pin;
00019e  6101              STR      r1,[r0,#0x10]
;;;360      }
;;;361      else
;;;362      {
;;;363        GPIOx->BRR = GPIO_Pin;
;;;364      }
;;;365    }
0001a0  4770              BX       lr
                  |L1.418|
0001a2  6141              STR      r1,[r0,#0x14]
0001a4  4770              BX       lr
;;;366    
                          ENDP

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

                  GPIO_PinLockConfig PROC
;;;397      
;;;398      tmp |= GPIO_Pin;
0001aa  f441f441          ORR      r2,r1,#0x10000
;;;399      /* Set LCKK bit */
;;;400      GPIOx->LCKR = tmp;
0001ae  6182              STR      r2,[r0,#0x18]
;;;401      /* Reset LCKK bit */
;;;402      GPIOx->LCKR =  GPIO_Pin;
0001b0  6181              STR      r1,[r0,#0x18]
;;;403      /* Set LCKK bit */
;;;404      GPIOx->LCKR = tmp;
0001b2  6182              STR      r2,[r0,#0x18]
;;;405      /* Read LCKK bit*/
;;;406      tmp = GPIOx->LCKR;
0001b4  6981              LDR      r1,[r0,#0x18]
;;;407      /* Read LCKK bit*/
;;;408      tmp = GPIOx->LCKR;
0001b6  6980              LDR      r0,[r0,#0x18]
;;;409    }
0001b8  4770              BX       lr
;;;410    
                          ENDP

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

                  GPIO_EventOutputCmd PROC
;;;452      
;;;453      *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
0001d0  491d              LDR      r1,|L1.584|
0001d2  61c8              STR      r0,[r1,#0x1c]
;;;454    }
0001d4  4770              BX       lr
;;;455    
                          ENDP

                  GPIO_PinRemapConfig PROC
;;;486    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;487    {
0001d6  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;
0001d8  4c1a              LDR      r4,|L1.580|
0001da  6862              LDR      r2,[r4,#4]
;;;495    
;;;496      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
0001dc  f3c0f3c0          UBFX     r12,r0,#16,#4
;;;497      tmp = GPIO_Remap & LSB_MASK;
0001e0  b283              UXTH     r3,r0
;;;498    
;;;499      if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
0001e2  f410f410          TST      r0,#0x200000
0001e6  d002              BEQ      |L1.494|
;;;500      {
;;;501        tmpreg &= DBGAFR_SWJCFG_MASK;
0001e8  f022f022          BIC      r2,r2,#0x7000000
0001ec  e009              B        |L1.514|
                  |L1.494|
;;;502      }
;;;503      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
0001ee  f410f410          TST      r0,#0x100000
0001f2  d005              BEQ      |L1.512|
;;;504      {
;;;505        tmp1 = ((u32)0x03) << tmpmask;
0001f4  2503              MOVS     r5,#3
0001f6  fa05fa05          LSL      r12,r5,r12
;;;506        tmpreg &= ~tmp1;
0001fa  ea22ea22          BIC      r2,r2,r12
0001fe  e000              B        |L1.514|
                  |L1.512|
;;;507      }
;;;508      else
;;;509      {
;;;510        tmpreg &= ~tmp;
000200  439a              BICS     r2,r2,r3
                  |L1.514|
;;;511      }
;;;512    
;;;513      if (NewState != DISABLE)
000202  b131              CBZ      r1,|L1.530|
;;;514      {
;;;515        if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000204  f410f410          TST      r0,#0x200000
000208  d002              BEQ      |L1.528|
;;;516        {
;;;517          tmpreg |= (tmp << 0x10);
00020a  ea42ea42          ORR      r2,r2,r3,LSL #16
00020e  e000              B        |L1.530|
                  |L1.528|
;;;518        }
;;;519        else
;;;520        {
;;;521          tmpreg |= tmp;
000210  431a              ORRS     r2,r2,r3
                  |L1.530|
;;;522        }
;;;523      }
;;;524      AFIO->MAPR = tmpreg;
000212  6062              STR      r2,[r4,#4]
;;;525    }
000214  bc30              POP      {r4,r5}
000216  4770              BX       lr
;;;526    
                          ENDP

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

                  |L1.576|
000240  40011000          DCD      0x40011000
                  |L1.580|
000244  40010000          DCD      0x40010000
                  |L1.584|
000248  42200000          DCD      0x42200000

⌨️ 快捷键说明

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