📄 ggt_timer.lst
字号:
ARM COMPILER V2.32a, GGT_Timer 28/02/08 23:05:55 PAGE 1
ARM COMPILER V2.32a, COMPILATION OF MODULE GGT_Timer
OBJECT MODULE PLACED IN .\Output\GGT_Timer.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\Kernel\GGT_Timer.c ARM BROWSE DEBUG PRINT(.\LIST\GGT_TI
-MER.LST) TABS(4) OBJECT(.\Output\GGT_Timer.obj)
stmt level source
1 /****************************************************************************************************
2 ** Gogoto OS
3 ** (c) Copyright 2007-2008, luyigui(卢益贵)
4 ** All Rights Reserved
5 ** V1.00.0
6 **
7 ** 狗狗兔嵌入式多任务系统(基于消息机制)
8 ** 绿城代码、GGT-OS、Gogoto OS、狗狗兔嵌入式、狗狗兔系统
9 ** QQ:48092788
10 **
11 **------------------文件信息------------------------------------------------------------------------
12 ** 文件名: GGT_Timer.c
13 ** 创建人: 卢益贵
14 ** 日 期: 2007年12月8日
15 ** 版 本: V1.00.0
16 ** 描 述: Gogoto OS 用户定时器功能单元
17 **
18
19 **------------------修改记录------------------------------------------------------------------------
20 ** 修改人:
21 ** 版 本:
22 ** 日 期:
23 ** 描 述:
24 **
25
26 ****************************************************************************************************/
27
28 #include "GGT_OS.h"
29 #include "GGT_CPU.h"
30 #include "GGT_Func.h"
31 #include "GGT_SysType.h"
32 #include "GGT_Kernel.h"
33
34 _pOSTimer pOSTimer = NULL;
35 _pOSBoxTimer pOSBoxTimer = NULL;
36
37 /****************************************************************************************************
38 ** 函数名: OSTimerInit
39 ** 描 述: 初始化定时器空间
40 ** 输 入: 无
41 ** 输 出: 无
42 ** 创建人: 卢益贵
43 ** 日 期: 2007年12月8日
44
45 **------------------修改记录------------------------------------------------------------------------
46 ** 修改人:
47 ** 日 期:
48 ** 说 明:
49 ** 原代码:
50 **--------------------------------------------------------------------------------------------------
51 ****************************************************************************************************/
52 void OSTimerInit(void)
53 {
54 1 INT32 i;
55 1
56 1 pOSBoxTimer = (_pOSBoxTimer)OSGetBoxTimer();
57 1 BoxInit(pOSBoxTimer, sizeof(_BoxHead) + OSGetSumTimer() * sizeof(_OSTimer), sizeof(_OSTimer));
58 1
ARM COMPILER V2.32a, GGT_Timer 28/02/08 23:05:55 PAGE 2
59 1 for(i = 0; i < OSGetSumTimer(); i++)
60 1 pOSBoxTimer->Timer[i].ID = i + 1;
61 1 }
62
63 /****************************************************************************************************
64 ** 函数名: OSTimerSet
65 ** 描 述: 定时器设置函数
66 ** 输 入: TaskID:设置定时器任务的ID
67 Time:定时器时长
68 ** 输 出: 定时器ID
69 ** 创建人: 卢益贵
70 ** 日 期: 2007年12月8日
71
72 **------------------修改记录------------------------------------------------------------------------
73 ** 修改人:
74 ** 日 期:
75 ** 说 明:
76 ** 原代码:
77 **--------------------------------------------------------------------------------------------------
78 ****************************************************************************************************/
79 UINT32 OSTimerSet(const OS_ID TaskID, const UINT32 Time)
80 {
81 1 UINT32 R;
82 1 _pOSTimer pTimer;
83 1
84 1 OSIRQLock();
85 1
86 1 pTimer = BoxAlloc(pOSBoxTimer);
87 1 if(pTimer)
88 1 {
89 2 pTimer->TaskID = TaskID;
90 2 pTimer->Time = (Time * OSGetTick()) / 1000;
91 2 pTimer->Timeout = pTimer->Time;
92 2 R = pTimer->ID;
93 2 ListAppend(&pOSTimer, pTimer);
94 2 }else
95 1 R = 0;
96 1
97 1 OSIRQUnlock();
98 1
99 1 return(R);
100 1 }
101
102 /****************************************************************************************************
103 ** 函数名: OSTimerCheck
104 ** 描 述: 定时器计数
105 ** 输 入: 无
106 ** 输 出: 无
107 ** 创建人: 卢益贵
108 ** 日 期: 2007年12月8日
109
110 **------------------修改记录------------------------------------------------------------------------
111 ** 修改人:
112 ** 日 期:
113 ** 说 明:
114 ** 原代码:
115 **--------------------------------------------------------------------------------------------------
116 ****************************************************************************************************/
117 void OSTimerCheck(void)
118 {
119 1 _pOSTimer pTimer;
120 1
121 1 pTimer = pOSTimer;
122 1
123 1 while(pTimer)
124 1 {
ARM COMPILER V2.32a, GGT_Timer 28/02/08 23:05:55 PAGE 3
125 2 (pTimer->Timeout)--;
126 2 if(!pTimer->Timeout)
127 2 {
128 3 pTimer->Timeout = pTimer->Time;
129 3 OSTaskMsgPost(pTimer->TaskID, OS_MSG_TIMER, pTimer->ID, 0);
130 3 }
131 2 pTimer = pTimer->pNext;
132 2 }
133 1 }
134
135 /****************************************************************************************************
136 ** 函数名: OSTimerKill
137 ** 描 述: 定时器摧毁
138 ** 输 入: TimerID:定时器ID
139 ** 输 出: 无
140 ** 创建人: 卢益贵
141 ** 日 期: 2007年12月8日
142
143 **------------------修改记录------------------------------------------------------------------------
144 ** 修改人:
145 ** 日 期:
146 ** 说 明:
147 ** 原代码:
148 **--------------------------------------------------------------------------------------------------
149 ****************************************************************************************************/
150 void OSTimerKill(const UINT32 TimerID)
151 {
152 1 _pOSTimer pTimer;
153 1
154 1 OSIRQLock();
155 1
156 1 pTimer = &(pOSBoxTimer->Timer[TimerID - 1]);
157 1 ListDelete(pOSTimer, pTimer);
158 1 BoxFree(pOSBoxTimer, pTimer);
159 1
160 1 OSIRQUnlock();
161 1 }
162
163
164
ARM COMPILER V2.32a, GGT_Timer 28/02/08 23:05:55 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE32 (OSTaskMsgPost?A)
EXTERN CODE32 (SWI_Handler?A)
EXTERN CODE32 (ListAppend?A)
EXTERN CODE32 (ListDelete?A)
EXTERN CODE32 (BoxInit?A)
EXTERN CODE32 (BoxAlloc?A)
EXTERN CODE32 (BoxFree?A)
EXTERN CODE32 (OSGetTick?A)
EXTERN CODE32 (OSGetSumTimer?A)
EXTERN CODE32 (OSGetBoxTimer?A)
EXTERN CODE32 (?C?UDIV?A)
*** PUBLICS:
PUBLIC OSTimerKill?A
PUBLIC OSTimerSet?A
PUBLIC OSTimerCheck?A
PUBLIC OSTimerInit?A
PUBLIC pOSTimer
PUBLIC pOSBoxTimer
*** DATA SEGMENT '?DT0?GGT_Timer':
00000000 pOSTimer:
00000000 BEGIN_INIT
00000000 00000000 DD 0x0
00000004 END_INIT
00000004 pOSBoxTimer:
00000004 BEGIN_INIT
00000004 00000000 DD 0x0
00000008 END_INIT
*** CODE SEGMENT '?PR?OSTimerInit?A?GGT_Timer':
52: void OSTimerInit(void)
00000000 E92D4010 STMDB R13!,{R4,LR}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -