基于STC15的原创极简时间片轮询多任务-MyTinyOS
该MyTinyOS是基于STC15的,由本人2022年因工作需要编写并应用于小型检测设备中。该模块main()中共运行5个极简任务,目的是调试任务切换动作状态。
程序使用keilC51-9.6编译,程序尺寸:data=169.1 xdata=0 code=790。
该模块仅适用于Large:64K program 程序尺寸,Small:varables in DATA存储方式。
MyTinyOS整个调度过程没有进行中断屏蔽,没有进行现场保护,使用过程中要将
重要变量放在外部变量或使用static进行修饰的内部变量中。
MyTinyOS需要配置的参数都在<config.h>中:
1、OS_TASK_MAXNUM 5//最大任务数。任务槽个数.必须大于或等于实际任务数(小于7)。2、OS_TASK_STACK_SIZE(2+13+2*3)//任务栈尺寸。3、MAIN_Fosc 30000000L//系统主频。默认30M。4、T0_TIM (65536-(MAIN_Fosc/12/200))//节拍时钟重装值。
MyTinyOS的用户函数1、voidvoid OS_Initial();OS初始化函数。2、char OS_CreateTask(unsigned int fn);OS系统任务添加函数。3、 void OS_StartUp(); OS系统启动函数。4、 void OS_TimeDly(unsigned intdelay);任务延时(让出CPU)指定节拍数函数。Delay任务延时的节拍数。5、 void OS_CurTaskWait(unsignedchar event,unsigned int waitfor));任务等待事件函数。event:事件类型,0x01——时间延时时间;0x02——信号事件6、 void OS_SendSigMark(unsignedchar taskID);发送事件函数。程序调用CurTaskWait()函数,当event=0x02时的启动事件通过该函数发送。7、 voidOS_ProcessMutualASK(unsigned char taskID,unsigned char status);请求进程挂起或运行。8、UserIdle()自定义空闲操作。可用于MCU进入休眠模式、清除看门狗、查询端口状态等。
代码开源,如有使用请反馈使用效果和出现的问题,以期共同进步共同提高。
下载学习一下 有点意思!应该适合用来学OS相关知识 对于实际产品来说,RTOS不必完美,够用就好 学习学习 谢谢杨老师 已收藏,学习学习 大概看来 一下,这个不错,有时间测试看看. 学习一下学习一下 感谢分享{:4_165:}
页:
[1]
2