该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进入休眠模式、清除看门狗、查询端口状态等。
代码开源,如有使用请反馈使用效果和出现的问题,以期共同进步共同提高。
|