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