原创 浅谈单片机应用程序架构(本文转载自我心永恒)

2012-8-13 17:51 2698 18 23 分类: MCU/ 嵌入式

浅谈单片机应用程序架构(一)

对于单片机程序来说,大家都不陌生,但是真正使用架构,考虑架构的恐怕并不多,随着程序开发的不断增多,本人觉得架构是非常必要的。前不发帖与大家一起讨论了一下《谈谈怎样架构你的单片机程序》,发现真正使用架构的并不都,而且这类书籍基本没有。

        本人经过摸索实验,并总结,大致应用程序的架构有三种:

1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。

2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。

3. 操作系统,此法应该是应用程序编写的最高境界。

下面就分别谈谈这三种方法的利弊和适应范围等。。。。。。。。。。。。。

1. 顺序执行法:

 

       这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,程序设计简单,思路比较清晰。但是当应用程序比较复杂的时候,如果没有一个完整的流程图,恐怕别人很难看懂程序的运行状态,而且随着程序功能的增加,编写应用程序的工程师的大脑也开始混乱。即不利于升级维护,也不利于代码优化。本人写个几个比较复杂一点的应用程序,刚开始就是使用此法,最终虽然能够实现功能,但是自己的思维一直处于混乱状态。导致程序一直不能让自己满意。

       这种方法大多数人都会采用,而且我们接受的教育也基本都是使用此法。对于我们这些基本没有学习过数据结构,程序架构的单片机工程师来说,无疑很难在应用程序的设计上有一个很大的提高,也导致了不同工程师编写的应用程序很难相互利于和学习。

       本人建议,如果喜欢使用此法的网友,如果编写比较复杂的应用程序,一定要先理清头脑,设计好完整的流程图再编写程序,否则后果很严重。当然应该程序本身很简单,此法还是一个非常必须的选择。

下面就写一个顺序执行的程序模型,方面和下面两种方法对比:

/**************************************************************************************
* FunctionName   : main()
* Description    :
主函数
* EntryParameter : None
* ReturnValue    : None
**************************************************************************************/
int main(void)

    uint8 keyValue;

 

    InitSys();                  // 初始化

 

    while (1)
    {
        TaskDisplayClock();
        keyValue = TaskKeySan();
        switch (keyValue)
       {
            case, x: TaskDispStatus(); break;
            ...
            default: break;
        }
    }
}

 

文章评论5条评论)

登录后参与讨论

hongqi1029_800556847 2012-8-30 20:26

你可以根据关键词查找,确实不错,因为edn的博客有字数规定,并且不好编辑,所以没有转完

hongqi1029_800556847 2012-8-30 20:25

你可以根据关键词查找,确实不错,因为edn的博客有字数规定,并且不好编辑,所以没有转完

用户418190 2012-8-30 15:11

我觉得作者这篇文章对于新手是一个很好的指导思想的文章,我们的大学教育在学习编程的时候,没有配套地学习这些编程方法学的东西,我觉得是一大问题.

用户1706448 2012-8-30 10:01

然后呢?

用户357978 2012-8-16 09:43

这篇在哪里能够找到?
相关推荐阅读
hongqi1029_800556847 2013-12-24 14:13
类似CR2032这样的型号的含义
类似CR2032这样的型号,其含义如下:LR——碱性锂-锰一次性纽扣电池,电压1.5V;CR——锂-二氧化锰一次性纽扣电池,电压3.0V,年平均容量降低不大于2%,储存寿命长;SR——锌-氧化银一...
hongqi1029_800556847 2013-06-14 09:25
4~20ma的压控电流源电路
4~20ma的压控电流源电路   利用输入电压Vi(0~5v)控制输出电流Io(4~2Oma),且当输入电压固定时,输出电流不随负载RL的变化而变化。        输出电流的最...
hongqi1029_800556847 2012-08-30 20:30
智慧之花---名言(自省二)
不要评价别人的家庭,因为那和你无关。   不要评价别人的学问,因为世上最不缺的就是学问。   总之,不要评价任何人,哪怕是你的家人。   不要乱花钱,因为明天你就可能失业。    不要趾高...
hongqi1029_800556847 2012-07-21 11:37
我得生活提醒
1.与人交谈处事,注意表达和表情,好意别给人相反得理解!!! 2.与人相处不高兴时,先反着想,比如我对人家是否尊重,我是否态度好,因为别人的反映可能是我的反映的镜像  3.任何你今日的任性,疏忽,或者...
hongqi1029_800556847 2012-07-21 10:59
自省
        1.为什么和人相处久了,一产生矛盾,就总可能把他得缺点老想来想去呢?为什么不去记人家得好呢?和陌生人反而不会这样呢?朋友,你有什么方法,对付这种情绪呢,毕竟人都不是完人啊!说说你的...
我要评论
5
18
关闭 站长推荐上一条 /2 下一条