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

📄 menu.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\menu.o --depend=.\Obj\menu.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\MENU.c]
                          THUMB

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

                  MENU_AddItem PROC
;;;1138   */
;;;1139   void MENU_AddItem(MENU_Handle hObj, const MENU_ITEM_DATA* pItemData) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  0005              MOVS     r5,r0
000006  460e              MOV      r6,r1
;;;1140     if (hObj && pItemData) {
000008  d026              BEQ      |L1.88|
00000a  2e00              CMP      r6,#0
00000c  d024              BEQ      |L1.88|
;;;1141       MENU_Obj* pObj;
;;;1142       WM_LOCK();
;;;1143       pObj = MENU_H2P(hObj);
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       GUI_ALLOC_h2p
000014  0004              MOVS     r4,r0
;;;1144       if (pObj) {
000016  d01f              BEQ      |L1.88|
;;;1145         if (GUI_ARRAY_AddItem(&pObj->ItemArray, NULL, 0) == 0) {
000018  2200              MOVS     r2,#0
00001a  f1040058          ADD      r0,r4,#0x58
00001e  4611              MOV      r1,r2
000020  4680              MOV      r8,r0
000022  f7fffffe          BL       GUI_ARRAY_AddItem
000026  2800              CMP      r0,#0
000028  d116              BNE      |L1.88|
00002a  4640              MOV      r0,r8
00002c  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;1146           unsigned Index;
;;;1147           Index = MENU__GetNumItems(pObj) - 1;
000030  1e47              SUBS     r7,r0,#1
;;;1148           if (MENU__SetItem(hObj, pObj, Index, pItemData) == 0) {
000032  4633              MOV      r3,r6
000034  463a              MOV      r2,r7
000036  4621              MOV      r1,r4
000038  4628              MOV      r0,r5
00003a  f7fffffe          BL       MENU__SetItem
00003e  b928              CBNZ     r0,|L1.76|
;;;1149             GUI_ARRAY_DeleteItem(&pObj->ItemArray, Index);
000040  4639              MOV      r1,r7
000042  4640              MOV      r0,r8
000044  e8bd41f0          POP      {r4-r8,lr}
000048  f7ffbffe          B.W      GUI_ARRAY_DeleteItem
                  |L1.76|
;;;1150           } else {
;;;1151             MENU__ResizeMenu(hObj, pObj);
00004c  4621              MOV      r1,r4
00004e  4628              MOV      r0,r5
000050  e8bd41f0          POP      {r4-r8,lr}
000054  f7ffbffe          B.W      MENU__ResizeMenu
                  |L1.88|
;;;1152           }
;;;1153         }
;;;1154       }
;;;1155       WM_UNLOCK();
;;;1156     }
;;;1157   }
000058  e8bd81f0          POP      {r4-r8,pc}
;;;1158   
                          ENDP


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

                  MENU_CreateEx PROC
