库函数详解


该内核库下面有三个文件夹,三个文件,以下代码都是从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版权协议,转载请附上原文出处链接和本声明。