首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > 如何设计复杂的多任务程序详细资料说明

如何设计复杂的多任务程序详细资料说明

  • 资源大小:0.21 MB
  • 上传时间:2021-10-26
  • 下载次数:0次
  • 浏览次数:60次
  • 资源积分:1积分
  • 标      签: 程序 adc cpu lcd

资 源 简 介

我们在入门阶段,一般面对的设计都是单一的简单的任务,流程图可以如图1所示,通常会用踏步循环延时来满足任务需要。   面对多任务,稍微复杂的程序设计,沿用图1的思想,我们会做出如图2所示的程序,在大循环体中不断增加任务,通常还要用延时来满足特定任务节拍,这种程序设计思想它有明显的不足,主要是各个任务之间相互影响,增加新的任何之后,以前很好的运行的任务有可能不正常,例如数码管动态扫描,本来显示效果很好的驱动函数,在增加新的任务后出现闪烁,显示效果变差了。   很明显,初学者在设计程序时,需要从程序构架思想上下功夫,在做了大量基本模块练习之后,需要总结提炼自己的程序设计思路(程序架构思想)。   首先我们来理解“任务”,所谓任务,就是需要CPU周期“关照”的事件,绝大多数任务不需要CPU一直“关照”,例如启动ADC的启动读取。甚至有些任务“害怕”CPU一直“关照”例如LCD的刷新,因为LCD是显示给人看的,并不需要高速刷新,即便是显示的   内容在高速变化,也不需要高速刷新,道理是一样的。这样看来,让CPU做简单任务一定很浪费,事实也是如此,绝大多数简单任务,CPU都是在“空转”(循环踏步延时)。对任务总结还可以知道,很多任务需要CPU不断“关照”,其实这种“不断”也是有极限的,比如数码管动态扫描,能够做到40Hz就可以了,又如键盘扫描,能够做到20Hz(经验值),基本上也就不会丢有效按键键值了,再如LCD刷新,我觉得做到10Hz就可以了,等等。看来,绝大多数任务都是工作在低速频度。而我们的CPU一旦运行起来,速度又很快,CPU本身就是靠很快的速度执行很简单的指令来胜任复杂的任务(逻辑)的。如果有办法把“快”的CPU分成多个慢的CPU,然后给不同的任务分配不同速度的CPU,这种设想是不是很好呢!确实很好,下面就看如何将“快”的CPU划分成多个“慢”的CPU。   根据这种想法,我们需要合理分配CPU资源来“关照”不同的任务,最好能够根据任务本身合理占用CPU资源,首先看如图3所示的流程图,各个任务流程独立,各任务通过全局变量来交互信息,在流程中有一个重要的模块“任务切换”,就是任务切换模块实现CPU合理分配,这个任务切换模块是怎么实现的呢?
VIP VIP