一个超简易的非抢占式OS

2019-10-15 01:54发布

本帖最后由 一只风筝 于 2017-2-15 19:12 编辑

这两天在论坛上看到几个帖子,先附上传送门:
http://www.openedv.com/thread-22990-1-1.html
http://www.openedv.com/forum.php ... id=89015&highlight=ϵͳ
感觉哇,程序居然还能怎样写,感觉非常神奇,然后我把这两个帖子的精华合成到一个程序里,再修改了下,感觉还不错。
其实我觉得这东西也不能算一个OS,太简陋了,只有个调度器,其他什么都没有、/囧........
话不多说,先附上程序吧,调度器是基于时间片轮询的机制,延时是状态机机制实现。我试着在精英板跑了两个小灯任务,感觉还不错,道友们可以试试,看有什么问题没

-----------------------------------------------------------分割线---------------------------------------------------------------------------
忘记说了,系统时钟用的滴答定时器,在delay.c文件里,道友们可以注意下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
东北小辉辉
1楼-- · 2019-10-15 05:16
关注一下,晚上抽时间看看。
ianhom
2楼-- · 2019-10-15 07:29
 精彩回答 2  元偷偷看……
一只风筝
3楼-- · 2019-10-15 09:17
ianhom 发表于 2017-2-15 19:16
不错的protothread!
我也写了一个类似的,希望能一起交流一下
http://www.openedv.com/thread-78139-1 ...

哇,大神,我在很多地方见过你呀,眼熟
ianhom
4楼-- · 2019-10-15 09:56
一只风筝 发表于 2017-2-15 19:22
哇,大神,我在很多地方见过你呀,眼熟

我不是大神。。。。。我只是个社会主义接班人
我比较大众脸,所以看起来比较眼熟
ianhom
5楼-- · 2019-10-15 13:12
不知楼主的上传的代码流程是不是这样的:
创建三个task放到链表中,Scheduler_Tasks中历遍调用所有的task,而在每个task中判断延时是否结束,如果未结束就直接返回,去执行另一个task,如果结束则继续运行后续的代码,如果task后续没有代码,因为Os_Delay宏定义中line = 0, 返回该task开始处继续运行。
15623052920
6楼-- · 2019-10-15 19:00
不错,跟着楼主学习

一周热门 更多>