📄 rtx_swi.c
字号:
/*----------------------------------------------------------------------------
* R T L K e r n e l E x a m p l e
*----------------------------------------------------------------------------
* Name: RTX_SWI.C
* Purpose: RTX example program
* Rev.: V3.40
*----------------------------------------------------------------------------
* This code is part of the RealView Run-Time Library.
* Copyright (c) 2004-2008 KEIL - An ARM Company. All rights reserved.
*---------------------------------------------------------------------------*/
#include <RTL.h> /* RTX kernel functions & defines */
OS_TID tsk1;
OS_TID tsk2;
U32 counter; /* 5-bit counter for tasks */
__task void job1 (void);
__task void job2 (void);
/*----------------------------------------------------------------------------
* Software Interrupt Functions accept parameters, may return values
* and run in Supervisor Mode (Interrupt protected)
*---------------------------------------------------------------------------*/
void __swi(8) inc_5bit (U32 *cp);
void __SWI_8 (U32 *cp) {
/* A protected function to increment a 5-bit counter. */
*cp = (*cp + 1) & 0x1F;
}
void __swi(9) add_5bit (U32 *cp, U32 val);
void __SWI_9 (U32 *cp, U32 val) {
/* A protected function to add a value to 5-bit counter. */
*cp = (*cp + val) & 0x1F;
}
/*----------------------------------------------------------------------------
* Task 1
*---------------------------------------------------------------------------*/
__task void job1 (void) {
tsk1 = os_tsk_self ();
tsk2 = os_tsk_create (job2,2); /* start task 2 */
while (1) {
inc_5bit (&counter); /* increment 5-bit counter */
}
}
/*----------------------------------------------------------------------------
* Task 2
*---------------------------------------------------------------------------*/
__task void job2 (void) {
while (1) {
add_5bit (&counter, 7); /* add 7 to 5-bit counter */
os_dly_wait (1);
}
}
/*----------------------------------------------------------------------------
* Initialize and start RTX Kernel
*---------------------------------------------------------------------------*/
int main (void) {
os_sys_init (job1);
}
/*----------------------------------------------------------------------------
* end of file
*---------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -