51单片机最简单的多任务操作系统.docVIP

  • 24
  • 0
  • 约4.04千字
  • 约 4页
  • 2017-03-23 发布于重庆
  • 举报
51单片机最简单的多任务操作系统

/* 51单片机最简单的多任务操作系统 其实只有个任务调度切换,把说它是OS有点牵强,但它对于一些简单的开发应用来说,简单也许就是最好的.尽情的扩展它吧.别忘了把你的成果分享给大家. 这是一个最简单的OS,一切以运行效率为重,经测试,切换一次任务仅个机器周期,也就是在标准(工作于M晶振)上uS. 而为速度作出的牺牲是,为了给每个任务都分配一个私有堆栈,而占用了较多的内存.作为补偿,多任务更容易安排程序逻辑,从而可以节省一些用于控制的变量. 任务槽越多,占用内存越多,但任务也越好安排,以实际需求合理安排任务数目.一般来说,4个已足够.况且可以拿一个槽出来作为活动槽,换入换入一些临时任务. task_load(函数名,任务槽号) 装载任务 os_start(任务槽号) 启动任务表.参数必须指向一个装载了的任务,否则系统会崩溃. task_switch() 切换到其它任务 .编写任务函数注意事项: KEIL C编译器是假定用户使用单任务环境,所以在变量的使用上都未对多任务进行处理,编写任务时应注意变量覆盖和代码重入问题. 1.覆盖:编译器为了节省内存,会给两个没用调用关系的函数分配同一内存地址作为变量空间.这在单任务下是很合理的,但对于多任务来说,两个进程会互相干扰对方. 解决的方法是:凡作用域内会跨越task_switch()的变量,都使用stati

文档评论(0)

1亿VIP精品文档

相关文档