毕了业,搞起了嵌入式软件。一切都从头来。下面是我的一些项目经验
1.软件要分层
C语言虽是面向过程的语言,但是并不意味着,设计程序的时候要把一个分任务从头写到尾。要学会
任务分隔。我的做法是这样的,先把程序从功能或硬件上,分成几个模块。每个模块完成自己的事情,
一般是设置相应的标志位,并不做实际的工作。如果标志位过多,就充分利用结构体的优势。
上下关系的模块:下一个模块解析上一个模块的全局结构体变量来置自己的标志位。同一个模块内部,
就写一个大结构体的全局变量,最后补充一个 返回全局变量指针的函数给下一个模块通信。一般最后
一个模块就要执行实际的动作。那就是根据标志位,执行了, 也很简单。
如果按照上面的思路来组织程序,要注意头文件的写法。首先每个C文件对应一个头文件。然后,专门
写一个总的头文件包涵所有的其它头文件。注意这个总的头文件内部不要再定义结构类型。最后,再在每
个子文件中包括这个总的头文件。
2.软件分工
一般情况下,一个工程会比较大,需要多个人来写。那么如何确保分工明确,协调一致呢?
一种串行方式的分工:总工程师按照任务的先后顺序,定义好接口,由项目组的人分别去实现接口。这种
方式完成的程序耦合性高,不利于维护和修改。但是程序容易理解。
一种并行方式的分工:总工程师,给每个人分配一个公共内存区,并指明其内存区的含义。然后,由个人
自由实现与公共内存 区的通信。这种方式方便调试和修改,但是程序的实际含义可能
只有总工程师理解。也就是每个人“只见树林,不见森林”。
3.不要“不懂就要问”
一个项目往往很大。如果你都知道了,再坐下来写程序,岂不到了猴年马月。要习惯利用别人的程序,要
习惯程序中有一些你自己都不知道的东西,甚至是在你看来完全多余的东西。这些多余的东西,有的是
为了扩展性的需要,写好了,先放在那里,有的是为了优化硬件性能,有的甚至就是为了延时。
本文主要参考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点。离出口不远处是考察的第一站清洞村。清洞村就在高速出入口不远处的斜坡上,在村的入口处,开车的支师傅猛打方向几乎_华南研学基地调查报告
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的关键词opacity:透明度 如果不行,也可以这样设置:background-color:rgb(0,0,0, 0); 最后一个参数是透明度。0表示全透明。border-radius:圆角边框padding:填充border:边界qlineargradient: 线性渐变Qt提供了三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(Q...
一、应用场景1、现在有两个接口,一个是登录,一个查询,但查询接口必须要依赖登录接口的token,那么通过正则表达式提取器提取登录接口的响应结果2、现在有两个接口,A接口返回列表数据,另一个查询接口的参数是A接口返回的列表的数据那么为了解决以上两个问题,我们先了解下正则表达式二、必备的正则表达式:书写方式为:元字符+限定符元字符 意义 限定符 意义 . 任意单个字符 + 匹配至少大于1次 \d 任意单个数字 ? 匹配0次或1_jmeter接口依赖
一、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核心对象Configuration:存放所有配置信息的类,包括properties配置、plugin插件、Mapper映射、数据源等。SqlSessionFactory:简而言之就是创建SqlSession的工厂类,通常由SqlSessionFactoryBuilder根据Configuration配置类生成。SqlSession:SqlSession是一个接口,定义了增、删、改、查、事务回滚提交等接口。SqlSession中的sql操作是通过Executor、Statemen
一个长度为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. 插入有序数组
[@more@]http://www.itpub.net/thread-1126963-1-1.html对于很多后勤模块的人来说,税一直都是一个说不清,道不明的梦魅。初接触时如在云里雾中,经过一段时间的摸索,才能搞明白个轮廓,说..._sap 对销售/采购税负责的特指人
<#list categories as c> <#list c.getForums() as f> <#if f_index == 0> <#assign default_forum_id = "${f.id}" /> </#if> </#list></#list&a_ftl list 取一个
2019独角兽企业重金招聘Python工程师标准>>> ..._北京大学acm1001调试结果
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共享文件