51单片机库函数详解(三-一)

库函数详解

在这里插入图片描述
在这里插入图片描述
该内核库下面有三个文件夹,三个文件,以下代码都是从KEIL中直接拿出来的源码,所以格式啥的都或多或少发生了变化,注重体验感直接去看KEIL工程里看。

include_main.h

该文件是管理工程头文件包含的,主要目的是防止 main文件内大量包含其他文件而变得臃肿,将头文件包含提取出来单独包含。

#ifndef __INCLUDE_MAIN_H
#define __INCLUDE_MAIN_H

//内核级别头文件 不允许用户私自修改添加
#include "include_drives.h"

#if STC89C52RC
#include "reg52.h"			 			//此文件中定义了单片机的一些特殊功能寄存器
#include "core51_exti.h"				//此文件中定义了单片机的外部中断配置函数,不允许修改
#include "core51_tim.h"					//此文件中定义了单片机的定时器的配置函数,不允许修改
#include "core51_uart.h"				//此文件中定义了单片机的串口配置函数,不允许修改

//用户级别头文件,可由用户自行增删修改
#include "core51_it.h"					//此文件中定义了单片机的中断实现函数,可由用户自行编写实现功能
#include "Fingerprint.H"
#include "OLED12864.H"
#include "stdio.h"

#endif
#endif

specification.h

该文件提供了编写库的一种格式规范,主要是为了不同人写库时按照统一的规范编写美观和易读性,这个文件提供了头文件的规范。

//本文件为规范示例头文件,无任何功能实现
//本文件主要提供头文件注释规范,宏定义及声明等规范
#ifndef __SPECIFICATION_H			//						<------头文件定义时结构为__XXXX_XX_XX_XX_H,中间有下划线加下划线,无下划线时不加
#define __SPECIFICATION_H



//-----------重定义关键词-----------//  <------不再改动的注释用这种注释  一般为宏定义注释
#ifndef 		u8
#define 		u8 			unsigned char			//<------宏定义时  一定要注意对齐事项
#endif
#ifndef 		u16 
#define 		u16 			unsigned int
#endif
#ifndef 		uchar
#define 		uchar 		unsigned char
#endif
#ifndef 		uint 
#define 		uint 			unsigned int
#endif



//设置矩阵按键使用的GPIO组							<------经常改动的注释用这种

//后续逐渐完善
#endif

specification.c

该文件提供了C文件的一种规范。

//该文本提供了源码文件所需要的注释

#include "specification.h"


//变量描述用双斜杠 
// xx xxxxx;


//数组描述用下面模板
/*		
		这是需要解释的内容,且首行缩进两个制表符
*/



//函数注释时用此模板

/*******************************************************************************
* 函 数 名         : 
* 输    入         : 
* 输    出         :	
* 函数功能		    : 
* 详细描述			 :	
*******************************************************************************/

Core_51

该文件夹下,包含两个文件夹三个文件,都是51架构相关文件。
在这里插入图片描述
IC_Config.h

该文件,为配置平台及平台对应的芯片的文件夹,使用时,先选择平台,比如STC平台,把STC平台的开关打开,即定义为1,然后再选择该平台下的特定芯片,比如STC89C52RC,就把对应的开关打开,多选错选都会导致编译器报错。

#ifndef __IC_CONFIG_H
#define __IC_CONFIG_H

//STC系列单片机
#define			STC							1
#define 			STC89C52RC  				1
#define			STC12C5A60S2				0	

//STC系列单片机宏编译错误提示
#if STC
	#if ((STC89C52RC + STC12C5A60S2) > 1)
		#error Multiple chips are configured
	#elif	((STC89C52RC + STC12C5A60S2) == 0)
		#error No chip configuration
	#endif
#endif

#endif

Hardware_Config.h

内核资源宏定义裁剪,通过IC_Config配置对应型号的芯片,即可编译对应的代码块,程序通过预编译实现不同平台的兼容。

#ifndef __HARDWARE_CONFIG_H
#define __HARDWARE_CONFIG_H

#include "ic_config.h"

/**************************************************************************************
*		              宏配置											  *
描述:通过配置以下宏定义,即可轻松实现51内核资源的配置
注意事项:无																				  
***************************************************************************************/

#if 	STC89C52RC

#include "reg52.h"

/**************************内核配置***************************/
//晶振宏配置
#define XTAL_24MHz 			 0
#define XTAL_12MHz 			 0
#define XTAL_110592MHz 	 	 1

//外部中断0宏开关
#define Ex_Interrupt0		 0

//外部中断1宏开关
#define Ex_Interrupt1		 0

//定时器0宏开关
#define Timer0 				 0

//定时器1宏开关 
#define Timer1 			  	 0

//串口宏开关
#define Uart				 	 0

#if ((Timer1 + Uart) > 1)
	#error Timer1 And Uart Configuration conflicts
#endif

#endif

#endif

Include_Drives.h

该文件是驱动头文件管理,通过宏定义选择包含哪些文件。

#ifndef __INCLUDE_DRIVES_H
#define __INCLUDE_DRIVES_H


#include "hardware_config.h"
//内核级别头文件 不允许用户私自修改添加

//宏晶科技头文件
#if 	STC
#include "STC_drivers.h"
#endif




#endif

外部链接

码云下载:https://gitee.com/LWTDZ/Core8051.git
店铺地址:https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22129052348.16.6b222269wKu2dH&id=615384296160
QQ群(STM32嵌入式Linux&单片机):950822175


版权声明:本文为qq_34390075原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。