?? 說明.txt
字號:
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
MiniRTOS_51 說明
該RTOS為非占先式多任務操作系統,如果用戶任務的最長執行時間小于
系統節拍時間,則本MiniRTOS要優于占先式RTOS。因為本MiniRTOS占用資源
小,RAM不超過20字節,程序空間只占為600多字節。
一、編譯環境:KeilC51 uVision2
二、CPU,8051系列,晶振:11.0592MHz(可修改)
三、工程文件:MiniRTOS_51.uV2
四、源代碼文件:
OS_Start.c OS_TaskSW.c OS_TaskAttemper.asm
OS_TaskSW.h RTOS.h CPU.h
ClientTask.c Init.c
五、用戶修改
1、系統節拍值 (所在文件:OS_TaskAttemper.asm) ///////////////////////
默認為10ms,也就是說系統每隔10mS進行一次任務調度。用戶可根據實際情況
修改定時器T0的初始值,從而改變系統節拍時間。
2、最大任務數 MAX_TASK_ID /////////////////////////////////////////
在文件RTOS.h,范圍0~255,每8個任務占一個字節RAM
4、任務名 (所在文件:OS_TaskSW.h) /////////////////////////////////
所有任務名在二維數組中,下標越小的任務優先級越高。為了見文知義,建議
用戶把任務名作修改(原型聲明也要修改)
void (*code TaskEntrance[MAX_TASK_ID_DIV8][8])()=
{ { Task00,Task01,Task02,Task03,Task04,Task05,Task06,Task07 },
{ Task10,Task11,Task12,Task13,Task14,Task15,Task16,Task17 }
};
4、周期性執行的任務 (所在文件:OS_TaskSW.h) ///////////////////////
如果要使任務周期性執行,則要在下面的二維數組中修改相對應的值,單位為
系統節拍值。默認值為0,非周期性執行。數組CycleExcute 與 TaskEntrance一一
對應。例如:Task02每隔兩個節拍(20mS)執行一次,則CycleExcute[0][2]=2;
uint code CycleExcute[MAX_TASK_ID_DIV8][8]=
{
{ 0,0,2,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 }
};
六、程序復位入口
如果要用標準C語言main函數作為程序復位入口,則要把 USER_ENTRANCE 定義為0,
兩個地方有定義,在文件OS_Start.c和OS_TaskAttemper.asm中
如果不用標準main()函數作為入口,則要自己設定堆棧指針,其預定義為文件
RTOS.h中的STACK_POINTER。建議開始編譯時用main()為復位入口,看編譯器給的堆棧
指針為多少,然后再把USER_ENTRANCE定義為1,并修改STACK_POINTER。
七、移植
條件:目標CPU要有定時器中斷功能和修改PC的功能
1、要修改OS_TaskAttemper.asm文件
2、要修改OS_Start.c中有關初始化的代碼
3、要修改CPU.h中相關代碼
4、注意各種編譯器對程序空間常量的定義和指向函數的指針數組的定義方法!!!
例:在Keil51中用關鍵詞code,在IAR AVR中用__flash 等等
八、聯系作者
肖遙電子(廣州)研發中心
肖先生:項目經理 研發工程師
xiaoele@163.com xiaoele@avl.com.cn
020-88191829 13922280586
最近修改日期:20040729
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -