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

📄 performancetest.c

📁 embOS的MSP430F2274移植版
💻 C
字号:
/*********************************************************************
*               SEGGER MICROCONTROLLER GmbH & Co KG                  *
*       Solutions for real time microcontroller applications         *
**********************************************************************
*                                                                    *
*       (c) 1995 - 2008  SEGGER Microcontroller GmbH & Co KG         *
*                                                                    *
*       www.segger.com     Support: support@segger.com               *
*                                                                    *
**********************************************************************
*                                                                    *
*       embOS * Real time operating system for microcontrollers      *
*                                                                    *
*                                                                    *
*       Please note:                                                 *
*                                                                    *
*       Knowledge of this file may under no circumstances            *
*       be used to write a similar product or a real-time            *
*       operating system for in-house use.                           *
*                                                                    *
*       Thank you for your fairness !                                *
*                                                                    *
**********************************************************************
*                                                                    *
*       embOS version: 3.60a                                         *
*                                                                    *
**********************************************************************

----------------------------------------------------------------------
File    : PerformanceTest.c
Purpose : Performance test program for OS
--------  END-OF-HEADER  ---------------------------------------------
*/

#include "RTOS.H"
#include <stdio.h>
#include <stdlib.h>

OS_STACKPTR int StackHP[128];         // Task stacks
OS_TASK TCBHP;                        // Task-control-blocks

char aIsPrime[1000];
int NumPrimes;

/*********************************************************************
*
*       _CalcPrimes
*/
static void _CalcPrimes(int NumItems) {
  int i;
  //
  // Mark all as potential prime numbers
  //
  memset(aIsPrime, 1, NumItems);
  //
  // Cross out multiples of every prime
  //
  for (i = 2; i < NumItems; i++) {
    if (aIsPrime[i]) {
      int j;
      for (j = 2 * i; j < NumItems; j += i) {
        aIsPrime[j] = 0;     // Cross it out: not a prime
      }
    }
  }
  //
  // Count remaining prime numbers
  //
  NumPrimes = 0;
  for (i = 2; i < NumItems; i++) {
    if (aIsPrime[i]) {
      NumPrimes++;
    }
  }
}

/*********************************************************************
*
*       _PrintCnt
*/
static void _PrintCnt(unsigned Cnt) {
  int Digit;
  int r;

  Digit = 10;
  puts("Loops:");
  while (Digit < Cnt) {
    Digit *= 10;
  }
  while (Cnt) {
    Digit /= 10;
    r = Cnt / Digit;
    Cnt -= r * Digit;
    putchar(r + '0');
  }
  puts("\n");
}


/*********************************************************************
*
*       HPTask
*/
static void HPTask(void) {
  int Cnt;
  int TestTime;

  while(1) {
    Cnt = 0;
    TestTime = OS_GetTime32() + 1000;
    while ((TestTime - OS_GetTime()) >= 0) {
      _CalcPrimes(sizeof(aIsPrime));
      Cnt++;
    }
    _PrintCnt(Cnt);
  }
}

/*********************************************************************
*
*       main
*
*********************************************************************/

int main(void) {
  OS_IncDI();                      /* Initially disable interrupts  */
  OS_InitKern();                   /* initialize OS                 */
  OS_InitHW();                     /* initialize Hardware for OS    */
  OS_CREATETASK(&TCBHP, "HP Task", HPTask, 100, StackHP);
  OS_Start();                      /* Start multitasking            */
  return 0;
}

⌨️ 快捷键说明

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