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

📄 guidev_writeex.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00003e  f04f0c00          MOV      r12,#0
000042  f04f35ff          MOV      r5,#0xffffffff        ;97
;;;99       for (xi = 0; xi < xSize; xi++) {
000046  46e0              MOV      r8,r12
000048  fb03fb02          MUL      r11,r3,r2
00004c  e051              B        |L4.242|
                  |L4.78|
;;;100        xiMag += xMagAbs;
00004e  9902              LDR      r1,[sp,#8]
000050  440e              ADD      r6,r6,r1
;;;101        if (xiMag >= 1000) {  
000052  f5b67f7a          CMP      r6,#0x3e8
000056  db4a              BLT      |L4.238|
;;;102          if (x <= xMax) {
000058  9901              LDR      r1,[sp,#4]
00005a  428c              CMP      r4,r1
00005c  dc6a              BGT      |L4.308|
;;;103            xAct  = (xMag > 0) ? xi : xSize - xi - 1;
00005e  9a11              LDR      r2,[sp,#0x44]
000060  4641              MOV      r1,r8
000062  2a00              CMP      r2,#0
000064  dc03              BGT      |L4.110|
000066  9910              LDR      r1,[sp,#0x40]
000068  eba10108          SUB      r1,r1,r8
00006c  1e49              SUBS     r1,r1,#1
                  |L4.110|
;;;104            Index = _GetPixelIndex(pData, xOff + xAct, yOff, bpp, BytesPerLine);
00006e  9a05              LDR      r2,[sp,#0x14]
000070  9b15              LDR      r3,[sp,#0x54]
000072  4411              ADD      r1,r1,r2
000074  9a13              LDR      r2,[sp,#0x4c]
000076  2a08              CMP      r2,#8
000078  465a              MOV      r2,r11
00007a  d102              BNE      |L4.130|
00007c  4419              ADD      r1,r1,r3
00007e  5c51              LDRB     r1,[r2,r1]
000080  e002              B        |L4.136|
                  |L4.130|
000082  eb030141          ADD      r1,r3,r1,LSL #1
000086  5a51              LDRH     r1,[r2,r1]
                  |L4.136|
000088  fa1ffa81          UXTH     r10,r1
;;;105            if ((Index != IndexPrev) || (xStart == -1)) {
00008c  4582              CMP      r10,r0
;;;106              if ((xStart != -1) && (x > xMin)) {
00008e  f1050101          ADD      r1,r5,#1
000092  d101              BNE      |L4.152|
000094  bb21              CBNZ     r1,|L4.224|
000096  e01f              B        |L4.216|
                  |L4.152|
000098  b1f1              CBZ      r1,|L4.216|
00009a  454c              CMP      r4,r9
00009c  dd1c              BLE      |L4.216|
;;;107                /* Clear cache */
;;;108                if (xStart < xMin) {
00009e  454d              CMP      r5,r9
0000a0  da00              BGE      |L4.164|
;;;109                  xStart = xMin;
0000a2  464d              MOV      r5,r9
                  |L4.164|
;;;110                }
;;;111                LCD_SetColorIndex(IndexPrev);
0000a4  f7fffffe          BL       LCD_SetColorIndex
;;;112                if (Alpha == 256 || !GUI_Context.hDevData) {
0000a8  9812              LDR      r0,[sp,#0x48]
0000aa  f5b07f80          CMP      r0,#0x100
0000ae  d003              BEQ      |L4.184|
0000b0  4828              LDR      r0,|L4.340|
0000b2  f8b0004c          LDRH     r0,[r0,#0x4c]  ; GUI_Context
0000b6  b940              CBNZ     r0,|L4.202|
                  |L4.184|
;;;113                  LCDDEV_L0_DrawHLine(x0 + xStart, y0, x0 + x - 1);
0000b8  4926              LDR      r1,|L4.340|
0000ba  193a              ADDS     r2,r7,r4
0000bc  6c89              LDR      r1,[r1,#0x48]  ; GUI_Context
0000be  1e52              SUBS     r2,r2,#1
0000c0  690b              LDR      r3,[r1,#0x10]
0000c2  1978              ADDS     r0,r7,r5
0000c4  9904              LDR      r1,[sp,#0x10]
0000c6  4798              BLX      r3
0000c8  e006              B        |L4.216|
                  |L4.202|
;;;114                } else {
;;;115                  _DrawHLineAlpha(x0 + xStart, y0, x0 + x - 1, Alpha);
0000ca  193a              ADDS     r2,r7,r4
0000cc  1e52              SUBS     r2,r2,#1
0000ce  1978              ADDS     r0,r7,r5
0000d0  9b12              LDR      r3,[sp,#0x48]
0000d2  9904              LDR      r1,[sp,#0x10]
0000d4  f7fffffe          BL       _DrawHLineAlpha
                  |L4.216|
;;;116                }
;;;117              }
;;;118              IndexPrev = Index;
0000d8  4650              MOV      r0,r10
;;;119              xStart    = x;
0000da  4625              MOV      r5,r4
;;;120              Cached    = 1;
0000dc  f04f0c01          MOV      r12,#1
                  |L4.224|
0000e0  f44f717a          MOV      r1,#0x3e8             ;95
                  |L4.228|
;;;121            }
;;;122            do {
;;;123              x++;
0000e4  1c64              ADDS     r4,r4,#1
;;;124              xiMag -= 1000;
0000e6  f5a6767a          SUB      r6,r6,#0x3e8
;;;125            } while (xiMag >= 1000);
0000ea  428e              CMP      r6,r1
0000ec  dafa              BGE      |L4.228|
                  |L4.238|
0000ee  f1080801          ADD      r8,r8,#1              ;99
                  |L4.242|
0000f2  9a10              LDR      r2,[sp,#0x40]         ;99
0000f4  4590              CMP      r8,r2                 ;99
0000f6  dbaa              BLT      |L4.78|
                  |L4.248|
;;;126          } else {
;;;127            x = xMax + 1;
;;;128            break;
;;;129          }
;;;130        }
;;;131      }
;;;132      if (Cached && (x > xMin)) {
0000f8  f1bc0f00          CMP      r12,#0
0000fc  d026              BEQ      |L4.332|
0000fe  454c              CMP      r4,r9
000100  dd24              BLE      |L4.332|
;;;133        /* Clear cache */
;;;134        if (xStart < xMin) {
000102  454d              CMP      r5,r9
000104  da00              BGE      |L4.264|
;;;135          xStart = xMin;
000106  464d              MOV      r5,r9
                  |L4.264|
;;;136        }
;;;137        LCD_SetColorIndex(Index);
000108  4650              MOV      r0,r10
00010a  f7fffffe          BL       LCD_SetColorIndex
;;;138        if (Alpha == 256 || !GUI_Context.hDevData) {
00010e  9812              LDR      r0,[sp,#0x48]
000110  f5b07f80          CMP      r0,#0x100
000114  d003              BEQ      |L4.286|
000116  480f              LDR      r0,|L4.340|
000118  f8b0004c          LDRH     r0,[r0,#0x4c]  ; GUI_Context
00011c  b960              CBNZ     r0,|L4.312|
                  |L4.286|
;;;139          LCDDEV_L0_DrawHLine(x0 + xStart, y0, x0 + x - 1);
00011e  490d              LDR      r1,|L4.340|
000120  193a              ADDS     r2,r7,r4
000122  6c89              LDR      r1,[r1,#0x48]  ; GUI_Context
000124  1e52              SUBS     r2,r2,#1
000126  690b              LDR      r3,[r1,#0x10]
000128  9904              LDR      r1,[sp,#0x10]
00012a  1978              ADDS     r0,r7,r5
00012c  b007              ADD      sp,sp,#0x1c
00012e  e8bd4ff0          POP      {r4-r11,lr}
000132  4718              BX       r3
                  |L4.308|
000134  1c4c              ADDS     r4,r1,#1              ;127
000136  e7df              B        |L4.248|
                  |L4.312|
;;;140        } else {
;;;141          _DrawHLineAlpha(x0 + xStart, y0, x0 + x - 1, Alpha);
000138  193a              ADDS     r2,r7,r4
00013a  1e52              SUBS     r2,r2,#1
00013c  9b12              LDR      r3,[sp,#0x48]
00013e  9904              LDR      r1,[sp,#0x10]
000140  1978              ADDS     r0,r7,r5
000142  b007              ADD      sp,sp,#0x1c
000144  e8bd4ff0          POP      {r4-r11,lr}
000148  f7ffbffe          B.W      _DrawHLineAlpha
                  |L4.332|
;;;142        }
;;;143      }
;;;144    }
00014c  b007              ADD      sp,sp,#0x1c
00014e  e8bd8ff0          POP      {r4-r11,pc}
;;;145    
                          ENDP

000152  0000              DCW      0x0000
                  |L4.340|
                          DCD      GUI_Context

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

                  _DrawHLineAlpha PROC
;;;53     */
;;;54     static void _DrawHLineAlpha(int x0, int y, int x1, int Intens) {
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;55       GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  4f26              LDR      r7,|L5.160|
000006  4681              MOV      r9,r0                 ;54
000008  468a              MOV      r10,r1                ;54
00000a  4615              MOV      r5,r2                 ;54
00000c  469b              MOV      r11,r3                ;54
00000e  f9b7004c          LDRSH    r0,[r7,#0x4c]  ; GUI_Context
000012  f7fffffe          BL       GUI_ALLOC_h2p
;;;56       GUI_USAGE_h hUsage = pDev->hUsage; 
000016  f9b06018          LDRSH    r6,[r0,#0x18]
;;;57       LCD_COLOR Color1, Color2;
;;;58       int Len = x1 - x0 + 1;
00001a  eba50509          SUB      r5,r5,r9
00001e  4604              MOV      r4,r0                 ;55
000020  1c6d              ADDS     r5,r5,#1
;;;59       if (hUsage) {
000022  b16e              CBZ      r6,|L5.64|
;;;60         GUI_USAGE_AddHLine(GUI_USAGE_H2P(hUsage), x0, y, Len);
000024  4630              MOV      r0,r6
000026  f7fffffe          BL       GUI_ALLOC_h2p
00002a  4680              MOV      r8,r0
00002c  4630              MOV      r0,r6
00002e  f7fffffe          BL       GUI_ALLOC_h2p
000032  6880              LDR      r0,[r0,#8]
000034  462b              MOV      r3,r5
000036  6846              LDR      r6,[r0,#4]
000038  4652              MOV      r2,r10
00003a  4649              MOV      r1,r9
00003c  4640              MOV      r0,r8
00003e  47b0              BLX      r6
                  |L5.64|
;;;61       }
;;;62       Color1 = LCD_Index2Color(LCD_COLORINDEX);
000040  8878              LDRH     r0,[r7,#2]  ; GUI_Context
000042  f7fffffe          BL       LCD_Index2Color
000046  4606              MOV      r6,r0
;;;63       if (pDev->BitsPerPixel == 8) {
000048  6920              LDR      r0,[r4,#0x10]
;;;64         U8* pData;
;;;65         pData  = (U8*) GUI_MEMDEV__XY2PTR(x0, y);
00004a  4651              MOV      r1,r10
00004c  2808              CMP      r0,#8                 ;63
00004e  4648              MOV      r0,r9
000050  d113              BNE      |L5.122|
000052  f7fffffe          BL       GUI_MEMDEV__XY2PTR
000056  4604              MOV      r4,r0
;;;66         while (Len--) {
000058  e00b              B        |L5.114|
                  |L5.90|
;;;67           Color2 = LCD_Index2Color(*(pData));
00005a  7820              LDRB     r0,[r4,#0]
00005c  f7fffffe          BL       LCD_Index2Color

⌨️ 快捷键说明

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