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

📄 guidev.txt

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

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

                  GUI_MEMDEV_CopyToLCD PROC
;;;344    */
;;;345    void GUI_MEMDEV_CopyToLCD(GUI_MEMDEV_Handle hMem) {
000000  4901              LDR      r1,|L1.8|
;;;346      GUI_MEMDEV_CopyToLCDAt(hMem, GUI_POS_AUTO, GUI_POS_AUTO);
000002  460a              MOV      r2,r1
000004  f7ffbffe          B.W      GUI_MEMDEV_CopyToLCDAt
;;;347    }
;;;348    
                          ENDP

                  |L1.8|
                          DCD      0xfffff001

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

                  GUI_MEMDEV_CopyToLCDAt PROC
;;;296    */
;;;297    void GUI_MEMDEV_CopyToLCDAt(GUI_MEMDEV_Handle hMem, int x, int y) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  ea5f0800          MOVS     r8,r0
000008  460d              MOV      r5,r1
00000a  4616              MOV      r6,r2
;;;298      if (hMem) {
00000c  d030              BEQ      |L2.112|
;;;299        GUI_MEMDEV_Handle hMemPrev;
;;;300        GUI_MEMDEV* pDevData;
;;;301      #if (GUI_WINSUPPORT)
;;;302        GUI_RECT r;
;;;303      #endif
;;;304      #if GUI_NUM_LAYERS > 1
;;;305        int PrevLayer;
;;;306      #endif
;;;307        GUI_LOCK();
;;;308        hMemPrev = GUI_Context.hDevData;
00000e  4819              LDR      r0,|L2.116|
000010  f9b0704c          LDRSH    r7,[r0,#0x4c]  ; GUI_Context
;;;309        pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
000014  4640              MOV      r0,r8
000016  f7fffffe          BL       GUI_ALLOC_h2p
00001a  4604              MOV      r4,r0
;;;310        /* Make sure LCD is selected as device */
;;;311      #if GUI_NUM_LAYERS > 1
;;;312        PrevLayer = GUI_SelectLayer(pDevData->LayerIndex);
;;;313      #else
;;;314        GUI_SelectLCD();  /* Activate LCD */
00001c  f7fffffe          BL       GUI_SelectLCD
;;;315      #endif
;;;316        if (x == GUI_POS_AUTO) {
000020  f64070ff          MOV      r0,#0xfff
000024  1940              ADDS     r0,r0,r5
000026  d103              BNE      |L2.48|
;;;317          x = pDevData->x0;
000028  f9b45000          LDRSH    r5,[r4,#0]
;;;318          y = pDevData->y0;
00002c  f9b46002          LDRSH    r6,[r4,#2]
                  |L2.48|
;;;319        }
;;;320      #if (GUI_WINSUPPORT)
;;;321        /* Calculate rectangle */
;;;322        r.x1 = (r.x0 = x) + pDevData->XSize-1;
000030  88a1              LDRH     r1,[r4,#4]
000032  1e68              SUBS     r0,r5,#1
000034  4408              ADD      r0,r0,r1
000036  f8ad0004          STRH     r0,[sp,#4]
00003a  f8ad5000          STRH     r5,[sp,#0]
;;;323        r.y1 = (r.y0 = y) + pDevData->YSize-1;;
00003e  88e1              LDRH     r1,[r4,#6]
000040  1e70              SUBS     r0,r6,#1
000042  4408              ADD      r0,r0,r1
000044  f8ad6002          STRH     r6,[sp,#2]
000048  f8ad0006          STRH     r0,[sp,#6]
;;;324        /* Do the drawing. Window manager has to be on */
;;;325        WM_Activate();
00004c  f7fffffe          BL       WM_Activate
;;;326        WM_ITERATE_START(&r) {
000050  4668              MOV      r0,sp
000052  f7fffffe          BL       WM__InitIVRSearch
000056  e006              B        |L2.102|
                  |L2.88|
;;;327      #endif
;;;328        GUI_MEMDEV__WriteToActiveAt(hMem, x, y);
000058  4632              MOV      r2,r6
00005a  4629              MOV      r1,r5
00005c  4640              MOV      r0,r8
00005e  f7fffffe          BL       GUI_MEMDEV__WriteToActiveAt
;;;329      #if (GUI_WINSUPPORT)
;;;330        } WM_ITERATE_END();
000062  f7fffffe          BL       WM__GetNextIVR
                  |L2.102|
000066  2800              CMP      r0,#0
000068  d1f6              BNE      |L2.88|
;;;331      #endif
;;;332      #if GUI_NUM_LAYERS > 1
;;;333        GUI_SelectLayer(PrevLayer);
;;;334      #endif
;;;335        /* Reactivate previously used device */
;;;336        GUI_MEMDEV_Select(hMemPrev);
00006a  4638              MOV      r0,r7
00006c  f7fffffe          BL       GUI_MEMDEV_Select
                  |L2.112|
;;;337        GUI_UNLOCK();
;;;338      }
;;;339    }
000070  e8bd81fc          POP      {r2-r8,pc}
;;;340    
                          ENDP

                  |L2.116|
                          DCD      GUI_Context

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

                  GUI_MEMDEV_Create PROC
;;;218    */
;;;219    GUI_MEMDEV_Handle GUI_MEMDEV_Create(int x0, int y0, int xsize, int ysize) {
000000  b538              PUSH     {r3-r5,lr}
000002  461c              MOV      r4,r3
;;;220      return GUI_MEMDEV_CreateEx(x0, y0, xsize, ysize, GUI_MEMDEV_HASTRANS);
000004  2300              MOVS     r3,#0
000006  9300              STR      r3,[sp,#0]
000008  4623              MOV      r3,r4
00000a  f7fffffe          BL       GUI_MEMDEV_CreateEx
;;;221    }
00000e  bd38              POP      {r3-r5,pc}
;;;222    
                          ENDP


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

                  GUI_MEMDEV_CreateEx PROC
;;;185    */
;;;186    GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx(int x0, int y0, int xSize, int ySize, int Flags) {
000000  e92d43f0          PUSH     {r4-r9,lr}
000004  4605              MOV      r5,r0
000006  460e              MOV      r6,r1
;;;187      GUI_MEMDEV_Handle hMemDev;
;;;188      const tLCDDEV_APIList * pDeviceAPI;
;;;189      tLCDDEV_Color2Index   * pfColor2Index;
;;;190      tLCDDEV_Index2Color   * pfIndex2Color;
;;;191      tLCDDEV_GetIndexMask  * pfGetIndexMask;
;;;192      GUI_LOCK();
;;;193      #if (GUI_NUM_LAYERS > 1)   /* Size opt., preprocessor not required */
;;;194        pDeviceAPI = LCD_aAPI[GUI_Context.SelLayer];
;;;195      #else
;;;196        pDeviceAPI = LCD_aAPI[0];
000008  480f              LDR      r0,|L4.72|
;;;197      #endif
;;;198      if (GUI_Context.hDevData == 0) {
00000a  4910              LDR      r1,|L4.76|
00000c  b085              SUB      sp,sp,#0x14           ;186
00000e  6804              LDR      r4,[r0,#0]  ; LCD_aAPI
000010  f8dd9030          LDR      r9,[sp,#0x30]         ;196
000014  f9b1004c          LDRSH    r0,[r1,#0x4c]  ; GUI_Context
000018  4617              MOV      r7,r2                 ;186
00001a  4698              MOV      r8,r3                 ;186
00001c  b910              CBNZ     r0,|L4.36|
;;;199        pfColor2Index = GUI_Context.pDeviceAPI->pfColor2Index;    /* LCD_L0_Color2Index; */
;;;200        pfIndex2Color = GUI_Context.pDeviceAPI->pfIndex2Color;    /* LCD_L0_Index2Color; */
00001e  6c88              LDR      r0,[r1,#0x48]  ; GUI_Context
000020  c80e              LDM      r0!,{r1-r3}           ;199
;;;201        pfGetIndexMask= GUI_Context.pDeviceAPI->pfGetIndexMask;   /* LCD_L0_GetIndexMask */
000022  e003              B        |L4.44|
                  |L4.36|
;;;202      } else {
;;;203        /* If a memory device is already selected, we create a compatible one by copying its data */
;;;204        GUI_MEMDEV* pDevSel;
;;;205        pDevSel = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000024  f7fffffe          BL       GUI_ALLOC_h2p
;;;206        pfColor2Index = pDevSel->pfColor2Index;
;;;207        pfIndex2Color = pDevSel->pfIndex2Color;
;;;208        pfGetIndexMask= pDevSel->pfGetIndexMask;
000028  301c              ADDS     r0,r0,#0x1c
00002a  c80e              LDM      r0!,{r1-r3}
                  |L4.44|
;;;209      }
;;;210      hMemDev = GUI_MEMDEV__CreateFixed(x0, y0, xSize, ySize, Flags, pDeviceAPI->pMemDevAPI, 
00002c  6ba0              LDR      r0,[r4,#0x38]
00002e  e9cd9000          STRD     r9,r0,[sp,#0]
000032  a802              ADD      r0,sp,#8
000034  c00e              STM      r0!,{r1-r3}
000036  4643              MOV      r3,r8
000038  463a              MOV      r2,r7
00003a  4631              MOV      r1,r6
00003c  4628              MOV      r0,r5
00003e  f7fffffe          BL       GUI_MEMDEV__CreateFixed
;;;211                                        pfColor2Index, pfIndex2Color ,pfGetIndexMask);
;;;212      GUI_UNLOCK();
;;;213      return hMemDev;
;;;214    }
000042  b005              ADD      sp,sp,#0x14
000044  e8bd83f0          POP      {r4-r9,pc}
;;;215    /*********************************************************************
                          ENDP

                  |L4.72|
                          DCD      LCD_aAPI
                  |L4.76|
                          DCD      GUI_Context

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

                  GUI_MEMDEV_Delete PROC
;;;88     */
;;;89     void GUI_MEMDEV_Delete(GUI_MEMDEV_Handle hMemDev) {
000000  b510              PUSH     {r4,lr}
000002  0004              MOVS     r4,r0
;;;90     /* Make sure memory device is not used */
;;;91       GUI_LOCK();
;;;92       if (hMemDev) {
000004  d013              BEQ      |L5.46|
;;;93         GUI_MEMDEV* pDev;
;;;94         if (GUI_Context.hDevData == hMemDev) {
000006  480a              LDR      r0,|L5.48|
000008  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000c  42a0              CMP      r0,r4
00000e  d101              BNE      |L5.20|
;;;95     	    GUI_SelectLCD();
000010  f7fffffe          BL       GUI_SelectLCD
                  |L5.20|
;;;96         }
;;;97         pDev = GUI_MEMDEV_H2P(hMemDev);
000014  4620              MOV      r0,r4
000016  f7fffffe          BL       GUI_ALLOC_h2p
;;;98         /* Delete the associated usage device */
;;;99         if (pDev->hUsage)
00001a  f9b00018          LDRSH    r0,[r0,#0x18]
00001e  b108              CBZ      r0,|L5.36|
;;;100          GUI_USAGE_DecUseCnt(pDev->hUsage);
000020  f7fffffe          BL       GUI_USAGE_DecUseCnt
                  |L5.36|
;;;101        GUI_ALLOC_Free(hMemDev);
000024  4620              MOV      r0,r4
000026  e8bd4010          POP      {r4,lr}
00002a  f7ffbffe          B.W      GUI_ALLOC_Free
                  |L5.46|
;;;102      }
;;;103      GUI_UNLOCK();
;;;104    }
00002e  bd10              POP      {r4,pc}
;;;105    

⌨️ 快捷键说明

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