STM32单片机库函数结构体详解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32单片机库函数结构体详解

在学习STM32F103的过程中,经常用到库函数,尤其遇到如下的结构体定义语句,如何理解。本文将解释清楚这类结构体的定义。

typedef struct

{

uint32_t x;

uint16_t y;

uint8_t z;

} Sname;

对于以上程序,包含三部分,如下图1所示,包括3部分,分别是typedef、struct{... }和Sname。

图1

(1)typedef是C语言的关键字,其用途是为一种数据类型定义一个新名字,主要是将较复杂的数据类型定义为易记且意义明确的新名字。

通常,我们定义一个变量,如定义一个无符号的整形变量x,则c语言中表示如下:unsigned int x; 数据类型unsigned int比较复杂,因此可以使用typedef

用一个简单的名字重新定义。如:typedef unsigned int uint32_t; 即用uint32_t代表unsigned int。则unsigned int x; 可以表示为uint32_t x;

uint16_t x和uint8_t x也同样是这样的定义。如下所示。

typedef unsigned short uint16_t;

typedef unsigned char uint8_t;

(2)struct也是C语言的关键字,其用途是将具有不同数据类型的变量打包管理,作为结构体。参照上文(1)中变量定义,结构体变量定义为struct Sname;Sname是变量名。为了增加不同数据类型的结构体成员,将成员增加在大括号{ }内,{ }内的内容是结构体的成员变量。如下所示。

struct

{

uint32_t x;

uint32_t y;

uint8_t z;

} Sname;

所以,当有不同数据类型的数据需要打包处理,则将其作为结构体数据处理。如处理一个振动传感器的数据,该传感器具有x、y、z三个方向的振动数据,则可以将其作为一个结构体处理。但是如果一个项目需要多个该传感器,比如5个,那么就需要类似如上的结构体的定义5次,非常繁琐,十分不便。

这时,如果使用typedef关键字,将图1中的○2作为一个整体的结构体数据类型,使用新的名字Sname代替,然后使用Sname定义新变量,将极大的简化编程。如下所示。

typedef struct

{

uint32_t x;

Uint16_t y;

uint8_t z;

} Sname;

以上是结构体替换定义。

Sname sen1;

Sname sen2;

Sname sen3;

Sname sen4;

Sname sen5;

以上是变量定义。若需要引用,则类似如下使用。sen1.x=123;

sen1.y=345;

sen1.z=456;

sen2.x=123;

sen2.y=345;

sen2.z=456;

等等。

相关文档
最新文档