UCOSII 在51系列单片机C8051f340的移植实例
全部源码下载:
UCOS-II操作系统(创建任务学习).rar
(258.45 KB, 下载次数: 71)
apps的主程序:
- /********************************************************************
- * 文件名 : usertask.c
- * 描述 : UCOS-II的main函数文件,该例子是创建任务实验学习,任务之间可以完全独立,
- * 通过在任务中调用OSTimeDly(),来完成任务的挂起,让别的任务运行。
- * 这里创建了3个任务,任务1开关LED12、任务2开关LED13、任务3开关LED14。
- * 创建人 :云杰
- * QQ :494713348
- * 电话 :15123350190
- * Email :founder_elec@foxmail.com
- * 网址 :http://shop66398134.taobao.com
- * 时间 :2010年4月10日
- * 版本号 :V0.1.0
- * 修改记录:
- *
- *********************************************************************/
- #include"includes.h"
- #include"absacc.h"
- sbit LED12 = P2^3; //LED12管脚定义
- sbit LED13 = P0^3; //LED13管脚定义
- sbit LED14 = P2^2; //LED14管脚定义
- OS_STK xdata StartTaskStk[USER_STACK_SIZE],Task1Stk[USER_STACK_SIZE],Task2Stk[USER_STACK_SIZE];
- //定义3个信号量
- INT8U err;
- void StartTask(void) KCREENTRANT;
- void Task1(void) KCREENTRANT;
- void Task2(void) KCREENTRANT;
- void InitTimer0(void)KCREENTRANT;
- void main(void)
- {
- EA=0;
- PCA0MD &= ~0x40; //禁止看门狗
- OSCICN |= 0x83; //不分频,使用内部12M晶振,系统时钟频率为12MHz
- OSInit();
- OSTaskCreate(StartTask,(void *)0,&StartTaskStk[0],0);//创建第一个任务
- OSStart();
- }
- void StartTask(void) KCREENTRANT
- {
- P0MDOUT = 0x08; // 设置P0.3 输出为推挽方式
- P2MDOUT = 0x0c; // 设置P2.2,P2.3输出为推挽方式
- XBR1 = 0x40;
- LED12 = 1;
- LED13 = 1;
- LED14 = 1;
- InitTimer0();
- OSStatInit(); //开启CPU使用率统计
- //程序中的任务建议在这里创建,当然也可以在其它任务中创建任务
- OSTaskCreate(Task1, (void *)0, &Task1Stk[0], 2);
- OSTaskCreate(Task2, (void *)0, &Task2Stk[0], 3);
- for(;;)
- {
- LED12 = ~LED12;
- OSTimeDly(20);
- }
- }
- void Task1(void) KCREENTRANT
- {
- for(;;)
- {
- LED13 = ~LED13;
- OSTimeDly(40);
- }
- }
- void Task2(void) KCREENTRANT
- {
- for(;;)
- {
- LED14 = ~LED14;
- OSTimeDly(60);
- }
- }
复制代码
|