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

📄 stm32f10x_gpio.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;224    }
0001bc  4770              BX       lr
                          ENDP

                  GPIO_ReadInputDataBit PROC
;;;235    u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;236    {
0001be  4602              MOV      r2,r0
;;;237      u8 bitstatus = 0x00;
0001c0  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)
0001c2  6893              LDR      r3,[r2,#8]
0001c4  420b              TST      r3,r1
0001c6  d001              BEQ      |L1.460|
;;;243      {
;;;244        bitstatus = (u8)Bit_SET;
0001c8  2001              MOVS     r0,#1
0001ca  e000              B        |L1.462|
                  |L1.460|
;;;245      }
;;;246      else
;;;247      {
;;;248        bitstatus = (u8)Bit_RESET;
0001cc  2000              MOVS     r0,#0
                  |L1.462|
;;;249      }
;;;250      return bitstatus;
;;;251    }
0001ce  4770              BX       lr
                          ENDP

                  GPIO_ReadInputData PROC
;;;260    u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
;;;261    {
0001d0  4601              MOV      r1,r0
;;;262      return ((u16)GPIOx->IDR);
0001d2  6888              LDR      r0,[r1,#8]
0001d4  b280              UXTH     r0,r0
;;;263    }
0001d6  4770              BX       lr
                          ENDP

                  GPIO_ReadOutputDataBit PROC
;;;274    u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;275    {
0001d8  4602              MOV      r2,r0
;;;276      u8 bitstatus = 0x00;
0001da  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)
0001dc  68d3              LDR      r3,[r2,#0xc]
0001de  420b              TST      r3,r1
0001e0  d001              BEQ      |L1.486|
;;;282      {
;;;283        bitstatus = (u8)Bit_SET;
0001e2  2001              MOVS     r0,#1
0001e4  e000              B        |L1.488|
                  |L1.486|
;;;284      }
;;;285      else
;;;286      {
;;;287        bitstatus = (u8)Bit_RESET;
0001e6  2000              MOVS     r0,#0
                  |L1.488|
;;;288      }
;;;289      return bitstatus;
;;;290    }
0001e8  4770              BX       lr
                          ENDP

                  GPIO_ReadOutputData PROC
;;;299    u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
;;;300    {
0001ea  4601              MOV      r1,r0
;;;301      return ((u16)GPIOx->ODR);
0001ec  68c8              LDR      r0,[r1,#0xc]
0001ee  b280              UXTH     r0,r0
;;;302    }
0001f0  4770              BX       lr
                          ENDP

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

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

                  GPIO_WriteBit PROC
;;;356      
;;;357      if (BitVal != Bit_RESET)
0001fa  b10a              CBZ      r2,|L1.512|
;;;358      {
;;;359        GPIOx->BSRR = GPIO_Pin;
0001fc  6101              STR      r1,[r0,#0x10]
0001fe  e000              B        |L1.514|
                  |L1.512|
;;;360      }
;;;361      else
;;;362      {
;;;363        GPIOx->BRR = GPIO_Pin;
000200  6141              STR      r1,[r0,#0x14]
                  |L1.514|
;;;364      }
;;;365    }
000202  4770              BX       lr
                          ENDP

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

                  GPIO_PinLockConfig PROC
;;;392    {
;;;393      u32 tmp = 0x00010000;
000208  f44ff44f          MOV      r2,#0x10000
;;;394      
;;;395      /* Check the parameters */
;;;396      assert(IS_GPIO_PIN(GPIO_Pin));
;;;397      
;;;398      tmp |= GPIO_Pin;
00020c  430a              ORRS     r2,r2,r1
;;;399      /* Set LCKK bit */
;;;400      GPIOx->LCKR = tmp;
00020e  6182              STR      r2,[r0,#0x18]
;;;401      /* Reset LCKK bit */
;;;402      GPIOx->LCKR =  GPIO_Pin;
000210  6181              STR      r1,[r0,#0x18]
;;;403      /* Set LCKK bit */
;;;404      GPIOx->LCKR = tmp;
000212  6182              STR      r2,[r0,#0x18]
;;;405      /* Read LCKK bit*/
;;;406      tmp = GPIOx->LCKR;
000214  6982              LDR      r2,[r0,#0x18]
;;;407      /* Read LCKK bit*/
;;;408      tmp = GPIOx->LCKR;
000216  6982              LDR      r2,[r0,#0x18]
;;;409    }
000218  4770              BX       lr
                          ENDP

                  GPIO_EventOutputConfig PROC
;;;424    {
;;;425      u32 tmpreg = 0x00;
00021a  2200              MOVS     r2,#0
;;;426    
;;;427      /* Check the parameters */
;;;428      assert(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;429      assert(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;430        
;;;431      tmpreg = AFIO->EVCR;
00021c  4b2c              LDR      r3,|L1.720|
00021e  681a              LDR      r2,[r3,#0]
;;;432      /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;433      tmpreg &= EVCR_PORTPINCONFIG_MASK;
000220  f64ff64f          MOV      r3,#0xff80
000224  401a              ANDS     r2,r2,r3
;;;434      tmpreg |= (u32)GPIO_PortSource << 0x04;
000226  ea42ea42          ORR      r2,r2,r0,LSL #4
;;;435      tmpreg |= GPIO_PinSource;
00022a  430a              ORRS     r2,r2,r1
;;;436    
;;;437      AFIO->EVCR = tmpreg;
00022c  4b28              LDR      r3,|L1.720|
00022e  601a              STR      r2,[r3,#0]
;;;438    }
000230  4770              BX       lr
                          ENDP

                  GPIO_EventOutputCmd PROC
;;;452      
;;;453      *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
000232  4928              LDR      r1,|L1.724|
000234  61c8              STR      r0,[r1,#0x1c]
;;;454    }
000236  4770              BX       lr
                          ENDP

                  GPIO_PinRemapConfig PROC
;;;486    void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;487    {
000238  b570              PUSH     {r4-r6,lr}
;;;488      u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
00023a  2200              MOVS     r2,#0
00023c  2500              MOVS     r5,#0
00023e  2300              MOVS     r3,#0
000240  2400              MOVS     r4,#0
;;;489    
;;;490      /* Check the parameters */
;;;491      assert(IS_GPIO_REMAP(GPIO_Remap));
;;;492      assert(IS_FUNCTIONAL_STATE(NewState));  
;;;493      
;;;494      tmpreg = AFIO->MAPR;
000242  4e23              LDR      r6,|L1.720|
000244  6873              LDR      r3,[r6,#4]
;;;495    
;;;496      tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
000246  f3c0f3c0          UBFX     r4,r0,#16,#4
;;;497      tmp = GPIO_Remap & LSB_MASK;
00024a  b282              UXTH     r2,r0
;;;498    
;;;499      if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
00024c  f400f400          AND      r6,r0,#0x200000
000250  f5b6f5b6          CMP      r6,#0x200000
000254  d102              BNE      |L1.604|
;;;500      {
;;;501        tmpreg &= DBGAFR_SWJCFG_MASK;
000256  f023f023          BIC      r3,r3,#0x7000000
00025a  e00a              B        |L1.626|
                  |L1.604|
;;;502      }
;;;503      else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
00025c  f400f400          AND      r6,r0,#0x100000
000260  f5b6f5b6          CMP      r6,#0x100000
000264  d104              BNE      |L1.624|
;;;504      {
;;;505        tmp1 = ((u32)0x03) << tmpmask;
000266  2603              MOVS     r6,#3
000268  fa06fa06          LSL      r5,r6,r4
;;;506        tmpreg &= ~tmp1;
00026c  43ab              BICS     r3,r3,r5
00026e  e000              B        |L1.626|
                  |L1.624|
;;;507      }
;;;508      else
;;;509      {
;;;510        tmpreg &= ~tmp;
000270  4393              BICS     r3,r3,r2
                  |L1.626|
;;;511      }
;;;512    
;;;513      if (NewState != DISABLE)
000272  b141              CBZ      r1,|L1.646|
;;;514      {
;;;515        if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000274  f400f400          AND      r6,r0,#0x200000
000278  f5b6f5b6          CMP      r6,#0x200000
00027c  d102              BNE      |L1.644|
;;;516        {
;;;517          tmpreg |= (tmp << 0x10);
00027e  ea43ea43          ORR      r3,r3,r2,LSL #16
000282  e000              B        |L1.646|
                  |L1.644|
;;;518        }
;;;519        else
;;;520        {
;;;521          tmpreg |= tmp;
000284  4313              ORRS     r3,r3,r2
                  |L1.646|
;;;522        }
;;;523      }
;;;524      AFIO->MAPR = tmpreg;
000286  4e12              LDR      r6,|L1.720|
000288  6073              STR      r3,[r6,#4]
;;;525    }
00028a  bd70              POP      {r4-r6,pc}
                          ENDP

                  GPIO_EXTILineConfig PROC
;;;537    void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;538    {
00028c  b530              PUSH     {r4,r5,lr}
;;;539      u32 tmp = 0x00;
00028e  2200              MOVS     r2,#0
;;;540    
;;;541      /* Check the parameters */
;;;542      assert(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;543      assert(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;544      
;;;545      tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000290  078b              LSLS     r3,r1,#30
000292  0f1c              LSRS     r4,r3,#28
000294  230f              MOVS     r3,#0xf
000296  fa03fa03          LSL      r2,r3,r4
;;;546    
;;;547      AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
00029a  4b0d              LDR      r3,|L1.720|
00029c  3308              ADDS     r3,r3,#8
00029e  108c              ASRS     r4,r1,#2
0002a0  f853f853          LDR      r4,[r3,r4,LSL #2]
0002a4  4394              BICS     r4,r4,r2
0002a6  108d              ASRS     r5,r1,#2
0002a8  f843f843          STR      r4,[r3,r5,LSL #2]
;;;548      AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
0002ac  108c              ASRS     r4,r1,#2
0002ae  f853f853          LDR      r3,[r3,r4,LSL #2]
0002b2  078c              LSLS     r4,r1,#30
0002b4  0f24              LSRS     r4,r4,#28
0002b6  fa00fa00          LSL      r4,r0,r4
0002ba  4323              ORRS     r3,r3,r4
0002bc  4c04              LDR      r4,|L1.720|
0002be  3408              ADDS     r4,r4,#8
0002c0  108d              ASRS     r5,r1,#2
0002c2  f844f844          STR      r3,[r4,r5,LSL #2]
;;;549    }
0002c6  bd30              POP      {r4,r5,pc}
                          ENDP

                  |L1.712|
0002c8  40011000          DCD      0x40011000
                  |L1.716|
0002cc  bffef800          DCD      0xbffef800
                  |L1.720|
0002d0  40010000          DCD      0x40010000
                  |L1.724|
0002d4  42200000          DCD      0x42200000

⌨️ 快捷键说明

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