热度 28
2014-6-30 01:05
1400 次阅读|
5 个评论
今天在 PC 机上第一次运行了 UC/OS-II 程序,不是在 STM32 平台上,成功生成应用程序,显示出了“ snail ”这个字符串。期间搞明白了很多函数,包括从未用过的 PC 自带的功能函数。 哈哈,原来 WINDOWS 下面还有不少可以直接调用的函数。真心不错。搞完单任务,接下来弄双任务。 /******************************************************************************************** **file name : test1.c **description: 每秒在显示器上打印字母 SNAIL **author : snail **vision : 1.0 *********************************************************************************************/ #include "includes.h" #define TASK_STK_SIZE 512 /*定义堆栈长度*/ OS_STK MytaskSTK ; /*定义任务堆栈区*/ INT16S key ; /*用于退出ucos*/ INT8U x=0,y=0; /*字符显示的位置*/ void TaskOne(void *data); void main(void) { char* s_m="snail"; //初始化uc/os OSInit(); //保存DOS环境 PC_DOSSaveReturn(); //安装uc/os 任务切换中断向量 PC_VectSet(uCOS,OSCtxSw); OSTaskCreate( TaskOne, //创建的任务MyTask s_m, //给任务传递参数 MytaskSTK , //设置任务堆栈栈顶指针 0 //MyTask 优先级别为0 ); //启动多任务管理 OSStart(); } /****************************************************************************************** **function name: MyTask **description : 打印字母SNAIL **input : *data **output : none **return : none *****************************************************************************************/ void TaskOne(void *pdata) { INT8U i=0; #if OS_CRITICAL_METHOD==3 OS_CPU_SR cpu_sr; #endif pdata=pdata; //没有实际意义,仅是为了避免有些编译器会警告pdata这参数没有使用 OS_ENTER_CRITICAL();//一个宏,用来禁止处理器响应中断请求,即关中断 //给ucos安装时钟中断 PC_VectSet(0x08,OSTickISR); //设置时钟频率,OS_TICKS_PER_SEC=200 PC_SetTickRate(OS_TICKS_PER_SEC); //一个宏,允许处理器响应中断请求,即开中断 OS_EXIT_CRITICAL(); //测试所使用处理器的速度 OSStatInit(); for(;;) { for(i=0;i5;i++) //无限循环 { if(x10) { x=0; y+=2; } //调用PC中的函数来显示字符 PC_DispChar( x,y, *((char * )pdata+i), DISP_FGND_RED+DISP_FGND_WHITE ); x+=1; OSTimeDlyHMSM(0,0,1,0); } y+=2; //如果按下了ESC键,那么退出UC/OS-II if(PC_GetKey(key)==TRUE) { if(key==0x1b) { //返回dos PC_DOSReturn(); } } } }