dashboard.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 1,464 行 · 第 1/5 页

TXT
1,464
字号
00004e  6021              STR      r1,[r4,#0]
000050  4291              CMP      r1,r2
000052  dd01              BLE      |L14.88|
;;;6550           pObj->NeedlePos = NEEDLE_GRAD;
;;;6551           pObj->NeedleDir = -pObj->NeedleDir;
000054  6022              STR      r2,[r4,#0]
000056  e003              B        |L14.96|
                  |L14.88|
;;;6552         } else {
;;;6553           if (pObj->NeedlePos < 0) {
000058  2900              CMP      r1,#0
00005a  da03              BGE      |L14.100|
;;;6554             pObj->NeedlePos = 0;
00005c  2100              MOVS     r1,#0
00005e  6021              STR      r1,[r4,#0]
                  |L14.96|
;;;6555             pObj->NeedleDir = -pObj->NeedleDir;
000060  4240              RSBS     r0,r0,#0
000062  60a0              STR      r0,[r4,#8]
                  |L14.100|
;;;6556           }
;;;6557         }
;;;6558         _GetNeedleRect(&_Scale[Index], Index, &rNew);
000064  466a              MOV      r2,sp
000066  4639              MOV      r1,r7
000068  4630              MOV      r0,r6
00006a  f7fff7ff          BL       _GetNeedleRect
00006e  f9bdf9bd          LDRSH    r0,[sp,#0]
000072  f9bdf9bd          LDRSH    r1,[sp,#8]
000076  4288              CMP      r0,r1
000078  db00              BLT      |L14.124|
00007a  4608              MOV      r0,r1
                  |L14.124|
00007c  f8adf8ad          STRH     r0,[sp,#0]
000080  f9bdf9bd          LDRSH    r0,[sp,#2]
000084  f9bdf9bd          LDRSH    r1,[sp,#0xa]
000088  4288              CMP      r0,r1
00008a  db00              BLT      |L14.142|
00008c  4608              MOV      r0,r1
                  |L14.142|
00008e  f8adf8ad          STRH     r0,[sp,#2]
000092  f9bdf9bd          LDRSH    r0,[sp,#4]
000096  f9bdf9bd          LDRSH    r1,[sp,#0xc]
00009a  4288              CMP      r0,r1
00009c  dc00              BGT      |L14.160|
00009e  4608              MOV      r0,r1
                  |L14.160|
0000a0  f8adf8ad          STRH     r0,[sp,#4]
0000a4  f9bdf9bd          LDRSH    r0,[sp,#6]
0000a8  f9bdf9bd          LDRSH    r1,[sp,#0xe]
0000ac  4288              CMP      r0,r1
0000ae  dc00              BGT      |L14.178|
0000b0  4608              MOV      r0,r1
                  |L14.178|
0000b2  f8adf8ad          STRH     r0,[sp,#6]
;;;6559         _MergeRects(&rNew, &rOld);
;;;6560         WM_InvalidateRect(_Scale[Index].hWin, &rNew);
0000b6  f9b6f9b6          LDRSH    r0,[r6,#0x72]
0000ba  4669              MOV      r1,sp
0000bc  f7fff7ff          BL       WM_InvalidateRect
;;;6561         pObj->NeedlePrevTime = Time;
0000c0  60e5              STR      r5,[r4,#0xc]
                  |L14.194|
;;;6562       }
;;;6563     }
;;;6564   }
0000c2  e8bde8bd          POP      {r0-r8,pc}
;;;6565   
                          ENDP

0000c6  0000              DCW      0x0000
                  |L14.200|
0000c8  00000000          DCD      ||.bss||

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

                  _IntToString PROC
;;;6765   */
;;;6766   static void _IntToString(char* pStr, int Value) {
000000  b430              PUSH     {r4,r5}
;;;6767     char* Ptr = pStr + 6;
;;;6768     *(--Ptr) = 0;
000002  2200              MOVS     r2,#0
000004  7142              STRB     r2,[r0,#5]
000006  460b              MOV      r3,r1                 ;6766
;;;6769     Value = _Min(Value, 99999);
000008  4a09              LDR      r2,|L15.48|
00000a  1d41              ADDS     r1,r0,#5              ;6768
00000c  4293              CMP      r3,r2
00000e  da00              BGE      |L15.18|
000010  461a              MOV      r2,r3
                  |L15.18|
000012  240a              MOVS     r4,#0xa
                  |L15.20|
;;;6770     do {
;;;6771       *(--Ptr) = (Value % 10) + '0';
000014  4613              MOV      r3,r2
000016  fb92fb92          SDIV     r2,r2,r4
00001a  fb04fb04          MLS      r3,r4,r2,r3
00001e  3330              ADDS     r3,r3,#0x30
000020  f801f801          STRB     r3,[r1,#-1]!
;;;6772       Value /= 10;
;;;6773     } while (Value != 0);
000024  2a00              CMP      r2,#0
000026  d1f5              BNE      |L15.20|
;;;6774     strcpy(pStr, Ptr);
000028  bc30              POP      {r4,r5}
00002a  f7fff7ff          B.W      strcpy
;;;6775   }
;;;6776   
                          ENDP

00002e  0000              DCW      0x0000
                  |L15.48|
000030  0001869f          DCD      0x0001869f

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

                  _DrawGrad PROC
;;;6915   */
;;;6916   static void _DrawGrad(const SCALE* pObj) {
000000  e92de92d          PUSH     {r4-r11,lr}
000004  4604              MOV      r4,r0
;;;6917     if (pObj->NumMarkLines > 0 && (pObj->Flags & (1 << FLAG_SHOW_GRAD))) {
000006  6a40              LDR      r0,[r0,#0x24]
000008  b085              SUB      sp,sp,#0x14           ;6916
00000a  2800              CMP      r0,#0
00000c  dd7e              BLE      |L16.268|
00000e  f8b4f8b4          LDRH     r0,[r4,#0x70]
000012  0740              LSLS     r0,r0,#29
000014  d57a              BPL      |L16.268|
;;;6918       int xt, yt, w, h, i, ArcLen, rStart, Cnt, wMax = 0;
000016  2500              MOVS     r5,#0
;;;6919       float co, si, Angel;
;;;6920       char acText[6];
;;;6921       GUI_SetColor(_CalcColor(&pObj->Color[1]));
000018  f104f104          ADD      r0,r4,#0xa4
00001c  f7fff7ff          BL       _CalcColor
000020  f7fff7ff          BL       GUI_SetColor
;;;6922       GUI_SetFont(&GUI_Font6x8);
000024  486c              LDR      r0,|L16.472|
000026  f7fff7ff          BL       GUI_SetFont
;;;6923       GUI_SetTextMode(GUI_TEXTMODE_TRANS);
00002a  2002              MOVS     r0,#2
00002c  f7fff7ff          BL       GUI_SetTextMode
;;;6924       Cnt = pObj->NumStart * (pObj->NumStep * _Pow10[pObj->NumExp]);
000030  f8dff8df          LDR      r8,|L16.476|
000034  6da0              LDR      r0,[r4,#0x58]
000036  6d27              LDR      r7,[r4,#0x50]
000038  f858f858          LDR      r0,[r8,r0,LSL #2]
00003c  4347              MULS     r7,r0,r7
00003e  6d60              LDR      r0,[r4,#0x54]
000040  4347              MULS     r7,r0,r7
;;;6925       for (i = 0; i < pObj->NumMarkLines; i++) {
000042  2600              MOVS     r6,#0
000044  e011              B        |L16.106|
                  |L16.70|
;;;6926         _IntToString(acText, Cnt);
000046  4639              MOV      r1,r7
000048  4668              MOV      r0,sp
00004a  f7fff7ff          BL       _IntToString
;;;6927         wMax = _Max(GUI_GetStringDistX(acText), wMax);
00004e  4668              MOV      r0,sp
000050  f7fff7ff          BL       GUI_GetStringDistX
000054  42a8              CMP      r0,r5
000056  dc00              BGT      |L16.90|
000058  4628              MOV      r0,r5
                  |L16.90|
;;;6928         Cnt += pObj->NumStep * _Pow10[pObj->NumExp];
00005a  6da1              LDR      r1,[r4,#0x58]
00005c  4605              MOV      r5,r0                 ;6927
00005e  f858f858          LDR      r1,[r8,r1,LSL #2]
000062  6d20              LDR      r0,[r4,#0x50]
000064  1c76              ADDS     r6,r6,#1              ;6925
000066  fb00fb00          MLA      r7,r0,r1,r7
                  |L16.106|
00006a  6a60              LDR      r0,[r4,#0x24]         ;6925
00006c  42b0              CMP      r0,r6                 ;6925
00006e  dcea              BGT      |L16.70|
;;;6929       }
;;;6930       ArcLen = _GetArcLen(pObj);
000070  4620              MOV      r0,r4
000072  f7fff7ff          BL       _GetArcLen
;;;6931       rStart = pObj->ArcRadius - pObj->GradDist - (wMax / 2);
000076  9003              STR      r0,[sp,#0xc]
000078  6ba1              LDR      r1,[r4,#0x38]
00007a  69a0              LDR      r0,[r4,#0x18]
00007c  1a41              SUBS     r1,r0,r1
00007e  eb05eb05          ADD      r0,r5,r5,LSR #31
000082  9004              STR      r0,[sp,#0x10]
000084  eba1eba1          SUB      r0,r1,r0,ASR #1
;;;6932       Cnt = pObj->NumStart * (pObj->NumStep * _Pow10[pObj->NumExp]);
000088  9002              STR      r0,[sp,#8]
00008a  4854              LDR      r0,|L16.476|
00008c  6da1              LDR      r1,[r4,#0x58]
00008e  6d26              LDR      r6,[r4,#0x50]
000090  f850f850          LDR      r0,[r0,r1,LSL #2]
000094  4346              MULS     r6,r0,r6
000096  6d60              LDR      r0,[r4,#0x54]
000098  4346              MULS     r6,r0,r6
;;;6933       for (i = 0; i < pObj->NumMarkLines; i++) {
00009a  2500              MOVS     r5,#0
00009c  f20ff20f          ADR.W    r10,|L16.480|
0000a0  e092              B        |L16.456|
                  |L16.162|
;;;6934         Angel = (i * ArcLen * PI) / _Max(pObj->NumMarkLines - 1, 1) + (pObj->ArcStart - 90.) * PI;
0000a2  6920              LDR      r0,[r4,#0x10]
0000a4  f7fff7ff          BL       __aeabi_i2d
0000a8  4607              MOV      r7,r0
0000aa  a04f              ADR      r0,|L16.488|
0000ac  c80c              LDM      r0!,{r2,r3}
0000ae  4638              MOV      r0,r7
0000b0  f7fff7ff          BL       __aeabi_dsub
0000b4  e9dae9da          LDRD     r2,r3,[r10,#0]
0000b8  f7fff7ff          BL       __aeabi_dmul
0000bc  f1a8f1a8          SUB      r8,r8,#1
0000c0  4683              MOV      r11,r0
0000c2  460f              MOV      r7,r1
0000c4  f1b8f1b8          CMP      r8,#1
0000c8  dc01              BGT      |L16.206|
0000ca  f04ff04f          MOV      r8,#1
                  |L16.206|
0000ce  4640              MOV      r0,r8
0000d0  f7fff7ff          BL       __aeabi_i2d
0000d4  4689              MOV      r9,r1
0000d6  9903              LDR      r1,[sp,#0xc]
0000d8  4680              MOV      r8,r0
0000da  fb05fb05          MUL      r0,r5,r1
0000de  f7fff7ff          BL       __aeabi_i2d
0000e2  e9dae9da          LDRD     r2,r3,[r10,#0]
0000e6  f7fff7ff          BL       __aeabi_dmul
0000ea  464b              MOV      r3,r9
0000ec  4642              MOV      r2,r8
0000ee  f7fff7ff          BL       __aeabi_ddiv
0000f2  463b              MOV      r3,r7
0000f4  465a              MOV      r2,r11
0000f6  f7fff7ff          BL       __aeabi_dadd
0000fa  f7fff7ff          BL       __aeabi_d2f
;;;6935         co = cos(Angel / 180.);
0000fe  f7fff7ff          BL       __aeabi_f2d
000102  4607              MOV      r7,r0
000104  a03a              ADR      r0,|L16.496|
000106  c80c              LDM      r0!,{r2,r3}
000108  4638              MOV      r0,r7
00010a  e000              B        |L16.270|
                  |L16.268|
00010c  e061              B        |L16.466|
                  |L16.270|
00010e  f7fff7ff          BL       __aeabi_ddiv
000112  4688              MOV      r8,r1
000114  4607              MOV      r7,r0
000116  f7fff7ff          BL       ||cos||
00011a  f7fff7ff          BL       __aeabi_d2f
00011e  4681              MOV      r9,r0
000120  4638              MOV      r0,r7
000122  4641              MOV      r1,r8
;;;6936         si = sin(Angel / 180.);
000124  f7fff7ff          BL       ||sin||
000128  f7fff7ff          BL       __aeabi_d2f
00012c  4683              MOV      r11,r0
;;;6937         xt = pObj->x0 - rStart * co;
00012e  9802              LDR      r0,[sp,#8]
000130  f7fff7ff          BL       __aeabi_i2f
000134  4680              MOV      r8,r0
000136  4649              MOV      r1,r9
000138  f7fff7ff          BL       __aeabi_fmul
00013c  4607              MOV      r7,r0
00013e  68a0              LDR      r0,[r4,#8]
000140  f7fff7ff          BL       __aeabi_i2f
000144  4639              MOV      r1,r7
000146  f7fff7ff          BL       __aeabi_fsub
00014a  f7fff7ff          BL       __aeabi_f2iz
00014e  4607              MOV      r7,r0
;;;6938         yt = pObj->y0 - rStart * si;
000150  4659              MOV      r1,r11
000152  4640              MOV      r0,r8
000154  f7fff7ff          BL       __aeabi_fmul
000158  4680              MOV      r8,r0
00015a  68e0              LDR      r0,[r4,#0xc]
00015c  f7fff7ff          BL       __aeabi_i2f
000160  4641              MOV      r1,r8
000162  f7fff7ff          BL       __aeabi_fsub
000166  f7fff7ff          BL       __aeabi_f2iz
00016a  4680              MOV      r8,r0
;;;6939         _IntToString(acText, Cnt);
00016c  4631              MOV      r1,r6
00016e  4668              MOV      r0,sp
000170  f7fff7ff          BL       _IntToString
;;;6940         w = GUI_GetStringDistX(acText);
000174  4668              MOV      r0,sp
000176  f7fff7ff          BL       GUI_GetStringDistX
00017a  4681              MOV      r9,r0
;;;6941         h = si * _Max(wMax / 2 - 4, 0) + 4;

⌨️ 快捷键说明

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