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

📄 stm32f10x_gpio.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  GPIO_StructInit PROC
;;;230      /* Reset GPIO init structure parameters values */
;;;231      GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
000172  f64ff64f          MOV      r1,#0xffff
000176  8001              STRH     r1,[r0,#0]
;;;232      GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
000178  2102              MOVS     r1,#2
00017a  7081              STRB     r1,[r0,#2]
;;;233      GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
00017c  2104              MOVS     r1,#4
00017e  70c1              STRB     r1,[r0,#3]
;;;234    }
000180  4770              BX       lr
;;;235    
                          ENDP

                  GPIO_ReadInputDataBit PROC
;;;245    u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;246    {
000182  4602              MOV      r2,r0
;;;247      u8 bitstatus = 0x00;
000184  2000              MOVS     r0,#0
;;;248      
;;;249      /* Check the parameters */
;;;250      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;251      assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;252      
;;;253      if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000186  6892              LDR      r2,[r2,#8]
000188  420a              TST      r2,r1
00018a  d000              BEQ      |L1.398|
;;;254      {
;;;255        bitstatus = (u8)Bit_SET;
00018c  2001              MOVS     r0,#1
                  |L1.398|
;;;256      }
;;;257      else
;;;258      {
;;;259        bitstatus = (u8)Bit_RESET;
;;;260      }
;;;261      return bitstatus;
;;;262    }
00018e  4770              BX       lr
;;;263    
                          ENDP

                  GPIO_ReadInputData PROC
;;;275      
;;;276      return ((u16)GPIOx->IDR);
000190  6880              LDR      r0,[r0,#8]
000192  b280              UXTH     r0,r0
;;;277    }
000194  4770              BX       lr
;;;278    
                          ENDP

                  GPIO_ReadOutputDataBit PROC
;;;288    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;289    {
000196  4602              MOV      r2,r0
;;;290      u8 bitstatus = 0x00;
000198  2000              MOVS     r0,#0
;;;291    
;;;292      /* Check the parameters */
;;;293      assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;294      assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
;;;295      
;;;296      if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
00019a  68d2              LDR      r2,[r2,#0xc]
00019c  420a              TST      r2,r1
00019e  d000              BEQ      |L1.418|
;;;297      {
;;;298        bitstatus = (u8)Bit_SET;
0001a0  2001              MOVS     r0,#1
                  |L1.418|
;;;299      }
;;;300      else
;;;301      {
;;;302        bitstatus = (u8)Bit_RESET;
;;;303      }
;;;304      return bitstatus;
;;;305    }
0001a2  4770              BX       lr
;;;306    
                          ENDP

                  GPIO_ReadOutputData PROC
;;;318        
;;;319      return ((u16)GPIOx->ODR);
0001a4  68c0              LDR      r0,[r0,#0xc]
0001a6  b280              UXTH     r0,r0
;;;320    }
0001a8  4770              BX       lr
;;;321    
                          ENDP

                  GPIO_SetBits PROC
;;;337      
;;;338      GPIOx->BSRR = GPIO_Pin;
0001aa  6101              STR      r1,[r0,#0x10]
;;;339    }
0001ac  4770              BX       lr
;;;340    
                          ENDP

                  GPIO_ResetBits PROC
;;;356      
;;;357      GPIOx->BRR = GPIO_Pin;
0001ae  6141              STR      r1,[r0,#0x14]
;;;358    }
0001b0  4770              BX       lr
;;;359    
                          ENDP

                  GPIO_WriteBit PROC
;;;379      
;;;380      if (BitVal != Bit_RESET)
0001b2  b10a              CBZ      r2,|L1.440|
;;;381      {
;;;382        GPIOx->BSRR = GPIO_Pin;
0001b4  6101              STR      r1,[r0,#0x10]
;;;383      }
;;;384      else
;;;385      {
;;;386        GPIOx->BRR = GPIO_Pin;
;;;387      }
;;;388    }
0001b6  4770              BX       lr
                  |L1.440|
0001b8  6141              STR      r1,[r0,#0x14]         ;386
0001ba  4770              BX       lr
;;;389    
                          ENDP

                  GPIO_Write PROC
;;;403      
;;;404      GPIOx->ODR = PortVal;
0001bc  60c1              STR      r1,[r0,#0xc]
;;;405    }
0001be  4770              BX       lr
;;;406    
                          ENDP

                  GPIO_PinLockConfig PROC
;;;424      
;;;425      tmp |= GPIO_Pin;
0001c0  f441f441          ORR      r2,r1,#0x10000
;;;426      /* Set LCKK bit */
;;;427      GPIOx->LCKR = tmp;
0001c4  6182              STR      r2,[r0,#0x18]
;;;428      /* Reset LCKK bit */
;;;429      GPIOx->LCKR =  GPIO_Pin;
0001c6  6181              STR      r1,[r0,#0x18]
;;;430      /* Set LCKK bit */
;;;431      GPIOx->LCKR = tmp;
0001c8  6182              STR      r2,[r0,#0x18]
;;;432      /* Read LCKK bit*/
;;;433      tmp = GPIOx->LCKR;
0001ca  6981              LDR      r1,[r0,#0x18]
;;;434      /* Read LCKK bit*/
;;;435      tmp = GPIOx->LCKR;
0001cc  6980              LDR      r0,[r0,#0x18]
;;;436    }
0001ce  4770              BX       lr
;;;437    
                          ENDP

                  GPIO_EventOutputConfig PROC
;;;450    void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;451    {
0001d0  b510              PUSH     {r4,lr}
;;;452      u32 tmpreg = 0x00;
;;;453    
;;;454      /* Check the parameters */
;;;455      assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource));
;;;456      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;457        
;;;458      tmpreg = AFIO->EVCR;
0001d2  4b22              LDR      r3,|L1.604|
0001d4  681a              LDR      r2,[r3,#0]
;;;459      /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;460      tmpreg &= EVCR_PORTPINCONFIG_MASK;
0001d6  f64ff64f          MOV      r4,#0xff80
0001da  4022              ANDS     r2,r2,r4
;;;461      tmpreg |= (u32)GPIO_PortSource << 0x04;
0001dc  ea42ea42          ORR      r0,r2,r0,LSL #4
;;;462      tmpreg |= GPIO_PinSource;
0001e0  4308              ORRS     r0,r0,r1
;;;463    
;;;464      AFIO->EVCR = tmpreg;
0001e2  6018              STR      r0,[r3,#0]
;;;465    }
0001e4  bd10              POP      {r4,pc}
;;;466    
                          ENDP

                  GPIO_EventOutputCmd PROC
;;;479      
;;;480      *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
0001e6  491e              LDR      r1,|L1.608|
0001e8  61c8              STR      r0,[r1,#0x1c]
;;;481    }
0001ea  4770              BX       lr
;;;482    
                          ENDP

                  GPIO_PinRemapConfig PROC
;;;518    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;519    {
0001ec  b5f0              PUSH     {r4-r7,lr}
;;;520      u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;521    
;;;522      /* Check the parameters */
;;;523      assert_param(IS_GPIO_REMAP(GPIO_Remap));
;;;524      assert_param(IS_FUNCTIONAL_STATE(NewState));  
;;;525      
;;;526      tmpreg = AFIO->MAPR;
0001ee  4d1b              LDR      r5,|L1.604|
0001f0  686b              LDR      r3,[r5,#4]
;;;527    
;;;528      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
0001f2  f3c0f3c0          UBFX     r6,r0,#16,#4
;;;529      tmp = GPIO_Remap & LSB_MASK;
;;;530    
;;;531      if ((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK))
0001f6  0d42              LSRS     r2,r0,#21
0001f8  0112              LSLS     r2,r2,#4
0001fa  b284              UXTH     r4,r0
0001fc  f3c0f3c0          UBFX     r7,r0,#20,#2
000200  4094              LSLS     r4,r4,r2
000202  2f03              CMP      r7,#3
000204  d106              BNE      |L1.532|
;;;532      {
;;;533        tmpreg &= DBGAFR_SWJCFG_MASK;
000206  f023f023          BIC      r2,r3,#0xf000000
;;;534        AFIO->MAPR &= DBGAFR_SWJCFG_MASK;
00020a  6868              LDR      r0,[r5,#4]
00020c  f020f020          BIC      r0,r0,#0xf000000
000210  6068              STR      r0,[r5,#4]
000212  e00a              B        |L1.554|
                  |L1.532|
;;;535      }
;;;536      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000214  02c0              LSLS     r0,r0,#11
000216  d505              BPL      |L1.548|
;;;537      {
;;;538        tmp1 = ((u32)0x03) << tmpmask;
000218  2003              MOVS     r0,#3
00021a  40b0              LSLS     r0,r0,r6
;;;539        tmpreg &= ~tmp1;
00021c  4383              BICS     r3,r3,r0
;;;540        tmpreg |= ~DBGAFR_SWJCFG_MASK;
00021e  f043f043          ORR      r2,r3,#0xf000000
000222  e002              B        |L1.554|
                  |L1.548|
;;;541      }
;;;542      else
;;;543      {
;;;544        tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10));
000224  43a3              BICS     r3,r3,r4
;;;545        tmpreg |= ~DBGAFR_SWJCFG_MASK;
000226  f043f043          ORR      r2,r3,#0xf000000
                  |L1.554|
;;;546      }
;;;547    
;;;548      if (NewState != DISABLE)
00022a  b101              CBZ      r1,|L1.558|
;;;549      {
;;;550        tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10));
00022c  4322              ORRS     r2,r2,r4
                  |L1.558|
;;;551      }
;;;552    
;;;553      AFIO->MAPR = tmpreg;
00022e  606a              STR      r2,[r5,#4]
;;;554    }
000230  bdf0              POP      {r4-r7,pc}
;;;555    
                          ENDP

                  GPIO_EXTILineConfig PROC
;;;568    void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;569    {
000232  b510              PUSH     {r4,lr}
;;;570      u32 tmp = 0x00;
;;;571    
;;;572      /* Check the parameters */
;;;573      assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
;;;574      assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;575      
;;;576      tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000234  078a              LSLS     r2,r1,#30
000236  0f12              LSRS     r2,r2,#28
000238  230f              MOVS     r3,#0xf
00023a  4093              LSLS     r3,r3,r2
;;;577    
;;;578      AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
00023c  f021f021          BIC      r4,r1,#3
000240  4906              LDR      r1,|L1.604|
000242  4421              ADD      r1,r1,r4
000244  688c              LDR      r4,[r1,#8]
000246  439c              BICS     r4,r4,r3
000248  608c              STR      r4,[r1,#8]
;;;579      AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
00024a  688b              LDR      r3,[r1,#8]
00024c  4090              LSLS     r0,r0,r2
00024e  4303              ORRS     r3,r3,r0
000250  608b              STR      r3,[r1,#8]
;;;580    }
000252  bd10              POP      {r4,pc}
;;;581    
                          ENDP

                  |L1.596|
000254  40011400          DCD      0x40011400
                  |L1.600|
000258  bffef800          DCD      0xbffef800
                  |L1.604|
00025c  40010000          DCD      0x40010000
                  |L1.608|
000260  42200000          DCD      0x42200000

⌨️ 快捷键说明

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