找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1527|回复: 9
收起左侧

有没有一本书讲了单片机时间片轮询算法,最好有例程的

[复制链接]
ID:632248 发表于 2023-6-13 21:17 | 显示全部楼层 |阅读模式
谢谢大家
回复

使用道具 举报

ID:883242 发表于 2023-6-13 22:01 | 显示全部楼层
主函数初始化完毕后就搞空while(1)死循环,把查询操作放到定时中断里面,就是时间片,还要什么书来讲???
回复

使用道具 举报

ID:86450 发表于 2023-6-13 22:49 | 显示全部楼层
他问的 可能是  分时操作系统。 不是前后台程序框架
回复

使用道具 举报

ID:883242 发表于 2023-6-13 23:24 | 显示全部楼层
jjwangxu2008 发表于 2023-6-13 22:49
他问的 可能是  分时操作系统。 不是前后台程序框架

用上了RTOS这个问题就更简单了!

以资料最丰富的μc/OS-II为例,任务调度函数有两个,一个是OSSched(),这个函数是内部的,用户不应该使用,是为了OSTimeDelay等延迟函数服务的,以及用于各种Message Pend函数的timeout服务,由systick定时中断引发任务调度。另一个是OSIntExit(),这个函数由用户放置到中断服务函数的最后,当中断退出后,引发一次任务调度。

那么基于μc/OS-II的应用程序有种很极端的写法,完全不使用OSIntExit()函数,这种状态下的μc/OS-II不是实时操作系统,而是时间片调度的分时系统。
回复

使用道具 举报

ID:332444 发表于 2023-6-14 14:49 | 显示全部楼层
这个应该是投石问路,到其他论坛问看,如果没有就属于空白.
单片机时间片策略当然是有的,荔枝:数码管显示延时的时间片,由于写法不同,则时间片的利用也不同,
如使用if判断延时是这样的char ys=0;while(1){if(++ys==0){数码管显示}else 其他处理时间;}
如使用傻等式是这样的char ys=0;while(1){数码管显示;while(++ys==0);}那么只有傻傻等呆空循环完成后才能作其他事情;
而上面用判断的则不然,只要判断延时还没到的这段时间就可以执行其他事件,这就是2种不同思路产生不同结果
1.jpg
回复

使用道具 举报

ID:632248 发表于 2023-6-14 19:48 | 显示全部楼层
jjwangxu2008 发表于 2023-6-13 22:49
他问的 可能是  分时操作系统。 不是前后台程序框架

我就是想搞定用时间片轮询的方法来实现荧光棒的效果,如果用外部中断写的话虽然是可以,但是实际应用中这种方法根本不可取
回复

使用道具 举报

ID:332444 发表于 2023-6-15 17:41 | 显示全部楼层
看荔枝,通篇不用阻塞等呆。
51hei.png
回复

使用道具 举报

ID:764101 发表于 2023-9-4 19:37 | 显示全部楼层
时间触发嵌入式,有书有例程,网上可以搜到,附件是我之前收集的英文版本的,中文版本的超过20M,自行百度吧,自己网上找下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表