完善资料让更多小伙伴认识你,还能领取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*/这一句话,我去看看定时器中断,谢谢啦
|
|
|
|
去下载隔壁安富莱的操作系统教程看看就知道了,里面有详细介绍。
|
|
|
|
只有小组成员才能发言,加入小组>>
690 浏览 0 评论
1105 浏览 1 评论
2473 浏览 5 评论
2807 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2644 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
652浏览 9评论
648浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
779浏览 6评论
627浏览 5评论
667浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 18:41 , Processed in 1.515648 second(s), Total 87, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号