📄 os_time.lst
字号:
187 ptcb->OSTCBDly = 0; /* Clear the time delay */
\ ??OSTimeDlyResume_5:
\ 00000070 0020A0E3 MOV R2,#+0
\ 00000074 BA22C1E1 STRH R2,[R1, #+42]
188 if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
\ 00000078 2C20D1E5 LDRB R2,[R1, #+44]
\ 0000007C 370012E3 TST R2,#0x37
\ 00000080 0500000A BEQ ??OSTimeDlyResume_6
189 ptcb->OSTCBStat &= ~OS_STAT_PEND_ANY; /* Yes, Clear status flag */
\ 00000084 2C20D1E5 LDRB R2,[R1, #+44]
\ 00000088 C82012E2 ANDS R2,R2,#0xC8
\ 0000008C 2C20C1E5 STRB R2,[R1, #+44]
190 ptcb->OSTCBStatPend = OS_STAT_PEND_TO; /* Indicate PEND timeout */
\ 00000090 0120A0E3 MOV R2,#+1
\ 00000094 2D20C1E5 STRB R2,[R1, #+45]
\ 00000098 010000EA B ??OSTimeDlyResume_7
191 } else {
192 ptcb->OSTCBStatPend = OS_STAT_PEND_OK;
\ ??OSTimeDlyResume_6:
\ 0000009C 0020A0E3 MOV R2,#+0
\ 000000A0 2D20C1E5 STRB R2,[R1, #+45]
193 }
194 if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) { /* Is task suspended? */
\ ??OSTimeDlyResume_7:
\ 000000A4 2C20D1E5 LDRB R2,[R1, #+44]
\ 000000A8 080012E3 TST R2,#0x8
\ 000000AC 1000001A BNE ??OSTimeDlyResume_8
195 OSRdyGrp |= ptcb->OSTCBBitY; /* No, Make ready */
\ 000000B0 ........ LDR R2,??DataTable6 ;; OSRdyGrp
\ 000000B4 ........ LDR R3,??DataTable6 ;; OSRdyGrp
\ 000000B8 0030D3E5 LDRB R3,[R3, #+0]
\ 000000BC 3240D1E5 LDRB R4,[R1, #+50]
\ 000000C0 033094E1 ORRS R3,R4,R3
\ 000000C4 0030C2E5 STRB R3,[R2, #+0]
196 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
\ 000000C8 3020D1E5 LDRB R2,[R1, #+48]
\ 000000CC ........ LDR R3,??DataTable8 ;; OSRdyTbl
\ 000000D0 3040D1E5 LDRB R4,[R1, #+48]
\ 000000D4 ........ LDR R12,??DataTable8 ;; OSRdyTbl
\ 000000D8 0C40D4E7 LDRB R4,[R4, +R12]
\ 000000DC 3110D1E5 LDRB R1,[R1, #+49]
\ 000000E0 041091E1 ORRS R1,R1,R4
\ 000000E4 0310C2E7 STRB R1,[R2, +R3]
197 OS_EXIT_CRITICAL();
\ 000000E8 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
198 OS_Sched(); /* See if this is new highest priority */
\ 000000EC ........ _BLF OS_Sched,??OS_Sched??rA
\ 000000F0 000000EA B ??OSTimeDlyResume_9
199 } else {
200 OS_EXIT_CRITICAL(); /* Task may be suspended */
\ ??OSTimeDlyResume_8:
\ 000000F4 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
201 }
202 return (OS_ERR_NONE);
\ ??OSTimeDlyResume_9:
\ 000000F8 0000A0E3 MOV R0,#+0
\ ??OSTimeDlyResume_1:
\ 000000FC 1080BDE8 POP {R4,PC} ;; return
\ ??OSTimeDlyResume_2:
\ 00000100 ........ DC32 OSTCBPrioTbl
203 }
204 #endif
205 /*$PAGE*/
206 /*
207 *********************************************************************************************************
208 * GET CURRENT SYSTEM TIME
209 *
210 * Description: This function is used by your application to obtain the current value of the 32-bit
211 * counter which keeps track of the number of clock ticks.
212 *
213 * Arguments : none
214 *
215 * Returns : The current value of OSTime
216 *********************************************************************************************************
217 */
218
219 #if OS_TIME_GET_SET_EN > 0
\ In segment CODE, align 4, keep-with-next
220 INT32U OSTimeGet (void)
221 {
\ OSTimeGet:
\ 00000000 30402DE9 PUSH {R4,R5,LR}
222 INT32U ticks;
223 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
224 OS_CPU_SR cpu_sr = 0;
\ 00000004 0050A0E3 MOV R5,#+0
225 #endif
226
227
228
229 OS_ENTER_CRITICAL();
\ 00000008 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
\ 0000000C 0050B0E1 MOVS R5,R0
230 ticks = OSTime;
\ 00000010 ........ LDR R0,??DataTable10 ;; OSTime
\ 00000014 004090E5 LDR R4,[R0, #+0]
231 OS_EXIT_CRITICAL();
\ 00000018 0500B0E1 MOVS R0,R5
\ 0000001C ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
232 return (ticks);
\ 00000020 0400B0E1 MOVS R0,R4
\ 00000024 3080BDE8 POP {R4,R5,PC} ;; return
233 }
234 #endif
235
236 /*
237 *********************************************************************************************************
238 * SET SYSTEM CLOCK
239 *
240 * Description: This function sets the 32-bit counter which keeps track of the number of clock ticks.
241 *
242 * Arguments : ticks specifies the new value that OSTime needs to take.
243 *
244 * Returns : none
245 *********************************************************************************************************
246 */
247
248 #if OS_TIME_GET_SET_EN > 0
\ In segment CODE, align 4, keep-with-next
249 void OSTimeSet (INT32U ticks)
250 {
\ OSTimeSet:
\ 00000000 30402DE9 PUSH {R4,R5,LR}
\ 00000004 0040B0E1 MOVS R4,R0
251 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
252 OS_CPU_SR cpu_sr = 0;
\ 00000008 0050A0E3 MOV R5,#+0
253 #endif
254
255
256
257 OS_ENTER_CRITICAL();
\ 0000000C ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
\ 00000010 0050B0E1 MOVS R5,R0
258 OSTime = ticks;
\ 00000014 ........ LDR R0,??DataTable10 ;; OSTime
\ 00000018 004080E5 STR R4,[R0, #+0]
259 OS_EXIT_CRITICAL();
\ 0000001C 0500B0E1 MOVS R0,R5
\ 00000020 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
260 }
\ 00000024 3080BDE8 POP {R4,R5,PC} ;; return
\ In segment CODE, align 4, keep-with-next
\ ??DataTable6:
\ 00000000 ........ DC32 OSRdyGrp
\ In segment CODE, align 4, keep-with-next
\ ??DataTable8:
\ 00000000 ........ DC32 OSRdyTbl
\ In segment CODE, align 4, keep-with-next
\ ??DataTable10:
\ 00000000 ........ DC32 OSTime
261 #endif
Maximum stack usage in bytes:
Function CSTACK
-------- ------
OSTimeDly 8
OSTimeDlyHMSM 8
OSTimeDlyResume 8
OSTimeGet 12
OSTimeSet 12
Segment part sizes:
Function/Label Bytes
-------------- -----
OSTimeDly 152
OSTimeDlyHMSM 216
OSTimeDlyResume 260
OSTimeGet 40
OSTimeSet 40
??DataTable6 4
??DataTable8 4
??DataTable10 4
Others 48
768 bytes in segment CODE
720 bytes of CODE memory (+ 48 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -