单片机C语言 -- 结构体与指针在编程中的应用
单片机C语言 -- 结构体与指针在编程中的应用
一、基础知识
1、结构体
由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体。
进行单片机编程时,为了方便程序阅读、移植、维护,将外设看作一个对象,而对象包含数据、数据集与行为,对应程序中的变量、数组与函数。通过结构体,可以将变量、数组与函数进行封装,定义为新的数据类型。编程时,CPU可以通过新的数据类型,访问外设的变量、数组与函数,非常方便。
结构体定义新的数据类型:
typedef struct
{
变量;
指针;
函数指针;
} 新数据类型_t
之后,我们就可以用新的数据类型定义结构体变量。
2、变量
整型8位,16位,32位变量,浮点型变量等。
注意:结构体中不能定义位变量。
3、指针
定义如下:
变量类型 *指针名;
4、函数指针
定义如下:
返回值类型 ( * 指针变量名) ([形参列表]);
二、文件结构
通常包含两个文件,分别的外设.c文件与外设.h文件。.h文件主要内容为枚举类型定义、结构体类型定义、结构体变量声明为外部变量;.c文件主要内容为数组定义、结构体变量定义与初始化、静态函数等。
1、外设.h文件
①、枚举类型 -> 用于声明一组常数,可以用#define代替;
②、结构体类型定义 -> 定义结构体类型,系统并不会分配内存;
③、结构体变量声明 -> 声明为外部变量后,CPU或其它外设才可以通过结构体访问外设。
2、、外设.c文件
②、结构体变量定义 -> .h文件只是定义了结构体类型,并没有定义结构体变量。结构体变量在.c文件定义,并且需要进行初始化。变量初始化为一数值,指针初始化为数组名,函数指针初始化为函数名;
③、 静态函数 ->外设的函数,对外部是不可见的,可以声明为static类型,函数必须通过结构体的函数指针进行访问。
三、编程举例
1、Timer0.h文件
①、枚举类型定义 -> 定义定时值,可以根据需要添加;
②、结构体类型定义 -> 定义了系统运行定时器变量与定时器0初始化函数指针;
2、Timer0.c文件
①、定义了结构体变量Timer0,并进行了初始化;
②、Timer0_Init()为结构体函数指针指向的函数。
3、应用举例
①、变量访问
Timer0.usMCU_Run_Timer = TIMER0_1S;
②、函数访问
Timer0.Timer0_Init(); //定时器初始化
硬件家园 yjjy168168168