发布时间:2020-11-19 阅读量:1781 来源: 我爱方案网 作者: 刘工程师
【编者按】感谢阅读本文,将基于单片机C语言,讲述基于结构体的面向对象编程技巧。主要从知识说明和编程说明两大方面讲述。作者拥有10年的单片机经验,通过实践将知识提供给需要的工程师,让更多的工程师从中所学,从中受益。
阅读说明:需要一定的C语言基础,才看得懂此文。
一、面向对象
面向对象是软件开发方法,是相对于面向过程来讲的。通过把数据与方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式
单片机C语言的面向对象编程,是利用结构体,将变量、指针、函数等进行封装,达到编程更加方便、程序可读性更好、方便移植等目的。
二、知识说明
1、结构体
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
常用的定义方法:
typedef struct
{
变量;
指针;
函数指针;
} 结构体名称_t;
2、指针
指针是地址,指向内存中的变量。
常用的定义方法:数据类型 * 指针名;
3、函数指针
函数指针是指向函数的指针变量。
常用的定义方法:返回值类型 ( * 指针变量名) ([形参列表]);
三、编程说明
1、主函数如下:
系统初始化后,进入主循环,通过结构体调用system文件的函数。
2、结构体类型定义
定义1个变量与2个函数指针
串口类型定义方法,通过结构体,将串口进行封装。
3、结构体变量定义
定义结构体变量,并进行初始化。 对于函数指针,在c文件中定义函数,再将函数名赋值给函数指针,这样,就可以通过结构体的函数指针调用c文件中的函数。
4、运行函数
由于使用结构体的函数指针调用函数,函数可以声明为static类型,安全性更好。
五、小结
单片机C语言的面向对象编程,是利用结构体,将变量、指针、函数等进行封装,达到编程更加方便、程序可读性更好、方便移植等目的。
面向对象编程的知识点很多,本文只是简要的介绍了下,仅仅起到抛砖引玉的作用,日后设计过程中,需要不断的总结经验,沟通交流,以达到真正的理解,灵活运用。
作者介绍:刘工程师(笔名),在软硬件技术上有10年的经验,在单片机的经验更是突出,解决过多个单片机难题,可接单片机和软件开发等项目。目前在开讲单片机的教学,教程会在我爱方案网更新,敬请期待!公众号【硬件家园 】
版权声明:本文为博主原创,未经本人允许,禁止转载!
【小知识】时钟芯片一种高性能、低功耗、带RAM的实时时钟电路,英文名称:Real-time Clock/Calendar Chip(简称:RTC),可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。采用IIC通信接口。
晶振作为电子设备的"心跳发生器",其起振状态直接决定系统能否正常运行。本文深度解析四种检测方法的实战要点:示波器法需规避探头电容引发的停振风险,万用表电压法需警惕芯片故障导致的误判,频率计通过波形特征精准锁定起振状态,而听声辨振实为认知误区——人耳可闻的异常声响反而暴露晶振缺陷。随着5G/新能源产业爆发式增长,国产晶振厂商正加速技术攻坚,保障起振检测的可靠性已成为行业刚需。
可编程晶振改变频率的核心原理是:通过内部集成的锁相环(PLL)和数字分频/倍频电路,对基础石英晶体产生的固定频率进行精密的数学运算(分频、倍频、分数分频),最终输出一个用户通过数字接口(如I²C、SPI)编程设定的目标频率。
晶振是电路中可以提供高度稳定时钟信号的元器件。通常一个系统共用一个晶振,便于各部分保持同步,一起“干大事”。比如在我们常用的计算机系统中,晶振可比喻为各板卡的“心跳”发生器,如果主卡的“心跳”出现问题,必定会使其他各电路出现故障。人体的心跳搏动,离不开血液。晶振也是一样,离不开电流。
晶振自身产生时钟信号,为各种微处理芯片作时钟参考,晶振相当于这些微处理芯片的心脏,没有晶振,这些微处理芯片将无法工作。晶振的作用就是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振主要运用于单片机、DSP、ARM、PowerPC、CPLD/FPGA等CPU,以及PCI接口电路、CAN接口电路等通讯接口电路。