一般来说,一个单片机程序是有很多的部分构成每一个模块来实现某一个特定的功能,比如AD转换程序模块、timer定时器程序模块、PWM程序模块等。单片机开发过程中我们将这些程序模块用函数的方法来实现。这样一个单片机程序就可以由一个main函数和若干和函数模块来构成,同一个函数模块可以被一个或者多个函数调用任意多次。基于这种思想很多的单片机厂家设计了单片机的固件库文件(其库文件是和硬件的资源相配套的,比如timer/counter模块、PWM模块、UART模块等)来驱动设备的内部和外设资源。
下图为STC15标准库文件的函数库的函数和文件。
每个文件都以函数的形式保存为文件,比如GPIO的文件打开如下:
#include 'GPIO.h'
// 函数: u8 GPIO_Inilize(u8GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 GPIO_Inilize(u8GPIO, GPIO_InitTypeDef *GPIOx)
{
if(GPIO> GPIO_P5) return1; //空操作
if(GPIOx->Mode> GPIO_OUT_PP) return 2; //错误
if(GPIO ==GPIO_P0)
{
if(GPIOx->Mode== GPIO_PullUp) P0M1 &= ~GPIOx->Pin, P0M0&= ~GPIOx->Pin;