📄 os_time.lst
字号:
\ 00000034 3124 MOVS R4,#+49
\ 00000036 0C5D LDRB R4,[R1, R4]
\ 00000038 1C43 ORRS R4,R4,R3
\ 0000003A 1470 STRB R4,[R2, #+0]
165 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
\ 0000003C 2F22 MOVS R2,#+47
\ 0000003E 8A5C LDRB R2,[R1, R2]
\ 00000040 .... LDR R3,??DataTable8 ;; OSRdyTbl
\ 00000042 2F24 MOVS R4,#+47
\ 00000044 0C5D LDRB R4,[R1, R4]
\ 00000046 .... LDR R5,??DataTable8 ;; OSRdyTbl
\ 00000048 2C5D LDRB R4,[R5, R4]
\ 0000004A 3031 ADDS R1,R1,#+48
\ 0000004C 0978 LDRB R1,[R1, #+0]
\ 0000004E 2143 ORRS R1,R1,R4
\ 00000050 9954 STRB R1,[R3, R2]
166 OS_EXIT_CRITICAL();
\ 00000052 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
167 OS_Sched(); /* See if this is new highest priority */
\ 00000056 ........ _BLF OS_Sched,??OS_Sched??rT
\ 0000005A 01E0 B ??OSTimeDlyResume_6
168 } else {
169 OS_EXIT_CRITICAL(); /* Task may be suspended */
\ ??OSTimeDlyResume_5:
\ 0000005C ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
170 }
171 return (OS_NO_ERR);
\ ??OSTimeDlyResume_6:
\ 00000060 0020 MOVS R0,#+0
\ 00000062 06E0 B ??OSTimeDlyResume_1
172 } else {
173 OS_EXIT_CRITICAL();
\ ??OSTimeDlyResume_4:
\ 00000064 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
174 return (OS_TIME_NOT_DLY); /* Indicate that task was not delayed */
\ 00000068 5020 MOVS R0,#+80
\ 0000006A 02E0 B ??OSTimeDlyResume_1
175 }
176 }
177 OS_EXIT_CRITICAL();
\ ??OSTimeDlyResume_3:
\ 0000006C ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
178 return (OS_TASK_NOT_EXIST); /* The task does not exist */
\ 00000070 0B20 MOVS R0,#+11
\ ??OSTimeDlyResume_1:
\ 00000072 30BC POP {R4,R5}
\ 00000074 02BC POP {R1}
\ 00000076 0847 BX R1 ;; return
\ ??OSTimeDlyResume_2:
\ 00000078 ........ DC32 OSTCBPrioTbl
179 }
180 #endif
181 /*$PAGE*/
182 /*
183 *********************************************************************************************************
184 * GET CURRENT SYSTEM TIME
185 *
186 * Description: This function is used by your application to obtain the current value of the 32-bit
187 * counter which keeps track of the number of clock ticks.
188 *
189 * Arguments : none
190 *
191 * Returns : The current value of OSTime
192 *********************************************************************************************************
193 */
194
195 #if OS_TIME_GET_SET_EN > 0
\ In segment CODE, align 4, keep-with-next
196 INT32U OSTimeGet (void)
197 {
\ OSTimeGet:
\ 00000000 10B5 PUSH {R4,LR}
198 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
199 OS_CPU_SR cpu_sr;
200 #endif
201 INT32U ticks;
202
203
204 OS_ENTER_CRITICAL();
\ 00000002 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
205 ticks = OSTime;
\ 00000006 .... LDR R1,??DataTable10 ;; OSTime
\ 00000008 0C68 LDR R4,[R1, #+0]
206 OS_EXIT_CRITICAL();
\ 0000000A ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
207 return (ticks);
\ 0000000E 2000 MOVS R0,R4
\ 00000010 10BC POP {R4}
\ 00000012 02BC POP {R1}
\ 00000014 0847 BX R1 ;; return
208 }
209 #endif
210
211 /*
212 *********************************************************************************************************
213 * SET SYSTEM CLOCK
214 *
215 * Description: This function sets the 32-bit counter which keeps track of the number of clock ticks.
216 *
217 * Arguments : ticks specifies the new value that OSTime needs to take.
218 *
219 * Returns : none
220 *********************************************************************************************************
221 */
222
223 #if OS_TIME_GET_SET_EN > 0
\ In segment CODE, align 4, keep-with-next
224 void OSTimeSet (INT32U ticks)
225 {
\ OSTimeSet:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
226 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
227 OS_CPU_SR cpu_sr;
228 #endif
229
230
231 OS_ENTER_CRITICAL();
\ 00000004 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
232 OSTime = ticks;
\ 00000008 .... LDR R1,??DataTable10 ;; OSTime
\ 0000000A 0C60 STR R4,[R1, #+0]
233 OS_EXIT_CRITICAL();
\ 0000000C ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
234 }
\ 00000010 10BC POP {R4}
\ 00000012 01BC POP {R0}
\ 00000014 0047 BX R0 ;; 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
235 #endif
Maximum stack usage in bytes:
Function CSTACK
-------- ------
OSTimeDly 12
OSTimeDlyHMSM 8
OSTimeDlyResume 12
OSTimeGet 8
OSTimeSet 8
Segment part sizes:
Function/Label Bytes
-------------- -----
OSTimeDly 96
OSTimeDlyHMSM 142
OSTimeDlyResume 124
OSTimeGet 22
OSTimeSet 22
??DataTable6 4
??DataTable8 4
??DataTable10 4
Others 80
498 bytes in segment CODE
418 bytes of CODE memory (+ 80 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -