完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
请帮我看看下面的程序代码?请详细点,谢谢
ps:我不懂,该程序明明没有进行操作系统移植,可是它有个task.c源文件,看不懂是怎么进行时间调度的(编程人说task.c是时间调度器源文件) TASK tasks[MAX_TASKS]; void delTask(uint16_t taskIndex) { tasks[taskIndex].ptrTask=0; tasks[taskIndex].delay=0; tasks[taskIndex].period=0; // tasks[taskIndex].runMe=0; tasks[taskIndex].co_op=0; }/* end of delTask() */ void addTask(void(*ptr)(),uint16_t delay,uint16_t period,uint16_t co_op) { uint16_t index=0; while((tasks[index].ptrTask != 0)&(index < MAX_TASKS)) index++; tasks[index].ptrTask=ptr; tasks[index].delay=delay; tasks[index].period=period; tasks[index].co_op=co_op; tasks[index].runMe=0; }/* end of addTask() */ void dispatchTask(void) // { uint16_t index; for(index=0;index (*tasks[index].ptrTask)(); tasks[index].runMe--; if(tasks[index].period==0) tasks[index].ptrTask=0; } } }/* end of dispatchTask() */ |
|
相关推荐
6个回答
|
|
|
结构体申明那里没注释吗?从你贴出的代码来看,这个结构体应该是类似于操作系统的任务控制块,ptrTask就是任务函数的指针,别的应该是周期、是否执行任务……。 dispatchTask()就是用来调度的,判断哪些任务该执行。但是应该还有别的地方也参与函数的调度,很有可能是在定时器中断那里,你再仔细看一下
|
|
|
|
|
|
你这....
|
|
|
|
|
|
咋了啊?帮我说两句啊、task结构体是什么东东,没见啊!
|
|
|
|
|
|
结构体什么没有注释,只有/* Global Variables*/这一句话,我去看看定时器中断,谢谢啦
|
|
|
|
|
|
结构体什么没有注释,只有/* Global Variables*/这一句话,我去看看定时器中断,谢谢啦
|
|
|
|
|
|
去下载隔壁安富莱的操作系统教程看看就知道了,里面有详细介绍。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1022浏览 1评论
1850浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1360浏览 1评论
1852浏览 0评论
1178浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:28 , Processed in 0.730551 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
358