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

📄 guitimer.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;247      GUI_LOCK(); {
;;;248       	GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);
000006  f7fffffe          BL       GUI_ALLOC_h2p
;;;249        pObj->t0 = Delay;
;;;250    		_Unlink(hObj);
00000a  6104              STR      r4,[r0,#0x10]
00000c  4628              MOV      r0,r5
00000e  f7fffffe          BL       _Unlink
;;;251    		_Link(hObj);
000012  4628              MOV      r0,r5
000014  e8bd4070          POP      {r4-r6,lr}
000018  f7ffbffe          B.W      _Link
;;;252      } GUI_UNLOCK(); 
;;;253    }
;;;254    
                          ENDP


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

                  GUI_TIMER_SetPeriod PROC
;;;214    */
;;;215    void GUI_TIMER_SetPeriod(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;216      GUI_LOCK(); {
;;;217        GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);
000004  f7fffffe          BL       GUI_ALLOC_h2p
;;;218        pObj->Period = Period;
;;;219      } GUI_UNLOCK(); 
;;;220    }
000008  6144              STR      r4,[r0,#0x14]
00000a  bd10              POP      {r4,pc}
;;;221    
                          ENDP


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

                  GUI_TIMER_SetTime PROC
;;;225    */
;;;226    void GUI_TIMER_SetTime(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Time) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;227      GUI_LOCK(); {
;;;228       	GUI_TIMER_Obj* pObj = GUI_TIMER_H2P(hObj);
000004  f7fffffe          BL       GUI_ALLOC_h2p
;;;229        pObj->t0 = Time;
;;;230      } GUI_UNLOCK(); 
;;;231    }
000008  6104              STR      r4,[r0,#0x10]
00000a  bd10              POP      {r4,pc}
;;;232    
                          ENDP


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

                  _Link PROC
;;;99     */
;;;100    static void _Link(GUI_TIMER_HANDLE hNew) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4607              MOV      r7,r0
;;;101      GUI_TIMER_Obj*   pNew        = GUI_TIMER_H2P(hNew);
000006  f7fffffe          BL       GUI_ALLOC_h2p
;;;102      GUI_TIMER_Obj*   pTimer;
;;;103      GUI_TIMER_Obj*   pNext;
;;;104      GUI_TIMER_HANDLE hNext;
;;;105      if (hFirstTimer ==0) { /* List is empty, make it the only element */
00000a  4d14              LDR      r5,|L9.92|
00000c  4604              MOV      r4,r0                 ;101
00000e  f9b50000          LDRSH    r0,[r5,#0]  ; hFirstTimer
000012  b920              CBNZ     r0,|L9.30|
;;;106        hFirstTimer = hNew;
000014  802f              STRH     r7,[r5,#0]
;;;107    	  pNew->hNext = 0;
000016  2000              MOVS     r0,#0
000018  80a0              STRH     r0,[r4,#4]
                  |L9.26|
;;;108      } else {
;;;109        GUI_TIMER_Obj* pFirstTimer      = GUI_TIMER_H2P(hFirstTimer);
;;;110    /* Check if we have to make it the first element */
;;;111        if ((pNew->t0 - pFirstTimer->t0) <=0) {
;;;112          pNew->hNext = hFirstTimer;
;;;113          hFirstTimer = hNew;
;;;114    			return;
;;;115    		} else {
;;;116          GUI_TIMER_HANDLE hTimer = hFirstTimer;
;;;117    /* Put it into the list */
;;;118          do {
;;;119            pTimer       = GUI_TIMER_H2P(hTimer);
;;;120            hNext        = pTimer->hNext;
;;;121            if (hNext ==0)
;;;122    					goto Append;
;;;123            pNext      = GUI_TIMER_H2P(hNext);
;;;124    				if ((pNew->t0 - pNext->t0) <=0) {
;;;125              pNew->hNext  = hNext;
;;;126              pTimer->hNext= hNew;
;;;127              return;
;;;128    				}
;;;129    			} while(1);
;;;130    /* Put it at the end of the list */
;;;131    Append:
;;;132          pNew->hNext  = hNext;
;;;133          pTimer->hNext= hNew;
;;;134          return;
;;;135    		}
;;;136      }
;;;137    }
00001a  e8bd81f0          POP      {r4-r8,pc}
                  |L9.30|
00001e  f7fffffe          BL       GUI_ALLOC_h2p
000022  6921              LDR      r1,[r4,#0x10]         ;111
000024  6900              LDR      r0,[r0,#0x10]         ;111
000026  1a08              SUBS     r0,r1,r0              ;111
000028  2800              CMP      r0,#0                 ;111
00002a  dc03              BGT      |L9.52|
00002c  8828              LDRH     r0,[r5,#0]            ;112  ; hFirstTimer
00002e  80a0              STRH     r0,[r4,#4]            ;112
000030  802f              STRH     r7,[r5,#0]            ;113
000032  e7f2              B        |L9.26|
                  |L9.52|
000034  f9b58000          LDRSH    r8,[r5,#0]            ;116  ; hFirstTimer
                  |L9.56|
000038  4640              MOV      r0,r8                 ;119
00003a  f7fffffe          BL       GUI_ALLOC_h2p
00003e  f9b06004          LDRSH    r6,[r0,#4]            ;120
000042  4605              MOV      r5,r0                 ;119
000044  b13e              CBZ      r6,|L9.86|
000046  4630              MOV      r0,r6                 ;123
000048  f7fffffe          BL       GUI_ALLOC_h2p
00004c  6921              LDR      r1,[r4,#0x10]         ;124
00004e  6900              LDR      r0,[r0,#0x10]         ;124
000050  1a08              SUBS     r0,r1,r0              ;124
000052  2800              CMP      r0,#0                 ;124
000054  dcf0              BGT      |L9.56|
                  |L9.86|
000056  80a6              STRH     r6,[r4,#4]            ;132
000058  80af              STRH     r7,[r5,#4]            ;133
00005a  e7de              B        |L9.26|
;;;138    
                          ENDP

                  |L9.92|
                          DCD      ||.data||

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

                  _Unlink PROC
;;;68     */
;;;69     static void _Unlink(GUI_TIMER_HANDLE hTimer) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
;;;70       GUI_TIMER_Obj* pTimer = GUI_TIMER_H2P(hTimer);
000004  f7fffffe          BL       GUI_ALLOC_h2p
;;;71       GUI_TIMER_HANDLE hi;
;;;72       GUI_TIMER_Obj*   pi;
;;;73     /* Check if it is the first element */
;;;74       if (hFirstTimer == hTimer) {
000008  490b              LDR      r1,|L10.56|
00000a  4604              MOV      r4,r0                 ;70
00000c  f9b10000          LDRSH    r0,[r1,#0]  ; hFirstTimer
000010  42a8              CMP      r0,r5
000012  d10d              BNE      |L10.48|
;;;75         hFirstTimer = pTimer->hNext;
000014  88a0              LDRH     r0,[r4,#4]
000016  8008              STRH     r0,[r1,#0]
;;;76         return;
;;;77     	}
;;;78       hi = hFirstTimer;
;;;79     /* Try to find it in the list ... */
;;;80       while(hi) {
;;;81         /* GUI_ASSERT(hi<1000,0); */
;;;82         pi = GUI_TIMER_H2P(hi);
;;;83         if (pi->hNext == hTimer) {
;;;84           pi->hNext = pTimer->hNext;
;;;85           break;
;;;86     		}        
;;;87         hi = pi->hNext;
;;;88       }  
;;;89     }
000018  bd70              POP      {r4-r6,pc}
00001a  bf00              NOP                            ;82
                  |L10.28|
00001c  f7fffffe          BL       GUI_ALLOC_h2p
000020  4601              MOV      r1,r0                 ;82
000022  f9b00004          LDRSH    r0,[r0,#4]            ;83
000026  42a8              CMP      r0,r5                 ;83
000028  d102              BNE      |L10.48|
00002a  88a0              LDRH     r0,[r4,#4]            ;84
00002c  8088              STRH     r0,[r1,#4]            ;84
00002e  bd70              POP      {r4-r6,pc}
                  |L10.48|
000030  2800              CMP      r0,#0                 ;80
000032  d1f3              BNE      |L10.28|
000034  bd70              POP      {r4-r6,pc}
;;;90     
                          ENDP

000036  0000              DCW      0x0000
                  |L10.56|
                          DCD      ||.data||

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

                  hFirstTimer
000000  0000              DCB      0x00,0x00
                  _hActiveTimer
000002  0000              DCB      0x00,0x00

⌨️ 快捷键说明

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