C项目经验总结_c项目经历_开心an的博客-程序员宅基地

技术标签: 扩展  语言  c  C语言  优化  嵌入式  任务  

毕了业,搞起了嵌入式软件。一切都从头来。下面是我的一些项目经验

1.软件要分层

   C语言虽是面向过程的语言,但是并不意味着,设计程序的时候要把一个分任务从头写到尾。要学会

   任务分隔。我的做法是这样的,先把程序从功能或硬件上,分成几个模块。每个模块完成自己的事情,

   一般是设置相应的标志位,并不做实际的工作。如果标志位过多,就充分利用结构体的优势。

    上下关系的模块:下一个模块解析上一个模块的全局结构体变量来置自己的标志位。同一个模块内部,

     就写一个大结构体的全局变量,最后补充一个 返回全局变量指针的函数给下一个模块通信。一般最后

    一个模块就要执行实际的动作。那就是根据标志位,执行了, 也很简单。

     如果按照上面的思路来组织程序,要注意头文件的写法。首先每个C文件对应一个头文件。然后,专门

    写一个总的头文件包涵所有的其它头文件。注意这个总的头文件内部不要再定义结构类型。最后,再在每

   个子文件中包括这个总的头文件。

2.软件分工

   一般情况下,一个工程会比较大,需要多个人来写。那么如何确保分工明确,协调一致呢?

   一种串行方式的分工:总工程师按照任务的先后顺序,定义好接口,由项目组的人分别去实现接口。这种

                                         方式完成的程序耦合性高,不利于维护和修改。但是程序容易理解。

   一种并行方式的分工:总工程师,给每个人分配一个公共内存区,并指明其内存区的含义。然后,由个人

                                       自由实现与公共内存 区的通信。这种方式方便调试和修改,但是程序的实际含义可能

                                      只有总工程师理解。也就是每个人“只见树林,不见森林”。

3.不要“不懂就要问”

     一个项目往往很大。如果你都知道了,再坐下来写程序,岂不到了猴年马月。要习惯利用别人的程序,要

        习惯程序中有一些你自己都不知道的东西,甚至是在你看来完全多余的东西。这些多余的东西,有的是

         为了扩展性的需要,写好了,先放在那里,有的是为了优化硬件性能,有的甚至就是为了延时。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yongan1006/article/details/7859304

智能推荐

JMS与Spring之二(用message listener container异步收发消息)-程序员宅基地

本文主要参考Java Message Service(2nd)by Marc Ricbard。在Spring框架中使用JMS传递消息有两种方式:JMS template和message listener container,前者用于同步收发消息,后者用于异步收发消息。本文主要讲述用message listener container异步收发消息。 Spring中有三种方式配置异步消息监

粤北华南教育历史研学基地(坪石)调研之一_华南研学基地调查报告-程序员宅基地

  2021年度华南教育历史研学基地的复原工作重点集中在乐昌市坪石镇,之前通过南粤古驿道网站、媒体报道、相关的资料等对研学基地有了粗略的了解,对这段历史也非常向往,一直想亲自到坪石的各个遗址去看看,到了3月底终于得以成行。第一站 清洞村 中大文学院  3月26日,我们一行4人前往乐昌市坪石镇调研华南教育历史研学基地。早上8点半从广州市环市东路468大院出发,到达乐广高速的坪石出口,已将近12点。离出口不远处是考察的第一站清洞村。清洞村就在高速出入口不远处的斜坡上,在村的入口处,开车的支师傅猛打方向几乎_华南研学基地调查报告

ElasticSearch11:_version和external version进行乐观锁并发控制-程序员宅基地

