📄 gpio.lst
字号:
\ 00000108 B830C0E1 STRH R3,[R0, #+0x8]
\ 0000010C 1E0000EA B ??GPIO_Config_1
36 break;
37 case GPIO_OUT_PP:
38 GPIOx->PC0|=Port_Pins;
\ ??GPIO_Config_7:
\ 00000110 B030D0E1 LDRH R3,[R0, #+0]
\ 00000114 033091E1 ORRS R3,R1,R3
\ 00000118 B030C0E1 STRH R3,[R0, #+0]
39 GPIOx->PC1&=~Port_Pins;
\ 0000011C B430D0E1 LDRH R3,[R0, #+0x4]
\ 00000120 01C0E0E1 MVN R12,R1
\ 00000124 03301CE0 ANDS R3,R12,R3
\ 00000128 B430C0E1 STRH R3,[R0, #+0x4]
40 GPIOx->PC2|=Port_Pins;
\ 0000012C B830D0E1 LDRH R3,[R0, #+0x8]
\ 00000130 033091E1 ORRS R3,R1,R3
\ 00000134 B830C0E1 STRH R3,[R0, #+0x8]
\ 00000138 130000EA B ??GPIO_Config_1
41 break;
42 case GPIO_AF_OD:
43 GPIOx->PC0&=~Port_Pins;
\ ??GPIO_Config_8:
\ 0000013C B030D0E1 LDRH R3,[R0, #+0]
\ 00000140 01C0E0E1 MVN R12,R1
\ 00000144 03301CE0 ANDS R3,R12,R3
\ 00000148 B030C0E1 STRH R3,[R0, #+0]
44 GPIOx->PC1|=Port_Pins;
\ 0000014C B430D0E1 LDRH R3,[R0, #+0x4]
\ 00000150 033091E1 ORRS R3,R1,R3
\ 00000154 B430C0E1 STRH R3,[R0, #+0x4]
45 GPIOx->PC2|=Port_Pins;
\ 00000158 B830D0E1 LDRH R3,[R0, #+0x8]
\ 0000015C 033091E1 ORRS R3,R1,R3
\ 00000160 B830C0E1 STRH R3,[R0, #+0x8]
\ 00000164 080000EA B ??GPIO_Config_1
46 break;
47 case GPIO_AF_PP:
48 GPIOx->PC0|=Port_Pins;
\ ??GPIO_Config_9:
\ 00000168 B030D0E1 LDRH R3,[R0, #+0]
\ 0000016C 033091E1 ORRS R3,R1,R3
\ 00000170 B030C0E1 STRH R3,[R0, #+0]
49 GPIOx->PC1|=Port_Pins;
\ 00000174 B430D0E1 LDRH R3,[R0, #+0x4]
\ 00000178 033091E1 ORRS R3,R1,R3
\ 0000017C B430C0E1 STRH R3,[R0, #+0x4]
50 GPIOx->PC2|=Port_Pins;
\ 00000180 B830D0E1 LDRH R3,[R0, #+0x8]
\ 00000184 033091E1 ORRS R3,R1,R3
\ 00000188 B830C0E1 STRH R3,[R0, #+0x8]
51 break;
52 }
53 }
\ ??GPIO_Config_1:
\ 0000018C 1EFF2FE1 BX LR ;; return
54
55 /*******************************************************************************
56 * 说明:GPIO_BitWrite函数,置位或复位所选端口引脚
57 * 参数:GPIOx (x=0,1,2)为所选端口,Port_Pin为端口引脚,Port_Val为端口位值
58 * 返回值:无
59 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
60 void GPIO_BitWrite(GPIO_TypeDef *GPIOx, u8 Port_Pin, u8 Port_Val) {
61 if (Port_Val&0x01) GPIOx->PD |= 1<<Port_Pin; else GPIOx->PD &= ~(1<<Port_Pin);
\ GPIO_BitWrite:
\ 00000000 010012E3 TST R2,#+0x1
\ 00000004 0500000A BEQ ??GPIO_BitWrite_0
\ 00000008 BC30D0E1 LDRH R3,[R0, #+0xC]
\ 0000000C 01C0A0E3 MOV R12,#+0x1
\ 00000010 1CC1B0E1 MOVS R12,R12, LSL R1
\ 00000014 03309CE1 ORRS R3,R12,R3
\ 00000018 BC30C0E1 STRH R3,[R0, #+0xC]
\ 0000001C 050000EA B ??GPIO_BitWrite_1
\ ??GPIO_BitWrite_0:
\ 00000020 BC30D0E1 LDRH R3,[R0, #+0xC]
\ 00000024 01C0A0E3 MOV R12,#+0x1
\ 00000028 1CC1B0E1 MOVS R12,R12, LSL R1
\ 0000002C 0CC0E0E1 MVN R12,R12
\ 00000030 03301CE0 ANDS R3,R12,R3
\ 00000034 BC30C0E1 STRH R3,[R0, #+0xC]
62 }
\ ??GPIO_BitWrite_1:
\ 00000038 1EFF2FE1 BX LR ;; return
63
64 /*******************************************************************************
65 * 说明:GPIO_ByteWrite函数,向选中的PD寄存器写入一个字节
66 * 参数:GPIOx (x=0,1,2)为所选端口,Port_Byte为GPIO高或低字节,Port_Val为字节值
67 * 返回值:无
68 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
69 void GPIO_ByteWrite(GPIO_TypeDef *GPIOx, u8 Port_Byte, u8 Port_Val)
70 {
71 GPIOx->PD = Port_Byte ? (GPIOx->PD&0x00FF) | ((u16)Port_Val<<8)
72 : (GPIOx->PD&0xFF00) | Port_Val;
\ GPIO_ByteWrite:
\ 00000000 000051E3 CMP R1,#+0
\ 00000004 0400000A BEQ ??GPIO_ByteWrite_0
\ 00000008 BC30D0E1 LDRH R3,[R0, #+0xC]
\ 0000000C FF3013E2 ANDS R3,R3,#+0xFF ;; Zero extend
\ 00000010 02C0A0E1 MOV R12,R2
\ 00000014 0C3493E1 ORRS R3,R3,R12, LSL #+0x8
\ 00000018 030000EA B ??GPIO_ByteWrite_1
\ ??GPIO_ByteWrite_0:
\ 0000001C BC30D0E1 LDRH R3,[R0, #+0xC]
\ 00000020 FF3C13E2 ANDS R3,R3,#+0xFF00
\ 00000024 02C0A0E1 MOV R12,R2
\ 00000028 03309CE1 ORRS R3,R12,R3
\ ??GPIO_ByteWrite_1:
\ 0000002C BC30C0E1 STRH R3,[R0, #+0xC]
73 }
\ 00000030 1EFF2FE1 BX LR ;; return
74
Maximum stack usage in bytes:
Function CSTACK
-------- ------
GPIO_BitWrite 0
GPIO_ByteWrite 0
GPIO_Config 0
Segment part sizes:
Function/Label Bytes
-------------- -----
GPIO_Config 400
GPIO_BitWrite 60
GPIO_ByteWrite 52
Others 12
524 bytes in segment CODE
512 bytes of CODE memory (+ 12 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -