📄 guidev.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev.o --depend=.\Obj\guidev.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\MemDev\GUIDEV.c]
THUMB
AREA ||i.GUI_MEMDEV_CopyToLCD||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_CopyToLCD PROC
;;;344 */
;;;345 void GUI_MEMDEV_CopyToLCD(GUI_MEMDEV_Handle hMem) {
000000 4901 LDR r1,|L1.8|
;;;346 GUI_MEMDEV_CopyToLCDAt(hMem, GUI_POS_AUTO, GUI_POS_AUTO);
000002 460a MOV r2,r1
000004 f7ffbffe B.W GUI_MEMDEV_CopyToLCDAt
;;;347 }
;;;348
ENDP
|L1.8|
DCD 0xfffff001
AREA ||i.GUI_MEMDEV_CopyToLCDAt||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_CopyToLCDAt PROC
;;;296 */
;;;297 void GUI_MEMDEV_CopyToLCDAt(GUI_MEMDEV_Handle hMem, int x, int y) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 ea5f0800 MOVS r8,r0
000008 460d MOV r5,r1
00000a 4616 MOV r6,r2
;;;298 if (hMem) {
00000c d030 BEQ |L2.112|
;;;299 GUI_MEMDEV_Handle hMemPrev;
;;;300 GUI_MEMDEV* pDevData;
;;;301 #if (GUI_WINSUPPORT)
;;;302 GUI_RECT r;
;;;303 #endif
;;;304 #if GUI_NUM_LAYERS > 1
;;;305 int PrevLayer;
;;;306 #endif
;;;307 GUI_LOCK();
;;;308 hMemPrev = GUI_Context.hDevData;
00000e 4819 LDR r0,|L2.116|
000010 f9b0704c LDRSH r7,[r0,#0x4c] ; GUI_Context
;;;309 pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem); /* Convert to pointer */
000014 4640 MOV r0,r8
000016 f7fffffe BL GUI_ALLOC_h2p
00001a 4604 MOV r4,r0
;;;310 /* Make sure LCD is selected as device */
;;;311 #if GUI_NUM_LAYERS > 1
;;;312 PrevLayer = GUI_SelectLayer(pDevData->LayerIndex);
;;;313 #else
;;;314 GUI_SelectLCD(); /* Activate LCD */
00001c f7fffffe BL GUI_SelectLCD
;;;315 #endif
;;;316 if (x == GUI_POS_AUTO) {
000020 f64070ff MOV r0,#0xfff
000024 1940 ADDS r0,r0,r5
000026 d103 BNE |L2.48|
;;;317 x = pDevData->x0;
000028 f9b45000 LDRSH r5,[r4,#0]
;;;318 y = pDevData->y0;
00002c f9b46002 LDRSH r6,[r4,#2]
|L2.48|
;;;319 }
;;;320 #if (GUI_WINSUPPORT)
;;;321 /* Calculate rectangle */
;;;322 r.x1 = (r.x0 = x) + pDevData->XSize-1;
000030 88a1 LDRH r1,[r4,#4]
000032 1e68 SUBS r0,r5,#1
000034 4408 ADD r0,r0,r1
000036 f8ad0004 STRH r0,[sp,#4]
00003a f8ad5000 STRH r5,[sp,#0]
;;;323 r.y1 = (r.y0 = y) + pDevData->YSize-1;;
00003e 88e1 LDRH r1,[r4,#6]
000040 1e70 SUBS r0,r6,#1
000042 4408 ADD r0,r0,r1
000044 f8ad6002 STRH r6,[sp,#2]
000048 f8ad0006 STRH r0,[sp,#6]
;;;324 /* Do the drawing. Window manager has to be on */
;;;325 WM_Activate();
00004c f7fffffe BL WM_Activate
;;;326 WM_ITERATE_START(&r) {
000050 4668 MOV r0,sp
000052 f7fffffe BL WM__InitIVRSearch
000056 e006 B |L2.102|
|L2.88|
;;;327 #endif
;;;328 GUI_MEMDEV__WriteToActiveAt(hMem, x, y);
000058 4632 MOV r2,r6
00005a 4629 MOV r1,r5
00005c 4640 MOV r0,r8
00005e f7fffffe BL GUI_MEMDEV__WriteToActiveAt
;;;329 #if (GUI_WINSUPPORT)
;;;330 } WM_ITERATE_END();
000062 f7fffffe BL WM__GetNextIVR
|L2.102|
000066 2800 CMP r0,#0
000068 d1f6 BNE |L2.88|
;;;331 #endif
;;;332 #if GUI_NUM_LAYERS > 1
;;;333 GUI_SelectLayer(PrevLayer);
;;;334 #endif
;;;335 /* Reactivate previously used device */
;;;336 GUI_MEMDEV_Select(hMemPrev);
00006a 4638 MOV r0,r7
00006c f7fffffe BL GUI_MEMDEV_Select
|L2.112|
;;;337 GUI_UNLOCK();
;;;338 }
;;;339 }
000070 e8bd81fc POP {r2-r8,pc}
;;;340
ENDP
|L2.116|
DCD GUI_Context
AREA ||i.GUI_MEMDEV_Create||, CODE, READONLY, ALIGN=1
GUI_MEMDEV_Create PROC
;;;218 */
;;;219 GUI_MEMDEV_Handle GUI_MEMDEV_Create(int x0, int y0, int xsize, int ysize) {
000000 b538 PUSH {r3-r5,lr}
000002 461c MOV r4,r3
;;;220 return GUI_MEMDEV_CreateEx(x0, y0, xsize, ysize, GUI_MEMDEV_HASTRANS);
000004 2300 MOVS r3,#0
000006 9300 STR r3,[sp,#0]
000008 4623 MOV r3,r4
00000a f7fffffe BL GUI_MEMDEV_CreateEx
;;;221 }
00000e bd38 POP {r3-r5,pc}
;;;222
ENDP
AREA ||i.GUI_MEMDEV_CreateEx||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_CreateEx PROC
;;;185 */
;;;186 GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx(int x0, int y0, int xSize, int ySize, int Flags) {
000000 e92d43f0 PUSH {r4-r9,lr}
000004 4605 MOV r5,r0
000006 460e MOV r6,r1
;;;187 GUI_MEMDEV_Handle hMemDev;
;;;188 const tLCDDEV_APIList * pDeviceAPI;
;;;189 tLCDDEV_Color2Index * pfColor2Index;
;;;190 tLCDDEV_Index2Color * pfIndex2Color;
;;;191 tLCDDEV_GetIndexMask * pfGetIndexMask;
;;;192 GUI_LOCK();
;;;193 #if (GUI_NUM_LAYERS > 1) /* Size opt., preprocessor not required */
;;;194 pDeviceAPI = LCD_aAPI[GUI_Context.SelLayer];
;;;195 #else
;;;196 pDeviceAPI = LCD_aAPI[0];
000008 480f LDR r0,|L4.72|
;;;197 #endif
;;;198 if (GUI_Context.hDevData == 0) {
00000a 4910 LDR r1,|L4.76|
00000c b085 SUB sp,sp,#0x14 ;186
00000e 6804 LDR r4,[r0,#0] ; LCD_aAPI
000010 f8dd9030 LDR r9,[sp,#0x30] ;196
000014 f9b1004c LDRSH r0,[r1,#0x4c] ; GUI_Context
000018 4617 MOV r7,r2 ;186
00001a 4698 MOV r8,r3 ;186
00001c b910 CBNZ r0,|L4.36|
;;;199 pfColor2Index = GUI_Context.pDeviceAPI->pfColor2Index; /* LCD_L0_Color2Index; */
;;;200 pfIndex2Color = GUI_Context.pDeviceAPI->pfIndex2Color; /* LCD_L0_Index2Color; */
00001e 6c88 LDR r0,[r1,#0x48] ; GUI_Context
000020 c80e LDM r0!,{r1-r3} ;199
;;;201 pfGetIndexMask= GUI_Context.pDeviceAPI->pfGetIndexMask; /* LCD_L0_GetIndexMask */
000022 e003 B |L4.44|
|L4.36|
;;;202 } else {
;;;203 /* If a memory device is already selected, we create a compatible one by copying its data */
;;;204 GUI_MEMDEV* pDevSel;
;;;205 pDevSel = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000024 f7fffffe BL GUI_ALLOC_h2p
;;;206 pfColor2Index = pDevSel->pfColor2Index;
;;;207 pfIndex2Color = pDevSel->pfIndex2Color;
;;;208 pfGetIndexMask= pDevSel->pfGetIndexMask;
000028 301c ADDS r0,r0,#0x1c
00002a c80e LDM r0!,{r1-r3}
|L4.44|
;;;209 }
;;;210 hMemDev = GUI_MEMDEV__CreateFixed(x0, y0, xSize, ySize, Flags, pDeviceAPI->pMemDevAPI,
00002c 6ba0 LDR r0,[r4,#0x38]
00002e e9cd9000 STRD r9,r0,[sp,#0]
000032 a802 ADD r0,sp,#8
000034 c00e STM r0!,{r1-r3}
000036 4643 MOV r3,r8
000038 463a MOV r2,r7
00003a 4631 MOV r1,r6
00003c 4628 MOV r0,r5
00003e f7fffffe BL GUI_MEMDEV__CreateFixed
;;;211 pfColor2Index, pfIndex2Color ,pfGetIndexMask);
;;;212 GUI_UNLOCK();
;;;213 return hMemDev;
;;;214 }
000042 b005 ADD sp,sp,#0x14
000044 e8bd83f0 POP {r4-r9,pc}
;;;215 /*********************************************************************
ENDP
|L4.72|
DCD LCD_aAPI
|L4.76|
DCD GUI_Context
AREA ||i.GUI_MEMDEV_Delete||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_Delete PROC
;;;88 */
;;;89 void GUI_MEMDEV_Delete(GUI_MEMDEV_Handle hMemDev) {
000000 b510 PUSH {r4,lr}
000002 0004 MOVS r4,r0
;;;90 /* Make sure memory device is not used */
;;;91 GUI_LOCK();
;;;92 if (hMemDev) {
000004 d013 BEQ |L5.46|
;;;93 GUI_MEMDEV* pDev;
;;;94 if (GUI_Context.hDevData == hMemDev) {
000006 480a LDR r0,|L5.48|
000008 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000c 42a0 CMP r0,r4
00000e d101 BNE |L5.20|
;;;95 GUI_SelectLCD();
000010 f7fffffe BL GUI_SelectLCD
|L5.20|
;;;96 }
;;;97 pDev = GUI_MEMDEV_H2P(hMemDev);
000014 4620 MOV r0,r4
000016 f7fffffe BL GUI_ALLOC_h2p
;;;98 /* Delete the associated usage device */
;;;99 if (pDev->hUsage)
00001a f9b00018 LDRSH r0,[r0,#0x18]
00001e b108 CBZ r0,|L5.36|
;;;100 GUI_USAGE_DecUseCnt(pDev->hUsage);
000020 f7fffffe BL GUI_USAGE_DecUseCnt
|L5.36|
;;;101 GUI_ALLOC_Free(hMemDev);
000024 4620 MOV r0,r4
000026 e8bd4010 POP {r4,lr}
00002a f7ffbffe B.W GUI_ALLOC_Free
|L5.46|
;;;102 }
;;;103 GUI_UNLOCK();
;;;104 }
00002e bd10 POP {r4,pc}
;;;105
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -