【单片机C语言】 结构体与指针在编程中的应用——用户“刘工程师”撰稿

发布时间:2020-04-13 阅读量:1432 来源: 我爱方案网 作者:

【编者按】本文学习单片机的基础知识,通过编程举例和应用举例,加深学习。刘工将每周进行更新单片机教程,免费教学。刘工在单片机领域造诣有10年的经验,将这些经验传给更加需要的工程师,让渴望知识的工程师学到知识,增加见识!


一、基础知识


1、结构

由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体。


进行单片机编程时,为了方便程序阅读、移植、维护,将外设看作一个对象,而对象包含数据、数据集与行为,对应程序中的变量、数组与函数。通过结构体,可以将变量、数组与函数进行封装,定义为新的数据类型。编程时,CPU可以通过新的数据类型,访问外设的变量、数组与函数,非常方便。

 

结构体定义新的数据类型:

typedef  struct

{

变量;

指针;

函数指针;

} 新数据类型_t

 

之后,我们就可以用新的数据类型定义结构体变量。

 

2、变量

整型8位,16位,32位变量,浮点型变量等。

注意:结构体中不能定义位变量。


3、指针


定义如下:

变量类型 *指针名;

通过指针,非常方便操作数组。比如串口的接收缓存,将接收缓存的首地址赋给指针后,CPU就可以通过结构体的指针,读取串口的接收缓存。


4、函数指针

定义如下:


返回值类型 ( * 指针变量名) ([形参列表])


通过函数指针,可以访问外设的函数。 通过将外设函数的函数名(首地址)赋给函数指针,CPU就可以通过结构体的函数指针,调用外设的函数。

 

二、文件结构


通常包含两个文件,分别的外设.c文件与外设.h文件。 .h文件主要内容为枚举类型定义、结构体类型定义、结构体变量声明为外部变量;.c文件主要内容为数组定义、结构体变量定义与初始化、静态函数等。


1、外设.h文件


①、枚举类型 -> 用于声明一组常数,可以用#define代替;

②、结构体类型定义 -> 定义结构体类型,系统并不会分配内存;

③、结构体变量声明 -> 声明为外部变量后,CPU或其它外设才可以通过结构体访问外设。

 

2、外设.c文件


①、数组定义 -> 定义数据集合,将数组名(地址)赋给结构体的指针;

②、结构体变量定义 -> .h文件只是定义了结构体类型,并没有定义结构体变量。 结构体变量在.c文件定义,并且需要进行初始化。变量初始化为一数值,指针初始化为数组名,函数指针初始化为函数名;

③、 静态函数 ->外设的函数,对外部是不可见的,可以声明为static类型,函数必须通过结构体的函数指针进行访问。

 

三、编程举例


1、Timer0.h文件

 

图片2.png


①、枚举类型定义   -> 定义定时值,可以根据需要添加;

②、结构体类型定义 -> 定义了系统运行定时器变量与定时器0初始化函数指针;

 

2、Timer0.c文件

 

图片3.png

 

①、定义了结构体变量Timer0,并进行了初始化;

②、Timer0_Init()为结构体函数指针指向的函数。

 

3、应用举例


①、变量访问

Timer0.usMCU_Run_Timer = TIMER0_1S;


②、函数访问

Timer0.Timer0_Init(); //定时器初始化

 

别具一格的单片机实战项目免费教学,以产品为导向,一起做项目的形式,加qq 1273755275拉入学习交流群。
开源项目,开发工具,技术资料以及更多原创技术文章,请关注微信公众号:硬件家园 yjjy168168168

 

作者:刘杰,在软硬件技术上有10年的经验,在单片机的经验更是突出,解决过多个单片机难题,可接单片机和软件开发等项目。目前在开讲单片机的教学,教程会在我爱方案网更新,敬请期待!


相关资讯
核心对比!无源晶振与有源晶振在结构和工作原理的本质区别

无源晶振与有源晶振是电子系统中两种根本性的时钟元件,其核心区别在于是否内置振荡电路。晶振结构上的本质差异,直接决定了两者在应用场景、设计复杂度和成本上的不同。

温度稳定性对RTC晶振的计时误差影响与分析

RTC(实时时钟)电路广泛采用音叉型32.768kHz晶振作为时基源,但其频率稳定性对温度变化极为敏感。温度偏离常温基准(通常为25℃)时,频率会产生显著漂移,且偏离越远漂移越大。

从参数到实践!剖析有源晶振的频率稳定度、老化率及正确接线方案

有源晶振作为晶振的核心类别,凭借其内部集成振荡电路的独特设计,无需依赖外部电路即可独立工作,在电子设备中扮演着关键角色。本文将系统解析有源晶振的核心参数、电路设计及引脚接法,重点阐述其频率稳定度、老化率等关键指标,并结合实际电路图与引脚定义,帮助大家全面掌握有源晶振的应用要点,避免因接线错误导致器件失效。

如何对抗晶振老化?深入生产工艺与终端应用的防老化指南

晶振老化是影响其长期频率稳定性的核心因素,主要表现为输出频率随时间的缓慢漂移。无论是晶体谐振器还是晶体振荡器,在生产过程中均需经过针对性的防老化处理,但二者的工艺路径与耗时存在显著差异。

无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。