📄 guitimer.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guitimer.o --depend=.\Obj\guitimer.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Core\GUITimer.c]
THUMB
AREA ||i.GUI_TIMER_Context||, CODE, READONLY, ALIGN=1
GUI_TIMER_Context PROC
;;;233 //////
;;;234 void GUI_TIMER_Context(GUI_TIMER_HANDLE hObj, U32 Context) {
000000 b510 PUSH {r4,lr}
000002 460c MOV r4,r1
;;;235 GUI_LOCK(); {
;;;236 GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);
000004 f7fffffe BL GUI_ALLOC_h2p
;;;237 pObj->Context = Context;
;;;238 } GUI_UNLOCK();
;;;239 }
000008 60c4 STR r4,[r0,#0xc]
00000a bd10 POP {r4,pc}
;;;240 //////
ENDP
AREA ||i.GUI_TIMER_Create||, CODE, READONLY, ALIGN=2
GUI_TIMER_Create PROC
;;;177 */
;;;178 GUI_TIMER_HANDLE GUI_TIMER_Create(GUI_TIMER_CALLBACK* cb, int Time, U32 Context, int Flags) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 460e MOV r6,r1
000006 4605 MOV r5,r0
;;;179 GUI_TIMER_HANDLE hObj;
;;;180 GUI_TIMER_Obj* pObj;
;;;181 GUI_LOCK();
;;;182 GUI_USE_PARA(Flags);
;;;183 GUI_USE_PARA(Time);
;;;184 GUI_pfTimerExec = GUI_TIMER_Exec;
000008 490a LDR r1,|L2.52|
00000a 4809 LDR r0,|L2.48|
;;;185 {
;;;186 /* Alloc memory for obj */
;;;187 hObj = GUI_ALLOC_AllocZero(sizeof(GUI_TIMER_Obj));
00000c 6008 STR r0,[r1,#0] ; GUI_pfTimerExec
00000e 4617 MOV r7,r2 ;178
000010 2018 MOVS r0,#0x18
000012 f7fffffe BL GUI_ALLOC_AllocZero
000016 4604 MOV r4,r0
;;;188 pObj = GUI_TIMER_H2P(hObj);
000018 f7fffffe BL GUI_ALLOC_h2p
;;;189 /* init member variables */
;;;190 pObj->cb = cb;
;;;191 pObj->Context = Context;
;;;192 pObj->t0 = Time; //houhh 20061018...
;;;193 /* Link it */
;;;194 _Link(hObj);
00001c e9c07603 STRD r7,r6,[r0,#0xc]
000020 6005 STR r5,[r0,#0]
000022 4620 MOV r0,r4
000024 f7fffffe BL _Link
;;;195 } GUI_UNLOCK();
;;;196 return hObj;
000028 4620 MOV r0,r4
;;;197 }
00002a e8bd81f0 POP {r4-r8,pc}
;;;198
ENDP
00002e 0000 DCW 0x0000
|L2.48|
DCD GUI_TIMER_Exec
|L2.52|
DCD GUI_pfTimerExec
AREA ||i.GUI_TIMER_Delete||, CODE, READONLY, ALIGN=1
GUI_TIMER_Delete PROC
;;;202 */
;;;203 void GUI_TIMER_Delete(GUI_TIMER_HANDLE hObj) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;204 /* Unlink Timer */
;;;205 GUI_LOCK();
;;;206 _Unlink(hObj);
000004 f7fffffe BL _Unlink
;;;207 GUI_ALLOC_Free(hObj);
000008 4620 MOV r0,r4
00000a e8bd4010 POP {r4,lr}
00000e f7ffbffe B.W GUI_ALLOC_Free
;;;208 GUI_UNLOCK();
;;;209 }
;;;210
ENDP
AREA ||i.GUI_TIMER_Exec||, CODE, READONLY, ALIGN=2
GUI_TIMER_Exec PROC
;;;148 */
;;;149 int GUI_TIMER_Exec(void) {
000000 b57c PUSH {r2-r6,lr}
;;;150 int r = 0;
000002 2500 MOVS r5,#0
;;;151 GUI_TIMER_TIME t = GUI_GetTime();
000004 f7fffffe BL GUI_GetTime
000008 4604 MOV r4,r0
;;;152 GUI_LOCK(); {
;;;153 while (hFirstTimer) {
;;;154 GUI_TIMER_Obj* pTimer = GUI_TIMER_H2P(hFirstTimer);
00000a 4e0d LDR r6,|L4.64|
;;;155 if ((pTimer->t0-t) <=0) {
;;;156 GUI_TIMER_MESSAGE tm;
;;;157 tm.Time = t;
;;;158 tm.Context = pTimer->Context;
;;;159 _hActiveTimer = hFirstTimer;
;;;160 hFirstTimer = pTimer->hNext;
;;;161 pTimer->cb(&tm);
;;;162 r = 1;
;;;163 } else
;;;164 break;
;;;165 }
00000c e011 B |L4.50|
00000e bf00 NOP ;154
|L4.16|
000010 f7fffffe BL GUI_ALLOC_h2p
000014 6901 LDR r1,[r0,#0x10] ;155
000016 1b09 SUBS r1,r1,r4 ;155
000018 2900 CMP r1,#0 ;155
00001a dc0e BGT |L4.58|
00001c 9400 STR r4,[sp,#0] ;158
00001e 68c1 LDR r1,[r0,#0xc] ;158
000020 9101 STR r1,[sp,#4] ;159
000022 8831 LDRH r1,[r6,#0] ;159 ; hFirstTimer
000024 8071 STRH r1,[r6,#2] ;159
000026 8881 LDRH r1,[r0,#4] ;160
000028 8031 STRH r1,[r6,#0] ;160
00002a 6801 LDR r1,[r0,#0] ;161
00002c 4668 MOV r0,sp ;161
00002e 4788 BLX r1 ;161
000030 2501 MOVS r5,#1 ;162
|L4.50|
000032 f9b60000 LDRSH r0,[r6,#0] ;153 ; hFirstTimer
000036 2800 CMP r0,#0 ;153
000038 d1ea BNE |L4.16|
|L4.58|
;;;166 /*
;;;167 GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);
;;;168 pObj->t0 = Time;
;;;169 */
;;;170 } GUI_UNLOCK();
;;;171 return r;
00003a 4628 MOV r0,r5
;;;172 }
00003c bd7c POP {r2-r6,pc}
;;;173
ENDP
00003e 0000 DCW 0x0000
|L4.64|
DCD ||.data||
AREA ||i.GUI_TIMER_Restart||, CODE, READONLY, ALIGN=2
GUI_TIMER_Restart PROC
;;;258 */
;;;259 void GUI_TIMER_Restart(GUI_TIMER_HANDLE hObj) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
;;;260 GUI_TIMER_Obj* pObj;
;;;261 GUI_LOCK();
;;;262 {
;;;263 if (hObj == 0) {
000004 d102 BNE |L5.12|
;;;264 hObj = _hActiveTimer;
000006 480a LDR r0,|L5.48|
000008 f9b04002 LDRSH r4,[r0,#2] ; _hActiveTimer
|L5.12|
;;;265 }
;;;266 pObj = GUI_TIMER_H2P(hObj);
00000c 4620 MOV r0,r4
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4605 MOV r5,r0
;;;267 pObj->t0 = GUI_GetTime() +pObj->Period;
000014 f7fffffe BL GUI_GetTime
000018 6969 LDR r1,[r5,#0x14]
00001a 4401 ADD r1,r1,r0
;;;268 _Unlink(hObj);
00001c 4620 MOV r0,r4
00001e 6129 STR r1,[r5,#0x10]
000020 f7fffffe BL _Unlink
;;;269 _Link(hObj);
000024 4620 MOV r0,r4
000026 e8bd4070 POP {r4-r6,lr}
00002a f7ffbffe B.W _Link
;;;270 } GUI_UNLOCK();
;;;271 }
;;;272
ENDP
00002e 0000 DCW 0x0000
|L5.48|
DCD ||.data||
AREA ||i.GUI_TIMER_SetDelay||, CODE, READONLY, ALIGN=1
GUI_TIMER_SetDelay PROC
;;;245 */
;;;246 void GUI_TIMER_SetDelay(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Delay) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -