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

📄 gui_drawgraph.txt

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

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

                  GUI_DrawGraph PROC
;;;81     */  
;;;82     void GUI_DrawGraph(I16 *pay, int NumPoints, int x0, int y0) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4606              MOV      r6,r0
;;;83       GUI_LOCK();
;;;84       #if (GUI_WINSUPPORT)
;;;85         WM_ADDORG(x0,y0);
000006  480b              LDR      r0,|L1.52|
000008  460f              MOV      r7,r1                 ;82
00000a  6c01              LDR      r1,[r0,#0x40]  ; GUI_Context
00000c  6c40              LDR      r0,[r0,#0x44]  ; GUI_Context
00000e  188c              ADDS     r4,r1,r2
000010  18c5              ADDS     r5,r0,r3
;;;86         WM_ITERATE_START(NULL); {
000012  2000              MOVS     r0,#0
000014  f7fffffe          BL       WM__InitIVRSearch
000018  e007              B        |L1.42|
                  |L1.26|
;;;87       #endif
;;;88       _DrawGraph(pay, NumPoints, x0, y0);
00001a  462b              MOV      r3,r5
00001c  4622              MOV      r2,r4
00001e  4639              MOV      r1,r7
000020  4630              MOV      r0,r6
000022  f7fffffe          BL       _DrawGraph
;;;89       #if (GUI_WINSUPPORT)
;;;90         } WM_ITERATE_END();
000026  f7fffffe          BL       WM__GetNextIVR
                  |L1.42|
00002a  2800              CMP      r0,#0
00002c  d1f5              BNE      |L1.26|
;;;91       #endif
;;;92       GUI_UNLOCK();
;;;93     }
00002e  e8bd81f0          POP      {r4-r8,pc}
;;;94     
                          ENDP

000032  0000              DCW      0x0000
                  |L1.52|
                          DCD      GUI_Context

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

                  _DrawGraph PROC
;;;32     */
;;;33     static void _DrawGraph(I16 *pay, int NumPoints, int xOff, int yOff) {
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;34       int i;
;;;35       int y0, y1;
;;;36       int yClip0, yClip1;
;;;37       /* Perform high level clipping in x */
;;;38       yClip0 = GUI_Context.pClipRect_HL->y0;
000004  4826              LDR      r0,|L2.160|
000006  460f              MOV      r7,r1                 ;33
000008  6900              LDR      r0,[r0,#0x10]  ; GUI_Context
00000a  4616              MOV      r6,r2                 ;33
;;;39       yClip1 = GUI_Context.pClipRect_HL->y1;
00000c  f9b09006          LDRSH    r9,[r0,#6]
000010  f9b08002          LDRSH    r8,[r0,#2]            ;38
;;;40       i=0;
000014  2400              MOVS     r4,#0
;;;41       if (GUI_Context.pClipRect_HL) {
000016  b160              CBZ      r0,|L2.50|
;;;42         if (xOff < GUI_Context.pClipRect_HL->x0)
000018  f9b01000          LDRSH    r1,[r0,#0]
00001c  42b1              CMP      r1,r6
00001e  dd00              BLE      |L2.34|
;;;43           i = GUI_Context.pClipRect_HL->x0 - xOff;
000020  1b8c              SUBS     r4,r1,r6
                  |L2.34|
;;;44         if (xOff+NumPoints-1 > GUI_Context.pClipRect_HL->x1)
000022  19f1              ADDS     r1,r6,r7
000024  f9b00004          LDRSH    r0,[r0,#4]
000028  1e49              SUBS     r1,r1,#1
00002a  4281              CMP      r1,r0
00002c  dd01              BLE      |L2.50|
;;;45           NumPoints = GUI_Context.pClipRect_HL->x1 - xOff + 1;
00002e  1b87              SUBS     r7,r0,r6
000030  1c7f              ADDS     r7,r7,#1
                  |L2.50|
;;;46       }
;;;47       /* Start drawing if there is something left to do after x-clipping */
;;;48       if (i < NumPoints) {
000032  42bc              CMP      r4,r7
000034  da31              BGE      |L2.154|
;;;49         y0 = *(pay + i++) + yOff;
000036  9800              LDR      r0,[sp,#0]
000038  f9301014          LDRSH    r1,[r0,r4,LSL #1]
00003c  9803              LDR      r0,[sp,#0xc]
00003e  4401              ADD      r1,r1,r0
;;;50         /* Iterate */
;;;51         for (; i < NumPoints; i++) {
000040  e028              B        |L2.148|
                  |L2.66|
;;;52           /* Perform high level clipping in y */
;;;53           y1 = *(pay + i) + yOff;
000042  9800              LDR      r0,[sp,#0]
000044  9a03              LDR      r2,[sp,#0xc]
000046  f9300014          LDRSH    r0,[r0,r4,LSL #1]
00004a  1885              ADDS     r5,r0,r2
;;;54           if ((y0 >= yClip0) || (y1 >= yClip0)) {
00004c  4541              CMP      r1,r8
00004e  da01              BGE      |L2.84|
000050  4545              CMP      r5,r8
000052  db1e              BLT      |L2.146|
                  |L2.84|
;;;55             if ((y0 <= yClip1) || (y1 <= yClip1)) {
000054  4549              CMP      r1,r9
000056  dd01              BLE      |L2.92|
000058  454d              CMP      r5,r9
00005a  dc1a              BGT      |L2.146|
                  |L2.92|
;;;56               int y01;
;;;57               y01 = (y1 + y0) / 2;
00005c  1868              ADDS     r0,r5,r1
00005e  eb0070d0          ADD      r0,r0,r0,LSR #31
000062  ea4f0b60          ASR      r11,r0,#1
;;;58               if (y0 <= y1) {
;;;59                 LCD_DrawVLine(i + xOff - 1, y0, y01);
000066  eb040006          ADD      r0,r4,r6
00006a  4682              MOV      r10,r0
00006c  42a9              CMP      r1,r5                 ;58
00006e  f1a00001          SUB      r0,r0,#1
000072  dc05              BGT      |L2.128|
000074  465a              MOV      r2,r11
000076  f7fffffe          BL       LCD_DrawVLine
;;;60                 LCD_DrawVLine(i + xOff, y01, y1);
00007a  462a              MOV      r2,r5
00007c  4659              MOV      r1,r11
00007e  e005              B        |L2.140|
                  |L2.128|
;;;61               } else {
;;;62                 LCD_DrawVLine(i + xOff - 1, y01, y0);
000080  460a              MOV      r2,r1
000082  4659              MOV      r1,r11
000084  f7fffffe          BL       LCD_DrawVLine
;;;63                 LCD_DrawVLine(i + xOff, y1, y01);
000088  465a              MOV      r2,r11
00008a  4629              MOV      r1,r5
                  |L2.140|
00008c  4650              MOV      r0,r10
00008e  f7fffffe          BL       LCD_DrawVLine
                  |L2.146|
;;;64               }
;;;65             }
;;;66           }
;;;67           y0 = y1;
000092  4629              MOV      r1,r5
                  |L2.148|
000094  1c64              ADDS     r4,r4,#1              ;49
000096  42bc              CMP      r4,r7                 ;51
000098  dbd3              BLT      |L2.66|
                  |L2.154|
;;;68         }
;;;69       }
;;;70     }
00009a  e8bd9fff          POP      {r0-r12,pc}
;;;71     
                          ENDP

00009e  0000              DCW      0x0000
                  |L2.160|
                          DCD      GUI_Context

⌨️ 快捷键说明

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