- 建立FUNCTION.c文件和FUNCTION.h文件。(将所有的子函数都放在这两个文件里边)
例:
图1 建立FUNCTION.c和FUNCTION.h的文件
图2 FUNCTION.h文件基本格式
(注:.h文件格式很重要,#endif后面一定要多打几个空行,否则会报错哦)
2、建立一个ALLDEFINE.h文件,将所有的头文件包含在这个ALLDEFINE.h文件里边,需要用到头文件的话直接#include “ALLDEFINE.h”即可。
例:
图3 所有头文件声明文件名
图4 ALLDEFINE.h文件内容
3、建立一个ALLDATA.h文件,用来存放宏定义的值或者变量。
例:
图5 ALLDATA.h文件具体形式
4、把用到的子函数放到FUNCTION.c文件里边,同时需要在FUNCTION.h文件里边对每个子函数进行声明。
例:
图6 库函数文件名
图7 FUNCTION.c文件内容
图8 库函数文件名(.h文件)
图9 FUNCTION.h文件内容
5、将子函数里面含有的gpio的类型和引脚均用参数将他们取代,将对应的类型和引脚进行宏定义。(调用函数时,只需修改参数即可)
例:
图10 蜂鸣器初始化函数(没有入口参数)
GPIOA用变量GPIOx1取代,GPIO_PIN_9用Pinx9取代
图11 蜂鸣器初始化函数(有入口参数)
令GPIOx1_对应GPIOx1(GPIOA宏定义为GPIOx1_)、Pinx_9对应Pinx9(GPIO_PIN_9宏定义为Pinx_9)。(若用同款单片机,且想用之前的gpio类型和引脚,则从参数上就很容易看出)
图12 宏定义GPIO的类型和引脚
则调用蜂鸣器初始化函数可以static void BUZZER_Init(GPIOx1_,Pin_9),
也可以static void BUZZER_Init(GPIOA,GPIO_PIN_9)
6、注意事项:若ALLDATA.h、ALLDEFINE.h、ALLDEFINE.c、FUNCTION.c、FUNCTION.h放在同一个文件夹里边,则在keil的project的项目栏里边也需把这几个文件放在同一个文件夹里边。(否则会报错哦)
例:
图13 以上提到的几个文件全在工程的USER文件里边
图14 keil工程项目里边也需把以上提到的几个文件包含在USER文件里边