本帖最后由 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
|