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

📄 guicirc.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\guicirc.o --depend=.\Obj\guicirc.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\GUICirc.c]
                          THUMB

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

                  Draw8Point PROC
;;;46     */
;;;47     static void Draw8Point(int x0,int y0, int xoff, int yoff) {
000000  e92d5ffc          PUSH     {r2-r12,lr}
000004  4605              MOV      r5,r0
;;;48       LCD_HL_DrawPixel(x0+xoff,y0+yoff);
000006  4410              ADD      r0,r0,r2
000008  f8df808c          LDR      r8,|L1.152|
00000c  9001              STR      r0,[sp,#4]
00000e  f8d80058          LDR      r0,[r8,#0x58]  ; GUI_Context
000012  4617              MOV      r7,r2                 ;47
000014  460e              MOV      r6,r1                 ;47
000016  eb010903          ADD      r9,r1,r3
00001a  6842              LDR      r2,[r0,#4]
00001c  461c              MOV      r4,r3                 ;47
00001e  4649              MOV      r1,r9
000020  9801              LDR      r0,[sp,#4]
000022  4790              BLX      r2
;;;49       LCD_HL_DrawPixel(x0-xoff,y0+yoff);
000024  1be8              SUBS     r0,r5,r7
000026  9000              STR      r0,[sp,#0]
000028  f8d80058          LDR      r0,[r8,#0x58]  ; GUI_Context
00002c  4649              MOV      r1,r9
00002e  6842              LDR      r2,[r0,#4]
000030  9800              LDR      r0,[sp,#0]
000032  4790              BLX      r2
;;;50       LCD_HL_DrawPixel(x0+yoff,y0+xoff);
000034  f8d80058          LDR      r0,[r8,#0x58]  ; GUI_Context
000038  eb060b07          ADD      r11,r6,r7
00003c  eb050904          ADD      r9,r5,r4
000040  6842              LDR      r2,[r0,#4]
000042  4659              MOV      r1,r11
000044  4648              MOV      r0,r9
000046  4790              BLX      r2
;;;51       LCD_HL_DrawPixel(x0+yoff,y0-xoff);
000048  f8d80058          LDR      r0,[r8,#0x58]  ; GUI_Context
00004c  eba60a07          SUB      r10,r6,r7
000050  6842              LDR      r2,[r0,#4]
000052  4651              MOV      r1,r10
000054  4648              MOV      r0,r9
000056  4790              BLX      r2
;;;52       if (yoff) {
000058  2c00              CMP      r4,#0
00005a  d01a              BEQ      |L1.146|
;;;53         LCD_HL_DrawPixel(x0+xoff,y0-yoff);
00005c  f8d80058          LDR      r0,[r8,#0x58]  ; GUI_Context
000060  1b37              SUBS     r7,r6,r4
000062  6842              LDR      r2,[r0,#4]
000064  4646              MOV      r6,r8
000066  4639              MOV      r1,r7
000068  9801              LDR      r0,[sp,#4]
00006a  4790              BLX      r2
;;;54         LCD_HL_DrawPixel(x0-xoff,y0-yoff);
00006c  6db0              LDR      r0,[r6,#0x58]  ; GUI_Context
00006e  4639              MOV      r1,r7
000070  6842              LDR      r2,[r0,#4]
000072  9800              LDR      r0,[sp,#0]
000074  4790              BLX      r2
;;;55         LCD_HL_DrawPixel(x0-yoff,y0+xoff);
000076  6db0              LDR      r0,[r6,#0x58]  ; GUI_Context
000078  1b2c              SUBS     r4,r5,r4
00007a  6842              LDR      r2,[r0,#4]
00007c  4659              MOV      r1,r11
00007e  4620              MOV      r0,r4
000080  4790              BLX      r2
;;;56         LCD_HL_DrawPixel(x0-yoff,y0-xoff);
000082  6db0              LDR      r0,[r6,#0x58]  ; GUI_Context
000084  4651              MOV      r1,r10
000086  6842              LDR      r2,[r0,#4]
000088  4620              MOV      r0,r4
00008a  b002              ADD      sp,sp,#8
00008c  e8bd5ff0          POP      {r4-r12,lr}
000090  4710              BX       r2
                  |L1.146|
;;;57       }
;;;58     }
000092  e8bd9ffc          POP      {r2-r12,pc}
;;;59     
                          ENDP

000096  0000              DCW      0x0000
                  |L1.152|
                          DCD      GUI_Context

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

                  GL_DrawCircle PROC
;;;69     */
;;;70     void GL_DrawCircle(int x0, int y0, int r) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  4680              MOV      r8,r0
000006  4689              MOV      r9,r1
;;;71       I32 i;
;;;72       int imax = ((I32)((I32)r*707))/1000+1;
000008  f24020c3          MOV      r0,#0x2c3
00000c  4350              MULS     r0,r2,r0
00000e  f44f717a          MOV      r1,#0x3e8
000012  fb90f6f1          SDIV     r6,r0,r1
;;;73       I32 sqmax = (I32)r*(I32)r+(I32)r/2;
000016  fb02f002          MUL      r0,r2,r2
00001a  eb0271d2          ADD      r1,r2,r2,LSR #31
00001e  eb000761          ADD      r7,r0,r1,ASR #1
000022  1c76              ADDS     r6,r6,#1              ;72
;;;74       I32 y=r;
000024  4614              MOV      r4,r2
;;;75       Draw8Point(x0,y0,r,0);
000026  2300              MOVS     r3,#0
000028  4649              MOV      r1,r9
00002a  4640              MOV      r0,r8
00002c  f7fffffe          BL       Draw8Point
;;;76       for (i=1; i<= imax; i++) {
000030  2501              MOVS     r5,#1
000032  e013              B        |L2.92|
                  |L2.52|
;;;77         if ((i*i+y*y) >sqmax) {
000034  fb05f005          MUL      r0,r5,r5
000038  fb040004          MLA      r0,r4,r4,r0
00003c  42b8              CMP      r0,r7
00003e  dd06              BLE      |L2.78|
;;;78           Draw8Point(x0,y0,i,y);
000040  4623              MOV      r3,r4
000042  462a              MOV      r2,r5
000044  4649              MOV      r1,r9
000046  4640              MOV      r0,r8
000048  f7fffffe          BL       Draw8Point
;;;79           y--;
00004c  1e64              SUBS     r4,r4,#1
                  |L2.78|
;;;80         }
;;;81         Draw8Point(x0,y0,i,y);
00004e  4623              MOV      r3,r4
000050  462a              MOV      r2,r5
000052  4649              MOV      r1,r9
000054  4640              MOV      r0,r8
000056  f7fffffe          BL       Draw8Point
00005a  1c6d              ADDS     r5,r5,#1              ;76
                  |L2.92|
00005c  42b5              CMP      r5,r6                 ;76
00005e  dde9              BLE      |L2.52|
;;;82       }
;;;83     }
000060  e8bd87f0          POP      {r4-r10,pc}
;;;84     
                          ENDP


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

                  GL_DrawEllipse PROC
;;;218    */
;;;219    void GL_DrawEllipse(int x0, int y0, int rx, int ry) {
000000  e92d4fff          PUSH     {r0-r11,lr}
000004  b083              SUB      sp,sp,#0xc
;;;220      I32 OutConst, Sum, SumY;
;;;221      int x,y;
;;;222      int xOld;
;;;223      U32 _rx = rx;
;;;224      U32 _ry = ry;
;;;225      OutConst = _rx*_rx*_ry*_ry  /* Constant as explaint above */
000006  fb02f102          MUL      r1,r2,r2
;;;226                +(_rx*_rx*_ry>>1); /* To compensate for rounding */
;;;227      xOld = x = rx;
;;;228      for (y=0; y<=ry; y++) {
00000a  2500              MOVS     r5,#0
00000c  9102              STR      r1,[sp,#8]            ;225
00000e  4606              MOV      r6,r0                 ;219
000010  4359              MULS     r1,r3,r1              ;225
000012  fb01f003          MUL      r0,r1,r3              ;225
000016  eb000051          ADD      r0,r0,r1,LSR #1       ;225
00001a  4614              MOV      r4,r2                 ;219
00001c  469a              MOV      r10,r3                ;219
00001e  4691              MOV      r9,r2                 ;227
000020  9000              STR      r0,[sp,#0]
000022  e03c              B        |L3.158|
                  |L3.36|
;;;229        if (y==ry) {
000024  d101              BNE      |L3.42|
;;;230          x=0;
000026  2400              MOVS     r4,#0
000028  e010              B        |L3.76|
                  |L3.42|
;;;231        } else {
;;;232          SumY =((I32)(rx*rx))*((I32)(y*y)); /* Does not change in loop */
00002a  9902              LDR      r1,[sp,#8]
00002c  fb05f005          MUL      r0,r5,r5
000030  4341              MULS     r1,r0,r1
;;;233          while (Sum = SumY + ((I32)(ry*ry))*((I32)(x*x)),
000032  fb0af20a          MUL      r2,r10,r10
;;;234                 (x>0) && (Sum>OutConst)) x--;
000036  e000              B        |L3.58|
                  |L3.56|
000038  1e64              SUBS     r4,r4,#1
                  |L3.58|
00003a  fb04f004          MUL      r0,r4,r4              ;233
00003e  fb021000          MLA      r0,r2,r0,r1           ;233
000042  2c00              CMP      r4,#0                 ;233
000044  dd02              BLE      |L3.76|
000046  9b00              LDR      r3,[sp,#0]
000048  4298              CMP      r0,r3
00004a  dcf5              BGT      |L3.56|
                  |L3.76|
;;;235        }
;;;236        /* Since we draw lines, we can not draw on the first
;;;237            iteration
;;;238        */
;;;239        if (y) {
00004c  b32d              CBZ      r5,|L3.154|
;;;240          GL_DrawLine1(x0-xOld,y0-y+1,x0-x,y0-y);
00004e  9804              LDR      r0,[sp,#0x10]
000050  eba60b09          SUB      r11,r6,r9
000054  1b47              SUBS     r7,r0,r5
000056  1b30              SUBS     r0,r6,r4
000058  4602              MOV      r2,r0
00005a  9001              STR      r0,[sp,#4]
00005c  1c79              ADDS     r1,r7,#1
00005e  463b              MOV      r3,r7
000060  4658              MOV      r0,r11
000062  f7fffffe          BL       GL_DrawLine1
;;;241          GL_DrawLine1(x0-xOld,y0+y-1,x0-x,y0+y);
000066  9804              LDR      r0,[sp,#0x10]
000068  9a01              LDR      r2,[sp,#4]
00006a  eb000805          ADD      r8,r0,r5
00006e  f1a80101          SUB      r1,r8,#1
000072  4643              MOV      r3,r8
000074  4658              MOV      r0,r11
000076  f7fffffe          BL       GL_DrawLine1
;;;242          GL_DrawLine1(x0+xOld,y0-y+1,x0+x,y0-y);
00007a  eb060b04          ADD      r11,r6,r4
00007e  44b1              ADD      r9,r9,r6
000080  1c79              ADDS     r1,r7,#1
000082  463b              MOV      r3,r7
000084  465a              MOV      r2,r11
000086  4648              MOV      r0,r9
000088  f7fffffe          BL       GL_DrawLine1
;;;243          GL_DrawLine1(x0+xOld,y0+y-1,x0+x,y0+y);
00008c  f1a80101          SUB      r1,r8,#1
000090  4643              MOV      r3,r8
000092  465a              MOV      r2,r11
000094  4648              MOV      r0,r9
000096  f7fffffe          BL       GL_DrawLine1
                  |L3.154|
;;;244        }
;;;245        xOld = x;
00009a  46a1              MOV      r9,r4
00009c  1c6d              ADDS     r5,r5,#1              ;228
                  |L3.158|
00009e  4555              CMP      r5,r10                ;228
0000a0  ddc0              BLE      |L3.36|
;;;246      }
;;;247    }
0000a2  b007              ADD      sp,sp,#0x1c
0000a4  e8bd8ff0          POP      {r4-r11,pc}
;;;248    
                          ENDP


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

                  GL_FillCircle PROC
;;;112    */
;;;113    void GL_FillCircle(int x0, int y0, int r) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
000004  4606              MOV      r6,r0
000006  460f              MOV      r7,r1
;;;114      I32 i;
;;;115      int imax = ((I32)((I32)r*707))/1000+1;
000008  f24020c3          MOV      r0,#0x2c3
00000c  4350              MULS     r0,r2,r0
00000e  f44f717a          MOV      r1,#0x3e8
000012  fb90f0f1          SDIV     r0,r0,r1
000016  f1000801          ADD      r8,r0,#1
;;;116      I32 sqmax = (I32)r*(I32)r+(I32)r/2;
00001a  fb02f002          MUL      r0,r2,r2
00001e  eb0271d2          ADD      r1,r2,r2,LSR #31
000022  eb000061          ADD      r0,r0,r1,ASR #1
;;;117      I32 x=r;
;;;118      LCD_HL_DrawHLine(x0-r,y0,x0+r);
000026  18b1              ADDS     r1,r6,r2
000028  9000              STR      r0,[sp,#0]
00002a  f8dfb084          LDR      r11,|L4.176|
00002e  4614              MOV      r4,r2                 ;117
000030  1ab0              SUBS     r0,r6,r2
000032  f8db2058          LDR      r2,[r11,#0x58]  ; GUI_Context
000036  6813              LDR      r3,[r2,#0]
000038  460a              MOV      r2,r1
00003a  4639              MOV      r1,r7
00003c  4798              BLX      r3
;;;119      for (i=1; i<= imax; i++) {
00003e  2501              MOVS     r5,#1
000040  e031              B        |L4.166|
;;;120        if ((i*i+x*x) >sqmax) {
000042  bf00              NOP      
                  |L4.68|
000044  fb05f005          MUL      r0,r5,r5
000048  fb040004          MLA      r0,r4,r4,r0
00004c  9900              LDR      r1,[sp,#0]
00004e  4288              CMP      r0,r1
000050  dd16              BLE      |L4.128|
;;;121          /* draw lines from outside */
;;;122          if (x>imax) {
000052  4544              CMP      r4,r8
000054  dd13              BLE      |L4.126|
;;;123            LCD_HL_DrawHLine (x0-i+1,y0+x, x0+i-1);
000056  1972              ADDS     r2,r6,r5
000058  f8db3058          LDR      r3,[r11,#0x58]  ; GUI_Context
00005c  4691              MOV      r9,r2
00005e  1b70              SUBS     r0,r6,r5
000060  1e52              SUBS     r2,r2,#1
000062  1939              ADDS     r1,r7,r4
000064  4682              MOV      r10,r0
000066  681b              LDR      r3,[r3,#0]
000068  1c40              ADDS     r0,r0,#1
00006a  4798              BLX      r3
;;;124            LCD_HL_DrawHLine (x0-i+1,y0-x, x0+i-1);
00006c  f8db3058          LDR      r3,[r11,#0x58]  ; GUI_Context
000070  f1a90201          SUB      r2,r9,#1
000074  681b              LDR      r3,[r3,#0]
000076  1b39              SUBS     r1,r7,r4
000078  f10a0001          ADD      r0,r10,#1
00007c  4798              BLX      r3
                  |L4.126|
;;;125          }
;;;126          x--;

⌨️ 快捷键说明

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