📄 button.txt
字号:
00002e 2002 MOVS r0,#2
000030 72c8 STRB r0,[r1,#0xb]
;;;72 s_BtnUser.KeyCodeLong = KEY_HOLD_USER; /* 按键被持续按下的键值代码 */
000032 2003 MOVS r0,#3
000034 7348 STRB r0,[r1,#0xd]
;;;73
;;;74 /* 初始化TAMPER按键变量 */
;;;75 s_BtnTamper.IsKeyDownFunc = IsKeyDownTamper; /* 判断按键按下的函数 */
000036 484c LDR r0,|L3.360|
000038 3110 ADDS r1,r1,#0x10
00003a 6008 STR r0,[r1,#0] ; s_BtnTamper
;;;76 s_BtnTamper.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
00003c 2005 MOVS r0,#5
00003e 7148 STRB r0,[r1,#5]
;;;77 s_BtnTamper.LongTime = 0; /* 长按时间, 0表示不检测 */
000040 2000 MOVS r0,#0
000042 8108 STRH r0,[r1,#8]
;;;78 s_BtnTamper.Count = s_BtnTamper.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
000044 7948 LDRB r0,[r1,#5] ; s_BtnTamper
000046 eb0071d0 ADD r1,r0,r0,LSR #31
00004a 1049 ASRS r1,r1,#1
00004c 3210 ADDS r2,r2,#0x10
00004e 7111 STRB r1,[r2,#4]
;;;79 s_BtnTamper.State = 0; /* 按键缺省状态,0为未按下 */
000050 2000 MOVS r0,#0
000052 4611 MOV r1,r2
000054 7288 STRB r0,[r1,#0xa]
;;;80 s_BtnTamper.KeyCodeDown = KEY_DOWN_TAMPER; /* 按键按下的键值代码 */
000056 2005 MOVS r0,#5
000058 7308 STRB r0,[r1,#0xc]
;;;81 s_BtnTamper.KeyCodeUp = 0; /* 按键弹起的键值代码 */
00005a 2000 MOVS r0,#0
00005c 72c8 STRB r0,[r1,#0xb]
;;;82 s_BtnTamper.KeyCodeLong = 0; /* 按键被持续按下的键值代码 */
00005e 7348 STRB r0,[r1,#0xd]
;;;83
;;;84 /* 初始化WAKEUP按键变量 */
;;;85 s_BtnWakeUp.IsKeyDownFunc = IsKeyDownWakeUp; /* 判断按键按下的函数 */
000060 4842 LDR r0,|L3.364|
000062 3110 ADDS r1,r1,#0x10
000064 6008 STR r0,[r1,#0] ; s_BtnWakeUp
;;;86 s_BtnWakeUp.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
000066 2005 MOVS r0,#5
000068 7148 STRB r0,[r1,#5]
;;;87 s_BtnWakeUp.LongTime = 0; /* 长按时间 */
00006a 2000 MOVS r0,#0
00006c 8108 STRH r0,[r1,#8]
;;;88 s_BtnWakeUp.Count = s_BtnWakeUp.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
00006e 7948 LDRB r0,[r1,#5] ; s_BtnWakeUp
000070 eb0071d0 ADD r1,r0,r0,LSR #31
000074 1049 ASRS r1,r1,#1
000076 3210 ADDS r2,r2,#0x10
000078 7111 STRB r1,[r2,#4]
;;;89 s_BtnWakeUp.State = 0; /* 按键缺省状态,0为未按下 */
00007a 2000 MOVS r0,#0
00007c 4611 MOV r1,r2
00007e 7288 STRB r0,[r1,#0xa]
;;;90 s_BtnWakeUp.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
000080 72c8 STRB r0,[r1,#0xb]
;;;91 s_BtnWakeUp.KeyCodeDown = KEY_DOWN_WAKEUP; /* 按键按下的键值代码 */
000082 2004 MOVS r0,#4
000084 7308 STRB r0,[r1,#0xc]
;;;92 s_BtnWakeUp.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
000086 2000 MOVS r0,#0
000088 7348 STRB r0,[r1,#0xd]
;;;93
;;;94 /* 初始化UP按键变量 */
;;;95 s_BtnUp.IsKeyDownFunc = IsKeyDownUp; /* 判断按键按下的函数 */
00008a 4839 LDR r0,|L3.368|
00008c 3110 ADDS r1,r1,#0x10
00008e 6008 STR r0,[r1,#0] ; s_BtnUp
;;;96 s_BtnUp.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
000090 2005 MOVS r0,#5
000092 7148 STRB r0,[r1,#5]
;;;97 s_BtnUp.LongTime = 0; /* 长按时间 */
000094 2000 MOVS r0,#0
000096 8108 STRH r0,[r1,#8]
;;;98 s_BtnUp.Count = s_BtnUp.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
000098 7948 LDRB r0,[r1,#5] ; s_BtnUp
00009a eb0071d0 ADD r1,r0,r0,LSR #31
00009e 1049 ASRS r1,r1,#1
0000a0 3210 ADDS r2,r2,#0x10
0000a2 7111 STRB r1,[r2,#4]
;;;99 s_BtnUp.State = 0; /* 按键缺省状态,0为未按下 */
0000a4 2000 MOVS r0,#0
0000a6 4611 MOV r1,r2
0000a8 7288 STRB r0,[r1,#0xa]
;;;100 s_BtnUp.KeyCodeDown = KEY_DOWN_JOY_UP; /* 按键按下的键值代码 */
0000aa 2006 MOVS r0,#6
0000ac 7308 STRB r0,[r1,#0xc]
;;;101 s_BtnUp.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
0000ae 2000 MOVS r0,#0
0000b0 72c8 STRB r0,[r1,#0xb]
;;;102 s_BtnUp.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
0000b2 7348 STRB r0,[r1,#0xd]
;;;103
;;;104 /* 初始化DOWN按键变量 */
;;;105 s_BtnDown.IsKeyDownFunc = IsKeyDownDown; /* 判断按键按下的函数 */
0000b4 482f LDR r0,|L3.372|
0000b6 3110 ADDS r1,r1,#0x10
0000b8 6008 STR r0,[r1,#0] ; s_BtnDown
;;;106 s_BtnDown.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
0000ba 2005 MOVS r0,#5
0000bc 7148 STRB r0,[r1,#5]
;;;107 s_BtnDown.LongTime = 0; /* 长按时间 */
0000be 2000 MOVS r0,#0
0000c0 8108 STRH r0,[r1,#8]
;;;108 s_BtnDown.Count = s_BtnDown.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
0000c2 7948 LDRB r0,[r1,#5] ; s_BtnDown
0000c4 eb0071d0 ADD r1,r0,r0,LSR #31
0000c8 1049 ASRS r1,r1,#1
0000ca 3210 ADDS r2,r2,#0x10
0000cc 7111 STRB r1,[r2,#4]
;;;109 s_BtnDown.State = 0; /* 按键缺省状态,0为未按下 */
0000ce 2000 MOVS r0,#0
0000d0 4611 MOV r1,r2
0000d2 7288 STRB r0,[r1,#0xa]
;;;110 s_BtnDown.KeyCodeDown = KEY_DOWN_JOY_DOWN; /* 按键按下的键值代码 */
0000d4 2007 MOVS r0,#7
0000d6 7308 STRB r0,[r1,#0xc]
;;;111 s_BtnDown.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
0000d8 2000 MOVS r0,#0
0000da 72c8 STRB r0,[r1,#0xb]
;;;112 s_BtnDown.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
0000dc 7348 STRB r0,[r1,#0xd]
;;;113
;;;114 /* 初始化LEFT按键变量 */
;;;115 s_BtnLeft.IsKeyDownFunc = IsKeyDownLeft; /* 判断按键按下的函数 */
0000de 4826 LDR r0,|L3.376|
0000e0 3110 ADDS r1,r1,#0x10
0000e2 6008 STR r0,[r1,#0] ; s_BtnLeft
;;;116 s_BtnLeft.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
0000e4 2005 MOVS r0,#5
0000e6 7148 STRB r0,[r1,#5]
;;;117 s_BtnLeft.LongTime = 0; /* 长按时间 */
0000e8 2000 MOVS r0,#0
0000ea 8108 STRH r0,[r1,#8]
;;;118 s_BtnLeft.Count = s_BtnLeft.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
0000ec 7948 LDRB r0,[r1,#5] ; s_BtnLeft
0000ee eb0071d0 ADD r1,r0,r0,LSR #31
0000f2 1049 ASRS r1,r1,#1
0000f4 3210 ADDS r2,r2,#0x10
0000f6 7111 STRB r1,[r2,#4]
;;;119 s_BtnLeft.State = 0; /* 按键缺省状态,0为未按下 */
0000f8 2000 MOVS r0,#0
0000fa 4611 MOV r1,r2
0000fc 7288 STRB r0,[r1,#0xa]
;;;120 s_BtnLeft.KeyCodeDown = KEY_DOWN_JOY_LEFT; /* 按键按下的键值代码 */
0000fe 2008 MOVS r0,#8
000100 7308 STRB r0,[r1,#0xc]
;;;121 s_BtnLeft.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
000102 2000 MOVS r0,#0
000104 72c8 STRB r0,[r1,#0xb]
;;;122 s_BtnLeft.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
000106 7348 STRB r0,[r1,#0xd]
;;;123
;;;124 /* 初始化RIGHT按键变量 */
;;;125 s_BtnRight.IsKeyDownFunc = IsKeyDownRight; /* 判断按键按下的函数 */
000108 481c LDR r0,|L3.380|
00010a 3110 ADDS r1,r1,#0x10
00010c 6008 STR r0,[r1,#0] ; s_BtnRight
;;;126 s_BtnRight.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
00010e 2005 MOVS r0,#5
000110 7148 STRB r0,[r1,#5]
;;;127 s_BtnRight.LongTime = 0; /* 长按时间 */
000112 2000 MOVS r0,#0
000114 8108 STRH r0,[r1,#8]
;;;128 s_BtnRight.Count = s_BtnRight.FilterTime / 2;/* 计数器设置为滤波时间的一半 */
000116 7948 LDRB r0,[r1,#5] ; s_BtnRight
000118 eb0071d0 ADD r1,r0,r0,LSR #31
00011c 1049 ASRS r1,r1,#1
00011e 3210 ADDS r2,r2,#0x10
000120 7111 STRB r1,[r2,#4]
;;;129 s_BtnRight.State = 0; /* 按键缺省状态,0为未按下 */
000122 2000 MOVS r0,#0
000124 4611 MOV r1,r2
000126 7288 STRB r0,[r1,#0xa]
;;;130 s_BtnRight.KeyCodeDown = KEY_DOWN_JOY_RIGHT;/* 按键按下的键值代码 */
000128 2009 MOVS r0,#9
00012a 7308 STRB r0,[r1,#0xc]
;;;131 s_BtnRight.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
00012c 2000 MOVS r0,#0
00012e 72c8 STRB r0,[r1,#0xb]
;;;132 s_BtnRight.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
000130 7348 STRB r0,[r1,#0xd]
;;;133
;;;134 /* 初始化OK按键变量 */
;;;135 s_BtnOk.IsKeyDownFunc = IsKeyDownOk; /* 判断按键按下的函数 */
000132 4813 LDR r0,|L3.384|
000134 3110 ADDS r1,r1,#0x10
000136 6008 STR r0,[r1,#0] ; s_BtnOk
;;;136 s_BtnOk.FilterTime = BUTTON_FILTER_TIME; /* 按键滤波时间 */
000138 2005 MOVS r0,#5
00013a 7148 STRB r0,[r1,#5]
;;;137 s_BtnOk.LongTime = 0; /* 长按时间 */
00013c 2000 MOVS r0,#0
00013e 8108 STRH r0,[r1,#8]
;;;138 s_BtnOk.Count = s_BtnOk.FilterTime / 2; /* 计数器设置为滤波时间的一半 */
000140 7948 LDRB r0,[r1,#5] ; s_BtnOk
000142 eb0071d0 ADD r1,r0,r0,LSR #31
000146 1049 ASRS r1,r1,#1
000148 3210 ADDS r2,r2,#0x10
00014a 7111 STRB r1,[r2,#4]
;;;139 s_BtnOk.State = 0; /* 按键缺省状态,0为未按下 */
00014c 2000 MOVS r0,#0
00014e 4611 MOV r1,r2
000150 7288 STRB r0,[r1,#0xa]
;;;140 s_BtnOk.KeyCodeDown = KEY_DOWN_JOY_OK; /* 按键按下的键值代码 */
000152 200a MOVS r0,#0xa
000154 7308 STRB r0,[r1,#0xc]
;;;141 s_BtnOk.KeyCodeUp = 0; /* 按键弹起的键值代码,0表示不检测 */
000156 2000 MOVS r0,#0
000158 72c8 STRB r0,[r1,#0xb]
;;;142 s_BtnOk.KeyCodeLong = 0; /* 按键被持续按下的键值代码,0表示不检测 */
00015a 7348 STRB r0,[r1,#0xd]
;;;143 }
00015c 4770 BX lr
;;;144
ENDP
00015e 0000 DCW 0x0000
|L3.352|
DCD ||.bss||+0x80
|L3.356|
DCD IsKeyDownUser
|L3.360|
DCD IsKeyDownTamper
|L3.364|
DCD IsKeyDownWakeUp
|L3.368|
DCD IsKeyDownUp
|L3.372|
DCD IsKeyDownDown
|L3.376|
DCD IsKeyDownLeft
|L3.380|
DCD IsKeyDownRight
|L3.384|
DCD IsKeyDownOk
AREA ||i.IsKeyDownDown||, CODE, READONLY, ALIGN=2
IsKeyDownDown PROC
;;;46 static uint8_t IsKeyDownUp(void) {if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_15) == Bit_SET) return 0; return 1;}
;;;47 static uint8_t IsKeyDownDown(void) {if (GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3) == Bit_SET) return 0; return 1;}
000000 b510 PUSH {r4,lr}
000002 2108 MOVS r1,#8
000004 4804 LDR r0,|L4.24|
000006 f7fffffe BL GPIO_ReadInputDataBit
00000a 2801 CMP r0,#1
00000c d101 BNE |L4.18|
00000e 2000 MOVS r0,#0
|L4.16|
000010 bd10 POP {r4,pc}
|L4.18|
000012 2001 MOVS r0,#1
000014 e7fc B |L4.16|
;;;48 static uint8_t IsKeyDownLeft(void) {if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_14) == Bit_SET) return 0; return 1;}
ENDP
000016 0000 DCW 0x0000
|L4.24|
DCD 0x40011400
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -