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

📄 ggt_timer.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -