4802|20

248

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

血泪总结出来的代码编辑经验 [复制链接]

 
本帖最后由 haixinghp 于 2018-3-10 15:45 编辑

小白写代码,出了很多问题,把血泪史总结出来,以后不定期更新。大家共勉!



此内容由EEWORLD论坛网友haixinghp原创,如需转载或用于商业用途需征得作者同意并注明出处


写代码之前一定要想清楚,自己写这份代码的目的和最求的目标。

关键代码要写好注释,每次编辑完代码都要做好相应的记录。
写好代码后都要做好代码的提炼,尽量能再后续复用的代码中使用。
建立自己的框架。
做好代码整理,做好readme文件的说明。
中断一定要清除
调试时,仿真器的电源不要接入系统中。
2018年3月9日,星期五
对于变量,尽量减少全局变量的定义。如果是在需要全局变量,可以使用结构体对变量进行包装,然后使用u8 Tmp;
u8 setTmp(u8 par)
{
     Tmp= par;
     return tmp;
}
u8 getTmp()
{
     return Tmp;
}
对函数进行封装。其他文件对函数进行处理的时候调用u8 setTmp(u8 par),u8 getTmp()

结构体尽量在本级文件下使用,前面加static
一个函数的功能尽量少,函数和函数之前的尽量不要交叉调用。
为了完成同一目标的函数,写在同一个.c.h文件里面,采用统一的命名前缀。
不要把两个工程用宏定义合成一个函数,这样在维护代码时相当痛苦。
对于数组的使用,一定要保证数组不要越界!工程一旦很大,越界的话问题的原因很难查找到。
不同的IDE,指定要知晓memory,disassembly,IO状态查询的接口,不要单单靠测试现象去缝隙原因。
宏定义使用
宏定义尽量只使用大写字母、下划线、数字。
#if  WP_EN
//A
#else
//B
#end /*#if  WP_EN*/
宏定义A,B之间的代码不要太长,可这个代码添加文件模块的开启和关闭。
.H文件头定义。
#ifndef __A_H__
#define __A_H__

#endif
关于文件说明
/***************************************************************************************
**文件名:     
**作者:       Haixing.Huang
**版本:       V1.00
**说明:       此文件可以根据实际情况修改。
**修改记录:   版本     修改者    时间                     
**                                               
**备注:       2016/3/23
****************************************************************************************/

关于函数说明
/***************************************************************************************
**函数名:         --
**功能描述:     --
**输入参数:     --
**输出参数:     --
**备注:         Main.c,2015/3/11,By Haixing.Huang
****************************************************************************************/

一些小技巧
有些时候出要处理变量其中的一个位,可使用结构体和共同体来实现。如下:
typedef struct  
{
  u16 HeartBeatType:1;
  u16 BatteryMovesAlarm:1;
  u16 GpsErrorAlarm:1;
  u16 TravkingMode:1;
}_struHeartBeatBit;

typedef union
{
  _struHeartBeatBit struHeartBeatBit;
  u16 HeartBeatAllData;
}_uniHeartBeat;

_uniHeartBeat uniHeartBeat;
所有文件的头文件都放在一个头文件里面。比如config.h,头文件test.h包含#include "config.h",源文件test.c,包含#include "test.h"
本人水平有限,这些总结的不全面,望大神指教。
2018年3月10日 15:45:07


此帖出自stm32/stm8论坛

最新回复

  详情 回复 发表于 2018-7-23 16:10
点赞 关注
 

回复
举报

1903

帖子

0

TA的资源

版主

沙发
 
看来受伤很深啊,才有此总结啊
此帖出自stm32/stm8论坛
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

板凳
 
其实 ,这就体现出来了,好习惯的重要性。  有些人往往习惯不好,当然不是评判楼主你,到头来  受罪的是自己。
此帖出自stm32/stm8论坛
 
 

回复

6423

帖子

17

TA的资源

版主

4
 
每次编辑完做好相应记录?难道不用版本管理工具啊
此帖出自stm32/stm8论坛

点评

请推荐一下版本管理工具吧  详情 回复 发表于 2018-3-12 12:00
 
