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

📄 artx_swi.cpp

📁 PXA270穿口里程
💻 CPP
字号:
/*----------------------------------------------------------------------------
 *      R T L   K e r n e l   E x a m p l e
 *----------------------------------------------------------------------------
 *      Name:    ARTX_SWI.CPP
 *      Purpose: ARTX example program
 *      Rev.:    V2.11 / 20-feb-2006
 *----------------------------------------------------------------------------
 *      This code is part of the RealView Run-Time Library.
 *      Copyright (c) 2004-2006 KEIL - An ARM Company. All rights reserved. 
 *---------------------------------------------------------------------------*/

;/*****************************************************************************/
;/*             Keil RealView编译器非典软中断演示代码                         */
;/*文   件   名 : ARTX_SWI.CPP                                                */
;/*改   造   人 : ARM水鸟  HotPower@126.com                                   */
;/*菜 农 水  潭 :http://blog.21ic.com/blog.asp?name=hotpower  				  */
;/*改 造 日  期 : 2006.2.23   0:38                                            */
;/*改 造  地 点 :西安大雁塔村队部                                            */
;/*说        明 :在经典的ARTX环境下采用中断向量序号运行                      */
;/*****************************************************************************/

#include <ARTX.h>                     /* ARTX kernel functions & defines     */
#include <LPC213xDEF.H>	//ARM菜鸟HotPower创建定义文件(最新为情人节修改版)

OS_TID tsk1;
OS_TID tsk2;

U32 counter;                          /* 5-bit counter for tasks             */

void job1 (void) __task;
void job2 (void) __task;


/*----------------------------------------------------------------------------
 * Software Interrupt Functions accept parameters, may return values
 * and run in Supervisor Mode (Interrupt protected)
 *---------------------------------------------------------------------------*/

extern "C" void __swi(8)  inc_5bit (U32 *cp);
extern "C" void __SWI_8            (U32 *cp) {
  /* A protected function to increment a 5-bit counter. */
  *cp = (*cp + 1) & 0x1F;
}


extern "C" void __swi(9)  add_5bit (U32 *cp, U32 val);
extern "C" void __SWI_9            (U32 *cp, U32 val) {
  /* A protected function to add a value to 5-bit counter. */
  *cp = (*cp + val) & 0x1F;
}


/*----------------------------------------------------------------------------
 *   Task 1
 *---------------------------------------------------------------------------*/
void job1 (void) __task {
  tsk1 = os_tsk_self ();
  tsk2 = os_tsk_create (job2,2);      /* start task 2                        */

  while (1) {
    inc_5bit (&counter);              /* increment 5-bit counter             */
  }
}

/*----------------------------------------------------------------------------
 *   Task 2
 *---------------------------------------------------------------------------*/
void job2 (void) __task {
  while (1) {
    add_5bit (&counter, 7);           /* add 7 to 5-bit counter              */
    os_dly_wait (1);
  }
}

/*----------------------------------------------------------------------------
 *   Initialize and start ARTX Kernel
 *---------------------------------------------------------------------------*/
int main (void) {
#ifdef MCB2100
  U32 volatile start;
                                      /* Wait for debugger connection (0.3s) */
  for (start = 0; start < 1000000; start++) { ; }
#endif
int i;
  for(i =0; i <= 15; i ++) {
    VIC->VectAddrs[i] = i;//刷新向量地址寄存器VICVectAddr0~VICVectAddr15
  }
  os_sys_init (job1);
}

/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/


⌨️ 快捷键说明

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