;;;981    */
;;;982    MENU_Handle MENU_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) {
000000  e92d47ff          PUSH     {r0-r10,lr}
000004  4604              MOV      r4,r0
000006  460e              MOV      r6,r1
;;;983      MENU_Handle hObj;
;;;984      /* Create the window */
;;;985      hObj = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hParent, WM_CF_SHOW | WM_CF_STAYONTOP | WinFlags, &_MENU_Callback,
000008  a80c              ADD      r0,sp,#0x30
00000a  e8900223          LDM      r0,{r0,r1,r5,r9}
00000e  4617              MOV      r7,r2                 ;982
000010  4698              MOV      r8,r3                 ;982
000012  b289              UXTH     r1,r1
000014  2350              MOVS     r3,#0x50
000016  4a20              LDR      r2,|L2.152|
000018  f041010a          ORR      r1,r1,#0xa
00001c  e88d000f          STM      sp,{r0-r3}
000020  4643              MOV      r3,r8
000022  463a              MOV      r2,r7
000024  4631              MOV      r1,r6
000026  4620              MOV      r0,r4
000028  f7fffffe          BL       WM_CreateWindowAsChild
00002c  0006              MOVS     r6,r0
;;;986                                    sizeof(MENU_Obj) - sizeof(WM_Obj));
;;;987      if (hObj) {
00002e  d02e              BEQ      |L2.142|
;;;988        MENU_Obj* pObj;
;;;989        WM_LOCK();
;;;990        pObj = (MENU_Obj*)GUI_ALLOC_h2p(hObj);
000030  4630              MOV      r0,r6
000032  f7fffffe          BL       GUI_ALLOC_h2p
000036  4604              MOV      r4,r0
;;;991         /* Init sub-classes */
;;;992        GUI_ARRAY_CREATE(&pObj->ItemArray);
;;;993        /* init widget specific variables */
;;;994        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000038  2210              MOVS     r2,#0x10
00003a  4649              MOV      r1,r9
00003c  f7fffffe          BL       WIDGET__Init
;;;995        /* init member variables */
;;;996        if (ExFlags & MENU_SF_OPEN_ON_POINTEROVER) {
000040  07a8              LSLS     r0,r5,#30
000042  d502              BPL      |L2.74|
;;;997          ExFlags |= MENU_SF_ACTIVE;
000044  f0450540          ORR      r5,r5,#0x40
000048  e001              B        |L2.78|
                  |L2.74|
;;;998        } else {
;;;999          ExFlags &= ~(MENU_SF_ACTIVE);
00004a  f0250540          BIC      r5,r5,#0x40
                  |L2.78|
;;;1000       }
;;;1001       pObj->Props           = MENU__DefaultProps;
00004e  2230              MOVS     r2,#0x30
000050  4912              LDR      r1,|L2.156|
000052  f1040028          ADD      r0,r4,#0x28
000056  f7fffffe          BL       __aeabi_memcpy4
;;;1002       pObj->Flags           = ExFlags;
;;;1003       pObj->Width           = ((xSize > 0) ? xSize : 0);
00005a  2100              MOVS     r1,#0
00005c  f8a4505e          STRH     r5,[r4,#0x5e]         ;1002
000060  4608              MOV      r0,r1
000062  2f00              CMP      r7,#0
000064  dd00              BLE      |L2.104|
000066  4638              MOV      r0,r7
                  |L2.104|
;;;1004       pObj->Height          = ((ySize > 0) ? ySize : 0);
000068  6660              STR      r0,[r4,#0x64]
00006a  4608              MOV      r0,r1
00006c  f1b80f00          CMP      r8,#0
000070  dd00              BLE      |L2.116|
000072  4640              MOV      r0,r8
                  |L2.116|
000074  345c              ADDS     r4,r4,#0x5c
;;;1005       pObj->Sel             = -1;
000076  60e0              STR      r0,[r4,#0xc]
000078  f04f30ff          MOV      r0,#0xffffffff
;;;1006       pObj->hOwner          = 0;
00007c  6120              STR      r0,[r4,#0x10]
;;;1007       pObj->IsSubmenuActive = 0;
;;;1008       WIDGET_SetEffect(hObj, MENU__pDefaultEffect);
00007e  4807              LDR      r0,|L2.156|
000080  8021              STRH     r1,[r4,#0]            ;1006
000082  7121              STRB     r1,[r4,#4]            ;1007
000084  1f00              SUBS     r0,r0,#4
000086  6801              LDR      r1,[r0,#0]  ; MENU__pDefaultEffect
000088  4630              MOV      r0,r6
00008a  f7fffffe          BL       WIDGET_SetEffect
                  |L2.142|
;;;1009       INIT_ID(pObj);
;;;1010       WM_UNLOCK();
;;;1011     } else {
;;;1012       GUI_DEBUG_ERROROUT_IF(hObj==0, "MENU_CreateEx failed")
;;;1013     }
;;;1014     return hObj;
00008e  4630              MOV      r0,r6
;;;1015   }
000090  b004              ADD      sp,sp,#0x10
000092  e8bd87f0          POP      {r4-r10,pc}
;;;1016   
                          ENDP

000096  0000              DCW      0x0000
                  |L2.152|
                          DCD      _MENU_Callback
                  |L2.156|
                          DCD      ||.data||+0x4

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

                  MENU_SetOwner PROC
;;;1162   */
;;;1163   void MENU_SetOwner(MENU_Handle hObj, WM_HWIN hOwner) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;1164     if (hObj) {
000004  2800              CMP      r0,#0
000006  d005              BEQ      |L3.20|
;;;1165       MENU_Obj* pObj;
;;;1166       WM_LOCK();
;;;1167       pObj = MENU_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
;;;1168       if (pObj) {
00000c  2800              CMP      r0,#0
00000e  d001              BEQ      |L3.20|
;;;1169         pObj->hOwner = hOwner;
000010  f8a0405c          STRH     r4,[r0,#0x5c]
                  |L3.20|
;;;1170       }
;;;1171       WM_UNLOCK();
;;;1172     }
;;;1173   }
000014  bd10              POP      {r4,pc}
;;;1174   
                          ENDP


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

                  MENU__GetNumItems PROC
;;;1026   */
;;;1027   unsigned MENU__GetNumItems(MENU_Obj* pObj) {
000000  3058              ADDS     r0,r0,#0x58
;;;1028     return GUI_ARRAY_GetNumItems(&pObj->ItemArray);
000002  f7ffbffe          B.W      GUI_ARRAY_GetNumItems
;;;1029   }
;;;1030   
                          ENDP


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

                  MENU__InvalidateItem PROC
;;;1034   */
;;;1035   void MENU__InvalidateItem(MENU_Handle hObj, const MENU_Obj* pObj, unsigned Index) {
000000  f7ffbffe          B.W      WM_InvalidateWindow
;;;1036     GUI_USE_PARA(pObj);
;;;1037     GUI_USE_PARA(Index);
;;;1038     WM_InvalidateWindow(hObj);  /* Can be optimized, no need to invalidate all items */
;;;1039   }
;;;1040   
                          ENDP


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

                  MENU__RecalcTextWidthOfItems PROC
;;;1044   */
;;;1045   void MENU__RecalcTextWidthOfItems(MENU_Obj* pObj) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4604              MOV      r4,r0
000006  3058              ADDS     r0,r0,#0x58
000008  4680              MOV      r8,r0
00000a  f7fffffe          BL       GUI_ARRAY_GetNumItems
;;;1046     const GUI_FONT GUI_UNI_PTR* pOldFont;
;;;1047     MENU_ITEM* pItem;
;;;1048     unsigned i, NumItems;
;;;1049     NumItems = MENU__GetNumItems(pObj);
00000e  4606              MOV      r6,r0
;;;1050     pOldFont  = GUI_SetFont(pObj->Props.pFont);
000010  6d60              LDR      r0,[r4,#0x54]
000012  f7fffffe          BL       GUI_SetFont
000016  4607              MOV      r7,r0
;;;1051     for (i = 0; i < NumItems; i++) {
000018  2400              MOVS     r4,#0
00001a  e009              B        |L6.48|
                  |L6.28|
;;;1052       pItem = (MENU_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, i);
00001c  4621              MOV      r1,r4
00001e  4640              MOV      r0,r8
000020  f7fffffe          BL       GUI_ARRAY_GetpItem
000024  4605              MOV      r5,r0
;;;1053       pItem->TextWidth = GUI_GetStringDistX(pItem->acText);
000026  300c              ADDS     r0,r0,#0xc
000028  f7fffffe          BL       GUI_GetStringDistX
00002c  1c64              ADDS     r4,r4,#1              ;1051
00002e  60a8              STR      r0,[r5,#8]            ;1051
                  |L6.48|
000030  42b4              CMP      r4,r6                 ;1051
000032  d3f3              BCC      |L6.28|
;;;1054     }
;;;1055     GUI_SetFont(pOldFont);
000034  4638              MOV      r0,r7
000036  e8bd41f0          POP      {r4-r8,lr}
00003a  f7ffbffe          B.W      GUI_SetFont
;;;1056   }
;;;1057   
                          ENDP


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

                  MENU__ResizeMenu PROC
;;;1061   */
;;;1062   void MENU__ResizeMenu(MENU_Handle hObj, MENU_Obj* pObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  6e48              LDR      r0,[r1,#0x64]
000006  460c              MOV      r4,r1
000008  b918              CBNZ     r0,|L7.18|
00000a  4621              MOV      r1,r4
00000c  4628              MOV      r0,r5
00000e  f7fffffe          BL       _CalcMenuSizeX
                  |L7.18|
;;;1063     int xSize, ySize;
;;;1064     xSize = _CalcWindowSizeX(hObj, pObj);
000012  4606              MOV      r6,r0
000014  6ea0              LDR      r0,[r4,#0x68]
000016  b918              CBNZ     r0,|L7.32|
000018  4621              MOV      r1,r4
00001a  4628              MOV      r0,r5
00001c  f7fffffe          BL       _CalcMenuSizeY
                  |L7.32|
;;;1065     ySize = _CalcWindowSizeY(hObj, pObj);
;;;1066     WM_SetSize(hObj, xSize, ySize);
000020  4602              MOV      r2,r0
000022  4631              MOV      r1,r6
000024  4628              MOV      r0,r5
000026  f7fffffe          BL       WM_SetSize
;;;1067     WM_InvalidateWindow(hObj);
00002a  4628              MOV      r0,r5

⌨️ 快捷键说明

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