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

📄 guidev_1.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
0000e6  6a43              LDR      r3,[r0,#0x24]         ;389
0000e8  4628              MOV      r0,r5                 ;389
0000ea  4798              BLX      r3                    ;389
                  |L4.236|
0000ec  1c6d              ADDS     r5,r5,#1              ;389
0000ee  1c64              ADDS     r4,r4,#1              ;389
0000f0  1e7f              SUBS     r7,r7,#1              ;389
0000f2  d1f4              BNE      |L4.222|
                  |L4.244|
;;;391          } else {
;;;392            _DrawBitLine8BPP_DDB(pUsage, x0, i + y0, pData, xsize, pDev, pDest);
;;;393          }
;;;394          pData += BytesPerLine;
0000f4  9915              LDR      r1,[sp,#0x54]
0000f6  f1090001          ADD      r0,r9,#1              ;388
0000fa  4488              ADD      r8,r8,r1
                  |L4.252|
0000fc  4681              MOV      r9,r0                 ;388
0000fe  4601              MOV      r1,r0                 ;388
000100  980a              LDR      r0,[sp,#0x28]         ;388
000102  4281              CMP      r1,r0                 ;388
000104  dbb0              BLT      |L4.104|
                  |L4.262|
;;;395          pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
;;;396        }
;;;397        return;
;;;398      }
;;;399      /* Use aID for bitmaps without palette */
;;;400      if (!pTrans) {
;;;401        pTrans = aID;
;;;402      }
;;;403      for (i = 0; i < ysize; i++) {
;;;404        switch (BitsPerPixel) {
;;;405        case 1:
;;;406          _DrawBitLine1BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;407          break;
;;;408        case 2:
;;;409          _DrawBitLine2BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;410          break;
;;;411        case 4:
;;;412          _DrawBitLine4BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;413          break;
;;;414        }
;;;415        pData += BytesPerLine;
;;;416        pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
;;;417      }
;;;418    }
000106  b00b              ADD      sp,sp,#0x2c
000108  e8bd8ff0          POP      {r4-r11,pc}
                  |L4.268|
00010c  f1ba0f00          CMP      r10,#0                ;400
000110  d101              BNE      |L4.278|
000112  f8dfa080          LDR      r10,|L4.404|
                  |L4.278|
000116  2400              MOVS     r4,#0                 ;403
000118  e017              B        |L4.330|
                  |L4.282|
