最近在写一个太阳能电池控制板的项目,这两天真是收获颇丰,把指针又从新学了一遍,还是项目坑死人啊啊啊啊啊
下面是我在建立工程时遇到的问题:
1)头文件包涵问题:
原先写的程序都是小程序,很少遇到许多.c 和.h和在一起的进行编译的境况,这样在许多编译单位一起链接的时候就会出现重定义情况
解决办法:
独立建立一个include.h 文件,将所有其他文件的.h 都包涵在内,例如:
#ifndef INCLUDE_H_
#define INCLUDE_H_
#include "config.h" //前后两个位置不能变
#include "STC15Fxxxx.H"
#include "intrins.h"
#ifdef _ADC
#include "ADC.h"
#endif
#ifdef _DELAY
#include "delay.h"
#endif
#ifdef _EEPROM
#include "EEPROM.h"
#endif
#ifdef __EXTI
#include "Exti.h"
#endif
#ifdef _GPIO
#include "GPIO.h"
#endif
#ifdef _PCA
#include "PCA.h"
#endif
...... //还有许多
#endif
这样在每个编译单位(独立可以编译的.h和.c)的开头加上include.h
注意: 由于在每个头文件包涵之前加入的是#ifdef 和#endif 如下:
#ifdef _XXXXX //标示符
#include xxxxx//头文件名
#endif
所以要提前进行宏定义 (#define )
我是在config.h配置文件中进行宏定义的
#ifndef __CONFIG_H
#define __CONFIG_H
/*********************************************************/
#define MAIN_Fosc 22118400L //定义主时钟
//#define MAIN_Fosc 12000000L //定义主时钟
//#define MAIN_Fosc 11059200L //定义主时钟
//#define MAIN_Fosc 5529600L //定义主时钟
//#define MAIN_Fosc 24000000L //定义主时钟
/*********************************************************/
#define _ADC
#define _DELAY
#define _EEPROM
#define __EXTI
#define _GPIO
#define _PCA
#define _SOFT_UART
#define _TIMER
#define _USART
#define _BSP_LCD
#define _BSP_KEY
.......