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

📄 edit.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\edit.o --depend=.\Obj\edit.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\Widget\EDIT.c]
                          THUMB

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

                  EDIT_AddKey PROC
;;;538    */
;;;539    void EDIT_AddKey(EDIT_Handle hObj, int Key) {
000000  b570              PUSH     {r4-r6,lr}
000002  0006              MOVS     r6,r0
000004  460d              MOV      r5,r1
;;;540      if (hObj) {
000006  d07c              BEQ      |L1.258|
;;;541        EDIT_Obj* pObj;
;;;542        WM_LOCK();
;;;543        pObj = EDIT_H2P(hObj);
000008  4630              MOV      r0,r6
00000a  f7fffffe          BL       GUI_ALLOC_h2p
00000e  0004              MOVS     r4,r0
;;;544        if (pObj) {
000010  d077              BEQ      |L1.258|
;;;545          if (pObj->pfAddKeyEx) {
000012  6ce2              LDR      r2,[r4,#0x4c]
000014  b11a              CBZ      r2,|L1.30|
;;;546            pObj->pfAddKeyEx(hObj, Key);
000016  4629              MOV      r1,r5
000018  4630              MOV      r0,r6
00001a  4790              BLX      r2
00001c  e06c              B        |L1.248|
                  |L1.30|
;;;547          } else {
;;;548            switch (Key) {
00001e  2d12              CMP      r5,#0x12
000020  d066              BEQ      |L1.240|
000022  dc19              BGT      |L1.88|
000024  2d08              CMP      r5,#8
000026  d03d              BEQ      |L1.164|
000028  2d0d              CMP      r5,#0xd
00002a  d065              BEQ      |L1.248|
00002c  2d10              CMP      r5,#0x10
00002e  d033              BEQ      |L1.152|
000030  2d11              CMP      r5,#0x11
000032  d14e              BNE      |L1.210|
;;;549            case GUI_KEY_UP:
;;;550              if (pObj->hpText) {
000034  f9b40028          LDRSH    r0,[r4,#0x28]
000038  2800              CMP      r0,#0
00003a  d05d              BEQ      |L1.248|
;;;551                char* pText;
;;;552                U16 Char;
;;;553                pText  = (char*) GUI_ALLOC_h2p(pObj->hpText);
00003c  f7fffffe          BL       GUI_ALLOC_h2p
000040  4605              MOV      r5,r0
;;;554                pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000042  6c21              LDR      r1,[r4,#0x40]
000044  f7fffffe          BL       GUI_UC__NumChars2NumBytes
000048  1944              ADDS     r4,r0,r5
;;;555                Char   = GUI_UC_GetCharCode(pText);
00004a  4620              MOV      r0,r4
00004c  f7fffffe          BL       GUI_UC_GetCharCode
;;;556                if (Char < 0x7f) {  
000050  287f              CMP      r0,#0x7f
000052  d251              BCS      |L1.248|
;;;557                  *pText = Char + 1;
000054  1c40              ADDS     r0,r0,#1
;;;558                  WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000056  e019              B        |L1.140|
                  |L1.88|
000058  2d13              CMP      r5,#0x13              ;548
00005a  d006              BEQ      |L1.106|
00005c  2d1b              CMP      r5,#0x1b              ;548
00005e  d04b              BEQ      |L1.248|
000060  2d1d              CMP      r5,#0x1d              ;548
000062  d029              BEQ      |L1.184|
000064  2d1e              CMP      r5,#0x1e              ;548
000066  d134              BNE      |L1.210|
000068  e021              B        |L1.174|
                  |L1.106|
;;;559                }
;;;560              }
;;;561              break;
;;;562            case GUI_KEY_DOWN:
;;;563              if (pObj->hpText) {
00006a  f9b40028          LDRSH    r0,[r4,#0x28]
00006e  2800              CMP      r0,#0
000070  d042              BEQ      |L1.248|
;;;564                char* pText;
;;;565                U16 Char;
;;;566                pText  = (char*) GUI_ALLOC_h2p(pObj->hpText);
000072  f7fffffe          BL       GUI_ALLOC_h2p
000076  4605              MOV      r5,r0
;;;567                pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000078  6c21              LDR      r1,[r4,#0x40]
00007a  f7fffffe          BL       GUI_UC__NumChars2NumBytes
00007e  1944              ADDS     r4,r0,r5
;;;568                Char   = GUI_UC_GetCharCode(pText);
000080  4620              MOV      r0,r4
000082  f7fffffe          BL       GUI_UC_GetCharCode
;;;569                if (Char > 0x20) {  
000086  2820              CMP      r0,#0x20
000088  d936              BLS      |L1.248|
;;;570                  *pText = Char - 1;
00008a  1e40              SUBS     r0,r0,#1
                  |L1.140|
00008c  7020              STRB     r0,[r4,#0]
;;;571                  WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
00008e  2105              MOVS     r1,#5
000090  4630              MOV      r0,r6
000092  f7fffffe          BL       WM_NotifyParent
000096  e02f              B        |L1.248|
                  |L1.152|
;;;572                }
;;;573              }
;;;574              break;
;;;575            case GUI_KEY_RIGHT:
;;;576              EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
;;;577              break;
;;;578            case GUI_KEY_LEFT:
;;;579              EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
000098  6c21              LDR      r1,[r4,#0x40]
00009a  1e49              SUBS     r1,r1,#1
                  |L1.156|
00009c  4620              MOV      r0,r4
00009e  f7fffffe          BL       EDIT__SetCursorPos
0000a2  e029              B        |L1.248|
                  |L1.164|
;;;580              break;
;;;581            case GUI_KEY_BACKSPACE:
;;;582              EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
0000a4  6c21              LDR      r1,[r4,#0x40]
0000a6  4620              MOV      r0,r4
0000a8  1e49              SUBS     r1,r1,#1
0000aa  f7fffffe          BL       EDIT__SetCursorPos
                  |L1.174|
;;;583              _DeleteChar(hObj, pObj);
;;;584              break;
;;;585            case GUI_KEY_DELETE:
;;;586              _DeleteChar(hObj, pObj);
0000ae  4621              MOV      r1,r4
0000b0  4630              MOV      r0,r6
0000b2  f7fffffe          BL       _DeleteChar
;;;587              break;
0000b6  e01f              B        |L1.248|
                  |L1.184|
;;;588            case GUI_KEY_INSERT:
;;;589              if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE) {
0000b8  f8940048          LDRB     r0,[r4,#0x48]
0000bc  2801              CMP      r0,#1
0000be  d103              BNE      |L1.200|
;;;590                pObj->EditMode = GUI_EDIT_MODE_INSERT;
0000c0  2000              MOVS     r0,#0
0000c2  f8840048          STRB     r0,[r4,#0x48]
0000c6  e017              B        |L1.248|
                  |L1.200|
;;;591              } else {
;;;592                pObj->EditMode = GUI_EDIT_MODE_OVERWRITE;
0000c8  2001              MOVS     r0,#1
0000ca  f8840048          STRB     r0,[r4,#0x48]
;;;593                EDIT__SetCursorPos(pObj, pObj->CursorPos);
0000ce  6c21              LDR      r1,[r4,#0x40]
0000d0  e7e4              B        |L1.156|
                  |L1.210|
;;;594              }
;;;595              break;
;;;596            case GUI_KEY_ENTER:
;;;597            case GUI_KEY_ESCAPE:
;;;598              break;
;;;599            default:
;;;600              if (Key >= 0x20) {
0000d2  2d20              CMP      r5,#0x20
0000d4  db10              BLT      |L1.248|
;;;601                if (pObj->EditMode != GUI_EDIT_MODE_INSERT) {
0000d6  f8940048          LDRB     r0,[r4,#0x48]
0000da  b118              CBZ      r0,|L1.228|
;;;602                  _DeleteChar(hObj, pObj);
0000dc  4621              MOV      r1,r4
0000de  4630              MOV      r0,r6
0000e0  f7fffffe          BL       _DeleteChar
                  |L1.228|
;;;603                }
;;;604                if (_InsertChar(hObj, pObj, Key)) {
0000e4  b2aa              UXTH     r2,r5
0000e6  4621              MOV      r1,r4
0000e8  4630              MOV      r0,r6
0000ea  f7fffffe          BL       _InsertChar
0000ee  b118              CBZ      r0,|L1.248|
                  |L1.240|
;;;605                  EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
0000f0  6c21              LDR      r1,[r4,#0x40]
0000f2  1c49              ADDS     r1,r1,#1
0000f4  e7d2              B        |L1.156|
0000f6  e004              B        |L1.258|
                  |L1.248|
;;;606                }
;;;607              }
;;;608            }
;;;609          }
;;;610          EDIT_Invalidate(hObj);
0000f8  4630              MOV      r0,r6
0000fa  e8bd4070          POP      {r4-r6,lr}
0000fe  f7ffbffe          B.W      WM_InvalidateWindow
                  |L1.258|
;;;611        }
;;;612        WM_UNLOCK();
;;;613      }
;;;614    }
000102  bd70              POP      {r4-r6,pc}
;;;615    
                          ENDP


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

                  EDIT_CreateEx PROC
;;;496    */
;;;497    EDIT_Handle EDIT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags,
000000  e92d41ff          PUSH     {r0-r8,lr}
;;;498                              int Id, int MaxLen)
;;;499    {
000004  4605              MOV      r5,r0
000006  460e              MOV      r6,r1
;;;500      EDIT_Handle hObj;
;;;501      GUI_USE_PARA(ExFlags);
;;;502      /* Alloc memory for obj */
;;;503      WinFlags |= WM_CF_LATE_CLIP;    /* Always use late clipping since widget is optimized for it. */
000008  e9dd010a          LDRD     r0,r1,[sp,#0x28]
00000c  b289              UXTH     r1,r1
;;;504      hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WM_CF_SHOW | WinFlags, EDIT__Callback,
00000e  e9dd840d          LDRD     r8,r4,[sp,#0x34]
000012  4617              MOV      r7,r2                 ;499
000014  469c              MOV      r12,r3                ;499
000016  f4415180          ORR      r1,r1,#0x1000
00001a  2354              MOVS     r3,#0x54
00001c  4a19              LDR      r2,|L2.132|
00001e  f0410102          ORR      r1,r1,#2
000022  e88d000f          STM      sp,{r0-r3}
000026  4663              MOV      r3,r12
000028  463a              MOV      r2,r7
00002a  4631              MOV      r1,r6
00002c  4628              MOV      r0,r5
00002e  f7fffffe          BL       WM_CreateWindowAsChild
000032  0006              MOVS     r6,r0
;;;505                                    sizeof(EDIT_Obj) - sizeof(WM_Obj));
;;;506      if (hObj) {
000034  d021              BEQ      |L2.122|
;;;507        EDIT_Obj* pObj;
;;;508        WM_LOCK();
;;;509        pObj = (EDIT_Obj*)GUI_ALLOC_h2p(hObj);
000036  4630              MOV      r0,r6
000038  f7fffffe          BL       GUI_ALLOC_h2p
00003c  4605              MOV      r5,r0
;;;510        /* init widget specific variables */
;;;511        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
00003e  2210              MOVS     r2,#0x10
000040  4641              MOV      r1,r8
000042  f7fffffe          BL       WIDGET__Init
;;;512        /* init member variables */
;;;513        INIT_ID(pObj);
;;;514        pObj->Props         = EDIT__DefaultProps;
000046  221c              MOVS     r2,#0x1c
000048  490f              LDR      r1,|L2.136|
00004a  f1050054          ADD      r0,r5,#0x54
00004e  f7fffffe          BL       __aeabi_memcpy4
;;;515        pObj->XSizeCursor   = 1;
000052  2101              MOVS     r1,#1
000054  f8851049          STRB     r1,[r5,#0x49]
;;;516        pObj->MaxLen        = (MaxLen == 0) ? 8 : MaxLen;
000058  2008              MOVS     r0,#8
00005a  b104              CBZ      r4,|L2.94|
00005c  4620              MOV      r0,r4
                  |L2.94|
00005e  b201              SXTH     r1,r0
000060  8569              STRH     r1,[r5,#0x2a]
;;;517        pObj->BufferSize    = 0;
000062  2000              MOVS     r0,#0
000064  85a8              STRH     r0,[r5,#0x2c]
;;;518        pObj->hpText        = 0;
000066  8528              STRH     r0,[r5,#0x28]
;;;519        if (_IncrementBuffer(pObj, pObj->MaxLen + 1) == 0) {
000068  1c49              ADDS     r1,r1,#1
00006a  4628              MOV      r0,r5
00006c  f7fffffe          BL       _IncrementBuffer
000070  b918              CBNZ     r0,|L2.122|
;;;520          GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer");
;;;521          EDIT_Delete(hObj);
000072  4630              MOV      r0,r6
000074  f7fffffe          BL       WM_DeleteWindow
;;;522          hObj = 0;
000078  2600              MOVS     r6,#0
                  |L2.122|
;;;523        }
;;;524        WM_UNLOCK();
;;;525      }
;;;526      return hObj;
00007a  4630              MOV      r0,r6
;;;527    }
00007c  b004              ADD      sp,sp,#0x10
00007e  e8bd81f0          POP      {r4-r8,pc}
;;;528    
                          ENDP

000082  0000              DCW      0x0000
                  |L2.132|
                          DCD      EDIT__Callback
                  |L2.136|
                          DCD      ||.data||

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

                  EDIT_GetText PROC
;;;717    */
;;;718    void EDIT_GetText(EDIT_Handle hObj, char* sDest, int MaxLen) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  000c              MOVS     r4,r1

⌨️ 快捷键说明

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