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

📄 gui_onkey.txt

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

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

                  GUI_ClearKeyBuffer PROC
;;;84     */
;;;85     void GUI_ClearKeyBuffer(void) {
000000  b500              PUSH     {lr}
;;;86       while (GUI_GetKey());
000002  bf00              NOP      
                  |L1.4|
000004  f7fffffe          BL       GUI_GetKey
000008  2800              CMP      r0,#0
00000a  d1fb              BNE      |L1.4|
;;;87     }
00000c  bd00              POP      {pc}
;;;88     
                          ENDP


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

                  GUI_GetKey PROC
;;;63     */
;;;64     int GUI_GetKey(void) {
000000  4902              LDR      r1,|L2.12|
;;;65       int r = _Key;
;;;66       _Key = 0;
000002  2200              MOVS     r2,#0
000004  6848              LDR      r0,[r1,#4]  ; _Key
;;;67       return r;
000006  604a              STR      r2,[r1,#4]  ; _Key
;;;68     }
000008  4770              BX       lr
;;;69     
                          ENDP

00000a  0000              DCW      0x0000
                  |L2.12|
                          DCD      ||.data||

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

                  GUI_PollKeyMsg PROC
;;;109    #if GUI_WINSUPPORT    /* If 0, WM will not generate any code */
;;;110    int GUI_PollKeyMsg(void) {
000000  b570              PUSH     {r4-r6,lr}
;;;111      int r = 0;
;;;112      GUI_LOCK();
;;;113      if (_KeyMsgCnt) {
000002  4a0b              LDR      r2,|L3.48|
000004  2000              MOVS     r0,#0                 ;111
000006  6811              LDR      r1,[r2,#0]  ; _KeyMsgCnt
000008  2900              CMP      r1,#0
00000a  d00f              BEQ      |L3.44|
;;;114        int Key;
;;;115        _KeyMsgCnt--;
00000c  1e49              SUBS     r1,r1,#1
;;;116        Key = _KeyMsg.Key;
00000e  f1020408          ADD      r4,r2,#8
000012  6011              STR      r1,[r2,#0]  ; _KeyMsgCnt
;;;117        WM_OnKey(Key, _KeyMsg.PressedCnt);
000014  e9d45100          LDRD     r5,r1,[r4,#0]
000018  4628              MOV      r0,r5
00001a  f7fffffe          BL       WM_OnKey
;;;118        if (_KeyMsg.PressedCnt == 1) {
00001e  6860              LDR      r0,[r4,#4]  ; _KeyMsg
000020  2801              CMP      r0,#1
000022  d102              BNE      |L3.42|
;;;119          GUI_StoreKey(Key);
000024  4628              MOV      r0,r5
000026  f7fffffe          BL       GUI_StoreKey
                  |L3.42|
;;;120        }
;;;121        r = 1;              /* We have done something */
00002a  2001              MOVS     r0,#1
                  |L3.44|
;;;122      }
;;;123      GUI_UNLOCK();
;;;124      return r;
;;;125    }
00002c  bd70              POP      {r4-r6,pc}
;;;126    #endif
                          ENDP

00002e  0000              DCW      0x0000
                  |L3.48|
                          DCD      ||.data||

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

                  GUI_SendKeyMsg PROC
;;;136    */
;;;137    void GUI_SendKeyMsg(int Key, int PressedCnt) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;138      #if GUI_WINSUPPORT    /* If 0, WM will not generate any code */
;;;139        if (!WM_OnKey(Key, PressedCnt)) {
000006  f7fffffe          BL       WM_OnKey
00000a  2800              CMP      r0,#0
00000c  d105              BNE      |L4.26|
;;;140          GUI_StoreKeyMsg(Key, PressedCnt);
00000e  4629              MOV      r1,r5
000010  4620              MOV      r0,r4
000012  e8bd4070          POP      {r4-r6,lr}
000016  f7ffbffe          B.W      GUI_StoreKeyMsg
                  |L4.26|
;;;141        }
;;;142      #else
;;;143        GUI_StoreKeyMsg(Key, PressedCnt);
;;;144      #endif
;;;145    }
00001a  bd70              POP      {r4-r6,pc}
;;;146    
                          ENDP


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

                  GUI_StoreKey PROC
;;;73     */
;;;74     void GUI_StoreKey(int Key) {
000000  4902              LDR      r1,|L5.12|
;;;75       if (!_Key) {
000002  684a              LDR      r2,[r1,#4]  ; _Key
000004  2a00              CMP      r2,#0
000006  d100              BNE      |L5.10|
;;;76         _Key = Key;
000008  6048              STR      r0,[r1,#4]  ; _Key
                  |L5.10|
;;;77       }
;;;78       GUI_X_SIGNAL_EVENT();
;;;79     }
00000a  4770              BX       lr
;;;80     
                          ENDP

                  |L5.12|
                          DCD      ||.data||

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

                  GUI_StoreKeyMsg PROC
;;;92     */
;;;93     void GUI_StoreKeyMsg(int Key, int PressedCnt) {
000000  4a03              LDR      r2,|L6.16|
;;;94       #if GUI_WINSUPPORT    /* If 0, WM will not generate any code */
;;;95       _KeyMsg.Key = Key;
;;;96       _KeyMsg.PressedCnt = PressedCnt;
;;;97       _KeyMsgCnt = 1;
000002  c203              STM      r2!,{r0,r1}
000004  2001              MOVS     r0,#1
000006  f1a20110          SUB      r1,r2,#0x10
;;;98       GUI_X_SIGNAL_EVENT();
;;;99       #else
;;;100        GUI_USE_PARA(PressedCnt);
;;;101        GUI_StoreKey(Key);
;;;102      #endif
;;;103    }
00000a  6008              STR      r0,[r1,#0]  ; _KeyMsgCnt
00000c  4770              BX       lr
;;;104    
                          ENDP

00000e  0000              DCW      0x0000
                  |L6.16|
                          DCD      ||.data||+0x8

                          AREA ||.data||, DATA, ALIGN=2

                  _KeyMsgCnt
                          DCD      0x00000000
                  _Key
                          DCD      0x00000000
                  _KeyMsg
                          %        8

                          AREA ||area_number.10||, DATA, ALIGN=2

                          EXPORTAS ||area_number.10||, ||.data||
                  GUI_pfKeyMsgHook
                          DCD      0x00000000

⌨️ 快捷键说明

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