00011a  2d01              CMP      r5,#1                 ;404
00011c  d019              BEQ      |L4.338|
00011e  2d02              CMP      r5,#2                 ;404
000120  d026              BEQ      |L4.368|
000122  2d04              CMP      r5,#4                 ;404
000124  d10d              BNE      |L4.322|
000126  e9cda602          STRD     r10,r6,[sp,#8]        ;412
00012a  9809              LDR      r0,[sp,#0x24]         ;412
00012c  9001              STR      r0,[sp,#4]            ;412
00012e  9b17              LDR      r3,[sp,#0x5c]         ;412
000130  e9dd0106          LDRD     r0,r1,[sp,#0x18]      ;412
000134  9300              STR      r3,[sp,#0]            ;412
000136  9704              STR      r7,[sp,#0x10]         ;412
000138  eb04020b          ADD      r2,r4,r11             ;412
00013c  4643              MOV      r3,r8                 ;412
00013e  f7fffffe          BL       _DrawBitLine4BPP
                  |L4.322|
000142  9915              LDR      r1,[sp,#0x54]         ;415
000144  444f              ADD      r7,r7,r9              ;416
000146  4488              ADD      r8,r8,r1              ;415
000148  1c64              ADDS     r4,r4,#1              ;403
                  |L4.330|
00014a  980a              LDR      r0,[sp,#0x28]         ;403
00014c  4284              CMP      r4,r0                 ;403
00014e  dbe4              BLT      |L4.282|
000150  e7d9              B        |L4.262|
                  |L4.338|
000152  e9cda602          STRD     r10,r6,[sp,#8]        ;406
000156  9809              LDR      r0,[sp,#0x24]         ;406
000158  9001              STR      r0,[sp,#4]            ;406
00015a  9b17              LDR      r3,[sp,#0x5c]         ;406
00015c  e9dd0106          LDRD     r0,r1,[sp,#0x18]      ;406
000160  9300              STR      r3,[sp,#0]            ;406
000162  9704              STR      r7,[sp,#0x10]         ;406
000164  eb04020b          ADD      r2,r4,r11             ;406
000168  4643              MOV      r3,r8                 ;406
00016a  f7fffffe          BL       _DrawBitLine1BPP
00016e  e7e8              B        |L4.322|
                  |L4.368|
000170  e9cda602          STRD     r10,r6,[sp,#8]        ;409
000174  9809              LDR      r0,[sp,#0x24]         ;409
000176  9001              STR      r0,[sp,#4]            ;409
000178  9b17              LDR      r3,[sp,#0x5c]         ;409
00017a  e9dd0106          LDRD     r0,r1,[sp,#0x18]      ;409
00017e  9300              STR      r3,[sp,#0]            ;409
000180  9704              STR      r7,[sp,#0x10]         ;409
000182  eb04020b          ADD      r2,r4,r11             ;409
000186  4643              MOV      r3,r8                 ;409
000188  f7fffffe          BL       _DrawBitLine2BPP
00018c  e7d9              B        |L4.322|
;;;419    
                          ENDP

00018e  0000              DCW      0x0000
                  |L4.400|
                          DCD      GUI_Context
                  |L4.404|
                          DCD      ||.constdata||

                          AREA ||i._DrawHLine||, CODE, READONLY, ALIGN=1

                  _DrawHLine PROC
;;;490    */
;;;491    static void _DrawHLine(int x0, int y, int x1) {
000000  460b              MOV      r3,r1
;;;492      _FillRect(x0, y, x1, y);
000002  f7ffbffe          B.W      _FillRect
;;;493    }
;;;494    
                          ENDP


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

                  _DrawVLine PROC
;;;498    */
;;;499    static void _DrawVLine(int x , int y0, int y1) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
;;;500      GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  f8dfa090          LDR      r10,|L6.152|
000008  4683              MOV      r11,r0                ;499
00000a  460e              MOV      r6,r1                 ;499
00000c  4691              MOV      r9,r2                 ;499
00000e  f9ba004c          LDRSH    r0,[r10,#0x4c]  ; GUI_Context
000012  f7fffffe          BL       GUI_ALLOC_h2p
000016  4607              MOV      r7,r0
;;;501      GUI_USAGE_h hUsage = pDev->hUsage; 
000018  f9b00018          LDRSH    r0,[r0,#0x18]
;;;502      GUI_USAGE*  pUsage = hUsage ? GUI_USAGE_H2P(hUsage) : NULL;
00001c  b108              CBZ      r0,|L6.34|
00001e  f7fffffe          BL       GUI_ALLOC_h2p
                  |L6.34|
000022  4605              MOV      r5,r0
;;;503      U8* pData;
;;;504      int Bit, Mask;
;;;505      pData = _XY2PTR_BITOFFSET(x, y0, &Bit);
000024  466a              MOV      r2,sp
000026  4631              MOV      r1,r6
000028  4658              MOV      r0,r11
00002a  f7fffffe          BL       _XY2PTR_BITOFFSET
00002e  4604              MOV      r4,r0
;;;506      Mask  = (1 << Bit);
000030  9800              LDR      r0,[sp,#0]
000032  2101              MOVS     r1,#1
000034  fa01f800          LSL      r8,r1,r0
;;;507      if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
000038  f89a200c          LDRB     r2,[r10,#0xc]  ; GUI_Context
00003c  4651              MOV      r1,r10
00003e  07d2              LSLS     r2,r2,#31
000040  d011              BEQ      |L6.102|
                  |L6.66|
;;;508        do {
;;;509          *pData ^= Mask;
000042  7820              LDRB     r0,[r4,#0]
000044  ea800008          EOR      r0,r0,r8
000048  7020              STRB     r0,[r4,#0]
;;;510          if (pUsage) {
00004a  b12d              CBZ      r5,|L6.88|
;;;511            GUI_USAGE_AddPixel(pUsage, x, y0);
00004c  68a8              LDR      r0,[r5,#8]
00004e  4632              MOV      r2,r6
000050  6803              LDR      r3,[r0,#0]
000052  4659              MOV      r1,r11
000054  4628              MOV      r0,r5
000056  4798              BLX      r3
                  |L6.88|
;;;512          }
;;;513          pData += pDev->BytesPerLine;
;;;514        } while (++y0 <= y1);
000058  68f8              LDR      r0,[r7,#0xc]
00005a  1c76              ADDS     r6,r6,#1
00005c  454e              CMP      r6,r9
00005e  4404              ADD      r4,r4,r0              ;513
000060  ddef              BLE      |L6.66|
                  |L6.98|
;;;515      } else {
;;;516        int Pixel;
;;;517        Pixel = (LCD_COLORINDEX & 1) << Bit;
;;;518        do {
;;;519          *pData &= ~Mask;
;;;520          *pData |= Pixel;
;;;521          if (pUsage) {
;;;522            GUI_USAGE_AddPixel(pUsage, x, y0);
;;;523          }
;;;524          pData += pDev->BytesPerLine;
;;;525        } while (++y0 <= y1);
;;;526      }
;;;527    }
000062  e8bd8ff8          POP      {r3-r11,pc}
                  |L6.102|
000066  8849              LDRH     r1,[r1,#2]            ;517  ; GUI_Context
000068  f0010101          AND      r1,r1,#1              ;517
00006c  fa01fa00          LSL      r10,r1,r0             ;517
                  |L6.112|
000070  7820              LDRB     r0,[r4,#0]            ;519
000072  ea200008          BIC      r0,r0,r8              ;519
000076  b2c0              UXTB     r0,r0                 ;520
000078  ea40000a          ORR      r0,r0,r10             ;520
00007c  7020              STRB     r0,[r4,#0]            ;520
00007e  b12d              CBZ      r5,|L6.140|
000080  68a8              LDR      r0,[r5,#8]            ;522
000082  4632              MOV      r2,r6                 ;522
000084  6803              LDR      r3,[r0,#0]            ;522
000086  4659              MOV      r1,r11                ;522
000088  4628              MOV      r0,r5                 ;522
00008a  4798              BLX      r3                    ;522
                  |L6.140|
00008c  68f8              LDR      r0,[r7,#0xc]          ;525
00008e  1c76              ADDS     r6,r6,#1              ;525
000090  454e              CMP      r6,r9                 ;525
000092  4404              ADD      r4,r4,r0              ;524
000094  ddec              BLE      |L6.112|
000096  e7e4              B        |L6.98|
;;;528    
                          ENDP

                  |L6.152|
                          DCD      GUI_Context

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

                  _FillRect PROC
;;;423    */
;;;424    static void _FillRect(int x0, int y0, int x1, int y1) {
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;425      GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  484d              LDR      r0,|L7.316|
000006  b083              SUB      sp,sp,#0xc            ;424
000008  4688              MOV      r8,r1                 ;424
00000a  4614              MOV      r4,r2                 ;424
00000c  469b              MOV      r11,r3                ;424
00000e  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
000012  f7fffffe          BL       GUI_ALLOC_h2p
;;;426      U8* pData;
;;;427      int Bit, Len;
;;;428      int RemPixels;
;;;429      Len = x1 - x0 + 1;
000016  9903              LDR      r1,[sp,#0xc]
;;;430      /* Mark rectangle as modified */
;;;431      if (pDev->hUsage) {
000018  f9b00018          LDRSH    r0,[r0,#0x18]
00001c  1a61              SUBS     r1,r4,r1              ;429
00001e  f1010a01          ADD      r10,r1,#1             ;429
;;;432        GUI_USAGE_AddRect(GUI_USAGE_H2P(pDev->hUsage), x0, y0, Len, y1 - y0 + 1);
;;;433      }
;;;434      /* Do the drawing */
;;;435      for (; y0 <= y1; y0++) {
;;;436        pData = _XY2PTR_BITOFFSET(x0, y0, &Bit);
;;;437        RemPixels = Len;
;;;438        if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
;;;439          if (Bit < 7) {
;;;440            while ((Bit >= 0) && RemPixels--) {
;;;441              *pData ^= 1 << (Bit--);
000022  f04f0901          MOV      r9,#1
000026  2800              CMP      r0,#0                 ;431
000028  d00a              BEQ      |L7.64|
00002a  f7fffffe          BL       GUI_ALLOC_h2p
00002e  ebab0308          SUB      r3,r11,r8             ;432
000032  1c5b              ADDS     r3,r3,#1              ;432
000034  9300              STR      r3,[sp,#0]            ;432
000036  4653              MOV      r3,r10                ;432
000038  4642              MOV      r2,r8                 ;432
00003a  9903              LDR      r1,[sp,#0xc]          ;432
00003c  f7fffffe          BL       GUI_USAGE_AddRect
                  |L7.64|
000040  e077              B        |L7.306|
                  |L7.66|
000042  aa02              ADD      r2,sp,#8              ;436
000044  4641              MOV      r1,r8                 ;436
000046  9803              LDR      r0,[sp,#0xc]          ;436
000048  f7fffffe          BL       _XY2PTR_BITOFFSET
00004c  4604              MOV      r4,r0                 ;436
00004e  483b              LDR      r0,|L7.316|
000050  4655              MOV      r5,r10                ;437
000052  7b01              LDRB     r1,[r0,#0xc]          ;438  ; GUI_Context
000054  07c9              LSLS     r1,r1,#31             ;438
000056  d02c              BEQ      |L7.178|
000058  9802              LDR      r0,[sp,#8]            ;439
00005a  2807              CMP      r0,#7                 ;439
00005c  da0e              BGE      |L7.124|
00005e  4649              MOV      r1,r9
000060  e006              B        |L7.112|
                  |L7.98|
000062  7822              LDRB     r2,[r4,#0]
000064  fa01f300          LSL      r3,r1,r0
000068  405a              EORS     r2,r2,r3
00006a  1e40              SUBS     r0,r0,#1
00006c  9002              STR      r0,[sp,#8]
00006e  7022              STRB     r2,[r4,#0]
                  |L7.112|
000070  9802              LDR      r0,[sp,#8]            ;440
000072  2800              CMP      r0,#0                 ;440
000074  db01              BLT      |L7.122|
000076  1e6d              SUBS     r5,r5,#1              ;440
000078  d2f3              BCS      |L7.98|
                  |L7.122|
;;;442            }
;;;443            pData++;
00007a  1c64              ADDS     r4,r4,#1
                  |L7.124|
;;;444          }
;;;445          if (RemPixels > 0) {
00007c  2d00              CMP      r5,#0
00007e  dd56              BLE      |L7.302|
;;;446            int NumBytes = RemPixels >> 3;
000080  10e8              ASRS     r0,r5,#3
;;;447            if (NumBytes > 0) {
000082  2800              CMP      r0,#0
000084  dd06              BLE      |L7.148|
;;;448              RemPixels -= NumBytes << 3;
000086  eba505c0          SUB      r5,r5,r0,LSL #3
00008a  2100              MOVS     r1,#0                 ;431
                  |L7.140|
;;;449              do {
;;;450                *pData ^= *pData;
00008c  f8041b01          STRB     r1,[r4],#1
;;;451                pData++;
;;;452              } while (--NumBytes);
000090  1e40              SUBS     r0,r0,#1
000092  d1fb              BNE      |L7.140|
                  |L7.148|
;;;453            }
;;;454            Bit = 7;
000094  2007              MOVS     r0,#7
000096  4649              MOV      r1,r9                 ;441
;;;455            while (RemPixels--) {

⌨️ 快捷键说明

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