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

📄 guidev_usagebm.txt

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

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

                  GUI_USAGE_BM_AddHLine PROC
;;;75     */
;;;76     static void GUI_USAGE_BM_AddHLine(GUI_USAGE* p, int x, int y, int len) {
000000  b570              PUSH     {r4-r6,lr}
;;;77     #if 0   /* Enable for the slower, but smaller version ... xxx*/
;;;78       while (len-- >0)
;;;79         GUI_USAGE_BM_AddPixel(h, x++,y);
;;;80     #else
;;;81       U8* pData;
;;;82       GUI_USAGE_BM * pThis = (GUI_USAGE_BM*)p;
;;;83       /* Asserts */
;;;84       GUI_DEBUG_ERROROUT3_IF( x<pThis->Public.x0, "GUIDEV.c: MarkPixels: negative x offset, Act= %d, Border= %d, Clip= %d"
;;;85                         ,x, pThis->Public.x0, GUI_Context.ClipRect.x0);
;;;86       /* Calculate pointers */
;;;87       x -= pThis->Public.x0;
000002  f9b05000          LDRSH    r5,[r0,#0]
;;;88       pData =  (U8*)(pThis+1); 
000006  f1000414          ADD      r4,r0,#0x14
;;;89       pData += (y-pThis->Public.y0) * pThis->Private.BytesPerLine;
00000a  f9b06002          LDRSH    r6,[r0,#2]
00000e  6900              LDR      r0,[r0,#0x10]
000010  1b92              SUBS     r2,r2,r6
000012  1b49              SUBS     r1,r1,r5              ;87
000014  fb024000          MLA      r0,r2,r0,r4
;;;90       pData += x>>3;
;;;91       /* Set bits */
;;;92       {  
;;;93         int x1 = x+len-1;   /* last pixel */
000018  18ca              ADDS     r2,r1,r3
00001a  1e52              SUBS     r2,r2,#1
;;;94         int NumBytes = (x1>>3) - (x>>3);
00001c  10d3              ASRS     r3,r2,#3
00001e  ebb304e1          SUBS     r4,r3,r1,ASR #3
000022  eb0000e1          ADD      r0,r0,r1,ASR #3       ;90
;;;95         U8 Mask0 = 0xff >> (x&7);
000026  f0010507          AND      r5,r1,#7
00002a  f04f03ff          MOV      r3,#0xff
;;;96         U8 Mask1 = 0xff << (7-(x1&7));
00002e  f0020207          AND      r2,r2,#7
000032  fa23f105          LSR      r1,r3,r5              ;95
000036  f1c20207          RSB      r2,r2,#7
00003a  fa03f302          LSL      r3,r3,r2
;;;97         if (NumBytes ==0) {
;;;98           *pData |= (Mask0&Mask1);
00003e  7802              LDRB     r2,[r0,#0]
000040  b2de              UXTB     r6,r3                 ;96
000042  d103              BNE      |L1.76|
000044  4031              ANDS     r1,r1,r6
000046  430a              ORRS     r2,r2,r1
000048  7002              STRB     r2,[r0,#0]
;;;99         } else {
;;;100          *pData++ |= Mask0;               /* Mark first byte */
;;;101          /* Mark middle bytes */
;;;102          if (--NumBytes > 0) {
;;;103            memset (pData, 0xff, NumBytes);
;;;104            pData += NumBytes;
;;;105          }
;;;106          *pData |= Mask1;                 /* Mark last bytes */
;;;107        }
;;;108      }
;;;109    #endif
;;;110    }
00004a  bd70              POP      {r4-r6,pc}
                  |L1.76|
00004c  430a              ORRS     r2,r2,r1              ;100
00004e  1c45              ADDS     r5,r0,#1              ;100
000050  1e64              SUBS     r4,r4,#1              ;102
000052  7002              STRB     r2,[r0,#0]            ;100
000054  2c00              CMP      r4,#0                 ;102
000056  dd05              BLE      |L1.100|
000058  22ff              MOVS     r2,#0xff              ;103
00005a  4621              MOV      r1,r4                 ;103
00005c  4628              MOV      r0,r5                 ;103
00005e  f7fffffe          BL       __aeabi_memset
000062  4425              ADD      r5,r5,r4              ;104
                  |L1.100|
000064  7828              LDRB     r0,[r5,#0]            ;106
000066  4330              ORRS     r0,r0,r6              ;106
000068  7028              STRB     r0,[r5,#0]            ;106
00006a  bd70              POP      {r4-r6,pc}
;;;111    
                          ENDP


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

                  GUI_USAGE_BM_AddPixel PROC
;;;54     */
;;;55     static void GUI_USAGE_BM_AddPixel(GUI_USAGE* p, int x, int y) {
000000  b530              PUSH     {r4,r5,lr}
;;;56       U8* pData;
;;;57       GUI_USAGE_BM * pThis = (GUI_USAGE_BM*)p;
;;;58       #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;59         if ((x >= pThis->Public.x0 + pThis->Public.XSize) | (x < pThis->Public.x0)
;;;60           | (y >= pThis->Public.y0 + pThis->Public.YSize) | (y < pThis->Public.y0))
;;;61         {
;;;62           GUI_DEBUG_ERROROUT2("GUI_USAGE_BM_AddPixel: parameters out of bounds",x,y);
;;;63         }
;;;64       #endif
;;;65       x -= pThis->Public.x0;
000002  f9b04000          LDRSH    r4,[r0,#0]
;;;66       pData =  (U8*)(pThis+1); 
000006  f1000314          ADD      r3,r0,#0x14
;;;67       pData += (y-pThis->Public.y0) * pThis->Private.BytesPerLine;
00000a  f9b05002          LDRSH    r5,[r0,#2]
00000e  1b09              SUBS     r1,r1,r4              ;65
000010  6900              LDR      r0,[r0,#0x10]
000012  1b52              SUBS     r2,r2,r5
000014  fb023000          MLA      r0,r2,r0,r3
;;;68       pData += x>>3;
000018  eb0000e1          ADD      r0,r0,r1,ASR #3
;;;69       *pData|= 0x80>>(x&7);
00001c  f0010307          AND      r3,r1,#7
000020  7802              LDRB     r2,[r0,#0]
000022  2180              MOVS     r1,#0x80
000024  40d9              LSRS     r1,r1,r3
000026  430a              ORRS     r2,r2,r1
000028  7002              STRB     r2,[r0,#0]
;;;70     }
00002a  bd30              POP      {r4,r5,pc}
;;;71     
                          ENDP


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

                  GUI_USAGE_BM_Clear PROC
;;;115    */
;;;116    static void GUI_USAGE_BM_Clear(GUI_USAGE* p) {
000000  f9b01006          LDRSH    r1,[r0,#6]
;;;117      GUI_USAGE_BM * pThis = (GUI_USAGE_BM*) p;
;;;118      memset (pThis+1, 0, pThis->Public.YSize * pThis->Private.BytesPerLine);
000004  6902              LDR      r2,[r0,#0x10]
000006  4351              MULS     r1,r2,r1
000008  3014              ADDS     r0,r0,#0x14
00000a  f7ffbffe          B.W      __aeabi_memclr4
;;;119    }
;;;120    
                          ENDP


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

                  GUI_USAGE_BM_Create PROC
;;;214    */
;;;215    GUI_USAGE_Handle GUI_USAGE_BM_Create(int x0, int y0, int xsize, int ysize, int Flags) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  4680              MOV      r8,r0
;;;216      int MemSize;
;;;217      int BytesPerLine;
;;;218      GUI_USAGE_Handle hMem;
;;;219      GUI_USE_PARA(Flags);
;;;220      BytesPerLine = ((xsize+15) >>4)<<1;  /* 2 byte alignment */
000006  f102000f          ADD      r0,r2,#0xf
00000a  1100              ASRS     r0,r0,#4
00000c  0045              LSLS     r5,r0,#1
;;;221      MemSize = ysize*BytesPerLine +sizeof(GUI_USAGE_BM);
00000e  fb03f005          MUL      r0,r3,r5
000012  3014              ADDS     r0,r0,#0x14
000014  4689              MOV      r9,r1                 ;215
000016  4616              MOV      r6,r2                 ;215
000018  461f              MOV      r7,r3                 ;215
;;;222      hMem = GUI_ALLOC_AllocZero(MemSize);
00001a  b200              SXTH     r0,r0
00001c  f7fffffe          BL       GUI_ALLOC_AllocZero
000020  0004              MOVS     r4,r0
;;;223      /* Check if we can alloc sufficient memory */
;;;224      if (!hMem) {
000022  d00e              BEQ      |L4.66|
;;;225        GUI_DEBUG_ERROROUT("GUI_USAGE_BM_Create: Too little memory");
;;;226        return 0;    
;;;227      }
;;;228      {
;;;229        GUI_USAGE_BM * pUsage;
;;;230        GUI_LOCK();
;;;231        pUsage = (GUI_USAGE_BM*)GUI_ALLOC_h2p(hMem);
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       GUI_ALLOC_h2p
;;;232        pUsage->Public.x0    = x0;
00002a  f8a08000          STRH     r8,[r0,#0]
;;;233        pUsage->Public.y0    = y0;
00002e  f8a09002          STRH     r9,[r0,#2]
;;;234        pUsage->Public.XSize = xsize;
000032  8086              STRH     r6,[r0,#4]
;;;235        pUsage->Public.YSize = ysize;
000034  80c7              STRH     r7,[r0,#6]
;;;236        pUsage->Public.pAPI  = &API;

⌨️ 快捷键说明

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