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

📄 guidev_aa.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_aa.o --depend=.\Obj\guidev_aa.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_AA.c]
                          THUMB

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

                  GUI_MEMDEV_CopyFromLCDAA PROC
;;;123    */
;;;124    void GUI_MEMDEV_CopyFromLCDAA(GUI_MEMDEV_Handle hMem) {
000000  e92d4ffe          PUSH     {r1-r11,lr}
;;;125      /* Make sure memory handle is valid */
;;;126      if (!hMem) {
000004  b920              CBNZ     r0,|L1.16|
;;;127        hMem = GUI_Context.hDevData;
000006  4830              LDR      r0,|L1.200|
000008  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
;;;128      }
;;;129      if (hMem) {
00000c  2800              CMP      r0,#0
00000e  d058              BEQ      |L1.194|
                  |L1.16|
;;;130        int x, y;
;;;131        GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
000010  f7fffffe          BL       GUI_ALLOC_h2p
000014  4605              MOV      r5,r0
;;;132        GUI_USAGE* pUsage = 0;
;;;133        int x0 = pDevData->x0;
000016  f9b0b000          LDRSH    r11,[r0,#0]
;;;134        int y0 = pDevData->y0;
00001a  f9b00002          LDRSH    r0,[r0,#2]
;;;135        int XMax = pDevData->XSize/2;
00001e  9001              STR      r0,[sp,#4]
000020  f9b50004          LDRSH    r0,[r5,#4]
000024  f04f0900          MOV      r9,#0                 ;132
000028  eb0070d0          ADD      r0,r0,r0,LSR #31
00002c  ea4f0a60          ASR      r10,r0,#1
;;;136        int YMax = pDevData->YSize/2;
000030  f9b50006          LDRSH    r0,[r5,#6]
;;;137        LCD_PIXELINDEX* pData = (LCD_PIXELINDEX*)(pDevData+1);
000034  f105042c          ADD      r4,r5,#0x2c
000038  eb0070d0          ADD      r0,r0,r0,LSR #31      ;136
00003c  1040              ASRS     r0,r0,#1              ;136
;;;138        int LineOff = pDevData->BytesPerLine;
00003e  9000              STR      r0,[sp,#0]
;;;139        if (pDevData->hUsage) 
000040  f9b50018          LDRSH    r0,[r5,#0x18]
000044  f8d5800c          LDR      r8,[r5,#0xc]
000048  b110              CBZ      r0,|L1.80|
;;;140          pUsage = GUI_USAGE_H2P(pDevData->hUsage);
00004a  f7fffffe          BL       GUI_ALLOC_h2p
00004e  4681              MOV      r9,r0
                  |L1.80|
;;;141        for (y=0; y< YMax; y++) {
000050  2700              MOVS     r7,#0
000052  e033              B        |L1.188|
                  |L1.84|
;;;142          if (pUsage) {
000054  f1b90f00          CMP      r9,#0
000058  d013              BEQ      |L1.130|
;;;143            GUI_USAGE_AddHLine(pUsage, 0, y*2, pDevData->XSize);
00005a  f8d90008          LDR      r0,[r9,#8]
00005e  007a              LSLS     r2,r7,#1
000060  6846              LDR      r6,[r0,#4]
000062  f9b53004          LDRSH    r3,[r5,#4]
000066  2100              MOVS     r1,#0
000068  4648              MOV      r0,r9
00006a  47b0              BLX      r6
;;;144            GUI_USAGE_AddHLine(pUsage, 0, y*2+1, pDevData->XSize);
00006c  2001              MOVS     r0,#1
00006e  eb000247          ADD      r2,r0,r7,LSL #1
000072  f8d90008          LDR      r0,[r9,#8]
000076  f9b53004          LDRSH    r3,[r5,#4]
00007a  6846              LDR      r6,[r0,#4]
00007c  2100              MOVS     r1,#0
00007e  4648              MOV      r0,r9
000080  47b0              BLX      r6
                  |L1.130|
;;;145          }
;;;146          for (x=0; x< XMax; x++) {
;;;147            *pData = *(pData+1) = *(pData+LineOff) = *(pData+LineOff+1) = LCD_GetPixelIndex(x+x0,y+y0);
000082  9801              LDR      r0,[sp,#4]
000084  2600              MOVS     r6,#0                 ;146
000086  4438              ADD      r0,r0,r7
000088  9002              STR      r0,[sp,#8]            ;146
00008a  e00d              B        |L1.168|
                  |L1.140|
00008c  eb06000b          ADD      r0,r6,r11
000090  9902              LDR      r1,[sp,#8]
000092  f7fffffe          BL       LCD_GetPixelIndex
000096  eb040148          ADD      r1,r4,r8,LSL #1
00009a  8048              STRH     r0,[r1,#2]
00009c  f8240018          STRH     r0,[r4,r8,LSL #1]
0000a0  8060              STRH     r0,[r4,#2]
0000a2  f8240b04          STRH     r0,[r4],#4
0000a6  1c76              ADDS     r6,r6,#1              ;146
                  |L1.168|
0000a8  4556              CMP      r6,r10                ;146
0000aa  dbef              BLT      |L1.140|
;;;148            pData+=2;
;;;149          }
;;;150          pData += LineOff + (pDevData->XSize&1);
0000ac  88a9              LDRH     r1,[r5,#4]
0000ae  1c7f              ADDS     r7,r7,#1              ;141
0000b0  f0010101          AND      r1,r1,#1
0000b4  eb010008          ADD      r0,r1,r8
0000b8  eb040440          ADD      r4,r4,r0,LSL #1
                  |L1.188|
0000bc  9800              LDR      r0,[sp,#0]            ;141
0000be  4287              CMP      r7,r0                 ;141
0000c0  dbc8              BLT      |L1.84|
                  |L1.194|
;;;151        }
;;;152      }
;;;153    }
0000c2  e8bd8ffe          POP      {r1-r11,pc}
;;;154    
                          ENDP

0000c6  0000              DCW      0x0000
                  |L1.200|
                          DCD      GUI_Context

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

                  GUI_MEMDEV_CopyToLCDAA PROC
;;;58     */
;;;59     void GUI_MEMDEV_CopyToLCDAA(GUI_MEMDEV_Handle hMem) {
000000  e92d4ff0          PUSH     {r4-r11,lr}
000004  b085              SUB      sp,sp,#0x14
;;;60       GUI_LOCK();
;;;61       /* Make sure memory handle is valid */
;;;62       if (hMem) {
000006  2800              CMP      r0,#0
000008  d073              BEQ      |L2.242|
;;;63         GUI_MEMDEV_Handle hMemPrev;
;;;64       #if GUI_NUM_LAYERS > 1
;;;65         int PrevLayer;
;;;66       #endif
;;;67         int x, y;
;;;68         GUI_MEMDEV* pDev = (GUI_MEMDEV*)GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;69         LCD_PIXELINDEX* pData0 = (LCD_PIXELINDEX*)(pDev+1);
;;;70         int LineOff = pDev->XSize;
00000e  f9b07004          LDRSH    r7,[r0,#4]
;;;71         int x0 = pDev->x0;
000012  f9b01000          LDRSH    r1,[r0,#0]
;;;72         int y0 = pDev->y0;
000016  9103              STR      r1,[sp,#0xc]
000018  f9b01002          LDRSH    r1,[r0,#2]
;;;73         int XMax = pDev->XSize / 2;
00001c  9102              STR      r1,[sp,#8]
00001e  eb0771d7          ADD      r1,r7,r7,LSR #31
000022  1049              ASRS     r1,r1,#1
000024  f100082c          ADD      r8,r0,#0x2c           ;69
;;;74         int YMax = pDev->YSize / 2;
000028  9101              STR      r1,[sp,#4]
00002a  f9b00006          LDRSH    r0,[r0,#6]
00002e  eb0070d0          ADD      r0,r0,r0,LSR #31
000032  1040              ASRS     r0,r0,#1
;;;75         hMemPrev = GUI_Context.hDevData;
000034  9000              STR      r0,[sp,#0]
000036  4830              LDR      r0,|L2.248|
000038  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
;;;76       #if GUI_NUM_LAYERS > 1
;;;77         PrevLayer = GUI_SelectLayer(pDev->LayerIndex);   /* Should not we switch back to the orig. layer when done ? */
;;;78       #else
;;;79         GUI_SelectLCD();  /* Activate LCD */
00003c  9004              STR      r0,[sp,#0x10]
00003e  f7fffffe          BL       GUI_SelectLCD
;;;80       #endif
;;;81         for (y = 0; y < YMax; y++) {
000042  2600              MOVS     r6,#0
000044  e04c              B        |L2.224|
                  |L2.70|
;;;82           LCD_PIXELINDEX* pData = pData0;
000046  4644              MOV      r4,r8
;;;83           for (x = 0; x < XMax; x++) {
000048  2500              MOVS     r5,#0
00004a  e043              B        |L2.212|
                  |L2.76|
;;;84             LCD_PIXELINDEX PixelIndex;
;;;85             int ColorSep[3];
;;;86             U32 Color = LCD_Index2Color(*pData);
00004c  8820              LDRH     r0,[r4,#0]
00004e  f7fffffe          BL       LCD_Index2Color
;;;87             ColorSep[0] = Color&255;
000052  f00009ff          AND      r9,r0,#0xff
;;;88             ColorSep[1] = (Color>>8)  &255;
000056  f3c02a07          UBFX     r10,r0,#8,#8
;;;89             ColorSep[2] = (Color>>16) &255;
00005a  f3c04b07          UBFX     r11,r0,#16,#8
;;;90             Color = LCD_Index2Color(*(pData+1));
00005e  8860              LDRH     r0,[r4,#2]
000060  f7fffffe          BL       LCD_Index2Color
;;;91             ColorSep[0] += Color&255;
000064  b2c2              UXTB     r2,r0
000066  4491              ADD      r9,r9,r2
;;;92             ColorSep[1] += (Color>>8)  &255;
000068  f3c02207          UBFX     r2,r0,#8,#8
;;;93             ColorSep[2] += (Color>>16) &255;
00006c  f3c04007          UBFX     r0,r0,#16,#8
000070  4483              ADD      r11,r11,r0
000072  4492              ADD      r10,r10,r2            ;92
;;;94             Color = LCD_Index2Color(*(pData+LineOff));
000074  f8340017          LDRH     r0,[r4,r7,LSL #1]
000078  f7fffffe          BL       LCD_Index2Color
;;;95             ColorSep[0] += Color&255;
00007c  b2c2              UXTB     r2,r0
00007e  4491              ADD      r9,r9,r2
;;;96             ColorSep[1] += (Color>>8)  &255;
000080  f3c02207          UBFX     r2,r0,#8,#8
;;;97             ColorSep[2] += (Color>>16) &255;
000084  f3c04007          UBFX     r0,r0,#16,#8
000088  4483              ADD      r11,r11,r0
;;;98             Color = LCD_Index2Color(*(pData+LineOff+1));
00008a  eb040047          ADD      r0,r4,r7,LSL #1
00008e  4492              ADD      r10,r10,r2            ;96
000090  8840              LDRH     r0,[r0,#2]
000092  f7fffffe          BL       LCD_Index2Color
;;;99             ColorSep[0] += Color&255;
000096  b2c2              UXTB     r2,r0
;;;100            ColorSep[1] += (Color>>8)  &255;
000098  f3c02307          UBFX     r3,r0,#8,#8
00009c  eb090102          ADD      r1,r9,r2              ;99
0000a0  eb0a0203          ADD      r2,r10,r3
;;;101            ColorSep[2] += (Color>>16) &255;
0000a4  f3c04007          UBFX     r0,r0,#16,#8
0000a8  4458              ADD      r0,r0,r11
;;;102            Color  = (ColorSep[0]+2)>>2;
0000aa  1c89              ADDS     r1,r1,#2
;;;103            Color |= ((ColorSep[1]+2)>>2)<<8;
0000ac  1c92              ADDS     r2,r2,#2
0000ae  1089              ASRS     r1,r1,#2              ;102
0000b0  1092              ASRS     r2,r2,#2
;;;104            Color |= ((U32)((ColorSep[2]+2)>>2))<<16;
0000b2  1c80              ADDS     r0,r0,#2
0000b4  ea412102          ORR      r1,r1,r2,LSL #8       ;103
0000b8  1080              ASRS     r0,r0,#2
0000ba  ea414000          ORR      r0,r1,r0,LSL #16
;;;105            PixelIndex = LCD_Color2Index(Color);
0000be  f7fffffe          BL       LCD_Color2Index
0000c2  b282              UXTH     r2,r0
;;;106            LCD_SetPixelIndex(x+x0, y+y0, PixelIndex);
0000c4  9802              LDR      r0,[sp,#8]
0000c6  1831              ADDS     r1,r6,r0
0000c8  9803              LDR      r0,[sp,#0xc]
0000ca  4428              ADD      r0,r0,r5
0000cc  f7fffffe          BL       LCD_SetPixelIndex
;;;107            pData += 2;
0000d0  1d24              ADDS     r4,r4,#4
0000d2  1c6d              ADDS     r5,r5,#1              ;83
                  |L2.212|
0000d4  9801              LDR      r0,[sp,#4]            ;83
0000d6  4285              CMP      r5,r0                 ;83
0000d8  dbb8              BLT      |L2.76|
;;;108          }
;;;109          pData0 += 2 * LineOff;
0000da  eb080887          ADD      r8,r8,r7,LSL #2
0000de  1c76              ADDS     r6,r6,#1              ;81
                  |L2.224|
0000e0  9800              LDR      r0,[sp,#0]            ;81
0000e2  4286              CMP      r6,r0                 ;81
0000e4  dbaf              BLT      |L2.70|
;;;110        }
;;;111      #if GUI_NUM_LAYERS > 1
;;;112        GUI_SelectLayer(PrevLayer);
;;;113      #endif
;;;114        /* Reactivate previously used device */
;;;115        GUI_MEMDEV_Select(hMemPrev);
0000e6  9804              LDR      r0,[sp,#0x10]
0000e8  b005              ADD      sp,sp,#0x14
0000ea  e8bd4ff0          POP      {r4-r11,lr}
0000ee  f7ffbffe          B.W      GUI_MEMDEV_Select
                  |L2.242|
;;;116      }
;;;117      GUI_UNLOCK();
;;;118    }
0000f2  b005              ADD      sp,sp,#0x14
0000f4  e8bd8ff0          POP      {r4-r11,pc}
;;;119    
                          ENDP

                  |L2.248|
                          DCD      GUI_Context

⌨️ 快捷键说明

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