1.version打开两个kibana页面,在页面1中执行putPUT /test_index/test_type/7{ "test_field":"xxx7"}此时的_version=1查询一下数据:{ "_index": "test_index", "_type": "test_type", "_id": "7", "_vers

QSS qlineargradient线性渐变-程序员宅基地

QSS的关键词opacity:透明度 如果不行,也可以这样设置:background-color:rgb(0,0,0, 0); 最后一个参数是透明度。0表示全透明。border-radius:圆角边框padding:填充border:边界qlineargradient: 线性渐变Qt提供了三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(Q...

Jmeter之接口依赖_jmeter接口依赖-程序员宅基地

一、应用场景1、现在有两个接口,一个是登录,一个查询,但查询接口必须要依赖登录接口的token,那么通过正则表达式提取器提取登录接口的响应结果2、现在有两个接口,A接口返回列表数据,另一个查询接口的参数是A接口返回的列表的数据那么为了解决以上两个问题,我们先了解下正则表达式二、必备的正则表达式:书写方式为:元字符+限定符元字符 意义 限定符 意义 . 任意单个字符 + 匹配至少大于1次 \d 任意单个数字 ? 匹配0次或1_jmeter接口依赖

git clone出错问题解决_git clone 不支持http-程序员宅基地

一、git clone 报错,错误截图如下原因分析:可能是数据太大了,http协议不支持二、改用ssh方式检出代码第一步:Git Bash工具生成ssh keyssh-keygen -o -t rsa -C "[email protected]" -b 4096第二步:找出存储SSH公钥key的路径,把公钥复制到gitlib下通常包含在 '~/.ssh/id_rsa.pub' 文件中,并以 'ssh-rsa' 开头。第三步:用ssh协议clone代码成功.._git clone 不支持http

随便推点

Mybatis插件_观海远云的博客-程序员宅基地

一.Mybatis核心对象Configuration:存放所有配置信息的类,包括properties配置、plugin插件、Mapper映射、数据源等。SqlSessionFactory:简而言之就是创建SqlSession的工厂类,通常由SqlSessionFactoryBuilder根据Configuration配置类生成。SqlSession:SqlSession是一个接口,定义了增、删、改、查、事务回滚提交等接口。SqlSession中的sql操作是通过Executor、Statemen

插入有序数组_#oldojp58. 插入有序数组_P-chanY的博客-程序员宅基地

一个长度为10的数组中输入n(0≤n≤9)个整数,这n个整数从小到大有序。再输入一个x,把它插入数组适当位置,使数组仍保持有序。输入格式:输入n,再以从小到大顺序输入n个整数,再输入x。输出格式:插入x后的数组,数与数间用空格分割。输入样例:51 3 5 7 92输出样例:1 2 3 5 7 9#include<stdio.h>int main(){ int n,x,a[11],t; int i,j; scanf("%d",&n); for(i=0;i_#oldojp58. 插入有序数组

SAP税务处理---采购/销售相关-程序员宅基地

[@more@]http://www.itpub.net/thread-1126963-1-1.html对于很多后勤模块的人来说,税一直都是一个说不清,道不明的梦魅。初接触时如在云里雾中,经过一段时间的摸索,才能搞明白个轮廓,说..._sap 对销售/采购税负责的特指人

freemarker取list的第一个元素 循环用法-程序员宅基地

&lt;#list categories as c&gt; &lt;#list c.getForums() as f&gt; &lt;#if f_index == 0&gt; &lt;#assign default_forum_id = "${f.id}" /&gt; &lt;/#if&gt; &lt;/#list&gt;&lt;/#list&a_ftl list 取一个

POJ-北大acm 1001 exponentiation 解题报告与bug-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ..._北京大学acm1001调试结果

virtualbox中ubuntu和windows共享文件夹设置_virtualbox ubutun共享文件-程序员宅基地

1、安装VBoxGuestAdditions_4.3.8.iso增强工具安装完毕后根据提示重启Ubuntu,具体操作如下:a、把VBoxGuestAdditions_4.3.8.iso镜像到Ubuntu中,存放在Ubuntu的/media目录中,操作如下:b、安装virtualbox增强包linuxidc@ubuntu:~$ cd ~linuxidc@ubuntu:~$ su -密码:root@ubuntu:~# cd /media/root@ubuntu:/media# lssf_sh_virtualbox ubutun共享文件