IAR软件

-回复 -浏览
楼主 2018-06-27 06:48:04
举报 只看此人 收藏本贴 楼主

1.?????IAR头文件添加:#include"ioavr.h"头文件

因为该文件包含所有单片机的头文件。

?

2.? ? ??如何对一个大项目进行模块化编程

1).一个模块设立一个.c.h文件,头文件.h是对于该模块接口的声明,用于其他模块引用.c中的函数,只有在.h中声明了其他外部模块才可以引用

//==================定义或外部引用==========================

#ifdef?? DEFINE_COLLECT

#define???EXTERN_COLLECT??????? //此时EXTERN_COLLECT被设置成空

#else

#define??EXTERN_COLLECT??????????? ???extern????

#endif

//========================================================

举例:EXTERN_COLLECT?COLLECT_CTR?? Collect;

? ? ?EXTERN_COLLECT? void ADSampling(void);

*当编译器处理本模块.c文件时,变成: ??COLLECT_CTR??Collect; ? ? ? ? ? ? ? ? ? ???voidADSampling(void);

编译器会把这些全局变量分配到内存中。

*当编译器处理其他.c文件时,变成:

extern??COLLECT_CTR?? Collect;

extern??voidADSampling(void);

这时编译器不分配内存,而任何.c文件都可以使用这些变量

?2)防止自己在本模块.C程序中重复定义? ? ????

????????#ifndef ????_FILTER_H_

????????#define ????_FILTER_H_

????????头文件内容

????????? ? ......

????? ?#endif

*程序在编译头文件时会判断有没有定义filter.h文件,第二次判断时则filter.h已经定义,不会编译内容部分。


3.永远不要在.h中定义变量


4.IAR软件声明的全局变量只会分配一次内存(iar软件有优化功能)。

?







我要推荐
转发到