[STM32] 求教如何不带操作系统,实行多个任务呢!

[复制链接]
6118|34
ningling_21 发表于 2014-5-22 17:27 | 显示全部楼层
没有系统,任务从何而来?
hww5408 发表于 2014-5-22 17:31 | 显示全部楼层

状态机
hww5408 发表于 2014-5-22 17:33 | 显示全部楼层
分时调用任务
lr2131 发表于 2014-5-23 09:49 | 显示全部楼层
keer_zu 发表于 2014-5-21 09:53
*用一个时钟中断(或者类似sys_tick),通过函数指针轮流执行不同TASK_fucntion,
*时间片用完后如何洗牌全 ...

想法很有意思,只是做起来会很难把。
第一,调度器得在中断中做,耗时太长会影响系统的实时性。
第二,到底怎么保存任务的现场,最低层的现场是CPU寄存器,这些还得用汇编吧。

你说的这种方法,似乎是想避开汇编和复杂的体系结构,但其实还是避不开的。

自己保存现场依然还是很麻烦的事情。还是不如直接上个简单点的OS。
ayb_ice 发表于 2014-5-23 11:55 | 显示全部楼层
直接在主循环中调用各任务,各任务禁止独占CPU(较长时间占用也禁止,一般可以设为10MS),就OK了

中断与主循环配合,中断完成高实时的数据采集,实时通信等任务
dengm 发表于 2014-5-26 14:53 | 显示全部楼层
每一任务为一个状态机, (多任务==多状态机)
keer_zu 发表于 2014-5-26 15:35 | 显示全部楼层
dengm 发表于 2014-5-26 14:53
每一任务为一个状态机, (多任务==多状态机)

事件呢?利用时钟中断做激励源?
dengm 发表于 2014-5-26 17:05 | 显示全部楼层
直接在主循环中调用各任务(状态机) 就可以了
yamato2011 发表于 2014-5-26 19:23 来自手机 | 显示全部楼层
使用一个定时器切换任务,自己给任务分配堆栈大小,用来保存任务变量。
奔牛滚滚 发表于 2014-5-26 22:57 来自手机 | 显示全部楼层
保存现场状态,还得连虚拟寄存器一起保存吧?这个是最麻烦的
loliweive 发表于 2014-5-27 11:54 | 显示全部楼层
可以用状态机的思想,中断的话用systick就可以了。
受不了了 发表于 2014-5-27 12:52 | 显示全部楼层
速度也要求不快,任务也不多,随便咋整都行
zc986 发表于 2014-5-30 17:02 | 显示全部楼层
百度给的OS的定义“操作系统(英语:Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按着应用程序的资源请求,为其分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。”

PS: 初学单片机
-------------------------》那么不对现有的软硬件资源进行人为的干预,是否就是楼主所说的不带OS呢?如果这样,那么是否就应该下面这种最直接?
while(1)
{
task1();
task2();
.
.
}
xiaox314 发表于 2014-6-5 14:57 | 显示全部楼层
时间片加状态机!
zcl143 发表于 2014-6-5 15:28 | 显示全部楼层
keer_zu 发表于 2014-5-21 09:53
*用一个时钟中断(或者类似sys_tick),通过函数指针轮流执行不同TASK_fucntion,
*时间片用完后如何洗牌全 ...

高,不过任务堆栈会比较占用空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部