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

📄 gui_bmp.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000012  2800              CMP      r0,#0
000014  da00              BGE      |L3.24|
000016  4240              RSBS     r0,r0,#0
                  |L3.24|
;;;139    }
000018  bd08              POP      {r3,pc}
;;;140    
                          ENDP


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

                  _DrawBitmap_24bpp PROC
;;;87     */
;;;88     static int _DrawBitmap_24bpp(const U8 * pData, int x0, int y0, int XSize, int YSize) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
000004  4605              MOV      r5,r0
000006  4689              MOV      r9,r1
000008  4692              MOV      r10,r2
00000a  461f              MOV      r7,r3
;;;89       int x, y, BytesPerLine, Step;
;;;90       Step = _GetStep(&YSize, &y);
00000c  4669              MOV      r1,sp
00000e  a80a              ADD      r0,sp,#0x28
000010  f7fffffe          BL       _GetStep
000014  0006              MOVS     r6,r0
;;;91       if (!Step) {
000016  d102              BNE      |L4.30|
;;;92         return 1;
000018  2001              MOVS     r0,#1
                  |L4.26|
;;;93       }
;;;94       BytesPerLine = ((24 * XSize + 31) >> 5) << 2;
;;;95       for (; (y < YSize) && (y >= 0); y += Step) {
;;;96         for (x = 0; x < XSize; x++) {
;;;97           const U8 * pColor = pData + 3 * x;
;;;98           U8 r, g, b;
;;;99           b = *(pColor);
;;;100          g = *(pColor + 1);
;;;101          r = *(pColor + 2);
;;;102          LCD_SetPixelIndex(x0 + x, y0 + y, LCD_Color2Index(((U32)b << 16) | (g << 8) | r));
;;;103        }
;;;104        pData += BytesPerLine;
;;;105      }
;;;106      return 0;
;;;107    }
00001a  e8bd8ff8          POP      {r3-r11,pc}
                  |L4.30|
