memdev_drawgraph.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 742 行 · 第 1/3 页
TXT
742 行
00000c e9cd0101 STRD r0,r1,[sp,#4]
000010 f240302a MOV r0,#0x32a
000014 f7fffffe BL GUI_ALLOC_AllocZero
000018 4682 MOV r10,r0
;;;214 GUI_SetColor(GUI_WHITE);
00001a f06f407f MVN r0,#0xff000000
00001e f7fffffe BL GUI_SetColor
;;;215 GUI_SetBkColor(GUI_RED);
000022 20ff MOVS r0,#0xff
000024 f7fffffe BL GUI_SetBkColor
;;;216 GUI_ClearRect(0, 55, LCD_XSIZE, 75);
000028 234b MOVS r3,#0x4b
00002a f44f72a0 MOV r2,#0x140
00002e 2137 MOVS r1,#0x37
000030 2000 MOVS r0,#0
000032 f7fffffe BL GUI_ClearRect
;;;217 GUI_SetFont(&GUI_FontComic18B_1);
000036 4822 LDR r0,|L4.192|
000038 f7fffffe BL GUI_SetFont
;;;218 GUI_DispStringAt("Sine wave", 20, 55);
00003c 2237 MOVS r2,#0x37
00003e 2114 MOVS r1,#0x14
000040 a020 ADR r0,|L4.196|
000042 f7fffffe BL GUI_DispStringAt
;;;219 pStart = GUI_ALLOC_h2p(hMem);
000046 4650 MOV r0,r10
000048 f7fffffe BL GUI_ALLOC_h2p
00004c 4606 MOV r6,r0
;;;220 _GetSineData(pStart, 405);
00004e f2401195 MOV r1,#0x195
000052 f7fffffe BL _GetSineData
;;;221 GUI_SetFont(&GUI_Font6x8);
000056 481e LDR r0,|L4.208|
000058 f7fffffe BL GUI_SetFont
;;;222 t0 = GUI_GetTime();
00005c f7fffffe BL GUI_GetTime
000060 4605 MOV r5,r0
;;;223 while((GUI_GetTime() - t0) < 10000) {
;;;224 int t1, tDiff2;
;;;225 if (Cnt++ % 90) {
000062 f04f085a MOV r8,#0x5a
000066 f2427910 MOV r9,#0x2710 ;223
;;;226 Param.aY++;
;;;227 } else {
;;;228 Param.aY = pStart;
;;;229 }
;;;230 t1 = GUI_GetTime();
;;;231 GUI_MEMDEV_Draw(&Rect, _Draw2, &Param, 0, 0);
;;;232 tDiff2 = GUI_GetTime() - t1;
;;;233 if (tDiff2 < 100) {
;;;234 GUI_Delay(100 - tDiff2);
;;;235 }
;;;236 }
00006a e01d B |L4.168|
|L4.108|
00006c fb94f1f8 SDIV r1,r4,r8 ;225
000070 fb084011 MLS r0,r8,r1,r4 ;225
000074 1c64 ADDS r4,r4,#1 ;225
000076 b118 CBZ r0,|L4.128|
000078 9803 LDR r0,[sp,#0xc] ;226
00007a 1c80 ADDS r0,r0,#2 ;226
00007c 9003 STR r0,[sp,#0xc] ;226
00007e e000 B |L4.130|
|L4.128|
000080 9603 STR r6,[sp,#0xc] ;228
|L4.130|
000082 f7fffffe BL GUI_GetTime
000086 4607 MOV r7,r0 ;230
000088 2300 MOVS r3,#0 ;231
00008a aa03 ADD r2,sp,#0xc ;231
00008c 4911 LDR r1,|L4.212|
00008e a801 ADD r0,sp,#4 ;231
000090 9300 STR r3,[sp,#0] ;231
000092 f7fffffe BL GUI_MEMDEV_Draw
000096 f7fffffe BL GUI_GetTime
00009a 1bc1 SUBS r1,r0,r7 ;232
00009c 2964 CMP r1,#0x64 ;233
00009e da03 BGE |L4.168|
0000a0 f1c10064 RSB r0,r1,#0x64 ;234
0000a4 f7fffffe BL GUI_Delay
|L4.168|
0000a8 f7fffffe BL GUI_GetTime
0000ac 1b41 SUBS r1,r0,r5 ;223
0000ae 4549 CMP r1,r9 ;223
0000b0 dbdc BLT |L4.108|
;;;237 GUI_ALLOC_Free(hMem);
0000b2 4650 MOV r0,r10
0000b4 f7fffffe BL GUI_ALLOC_Free
;;;238 }
0000b8 e8bd87ff POP {r0-r10,pc}
;;;239
ENDP
|L4.188|
DCD ||.constdata||
|L4.192|
DCD GUI_FontComic18B_1
|L4.196|
0000c4 53696e65207761766500 DCB "Sine wave",0
0000ce 00 DCB 0
0000cf 00 DCB 0
|L4.208|
DCD GUI_Font6x8
|L4.212|
DCD _Draw2
AREA ||i._Draw||, CODE, READONLY, ALIGN=2
_Draw PROC
;;;58 */
;;;59 static void _Draw(void * p) {
000000 b570 PUSH {r4-r6,lr}
;;;60 int i;
;;;61 PARAM * pParam = (PARAM *)p;
000002 4605 MOV r5,r0
;;;62 GUI_SetBkColor(GUI_BLACK);
000004 2000 MOVS r0,#0
000006 f7fffffe BL GUI_SetBkColor
;;;63 GUI_SetColor(GUI_DARKGRAY);
00000a 481a LDR r0,|L5.116|
00000c f7fffffe BL GUI_SetColor
;;;64 GUI_ClearRect(19, (LCD_YSIZE - 20) - YSIZE, (LCD_XSIZE - 2), (LCD_YSIZE - 21));
000010 f44f769f MOV r6,#0x13e
000014 23db MOVS r3,#0xdb
000016 4632 MOV r2,r6
000018 2150 MOVS r1,#0x50
00001a 2013 MOVS r0,#0x13
00001c f7fffffe BL GUI_ClearRect
;;;65 for (i = 0; i < (YSIZE / 2); i += 20) {
000020 2400 MOVS r4,#0
|L5.34|
;;;66 GUI_DrawHLine((LCD_YSIZE - 20) - (YSIZE / 2) + i, 19, (LCD_XSIZE - 2));
000022 4632 MOV r2,r6
000024 2113 MOVS r1,#0x13
000026 f1040096 ADD r0,r4,#0x96
00002a f7fffffe BL GUI_DrawHLine
;;;67 if (i) {
00002e b12c CBZ r4,|L5.60|
;;;68 GUI_DrawHLine((LCD_YSIZE - 20) - (YSIZE / 2) - i, 19, (LCD_XSIZE - 2));
000030 f1c40096 RSB r0,r4,#0x96
000034 4632 MOV r2,r6
000036 2113 MOVS r1,#0x13
000038 f7fffffe BL GUI_DrawHLine
|L5.60|
00003c 3414 ADDS r4,r4,#0x14 ;65
00003e 2c46 CMP r4,#0x46 ;65
000040 dbef BLT |L5.34|
;;;69 }
;;;70 }
;;;71 for (i = 40; i < (LCD_XSIZE - 20); i += 40) {
000042 2428 MOVS r4,#0x28
000044 f44f7696 MOV r6,#0x12c
|L5.72|
;;;72 GUI_DrawVLine(18 + i, (LCD_YSIZE - 20) - YSIZE, (LCD_YSIZE - 21));
000048 22db MOVS r2,#0xdb
00004a 2150 MOVS r1,#0x50
00004c f1040012 ADD r0,r4,#0x12
000050 f7fffffe BL GUI_DrawVLine
000054 3428 ADDS r4,r4,#0x28 ;71
000056 42b4 CMP r4,r6 ;71
000058 dbf6 BLT |L5.72|
;;;73 }
;;;74 GUI_SetColor(COLOR_GRAPH0);
00005a f44f407f MOV r0,#0xff00
00005e f7fffffe BL GUI_SetColor
;;;75 GUI_DrawGraph(pParam->aY, (LCD_XSIZE - 20), 19, (LCD_YSIZE - 20) - YSIZE);
000062 4631 MOV r1,r6
000064 6828 LDR r0,[r5,#0]
000066 e8bd4070 POP {r4-r6,lr}
00006a 2350 MOVS r3,#0x50
00006c 2213 MOVS r2,#0x13
00006e f7ffbffe B.W GUI_DrawGraph
;;;76 }
;;;77
ENDP
000072 0000 DCW 0x0000
|L5.116|
DCD 0x00404040
AREA ||i._Draw2||, CODE, READONLY, ALIGN=1
_Draw2 PROC
;;;81 */
;;;82 static void _Draw2(void * p) {
000000 b510 PUSH {r4,lr}
;;;83 PARAM * pParam = (PARAM *)p;
000002 4604 MOV r4,r0
;;;84 _Draw(p);
000004 f7fffffe BL _Draw
;;;85 GUI_SetColor(COLOR_GRAPH1);
000008 f64f70ff MOV r0,#0xffff
00000c f7fffffe BL GUI_SetColor
;;;86 GUI_DrawGraph(pParam->aY+15, (LCD_XSIZE - 20), 19, (LCD_YSIZE - 20) - YSIZE);
000010 6820 LDR r0,[r4,#0]
000012 2350 MOVS r3,#0x50
000014 301e ADDS r0,r0,#0x1e
000016 e8bd4010 POP {r4,lr}
00001a 2213 MOVS r2,#0x13
00001c f44f7196 MOV r1,#0x12c
000020 f7ffbffe B.W GUI_DrawGraph
;;;87 }
;;;88
ENDP
AREA ||i._GetRandomData||, CODE, READONLY, ALIGN=1
_GetRandomData PROC
;;;130 */
;;;131 static void _GetRandomData(I16 * paY, int Time, int n) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4606 MOV r6,r0
;;;132 int aDiff, i;
;;;133 if (Time > 5000)
000006 f2413088 MOV r0,#0x1388
00000a 4690 MOV r8,r2 ;131
00000c 4281 CMP r1,r0
00000e dd00 BLE |L7.18|
;;;134 Time -= 5000;
000010 1a09 SUBS r1,r1,r0
|L7.18|
;;;135 if (Time > 2500)
000012 f64012c4 MOV r2,#0x9c4
000016 4291 CMP r1,r2
000018 dd00 BLE |L7.28|
;;;136 Time = 5000 - Time;
00001a 1a41 SUBS r1,r0,r1
|L7.28|
;;;137 Time /= 200;
00001c 20c8 MOVS r0,#0xc8
00001e fb91f7f0 SDIV r7,r1,r0
;;;138 aDiff = Time * Time + 1;
000022 437f MULS r7,r7,r7
;;;139 for (i = 0; i < n; i++) {
000024 2400 MOVS r4,#0
000026 1c7f ADDS r7,r7,#1 ;138
000028 e027 B |L7.122|
|L7.42|
;;;140 if (!i) {
00002a b944 CBNZ r4,|L7.62|
;;;141 paY[i] = rand() % YSIZE;
00002c f7fffffe BL rand
000030 218c MOVS r1,#0x8c
000032 fb90f2f1 SDIV r2,r0,r1
000036 fb010012 MLS r0,r1,r2,r0
00003a 8030 STRH r0,[r6,#0]
00003c e01c B |L7.120|
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?