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

📄 os.c

📁 CMX990 demonstration board (DE9901)
💻 C
字号:
/****h* DE9901/OS
* FILE NAME
*  os.c
* COPYRIGHT
*  (c) 2004-2005 Mobitex Technology AB - All rights reserved
* 
*  Redistribution and use in source and binary forms, with or without modification,
*  are permitted provided that the following conditions are met:
*  * 1. Redistributions of source code must retain the above copyright notice,
*       this list of conditions and the following disclaimer. 
*  * 2. Redistributions in binary form must reproduce the above copyright notice,
*       this list of conditions and the following disclaimer in the documentation
*       and/or other materials provided with the distribution.
*  * 3. The name Mobitex Technology AB may not be used to endorse or promote products
*       derived from this software without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY MOBITEX TECHNOLOGY AB "AS IS" AND ANY EXPRESS OR
*  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
*  SHALL MOBITEX TECHNOLOGY AB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
*  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* AUTHOR
*  MPN/Kjell Westerberg
* HISTORY
*  Changes in the file are recorded in this list.
*   Ver:  Date:       Responsible:         Comment:
*   R1A01 2005-01-17  Kjell Westerberg     Approved.
*   R1A07 2005-06-17  Kjell Westerberg     Added improved time calculations.
* DESCRIPTION
*  This is a collection of functions to access some OS functions.
***/

#include "hel.h"

#define TC_BASE        0xFFFE0000
#define TC0_CV         (TC_BASE + 0x010)

inline OSTICK OS_GetTicks(void) {
#if MS_PER_OSTICK == 1
  return cyg_current_time();
#else
  s32 t1, t2;
  OSTICK t;
  t1 = INPUT32(TC0_CV);
  t = cyg_current_time();
  t2 = INPUT32(TC0_CV);
  if (t2 < t1) {
    t = cyg_current_time();
    t2 = INPUT32(TC0_CV);
  }
#if MS_PER_OSTICK == 2
  return (t*MS_PER_OSTICK + (t2<CYGNUM_HAL_RTC_PERIOD/2?0:1));
#elif MS_PER_OSTICK == 4
  t1 = t2<CYGNUM_HAL_RTC_PERIOD/2?(t2<CYGNUM_HAL_RTC_PERIOD/4?0:1):(t2<3*CYGNUM_HAL_RTC_PERIOD/4?2:3);
  return (t*MS_PER_OSTICK + t1);
#elif MS_PER_OSTICK == 8
  t1 = t2<CYGNUM_HAL_RTC_PERIOD/2?
    (t2<CYGNUM_HAL_RTC_PERIOD/4?(t2<CYGNUM_HAL_RTC_PERIOD/8?0:1):(t2<3*CYGNUM_HAL_RTC_PERIOD/8?2:3)):
    (t2<3*CYGNUM_HAL_RTC_PERIOD/4?(t2<5*CYGNUM_HAL_RTC_PERIOD/8?4:5):(t2<7*CYGNUM_HAL_RTC_PERIOD/8?6:7));
  return (t*MS_PER_OSTICK + t1);
#else
  MS_PER_OSTICK Illegal ticks per ms!!
#endif
#endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -