📄 os_time.lst
字号:
\ 00000090 BA02C5E1 STRH R0,[R5, #+42]
188 if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
\ 00000094 2C00D5E5 LDRB R0,[R5, #+44]
\ 00000098 370010E3 TST R0,#0x37
\ 0000009C 0500000A BEQ ??OSTimeDlyResume_6
189 ptcb->OSTCBStat &= ~OS_STAT_PEND_ANY; /* Yes, Clear status flag */
\ 000000A0 2C00D5E5 LDRB R0,[R5, #+44]
\ 000000A4 C80010E2 ANDS R0,R0,#0xC8
\ 000000A8 2C00C5E5 STRB R0,[R5, #+44]
190 ptcb->OSTCBStatPend = OS_STAT_PEND_TO; /* Indicate PEND timeout */
\ 000000AC 0100A0E3 MOV R0,#+1
\ 000000B0 2D00C5E5 STRB R0,[R5, #+45]
\ 000000B4 010000EA B ??OSTimeDlyResume_7
191 } else {
192 ptcb->OSTCBStatPend = OS_STAT_PEND_OK;
\ ??OSTimeDlyResume_6:
\ 000000B8 0000A0E3 MOV R0,#+0
\ 000000BC 2D00C5E5 STRB R0,[R5, #+45]
193 }
194 if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) { /* Is task suspended? */
\ ??OSTimeDlyResume_7:
\ 000000C0 2C00D5E5 LDRB R0,[R5, #+44]
\ 000000C4 080010E3 TST R0,#0x8
\ 000000C8 1100001A BNE ??OSTimeDlyResume_8
195 OSRdyGrp |= ptcb->OSTCBBitY; /* No, Make ready */
\ 000000CC ........ LDR R0,??DataTable6 ;; OSRdyGrp
\ 000000D0 ........ LDR R1,??DataTable6 ;; OSRdyGrp
\ 000000D4 0010D1E5 LDRB R1,[R1, #+0]
\ 000000D8 3220D5E5 LDRB R2,[R5, #+50]
\ 000000DC 011092E1 ORRS R1,R2,R1
\ 000000E0 0010C0E5 STRB R1,[R0, #+0]
196 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
\ 000000E4 3000D5E5 LDRB R0,[R5, #+48]
\ 000000E8 ........ LDR R1,??DataTable8 ;; OSRdyTbl
\ 000000EC 3020D5E5 LDRB R2,[R5, #+48]
\ 000000F0 ........ LDR R3,??DataTable8 ;; OSRdyTbl
\ 000000F4 0320D2E7 LDRB R2,[R2, +R3]
\ 000000F8 3130D5E5 LDRB R3,[R5, #+49]
\ 000000FC 022093E1 ORRS R2,R3,R2
\ 00000100 0120C0E7 STRB R2,[R0, +R1]
197 OS_EXIT_CRITICAL();
\ 00000104 0600B0E1 MOVS R0,R6
\ 00000108 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
198 OS_Sched(); /* See if this is new highest priority */
\ 0000010C ........ _BLF OS_Sched,??OS_Sched??rA
\ 00000110 010000EA B ??OSTimeDlyResume_9
199 } else {
200 OS_EXIT_CRITICAL(); /* Task may be suspended */
\ ??OSTimeDlyResume_8:
\ 00000114 0600B0E1 MOVS R0,R6
\ 00000118 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
201 }
202 return (OS_ERR_NONE);
\ ??OSTimeDlyResume_9:
\ 0000011C 0000A0E3 MOV R0,#+0
\ ??OSTimeDlyResume_1:
\ 00000120 7080BDE8 POP {R4-R6,PC} ;; return
\ ??OSTimeDlyResume_2:
\ 00000124 ........ 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 0000A0E3 MOV R0,#+0
\ 00000008 0050B0E1 MOVS R5,R0
225 #endif
226
227
228
229 OS_ENTER_CRITICAL();
\ 0000000C ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
\ 00000010 0050B0E1 MOVS R5,R0
230 ticks = OSTime;
\ 00000014 ........ LDR R0,??DataTable10 ;; OSTime
\ 00000018 000090E5 LDR R0,[R0, #+0]
\ 0000001C 0040B0E1 MOVS R4,R0
231 OS_EXIT_CRITICAL();
\ 00000020 0500B0E1 MOVS R0,R5
\ 00000024 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
232 return (ticks);
\ 00000028 0400B0E1 MOVS R0,R4
\ 0000002C 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 0000A0E3 MOV R0,#+0
\ 0000000C 0050B0E1 MOVS R5,R0
253 #endif
254
255
256
257 OS_ENTER_CRITICAL();
\ 00000010 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rA
\ 00000014 0050B0E1 MOVS R5,R0
258 OSTime = ticks;
\ 00000018 ........ LDR R0,??DataTable10 ;; OSTime
\ 0000001C 004080E5 STR R4,[R0, #+0]
259 OS_EXIT_CRITICAL();
\ 00000020 0500B0E1 MOVS R0,R5
\ 00000024 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
260 }
\ 00000028 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 16
OSTimeDlyHMSM 28
OSTimeDlyResume 16
OSTimeGet 12
OSTimeSet 12
Segment part sizes:
Function/Label Bytes
-------------- -----
OSTimeDly 172
OSTimeDlyHMSM 260
OSTimeDlyResume 296
OSTimeGet 48
OSTimeSet 44
??DataTable6 4
??DataTable8 4
??DataTable10 4
Others 48
880 bytes in segment CODE
832 bytes of CODE memory (+ 48 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -