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

📄 guidev_copyfromlcd.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 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_copyfromlcd.o --depend=.\Obj\guidev_copyfromlcd.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_CopyFromLCD.c]
                          THUMB

                          AREA ||i.GUI_MEMDEV_CopyFromLCD||, CODE, READONLY, ALIGN=2

                  GUI_MEMDEV_CopyFromLCD PROC
;;;47     */
;;;48     void GUI_MEMDEV_CopyFromLCD(GUI_MEMDEV_Handle hMem) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
;;;49       /* Make sure memory handle is valid */
;;;50       if (!hMem) {
;;;51         hMem = GUI_Context.hDevData;
000004  4f3c              LDR      r7,|L1.248|
000006  0004              MOVS     r4,r0                 ;48
000008  d103              BNE      |L1.18|
00000a  f9b7404c          LDRSH    r4,[r7,#0x4c]  ; GUI_Context
;;;52       }
;;;53       if (!hMem) {
00000e  2c00              CMP      r4,#0
000010  d06f              BEQ      |L1.242|
                  |L1.18|
;;;54         return;
;;;55       }
;;;56       {
;;;57         GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
000012  4620              MOV      r0,r4
000014  f7fffffe          BL       GUI_ALLOC_h2p
000018  4605              MOV      r5,r0
;;;58         LCD_RECT r;
;;;59         int y;
;;;60         int XMax;
;;;61         GUI_USAGE* pUsage = 0;
;;;62         GUI_MEMDEV_Handle hMemOld = GUI_Context.hDevData;
00001a  f9b7004c          LDRSH    r0,[r7,#0x4c]  ; GUI_Context
;;;63         GUI_MEMDEV_Select(hMem);
00001e  9000              STR      r0,[sp,#0]
000020  f04f0900          MOV      r9,#0                 ;61
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       GUI_MEMDEV_Select
;;;64         if (pDevData->hUsage) 
00002a  f9b50018          LDRSH    r0,[r5,#0x18]
00002e  b110              CBZ      r0,|L1.54|
;;;65           pUsage = GUI_USAGE_H2P(pDevData->hUsage);
000030  f7fffffe          BL       GUI_ALLOC_h2p
000034  4681              MOV      r9,r0
                  |L1.54|
;;;66         /* Get bounding rectangle */
;;;67         r.y0  = pDevData->y0;
;;;68         r.x0  = pDevData->x0;
000036  f9b50000          LDRSH    r0,[r5,#0]
;;;69         r.x1  = pDevData->x0 + pDevData->XSize - 1;
00003a  88aa              LDRH     r2,[r5,#4]
00003c  f9b51002          LDRSH    r1,[r5,#2]            ;67
000040  4402              ADD      r2,r2,r0
000042  1e52              SUBS     r2,r2,#1
000044  b217              SXTH     r7,r2
;;;70         r.y1  = pDevData->y0 + pDevData->YSize - 1;
000046  88ea              LDRH     r2,[r5,#6]
000048  f361461f          BFI      r6,r1,#16,#16         ;68
00004c  440a              ADD      r2,r2,r1
00004e  1e52              SUBS     r2,r2,#1
000050  b215              SXTH     r5,r2
000052  f367040f          BFI      r4,r7,#0,#16          ;69
000056  2200              MOVS     r2,#0                 ;48
000058  f360060f          BFI      r6,r0,#0,#16          ;69
00005c  f365441f          BFI      r4,r5,#16,#16
;;;71         /* Make sure bounds are within LCD area so we can call driver directly */
;;;72         LCD_LIMIT(r.x0, <, 0);
000060  2800              CMP      r0,#0
000062  da01              BGE      |L1.104|
000064  f362060f          BFI      r6,r2,#0,#16
                  |L1.104|
;;;73         LCD_LIMIT(r.y0, <, 0);
000068  2900              CMP      r1,#0
00006a  da01              BGE      |L1.112|
00006c  f362461f          BFI      r6,r2,#16,#16
                  |L1.112|
;;;74         LCD_LIMIT(r.x1, >, LCD_GET_XSIZE() - 1);
000070  f7fffffe          BL       LCD_GetXSize
000074  1e40              SUBS     r0,r0,#1
000076  42b8              CMP      r0,r7
000078  da04              BGE      |L1.132|
00007a  f7fffffe          BL       LCD_GetXSize
00007e  1e40              SUBS     r0,r0,#1
000080  f360040f          BFI      r4,r0,#0,#16
                  |L1.132|
;;;75         LCD_LIMIT(r.y1, >, LCD_GET_YSIZE() - 1);
000084  f7fffffe          BL       LCD_GetYSize
000088  1e40              SUBS     r0,r0,#1
00008a  42a8              CMP      r0,r5
00008c  da04              BGE      |L1.152|
00008e  f7fffffe          BL       LCD_GetYSize
000092  1e40              SUBS     r0,r0,#1
000094  f360441f          BFI      r4,r0,#16,#16
                  |L1.152|
000098  fa0ffa84          SXTH     r10,r4
00009c  ea4f4826          ASR      r8,r6,#16
0000a0  ea4f4b24          ASR      r11,r4,#16
;;;76         XMax = r.x1;
;;;77         for (y = r.y0; y <= r.y1; y++) {
0000a4  e01e              B        |L1.228|
                  |L1.166|
0000a6  b235              SXTH     r5,r6
;;;78           int x = r.x0;
;;;79           LCD_PIXELINDEX* pData = (LCD_PIXELINDEX*)GUI_MEMDEV__XY2PTR(x,y);
0000a8  4641              MOV      r1,r8
0000aa  4628              MOV      r0,r5
0000ac  f7fffffe          BL       GUI_MEMDEV__XY2PTR
0000b0  4604              MOV      r4,r0
;;;80           if (pUsage) 
0000b2  f1b90f00          CMP      r9,#0
0000b6  d011              BEQ      |L1.220|
;;;81             GUI_USAGE_AddHLine(pUsage, x, y, r.x1 - r.x0 + 1);
0000b8  f8d90008          LDR      r0,[r9,#8]
0000bc  ebaa0305          SUB      r3,r10,r5
0000c0  6847              LDR      r7,[r0,#4]
0000c2  1c5b              ADDS     r3,r3,#1
0000c4  4642              MOV      r2,r8
0000c6  4629              MOV      r1,r5
0000c8  4648              MOV      r0,r9
0000ca  47b8              BLX      r7
0000cc  e006              B        |L1.220|
                  |L1.206|
;;;82           for (; x <= XMax; x++) {
;;;83             *pData++ = LCD_L0_GetPixelIndex(x, y);
0000ce  4641              MOV      r1,r8
0000d0  4628              MOV      r0,r5
0000d2  f7fffffe          BL       LCD_L0_GetPixelIndex
0000d6  f8240b02          STRH     r0,[r4],#2
0000da  1c6d              ADDS     r5,r5,#1              ;82
                  |L1.220|
0000dc  4555              CMP      r5,r10                ;82
0000de  ddf6              BLE      |L1.206|
0000e0  f1080801          ADD      r8,r8,#1              ;77
                  |L1.228|
0000e4  45c3              CMP      r11,r8                ;77
0000e6  dade              BGE      |L1.166|
;;;84           }
;;;85         }
;;;86         GUI_MEMDEV_Select(hMemOld);
0000e8  9800              LDR      r0,[sp,#0]
0000ea  e8bd4ff8          POP      {r3-r11,lr}
0000ee  f7ffbffe          B.W      GUI_MEMDEV_Select
                  |L1.242|
;;;87       }
;;;88     }
0000f2  e8bd8ff8          POP      {r3-r11,pc}
;;;89     
                          ENDP

0000f6  0000              DCW      0x0000
                  |L1.248|
                          DCD      GUI_Context

⌨️ 快捷键说明

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