功率电感生产厂家
联系我们
热门搜索
点击排行
推荐阅读
猜猜你喜欢的
技术知识 您所在的位置: 首页 > 技术知识

教你构造一个51单片机的实时操作系统

来源:    作者:    发布时间:2015-01-07 10:58:55    浏览量:

  }

  }

  以上代码TaskC中使用了临界保护的方法来保护代码不被中断占先,确实有效地解决了RAM空间太小,不宜大量定义静态变量贴片电感的问题。然而如果每个任务都采用此种结构,任务一开始,就关闭中断,将使实时性得不到保证。事实证明,这种延时是相当可观的。用一个实例来说明,如果想在系统中使用一个动态刷新的LED显示器,就难以保证显示的稳定与连续,哪怕在系统中是使用一个单独的定时器来做这一工作(进入临界区后,EA=0)。其次,这种结构事实上将占先的任务调度转化为非占先的任务调度。实际上如果在(3)与(4)之间没有碰巧发生中断并导致一个任务调度,那就可以理解为是任务主动放弃CPU的控制。如果在(3)和(4)之间碰巧产生了一个中断并导致了一个任务调度,只是执行了一次多余的任务调度而已,而且并不希望在(3)之后发生2次甚至多次的任务调度,相信读者也有这一愿望。

  除此之外,还可以发现任务的一个特点:当任务从(1)重新开始时,局部变量x和y是一个什么值并不在乎,即x和y即使在(3)之后改变了,也已经不再重要,不会影响程序的正确性。其实这一特点也是大部分任务,至少是太部分任务的大部分局部变量的一个共性——如果任务在整个执行过程中,不会(被占先)放弃CPU控制权,则其局部变量大多数并不需要进行特别的保护,即其作用域只是任务的当次执行,针对上面的代码,就是临界保护区内的代码区域。

  2 实时操作系统要不要占先

  由上面的分析,如果要保持一个函数可重人,就得使用静态变量,系统的RAM资源将是一个严峻的考验;如果使用临界区来保护运行环境,系统的实时性又得不到保证,而且有将占先式任务调度转为非占先任务调度之虞。显然,使用静态变量简单,但有更多的不适用性,对将来功能的调整也是一个阻碍,一般不被采用。那么,就只能从环境保护上来下功夫了,但是果真只能以进入临界区牺牲系统的实时性来保证任务不被占先?下面看看临界保护这一方法的基本思路:

  ①在一个任务中,如果局部变量在其作用域内不被占先切换,则这些变量在任务被剥夺了CPU控制权后,不关心其值也不会影响任务的正确执行;

  ②使用临界区保护,可以达到上面所提到的要求;

  ③由此导致的实时性能与占先切换的减弱可以接受。由此可知,不被占先是任务保护局部变量的关键。既然如此,何不舍弃占先式的任务调度?这不失为一个好的出发点。针对Keil C51,非占先式任务调度,可能是一种更好的方法,更能协调51系列单片机的既定资源。下面编写这样一个系统:

  ①使用非占先式电感器与电容器任务调度;

  ②可以在小容量的芯片中使用,开发目标是,即使是8051这样小的芯片,也可使用这个实时操作系统;

  ③支持优先级调度,尽可能保证其实时性。

塑封电感器  3 实时操作系统的实现

  基于以上的分析与目的,近日完成了这个操作系统。在堆栈上借用RTx的管理方法,即当前任务使用全部的堆空间,如图1所示。

  

  3.1 堆栈的初始化与任务的创建

  堆栈的初始化实际是初始化0STaskStackBotton数组,并将当前任务指定为空闲任务,下一个运行任务指定为最高优先级任务,即优先级为零的任务。初始化时,将SP的值存人OSTaslkStackBotton[O],SP+2的值存入OSTaskStacKBotton[1],依此类推。而任务是调用0STa-skCreate函数建立的。实际上只是将任务(假设为n号任务)的地址填人到对应OSTaskStackBotton[n]所指向的位置,并将SP向后移动2个字节,如图2所示。

  

  为什么要以这样一种规律而不是其他的方式呢?这是由于在任务建立后,还未进行任务调度之前,各任务的堆栈实际工字电感上是它们自身的地址,因而其堆栈深度为2,为了程序的简大电流电感便而直接填入。

  • 智能功率模块:走向小型化与高效能图2:SPM模块的应用电路结构图使用BLDC马达进行节能处处可见,可以说是尘埃落定。其挑战在于以合理的成本在马达里集成一个复杂的电子控制电路,从而为用户提供服务。优化的功率驱动电路对马达具有巨大的提升

  • L6562D+OB2203的问题最近用L6562D+OB2203做了一个输入175-265VAC,输出90V1A的路灯电源,PFC电路单独调试OK,但是单独调试OB2203出现CC模式下开机带载启动,电源打嗝保护,空载启动然后带载就不会出现打

  • 一种空调用新型PFC的设计0 引言近年来,随着电子技术的发展,各种电子设备、家用电器可能产生的电流谐波和无功功率对电网的污染也越来越引起人们的重视。谐波的存在,不仅大大降低了输入电路的功率因数,而且可对公共电力系统造成污染,引

  •