您的位置 首页 电源

还在用延时函数吗——那你就out了

延时函数结构简单,条理清晰,这个程序作为单片机初学者或者初学一类单片机来说,无疑是非常好的,但在实际使用过程中使用这样的程序框架,程序的执行效率肯定不会很高,程序99%以上的时间都在忙着空转。那么,我

  就像每一个开端学习编程言语的人写的第一个程序都是“Hello World!”相同,简直每一个学习单片机的同学接触到的第一个程序都是点灯程序,简直每一本介绍单片机学习的教材也都是从这样一个程序开端,简直每一个工程师学习一类新的单片机时也是从这个程序开端的。如下图所示,便是一个典型的单片机点灯程序的结构,LED以一秒为周期循环闪耀下去。还有许多以此程序拓宽开来的,如流水灯,呼吸灯等等。

  延时函数结构简略,条理清晰,这个程序作为单片机初学者或许初学一类单片机来说,无疑是非常好的,但在实际运用进程中运用这样的程序结构,程序的履行功率必定不会很高,程序99%以上的时刻都在忙着空转。

  那么,咱们怎样才能将这些无用功节省掉,把糟蹋掉的时分收回来做一些有利的作业呢?下面是笔者的一些思路。

  一、前后台程序

  前后台形式的程序是咱们最常用到的,也是最简略的嵌入式程序架构。它分为前台程序和后台程序。应用程序选用一个无限循环,在循环中调用相应和函数,来完结相应的操作,这部分程序可看作是后台行为。前台程序经过中止来完结,即中止服务程序。一般情况下,后台程序也叫使命级程序,前台程序也叫事情处理级程序。

  前后台程序也能够与程序调度相结合,在程序运转时,后台程序查看每个使命是否具有运转条件,经过必定的调度算法来完结相应的操作。关于实时性要求特别严厉的操作一般由中止来完结,仅在中止服务程序中标记事情的产生,不再做任何作业就退出中止,经过后台程序的调度,转由前台程序完结事情的处理,这样就不会形成在中止服务程序中处理费时的事情而影响后续和其他中止。

  二、定时器状况机

  状况机是软件领域中的一个重要概念,在嵌入式裸机编程中,状况机的位置特别重要。简直一切的嵌入式使命都能够被看做状况机来处理。比方一个按键处理进程,能够看做一个状况机,一个细微的击键动作包含了:开释、颤动、闭合、颤动和从头开释等状况,每个状况对应不同的处理程序,状况切换能够经过每隔一段时刻(定时器)去查看按键状况来完结。每个状况之间的时刻距离能够去处理其他使命,而不用选用延时函数函数来等候下一个状况的到来。

  三、协作式调度器

  调度器,一方面能够看作一个简略的操作体系,答应以周期性或(很少地)单次方法来调用使命。另一方面,从底层来看,调度器能够看作是一个由许多不同使命同享的定时器中止服务程序,多个不同的使命,能够运用同一个调度器来调度完结。调度器首要分了两大类:协作式调度器和抢占式调度器。

  协作式调度器是一种单使命的体系结构,在任一时刻只要一个使命是活动的,直到这一使命运转完结之后,调度器操控调用下一个使命。在协作式调度器中,使命在特定的时刻被调度运转;当一个使命需求运转时,会被添加到等候行列;当CPU空闲时,运转等候行列中的下一个使命;使命一旦被履行,不被中止,直到使命履行完结;尔后CPU交还调度器操控,去履行下一个使命。

  一、抢占式调度器

  抢占式调度器是一种多使命的体系结构,咱们往常接触到的商用嵌入式操作体系如UCOS等一般归于抢占式调度体系。在抢占式调度器中,使命在特定的时刻被调度运转;当使命需求运转时,被添加到等候行列中;等候的使命运转一段固定的时刻,假如没有完结,将被暂停并放回到等候行列中,然后下一个等候使命将运转一段固定的时刻。

  这类调度器相对杂乱,一般作为一个独立的操作体系来处理,它能够对外部事情快速呼应,可“并行地”处理多个不同使命。

  本文简略介绍了几种不同的单片机程序结构,因为篇幅问题,不能逐个具体解说,今后有机会将具体解说,并逐个给出实例。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/118176.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部