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

📄 guidev_1.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;456              *pData ^= 1 << (Bit--);
000098  9002              STR      r0,[sp,#8]
00009a  e007              B        |L7.172|
                  |L7.156|
00009c  9802              LDR      r0,[sp,#8]
00009e  7822              LDRB     r2,[r4,#0]
0000a0  fa01f300          LSL      r3,r1,r0
0000a4  405a              EORS     r2,r2,r3
0000a6  1e40              SUBS     r0,r0,#1
0000a8  9002              STR      r0,[sp,#8]
0000aa  7022              STRB     r2,[r4,#0]
                  |L7.172|
0000ac  1e6d              SUBS     r5,r5,#1              ;455
0000ae  d2f5              BCS      |L7.156|
0000b0  e03d              B        |L7.302|
                  |L7.178|
;;;457            }
;;;458          }
;;;459        } else {  /* Fill */
;;;460          int Color, FillByte;
;;;461          Color    = (LCD_COLORINDEX & 1);
0000b2  8840              LDRH     r0,[r0,#2]  ; GUI_Context
0000b4  f0000601          AND      r6,r0,#1
;;;462          FillByte = (-Color) & 0xFF;
0000b8  4270              RSBS     r0,r6,#0
0000ba  b2c1              UXTB     r1,r0
;;;463          if (Bit < 7) {
0000bc  9802              LDR      r0,[sp,#8]
0000be  2807              CMP      r0,#7
0000c0  da14              BGE      |L7.236|
0000c2  464a              MOV      r2,r9                 ;441
;;;464            while ((Bit >= 0) && RemPixels--) {
;;;465              *pData &= ~(1 << Bit);
;;;466              *pData |= Color << (Bit--);
0000c4  e00c              B        |L7.224|
                  |L7.198|
0000c6  7823              LDRB     r3,[r4,#0]            ;465
0000c8  fa02f000          LSL      r0,r2,r0              ;465
0000cc  4383              BICS     r3,r3,r0              ;465
0000ce  7023              STRB     r3,[r4,#0]            ;465
0000d0  9802              LDR      r0,[sp,#8]
0000d2  b2db              UXTB     r3,r3
0000d4  fa06f700          LSL      r7,r6,r0
0000d8  433b              ORRS     r3,r3,r7
0000da  1e40              SUBS     r0,r0,#1
0000dc  9002              STR      r0,[sp,#8]
0000de  7023              STRB     r3,[r4,#0]
                  |L7.224|
0000e0  9802              LDR      r0,[sp,#8]            ;464
0000e2  2800              CMP      r0,#0                 ;464
0000e4  db01              BLT      |L7.234|
0000e6  1e6d              SUBS     r5,r5,#1              ;464
0000e8  d2ed              BCS      |L7.198|
                  |L7.234|
;;;467            }
;;;468            pData++;
0000ea  1c64              ADDS     r4,r4,#1
                  |L7.236|
;;;469          }
;;;470          if (RemPixels > 0) {
0000ec  2d00              CMP      r5,#0
0000ee  dd1e              BLE      |L7.302|
;;;471            int NumBytes = RemPixels >> 3;
0000f0  10ef              ASRS     r7,r5,#3
;;;472            if (NumBytes > 0) {
0000f2  2f00              CMP      r7,#0
0000f4  dd07              BLE      |L7.262|
;;;473              GUI_MEMSET(pData, FillByte, NumBytes);
0000f6  463a              MOV      r2,r7
0000f8  b2c9              UXTB     r1,r1
0000fa  4620              MOV      r0,r4
0000fc  f7fffffe          BL       GUI__memset
;;;474              pData += NumBytes;
000100  443c              ADD      r4,r4,r7
;;;475              RemPixels -= NumBytes << 3;
000102  eba505c7          SUB      r5,r5,r7,LSL #3
                  |L7.262|
;;;476            }
;;;477            Bit = 7;
000106  2007              MOVS     r0,#7
000108  4649              MOV      r1,r9                 ;441
;;;478            while (RemPixels--) {
;;;479              *pData &= ~(1 << Bit);
;;;480              *pData |= Color << (Bit--);
00010a  9002              STR      r0,[sp,#8]
00010c  e00d              B        |L7.298|
                  |L7.270|
00010e  9a02              LDR      r2,[sp,#8]            ;479
000110  7820              LDRB     r0,[r4,#0]            ;479
000112  fa01f202          LSL      r2,r1,r2              ;479
000116  4390              BICS     r0,r0,r2              ;479
000118  7020              STRB     r0,[r4,#0]            ;479
00011a  b2c2              UXTB     r2,r0
00011c  9802              LDR      r0,[sp,#8]
00011e  fa06f300          LSL      r3,r6,r0
000122  431a              ORRS     r2,r2,r3
000124  1e40              SUBS     r0,r0,#1
000126  9002              STR      r0,[sp,#8]
000128  7022              STRB     r2,[r4,#0]
                  |L7.298|
00012a  1e6d              SUBS     r5,r5,#1              ;478
00012c  d2ef              BCS      |L7.270|
                  |L7.302|
00012e  f1080801          ADD      r8,r8,#1              ;435
                  |L7.306|
000132  45d8              CMP      r8,r11                ;435
000134  dd85              BLE      |L7.66|
;;;481            }
;;;482          }
;;;483        }
;;;484      }
;;;485    }
000136  b007              ADD      sp,sp,#0x1c
000138  e8bd8ff0          POP      {r4-r11,pc}
;;;486    
                          ENDP

                  |L7.316|
                          DCD      GUI_Context

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

                  _GetPixelIndex PROC
;;;563    */
;;;564    static unsigned int _GetPixelIndex(int x, int y) {
000000  b508              PUSH     {r3,lr}
;;;565      U8* pData;
;;;566      int Bit;
;;;567      pData = _XY2PTR_BITOFFSET(x, y, &Bit);
000002  466a              MOV      r2,sp
000004  f7fffffe          BL       _XY2PTR_BITOFFSET
;;;568      return (*pData >> Bit) & 1;
000008  7800              LDRB     r0,[r0,#0]
00000a  9900              LDR      r1,[sp,#0]
00000c  40c8              LSRS     r0,r0,r1
00000e  f0000001          AND      r0,r0,#1
;;;569    }
000012  bd08              POP      {r3,pc}
;;;570    
                          ENDP


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

                  _SetPixelIndex PROC
;;;532    */
;;;533    static void _SetPixelIndex(int x, int y, int Index) {
000000  b5f8              PUSH     {r3-r7,lr}
000002  4606              MOV      r6,r0
;;;534      GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  4815              LDR      r0,|L9.92|
000006  460f              MOV      r7,r1                 ;533
000008  4615              MOV      r5,r2                 ;533
00000a  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4604              MOV      r4,r0
;;;535      U8* pData;
;;;536      int Bit;
;;;537      pData   = _XY2PTR_BITOFFSET(x, y, &Bit);
000014  466a              MOV      r2,sp
000016  4639              MOV      r1,r7
000018  4630              MOV      r0,r6
00001a  f7fffffe          BL       _XY2PTR_BITOFFSET
;;;538      *pData &= ~(1 << Bit);
00001e  9b00              LDR      r3,[sp,#0]
000020  7801              LDRB     r1,[r0,#0]
000022  2201              MOVS     r2,#1
000024  409a              LSLS     r2,r2,r3
000026  4391              BICS     r1,r1,r2
000028  7001              STRB     r1,[r0,#0]
;;;539      *pData |= (Index & 1) << Bit;
00002a  9b00              LDR      r3,[sp,#0]
00002c  f0050201          AND      r2,r5,#1
000030  b2c9              UXTB     r1,r1
000032  409a              LSLS     r2,r2,r3
000034  4311              ORRS     r1,r1,r2
000036  7001              STRB     r1,[r0,#0]
;;;540      if (pDev->hUsage) {
000038  f9b40018          LDRSH    r0,[r4,#0x18]
00003c  2800              CMP      r0,#0
00003e  d00c              BEQ      |L9.90|
;;;541        GUI_USAGE_AddPixel(GUI_USAGE_H2P(pDev->hUsage), x, y);
000040  f7fffffe          BL       GUI_ALLOC_h2p
000044  4605              MOV      r5,r0
000046  f9b40018          LDRSH    r0,[r4,#0x18]
00004a  f7fffffe          BL       GUI_ALLOC_h2p
00004e  6880              LDR      r0,[r0,#8]
000050  463a              MOV      r2,r7
000052  6803              LDR      r3,[r0,#0]
000054  4631              MOV      r1,r6
000056  4628              MOV      r0,r5
000058  4798              BLX      r3
                  |L9.90|
;;;542      }
;;;543    }
00005a  bdf8              POP      {r3-r7,pc}
;;;544    
                          ENDP

                  |L9.92|
                          DCD      GUI_Context

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

                  _XY2PTR_BITOFFSET PROC
;;;70     */
;;;71     static U8* _XY2PTR_BITOFFSET(int x, int y, int* pBitOffset) {
000000  b570              PUSH     {r4-r6,lr}
000002  4606              MOV      r6,r0
;;;72       GUI_ALLOC_DATATYPE_U Offset;
;;;73       GUI_MEMDEV* pDev;
;;;74       U8* pData;
;;;75       pDev  = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  480d              LDR      r0,|L10.60|
000006  460d              MOV      r5,r1                 ;71
000008  4614              MOV      r4,r2                 ;71
00000a  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000e  f7fffffe          BL       GUI_ALLOC_h2p
;;;76       pData = (U8*)(pDev + 1);
;;;77       #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;78         if ((x >= pDev->x0+pDev->XSize) | (x<pDev->x0) | (y >= pDev->y0+pDev->YSize) | (y<pDev->y0)) {
;;;79           GUI_DEBUG_ERROROUT2("_XY2PTR: parameters out of bounds", x, y);
;;;80         }
;;;81       #endif
;;;82       x -= pDev->x0;
000012  f9b01000          LDRSH    r1,[r0,#0]
000016  f100022c          ADD      r2,r0,#0x2c           ;76
;;;83       y -= pDev->y0;
00001a  8843              LDRH     r3,[r0,#2]
00001c  1a71              SUBS     r1,r6,r1              ;82
;;;84       Offset = (GUI_ALLOC_DATATYPE_U)(y) * (GUI_ALLOC_DATATYPE_U)(pDev->BytesPerLine) + (x >> 3);
00001e  68c0              LDR      r0,[r0,#0xc]
000020  1aeb              SUBS     r3,r5,r3              ;83
000022  4358              MULS     r0,r3,r0
000024  eb0000e1          ADD      r0,r0,r1,ASR #3
000028  b280              UXTH     r0,r0
;;;85       if (pBitOffset) {
00002a  b124              CBZ      r4,|L10.54|
;;;86         *pBitOffset = 7 - (x & 7);
00002c  f0010107          AND      r1,r1,#7
000030  f1c10107          RSB      r1,r1,#7
000034  6021              STR      r1,[r4,#0]
                  |L10.54|
;;;87       }
;;;88       return pData + Offset;
000036  4410              ADD      r0,r0,r2
;;;89     }
000038  bd70              POP      {r4-r6,pc}
;;;90     
                          ENDP

00003a  0000              DCW      0x0000
                  |L10.60|
                          DCD      GUI_Context

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

                  _XorPixel PROC
;;;548    */
;;;549    static void _XorPixel(int x, int y) {
000000  b5f8              PUSH     {r3-r7,lr}
000002  4605              MOV      r5,r0
;;;550      GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  4811              LDR      r0,|L11.76|
000006  460e              MOV      r6,r1                 ;549
000008  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000c  f7fffffe          BL       GUI_ALLOC_h2p
000010  4604              MOV      r4,r0
;;;551      U8* pData;
;;;552      int Bit;
;;;553      pData   = _XY2PTR_BITOFFSET(x, y, &Bit);
000012  466a              MOV      r2,sp
000014  4631              MOV      r1,r6
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       _XY2PTR_BITOFFSET
;;;554      *pData ^= (1 << Bit);
00001c  9b00              LDR      r3,[sp,#0]
00001e  7801              LDRB     r1,[r0,#0]
000020  2201              MOVS     r2,#1
000022  409a              LSLS     r2,r2,r3
000024  4051              EORS     r1,r1,r2
000026  7001              STRB     r1,[r0,#0]
;;;555      if (pDev->hUsage) {
000028  f9b40018          LDRSH    r0,[r4,#0x18]
00002c  2800              CMP      r0,#0
00002e  d00c              BEQ      |L11.74|
;;;556        GUI_USAGE_AddPixel(GUI_USAGE_H2P(pDev->hUsage), x, y);
000030  f7fffffe          BL       GUI_ALLOC_h2p
000034  4607              MOV      r7,r0
000036  f9b40018          LDRSH    r0,[r4,#0x18]
00003a  f7fffffe          BL       GUI_ALLOC_h2p
00003e  6880              LDR      r0,[r0,#8]
000040  4632              MOV      r2,r6
000042  6803              LDR      r3,[r0,#0]
000044  4629              MOV      r1,r5
000046  4638              MOV      r0,r7
000048  4798              BLX      r3
                  |L11.74|
;;;557      }
;;;558    }
00004a  bdf8              POP      {r3-r7,pc}
;;;559    
                          ENDP

                  |L11.76|
                          DCD      GUI_Context

                          AREA ||.constdata||, DATA, READONLY, ALIGN=1

                  aID
000000  00000001          DCW      0x0000,0x0001
000004  00020003          DCW      0x0002,0x0003
000008  00040005          DCW      0x0004,0x0005
00000c  00060007          DCW      0x0006,0x0007
000010  00080009          DCW      0x0008,0x0009
000014  000a000b          DCW      0x000a,0x000b
000018  000c000d          DCW      0x000c,0x000d
00001c  000e000f          DCW      0x000e,0x000f

                          AREA ||area_number.15||, DATA, READONLY, ALIGN=2

                          EXPORTAS ||area_number.15||, ||.constdata||
                  GUI_MEMDEV__APIList1
                          DCD      GUI_MEMDEV__Color2Index
                          DCD      GUI_MEMDEV__Index2Color
                          DCD      GUI_MEMDEV__GetIndexMask
                          DCD      _DrawBitmap
                          DCD      _DrawHLine
                          DCD      _DrawVLine
                          DCD      _FillRect
                          DCD      _GetPixelIndex
                          DCD      GUI_MEMDEV__GetRect
                          DCD      _SetPixelIndex
                          DCD      _XorPixel
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000001

⌨️ 快捷键说明

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