00001e  eb070047          ADD      r0,r7,r7,LSL #1       ;94
000022  211f              MOVS     r1,#0x1f              ;94
000024  eb0100c0          ADD      r0,r1,r0,LSL #3       ;94
000028  1140              ASRS     r0,r0,#5              ;94
00002a  ea4f0880          LSL      r8,r0,#2              ;94
00002e  9800              LDR      r0,[sp,#0]            ;95
000030  e01c              B        |L4.108|
                  |L4.50|
000032  2400              MOVS     r4,#0                 ;96
000034  e014              B        |L4.96|
000036  bf00              NOP                            ;97
                  |L4.56|
000038  eb040044          ADD      r0,r4,r4,LSL #1       ;97
00003c  4428              ADD      r0,r0,r5              ;97
00003e  7802              LDRB     r2,[r0,#0]            ;99
000040  7841              LDRB     r1,[r0,#1]            ;100
000042  7883              LDRB     r3,[r0,#2]            ;101
000044  0410              LSLS     r0,r2,#16             ;102
000046  ea402001          ORR      r0,r0,r1,LSL #8       ;102
00004a  4318              ORRS     r0,r0,r3              ;102
00004c  f7fffffe          BL       LCD_Color2Index
000050  9900              LDR      r1,[sp,#0]            ;102
000052  4602              MOV      r2,r0                 ;102
000054  4451              ADD      r1,r1,r10             ;102
000056  eb090004          ADD      r0,r9,r4              ;102
00005a  f7fffffe          BL       LCD_SetPixelIndex
00005e  1c64              ADDS     r4,r4,#1              ;96
                  |L4.96|
000060  42bc              CMP      r4,r7                 ;96
000062  dbe9              BLT      |L4.56|
000064  9800              LDR      r0,[sp,#0]            ;95
000066  4445              ADD      r5,r5,r8              ;104
000068  4430              ADD      r0,r0,r6              ;95
00006a  9000              STR      r0,[sp,#0]            ;95
                  |L4.108|
00006c  990a              LDR      r1,[sp,#0x28]         ;95
00006e  4288              CMP      r0,r1                 ;95
000070  da01              BGE      |L4.118|
000072  2800              CMP      r0,#0                 ;95
000074  dadd              BGE      |L4.50|
                  |L4.118|
000076  2000              MOVS     r0,#0                 ;106
000078  e7cf              B        |L4.26|
;;;108    
                          ENDP


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

                  _DrawBitmap_Pal PROC
;;;50     */
;;;51     static int _DrawBitmap_Pal(const U8 * pData, int x0, int y0, int XSize, int YSize, int Bpp, int NumColors) {
000000  e92d4fff          PUSH     {r0-r11,lr}
000004  b087              SUB      sp,sp,#0x1c
000006  4604              MOV      r4,r0
000008  4692              MOV      r10,r2
00000a  4698              MOV      r8,r3
;;;52       int i, y, Step;
;;;53       int BytesPerLine = 0;
00000c  2600              MOVS     r6,#0
;;;54       Step = _GetStep(&YSize, &y);
00000e  a906              ADD      r1,sp,#0x18
000010  a814              ADD      r0,sp,#0x50
000012  f8dd9058          LDR      r9,[sp,#0x58]
000016  f7fffffe          BL       _GetStep
00001a  0007              MOVS     r7,r0
;;;55       if (!Step) {
00001c  d103              BNE      |L5.38|
;;;56         return 1;
00001e  2001              MOVS     r0,#1
                  |L5.32|
;;;57       }
;;;58       for (i = 0; i < NumColors; i++) {
;;;59         U8 r, g, b;
;;;60         b = *(pData);
;;;61         g = *(pData + 1);
;;;62         r = *(pData + 2);
;;;63         pData += 4;
;;;64         LCD__aConvTable[i] = LCD_Color2Index(((U32)b << 16) | (g << 8) | r);
;;;65       }
;;;66       switch (Bpp) {
;;;67         case 1:
;;;68           BytesPerLine = ((XSize + 31) >> 5) << 2;
;;;69           break;
;;;70         case 4:
;;;71           BytesPerLine = (((XSize << 2) + 31) >> 5) << 2;
;;;72           break;
;;;73         case 8:
;;;74           BytesPerLine = ((XSize +  3) >> 2) << 2;
;;;75           break;
;;;76       }
;;;77       for (; (y < YSize) && (y >= 0); y += Step) {
;;;78         LCD_DrawBitmap(x0, y0 + y, XSize, 1, 1, 1, Bpp, XSize, pData, LCD__aConvTable);
;;;79         pData += BytesPerLine;
;;;80       }
;;;81       return 0;
;;;82     }
000020  b00b              ADD      sp,sp,#0x2c
000022  e8bd8ff0          POP      {r4-r11,pc}
                  |L5.38|
000026  2500              MOVS     r5,#0                 ;58
000028  f8dfb080          LDR      r11,|L5.172|
00002c  e00c              B        |L5.72|
                  |L5.46|
00002e  7822              LDRB     r2,[r4,#0]            ;60
000030  7860              LDRB     r0,[r4,#1]            ;61
000032  78a1              LDRB     r1,[r4,#2]            ;62
000034  0412              LSLS     r2,r2,#16             ;64
000036  ea422000          ORR      r0,r2,r0,LSL #8       ;64
00003a  1d24              ADDS     r4,r4,#4              ;63
00003c  4308              ORRS     r0,r0,r1              ;64
00003e  f7fffffe          BL       LCD_Color2Index
000042  f82b0015          STRH     r0,[r11,r5,LSL #1]    ;64
000046  1c6d              ADDS     r5,r5,#1              ;58
                  |L5.72|
000048  454d              CMP      r5,r9                 ;58
00004a  dbf0              BLT      |L5.46|
00004c  9815              LDR      r0,[sp,#0x54]         ;66
00004e  2801              CMP      r0,#1                 ;66
000050  d008              BEQ      |L5.100|
000052  2804              CMP      r0,#4                 ;66
000054  d009              BEQ      |L5.106|
000056  2808              CMP      r0,#8                 ;66
000058  d120              BNE      |L5.156|
00005a  f1080003          ADD      r0,r8,#3              ;74
00005e  f0200603          BIC      r6,r0,#3              ;74
000062  e01b              B        |L5.156|
                  |L5.100|
000064  f108001f          ADD      r0,r8,#0x1f           ;68
000068  e002              B        |L5.112|
                  |L5.106|
00006a  211f              MOVS     r1,#0x1f              ;71
00006c  eb010088          ADD      r0,r1,r8,LSL #2       ;71
                  |L5.112|
000070  1140              ASRS     r0,r0,#5              ;71
000072  0086              LSLS     r6,r0,#2              ;71
000074  e012              B        |L5.156|
                  |L5.118|
000076  9815              LDR      r0,[sp,#0x54]         ;78
000078  e9cd8403          STRD     r8,r4,[sp,#0xc]       ;78
00007c  4b0b              LDR      r3,|L5.172|
00007e  9305              STR      r3,[sp,#0x14]         ;78
000080  2301              MOVS     r3,#1                 ;78
000082  9002              STR      r0,[sp,#8]            ;78
000084  9300              STR      r3,[sp,#0]            ;78
000086  eb0a0105          ADD      r1,r10,r5             ;78
00008a  4642              MOV      r2,r8                 ;78
00008c  9301              STR      r3,[sp,#4]            ;78
00008e  9808              LDR      r0,[sp,#0x20]         ;78
000090  f7fffffe          BL       LCD_DrawBitmap
000094  9806              LDR      r0,[sp,#0x18]         ;77
000096  4434              ADD      r4,r4,r6              ;79
000098  4438              ADD      r0,r0,r7              ;77
00009a  9006              STR      r0,[sp,#0x18]         ;77
                  |L5.156|
00009c  9d06              LDR      r5,[sp,#0x18]         ;77
00009e  9814              LDR      r0,[sp,#0x50]         ;77
0000a0  4285              CMP      r5,r0                 ;77
0000a2  da01              BGE      |L5.168|
0000a4  2d00              CMP      r5,#0                 ;77
0000a6  dae6              BGE      |L5.118|
                  |L5.168|
0000a8  2000              MOVS     r0,#0                 ;81
0000aa  e7b9              B        |L5.32|
;;;83     
                          ENDP

                  |L5.172|
                          DCD      LCD__aConvTable

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

                  _GetStep PROC
;;;33     */
;;;34     static int _GetStep(int * pYSize, int * pY) {
000000  6802              LDR      r2,[r0,#0]
;;;35       if (*pYSize > 0) {
000002  2a00              CMP      r2,#0
000004  dd05              BLE      |L6.18|
;;;36         *pY = *pYSize - 1;
000006  f1a20201          SUB      r2,r2,#1
;;;37         return -1;
00000a  f04f30ff          MOV      r0,#0xffffffff
00000e  600a              STR      r2,[r1,#0]
;;;38       } else if (*pYSize < 0) {
;;;39         *pYSize = -*pYSize;
;;;40         *pY = 0;
;;;41         return 1;
;;;42       } else {
;;;43         return 0;
;;;44       }
;;;45     }
000010  4770              BX       lr
                  |L6.18|
000012  da08              BGE      |L6.38|
000014  f1c20200          RSB      r2,r2,#0              ;39
000018  6002              STR      r2,[r0,#0]            ;40
00001a  f04f0000          MOV      r0,#0                 ;40
00001e  6008              STR      r0,[r1,#0]            ;41
000020  f04f0001          MOV      r0,#1                 ;41
000024  4770              BX       lr
                  |L6.38|
000026  2000              MOVS     r0,#0                 ;43
000028  4770              BX       lr
;;;46     
                          ENDP

⌨️ 快捷键说明

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