个人签名training
 
 

回复

2774

帖子

8

TA的资源

版主

5
 
关键代码要写好注释,每次编辑完代码都要做好相应的记录。版本管理适合你!
此帖出自stm32/stm8论坛
 
 
 

回复

506

帖子

0

TA的资源

一粒金砂(高级)

6
 
调试时,仿真器的电源不要接入系统中。*************这是为什么????
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
单片机的代码  我总做不好复用,,, 好闹心呢,自己总结经验有点龟速,有没有这方面可以借鉴的地方呢
此帖出自stm32/stm8论坛

点评

我以前也是如此,因为直接用硬件体现出来看得更易懂,但是不利于移植,尤其是多处用到的硬件资源,那酸爽,真的不敢想象  详情 回复 发表于 2018-3-10 13:00
代码的复用,在写程序的时候,尽量把有关硬件的代码用宏定义的方式定义,这样,以后改代码只需要改一下宏定义就行了,不用通篇去找硬件的定义  详情 回复 发表于 2018-3-10 12:58
 
 
 

回复

767

帖子

2

TA的资源

纯净的硅(初级)

8
 
总结的很好 楼主这份经验试用于很多行业
此帖出自stm32/stm8论坛
 
个人签名物致DIY 欢迎你的加入~
QQ群:646461928 公众号:智物知心致成
小店
 
 

回复

875

帖子

1

TA的资源

纯净的硅(高级)

9
 
还有,改动代码之前一定要对原来的代码进行备份,不然,代码没改好,辛辛苦苦几个星期的成果也毁于一旦,那种酸爽你懂得,欲哭无泪
此帖出自stm32/stm8论坛
 
 
 

回复

875

帖子

1

TA的资源

纯净的硅(高级)

10
 
hunhanhonglou 发表于 2018-3-10 08:18
单片机的代码  我总做不好复用,,, 好闹心呢,自己总结经验有点龟速,有没有这方面可以借鉴的地方呢

代码的复用,在写程序的时候,尽量把有关硬件的代码用宏定义的方式定义,这样,以后改代码只需要改一下宏定义就行了,不用通篇去找硬件的定义
此帖出自stm32/stm8论坛
 
 
 

回复

875

帖子

1

TA的资源

纯净的硅(高级)

11
 
hunhanhonglou 发表于 2018-3-10 08:18
单片机的代码  我总做不好复用,,, 好闹心呢,自己总结经验有点龟速,有没有这方面可以借鉴的地方呢

我以前也是如此,因为直接用硬件体现出来看得更易懂,但是不利于移植,尤其是多处用到的硬件资源,那酸爽,真的不敢想象
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

12
 
白丁 发表于 2018-3-9 21:24
每次编辑完做好相应记录?难道不用版本管理工具啊

请推荐一下版本管理工具吧
此帖出自stm32/stm8论坛
 
 
 

回复

512

帖子

2

TA的资源

一粒金砂(高级)

13
 
血泪码
此帖出自stm32/stm8论坛
 
个人签名

 
 

回复

369

帖子

0

TA的资源

一粒金砂(中级)

14
 
学习,支持
此帖出自stm32/stm8论坛
 
个人签名充放电数显全套方案,双口快充慢充检测电流电压,两线三线直流电压表,配套三个8尺寸15*8MM带AV电流电压单位专利数码屏,资料QQ2981074992 邮箱同上
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

15
 
先赞一下
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

16
 
不错
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

17
 
不错!学习学习!
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(中级)

18
 
楼主看来受伤很深,才有这总结,其实还有很多可以总结的,譬如#define 的使用,譬如软件的分层等等
此帖出自stm32/stm8论坛
 
 
 

回复

525

帖子

235

TA的资源

版主

19
 
活用宏定义!
软件模块化设计与分层次设计。
此帖出自stm32/stm8论坛
 
个人签名爱电子,爱生活
 
 

回复

248

帖子

0

TA的资源

一粒金砂(中级)

20
 
有些代码,不希望编译器做优化,比如延时,涉及到硬件绝对地址的访问,一定要在声明的时候在类型中加 volatile !
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表