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 + -
显示快捷键?