标题:
51单片机简单多任务调度实现代码
[打印本页]
作者:
g753388438
时间:
2017-7-18 10:52
标题:
51单片机简单多任务调度实现代码
//注意
//任务优先级必须小于任务个数,不然会死机
//任务优先级并非真实的,高有限级的任务不会打断低优先级的任务
//只是当2个任务执行的时间到了,高优先级的任务会优先执行
//任务的优先级同时也是任务的句柄,任务创建和使能的时候会用到
//任务无法删除,可以通过失能,失任务不执行
#define Rtos_Num 5//任务个数
//简单任务调度
typedef struct{
void (*fTask)(void);//任务指针
uint8_t runFlag;//运行标志位 1使能 0失能
uint16_t uLenTick;//任务调度周期
uint32_t uNextTick;//下次执行时间
}sTask;
// extern uint32_t Rtos_SysTim; //系统时间 一般是1ms定时器
//创建任务
void Rtos_Creat(void *Task_Name,uint8_t Priority,uint8_t enable,uint32_t starttim,uint16_t tim);
//任务使能
void Rtos_En(uint8_t Priority,uint8_t enable);
//开始执行任务
void Rtos_Run(void);
复制代码
简易任务调度.rar
2017-7-18 10:50 上传
点击文件名下载附件
下载积分: 黑币 -5
39.22 KB, 下载次数: 116, 下载积分: 黑币 -5
任务调度
作者:
g753388438
时间:
2017-7-18 10:55
贴出了所有的代码,但是只显示了一部分
作者:
g753388438
时间:
2017-7-18 10:55
/创建任务
//任务名称 任务优先级 使能 开始时间 周期
void Rtos_Creat(void *Task_Name,uint8_t Priority,uint8_t enable,uint32_t starttim,uint16_t tim)
{
if(Priority>=Rtos_Num)
{
while(1)
{
//可做其他处理
printf("任务出错");
}
}
mTaskTab[Priority].fTask=(void(*)(void))Task_Name;//函数名
mTaskTab[Priority].runFlag =enable;//使能
mTaskTab[Priority].uNextTick=starttim;//任务开始执行的时间
mTaskTab[Priority].uLenTick=tim;//任务开始执行的时间
}
//任务使能 失能
//任务优先级 使能
void Rtos_En(uint8_t Priority,uint8_t enable)
{
if(Priority>=Rtos_Num)
{
while(1)
{
//可做其他处理
printf("任务出错");
}
}
mTaskTab[Priority].runFlag =enable;//使能
}
//开始调度
void Rtos_Run(void)
{
while(1)
{
for (uint8_t i = 0; i < (sizeof (mTaskTab)/sizeof(sTask)); i++)
{
if ((mTaskTab[i].uNextTick <= Rtos_SysTim)&&(mTaskTab[i].runFlag==1))
{
mTaskTab[i].uNextTick += mTaskTab[i].uLenTick;
mTaskTab[i].fTask();
}
}
}
}
复制代码
作者:
多德
时间:
2017-7-23 21:26
黑币不够啊
作者:
bhjyqjs
时间:
2018-2-13 10:27
很不错,谢谢楼主分享
作者:
wdliming
时间:
2018-7-22 09:09
谢谢分享
作者:
wdliming
时间:
2018-7-24 20:46
谢谢分享!!
作者:
jwints
时间:
2019-1-15 17:43
谢谢分享,刚刚入门51
作者:
csavc
时间:
2019-1-15 21:28
谢谢分享
作者:
小小李sunny
时间:
2019-3-7 15:55
代码看不全啊,有没有完整的代码,谢谢
作者:
fzulyh604
时间:
2022-2-25 10:19
别下载了 里面没东西 就帖子里面贴出来的那一点点代码
作者:
tungkin
时间:
2022-3-28 02:41
谢谢分享,看了一下,感觉还有一点地方可以优化一下
作者:
wjwjwjwj
时间:
2022-4-22 17:03
我是来学习的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1