大前提:C语言基础扎实且熟悉单片机编程(或者会自己查资料解决基础问题)
小前提:该功能较为复杂不封装函数难以促成简洁的代码
第一步:寻找自己要实现的功能的所有子功能的介绍及实现办法
举个例子:
当我们目标功能是A,查该功能的资料得知在这款单片机(模块)要实现这个功能需要同时实现功能B和C,然而还得知做B功能前要先实现C功能。接着说我们去看这两个功能怎么实现,又发现功能B需要功能D作为前提。当然过程中会有一些“干扰项”如功能D是功能E、F的必要条件。这时候我们就要明确我们目标了。以上信息我们就知道要实现功能A,除了A外同时还需要B、C、D(三个子功能)的功能实现逻辑。而这个逻辑可以说是算法,一步算法我们封装一个子函数(不代表一个子功能就一个子涵)——子函数就是在这个功能A函数里面需要引用到的小功能函数。
所以这一步,如果对各功能不熟悉,则要根据分析法思路一步一步找相关功能质料,直到最低层的那个功能。主要了解它的实现需要做什么操作(如硬件连接、通信规则)。这样一来我们就确定了函数的程序框架如下(入口参数暂时不设置,且假设函数不返回值):
针对例子下面是f.h文件封装结构
#ifndef __f_f
#define __f_f
#include<xxx.h>//如果还用到什么底层库函数就得全部include一下
#define write_cmd 0xA0 //如果命令或地址之类的数据太繁杂,
#define read_cmd 0xA1 //为了一眼认出来。最好在头文件处做宏定义
... ...
void f_A(...); //函数声明
void f_D(...);
void f_C(...);
void f_B(...);
#endif
针对例子下面是f.c文件封装结构
#include<f.h>
#include<xxx.h> //如果还用到什么底层库函数就得全部include一下
/*定义函数D*/