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

📄 guidev_1.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_1.o --depend=.\Obj\guidev_1.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_1.c]
                          THUMB

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

                  _DrawBitLine1BPP PROC
;;;94     */
;;;95     static void _DrawBitLine1BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, unsigned int xsize,
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;96                                  const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;97     {
;;;98       PIXELINDEX pixels;
;;;99       PIXELINDEX Index1;
;;;100      unsigned int PixelCnt;
;;;101      GUI_USE_PARA(pUsage);
;;;102      PixelCnt = 8 - (Diff & 7);
000004  e9dd060a          LDRD     r0,r6,[sp,#0x28]
000008  460f              MOV      r7,r1                 ;97
00000a  4693              MOV      r11,r2                ;97
00000c  f0000007          AND      r0,r0,#7
;;;103      pixels = (*p) << (Diff & 7);
000010  7819              LDRB     r1,[r3,#0]
;;;104      GUI_DEBUG_ERROROUT3_IF( x < pDev->x0, "GUIDEV.c: DrawBitLine1BPP, Act= %d, Border= %d, Clip= %d"
;;;105                        ,x,pDev->x0, GUI_Context.ClipRect.x0);
;;;106      switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000012  4a34              LDR      r2,|L1.228|
000014  4081              LSLS     r1,r1,r0              ;103
000016  7b12              LDRB     r2,[r2,#0xc]  ; GUI_Context
000018  e9dda90c          LDRD     r10,r9,[sp,#0x30]
00001c  f1c00408          RSB      r4,r0,#8              ;102
000020  4698              MOV      r8,r3                 ;97
000022  b2cd              UXTB     r5,r1                 ;103
000024  f0120003          ANDS     r0,r2,#3
000028  d008              BEQ      |L1.60|
00002a  2801              CMP      r0,#1
00002c  d03e              BEQ      |L1.172|
00002e  2802              CMP      r0,#2
000030  d155              BNE      |L1.222|
;;;107      case 0:    /* Write mode */
;;;108        do {
;;;109          /* Prepare loop */
;;;110          if (PixelCnt > xsize) {
;;;111            PixelCnt = xsize;
;;;112          }
;;;113          xsize -= PixelCnt;
;;;114          /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;115          do {
;;;116            (*pDev->pAPIList->pfSetPixelIndex)(x++, y, *(pTrans + ((U8)pixels >> 7)));
;;;117            pixels <<= 1;
;;;118          } while (--PixelCnt);
;;;119          /* Check if an other Source byte needs to be loaded */
;;;120          if (xsize == 0) {
;;;121            return;
;;;122          }
;;;123          PixelCnt = 8;
;;;124          pixels = *(++p);
;;;125        } while (1);
;;;126      case LCD_DRAWMODE_TRANS:
;;;127        Index1 = *(pTrans + 1);
000032  f8ba0002          LDRH     r0,[r10,#2]
000036  f0000aff          AND      r10,r0,#0xff
;;;128        do {
00003a  e019              B        |L1.112|
                  |L1.60|
00003c  42b4              CMP      r4,r6                 ;110
00003e  d900              BLS      |L1.66|
000040  4634              MOV      r4,r6                 ;111
                  |L1.66|
000042  1b36              SUBS     r6,r6,r4              ;113
                  |L1.68|
000044  09e8              LSRS     r0,r5,#7              ;116
000046  f8d91028          LDR      r1,[r9,#0x28]         ;116
00004a  f83a2010          LDRH     r2,[r10,r0,LSL #1]    ;116
00004e  4638              MOV      r0,r7                 ;116
000050  6a4b              LDR      r3,[r1,#0x24]         ;116
000052  1c7f              ADDS     r7,r7,#1              ;116
000054  4659              MOV      r1,r11                ;116
000056  4798              BLX      r3                    ;116
000058  0668              LSLS     r0,r5,#25             ;117
00005a  0e05              LSRS     r5,r0,#24             ;117
00005c  1e64              SUBS     r4,r4,#1              ;118
00005e  d1f1              BNE      |L1.68|
000060  2e00              CMP      r6,#0                 ;120
000062  d03c              BEQ      |L1.222|
000064  f1080001          ADD      r0,r8,#1              ;124
000068  2408              MOVS     r4,#8                 ;123
00006a  4680              MOV      r8,r0                 ;124
00006c  7805              LDRB     r5,[r0,#0]            ;124
00006e  e7e5              B        |L1.60|
                  |L1.112|
;;;129          /* Prepare loop */
;;;130          if (PixelCnt > xsize) {
000070  42b4              CMP      r4,r6
000072  d900              BLS      |L1.118|
;;;131            PixelCnt = xsize;
000074  4634              MOV      r4,r6
                  |L1.118|
;;;132          }
;;;133          xsize -= PixelCnt;
000076  1b36              SUBS     r6,r6,r4
;;;134          while (pixels) {
000078  e00d              B        |L1.150|
                  |L1.122|
;;;135            if ((pixels & 0x80)) {
00007a  0628              LSLS     r0,r5,#24
00007c  d506              BPL      |L1.140|
;;;136              (*pDev->pAPIList->pfSetPixelIndex)(x, y, Index1);
00007e  f8d90028          LDR      r0,[r9,#0x28]
000082  4652              MOV      r2,r10
000084  6a43              LDR      r3,[r0,#0x24]
000086  4659              MOV      r1,r11
000088  4638              MOV      r0,r7
00008a  4798              BLX      r3
                  |L1.140|
;;;137            }
;;;138            x++;
;;;139            pixels <<= 1;
00008c  0668              LSLS     r0,r5,#25
00008e  1c7f              ADDS     r7,r7,#1              ;138
000090  0e05              LSRS     r5,r0,#24
;;;140            if (--PixelCnt == 0) {
000092  1e64              SUBS     r4,r4,#1
000094  d001              BEQ      |L1.154|
                  |L1.150|
000096  2d00              CMP      r5,#0                 ;134
000098  d1ef              BNE      |L1.122|
                  |L1.154|
;;;141              break;
;;;142            }
;;;143          }
;;;144          /* Check if an other Source byte needs to be loaded */
;;;145          if (xsize == 0) {
00009a  2e00              CMP      r6,#0
00009c  d01f              BEQ      |L1.222|
;;;146            return;
;;;147          }
;;;148          x += PixelCnt;
;;;149          PixelCnt = 8;
;;;150          pixels = *(++p);
00009e  f1080001          ADD      r0,r8,#1
0000a2  4427              ADD      r7,r7,r4              ;148
0000a4  2408              MOVS     r4,#8                 ;149
0000a6  4680              MOV      r8,r0
0000a8  7805              LDRB     r5,[r0,#0]
;;;151        } while (1);
0000aa  e7e1              B        |L1.112|
                  |L1.172|
;;;152      case LCD_DRAWMODE_XOR:;
;;;153      PixelLoopXor:
;;;154        if (PixelCnt > xsize) {
0000ac  42b4              CMP      r4,r6
0000ae  d900              BLS      |L1.178|
;;;155          PixelCnt = xsize;
0000b0  4634              MOV      r4,r6
                  |L1.178|
;;;156        }
;;;157        xsize -= PixelCnt;
0000b2  1b36              SUBS     r6,r6,r4
                  |L1.180|
;;;158        do {
;;;159          if ((pixels & 0x80)) {
0000b4  0628              LSLS     r0,r5,#24
0000b6  d505              BPL      |L1.196|
;;;160            (*pDev->pAPIList->pfXorPixel)(x, y);
0000b8  f8d90028          LDR      r0,[r9,#0x28]
0000bc  4659              MOV      r1,r11
0000be  6a82              LDR      r2,[r0,#0x28]
0000c0  4638              MOV      r0,r7
0000c2  4790              BLX      r2
                  |L1.196|
;;;161          }
;;;162          x++;
;;;163          pDest++;
;;;164          pixels <<= 1;
0000c4  0668              LSLS     r0,r5,#25
0000c6  1c7f              ADDS     r7,r7,#1              ;162
0000c8  0e05              LSRS     r5,r0,#24
;;;165        } while (--PixelCnt);
0000ca  1e64              SUBS     r4,r4,#1
0000cc  d1f2              BNE      |L1.180|
;;;166        if (xsize) {
0000ce  2e00              CMP      r6,#0
0000d0  d005              BEQ      |L1.222|
;;;167          PixelCnt = 8;
;;;168          pixels = *(++p);
0000d2  f1080001          ADD      r0,r8,#1
0000d6  2408              MOVS     r4,#8                 ;167
0000d8  4680              MOV      r8,r0
0000da  7805              LDRB     r5,[r0,#0]
;;;169          goto PixelLoopXor;
0000dc  e7e6              B        |L1.172|
                  |L1.222|
;;;170        }
;;;171        break;
;;;172      }
;;;173    }
0000de  e8bd9ff0          POP      {r4-r12,pc}
;;;174    
                          ENDP

0000e2  0000              DCW      0x0000
                  |L1.228|
                          DCD      GUI_Context

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

                  _DrawBitLine2BPP PROC
;;;178    */
;;;179    static void _DrawBitLine2BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, int xsize,
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;180                                 const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;181    {
;;;182      U8 pixels;
;;;183      U8  PixelCnt;
;;;184      GUI_USE_PARA(pUsage);
;;;185      GUI_USE_PARA(pDest);
;;;186      PixelCnt = 4 - (Diff & 3);
000004  a80a              ADD      r0,sp,#0x28
000006  e8900641          LDM      r0,{r0,r6,r9,r10}
00000a  f0000003          AND      r0,r0,#3
00000e  4693              MOV      r11,r2                ;181
000010  460f              MOV      r7,r1                 ;181
000012  f1c00404          RSB      r4,r0,#4
;;;187      pixels = (*p) << ((Diff & 3) << 1);
000016  0042              LSLS     r2,r0,#1
000018  7819              LDRB     r1,[r3,#0]
;;;188      switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
00001a  4823              LDR      r0,|L2.168|
00001c  4091              LSLS     r1,r1,r2              ;187
00001e  7b00              LDRB     r0,[r0,#0xc]  ; GUI_Context
000020  4698              MOV      r8,r3                 ;181
000022  b2cd              UXTB     r5,r1                 ;187
000024  f0100003          ANDS     r0,r0,#3
000028  d002              BEQ      |L2.48|
00002a  2802              CMP      r0,#2
00002c  d13a              BNE      |L2.164|
00002e  e01b              B        |L2.104|
                  |L2.48|
;;;189      case 0:    /* Write mode */
;;;190      PixelLoopWrite:
;;;191        if (PixelCnt > xsize) {
000030  42b4              CMP      r4,r6
000032  dd00              BLE      |L2.54|
;;;192          PixelCnt = xsize;
000034  b2f4              UXTB     r4,r6
                  |L2.54|
;;;193        }
;;;194        xsize -= PixelCnt;
000036  1b36              SUBS     r6,r6,r4
                  |L2.56|
;;;195        do {
;;;196          (*pDev->pAPIList->pfSetPixelIndex)(x++, y, *(pTrans + (pixels >> 6)));
000038  09a8              LSRS     r0,r5,#6
00003a  f8da1028          LDR      r1,[r10,#0x28]
00003e  f8392010          LDRH     r2,[r9,r0,LSL #1]
000042  4638              MOV      r0,r7
000044  6a4b              LDR      r3,[r1,#0x24]
000046  1c7f              ADDS     r7,r7,#1
000048  4659              MOV      r1,r11
00004a  4798              BLX      r3
00004c  06a8              LSLS     r0,r5,#26
;;;197          pixels <<= 2;
00004e  0e05              LSRS     r5,r0,#24
;;;198        } while (--PixelCnt);
000050  1e64              SUBS     r4,r4,#1
000052  f01404ff          ANDS     r4,r4,#0xff
000056  d1ef              BNE      |L2.56|
;;;199        if (xsize) {
000058  2e00              CMP      r6,#0
00005a  d023              BEQ      |L2.164|
;;;200          PixelCnt = 4;
;;;201          pixels = *(++p);
00005c  f1080001          ADD      r0,r8,#1
000060  2404              MOVS     r4,#4                 ;200
000062  4680              MOV      r8,r0
000064  7805              LDRB     r5,[r0,#0]
;;;202          goto PixelLoopWrite;
000066  e7e3              B        |L2.48|
                  |L2.104|
;;;203        }
;;;204        break;
;;;205      case LCD_DRAWMODE_TRANS:
;;;206      PixelLoopTrans:
;;;207        if (PixelCnt > xsize)
000068  42b4              CMP      r4,r6
00006a  dd00              BLE      |L2.110|
;;;208          PixelCnt = xsize;
00006c  b2f4              UXTB     r4,r6
                  |L2.110|
;;;209        xsize -= PixelCnt;
00006e  1b36              SUBS     r6,r6,r4
                  |L2.112|
;;;210        do {
;;;211          if (pixels & 0xc0) {
000070  09a8              LSRS     r0,r5,#6
000072  d008              BEQ      |L2.134|
;;;212            (*pDev->pAPIList->pfSetPixelIndex)(x, y, *(pTrans + (pixels >> 6)));
000074  09a8              LSRS     r0,r5,#6
000076  f8392010          LDRH     r2,[r9,r0,LSL #1]
00007a  f8da0028          LDR      r0,[r10,#0x28]
00007e  4659              MOV      r1,r11
000080  6a43              LDR      r3,[r0,#0x24]
000082  4638              MOV      r0,r7
000084  4798              BLX      r3
                  |L2.134|
;;;213          }
;;;214          x++;
000086  06a8              LSLS     r0,r5,#26
000088  1c7f              ADDS     r7,r7,#1
;;;215          pixels <<= 2;
00008a  0e05              LSRS     r5,r0,#24
;;;216        } while (--PixelCnt);
00008c  1e64              SUBS     r4,r4,#1
00008e  f01404ff          ANDS     r4,r4,#0xff
000092  d1ed              BNE      |L2.112|
;;;217        if (xsize) {
000094  2e00              CMP      r6,#0
000096  d005              BEQ      |L2.164|
;;;218          PixelCnt = 4;
;;;219          pixels = *(++p);
000098  f1080001          ADD      r0,r8,#1
00009c  2404              MOVS     r4,#4                 ;218
00009e  4680              MOV      r8,r0
0000a0  7805              LDRB     r5,[r0,#0]
;;;220          goto PixelLoopTrans;
0000a2  e7e1              B        |L2.104|
                  |L2.164|
;;;221        }
;;;222        break;
;;;223      }
;;;224    }
0000a4  e8bd9ff0          POP      {r4-r12,pc}
;;;225    
                          ENDP

                  |L2.168|
                          DCD      GUI_Context

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

                  _DrawBitLine4BPP PROC
;;;229    */

⌨️ 快捷键说明

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