干货|手把手教你写单片机的C语言结构体
扫描二维码
随时随地手机看文章
摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目。看得懂结构体并且能够灵活运用结构体才能说你入门了单片机。本篇将以最通俗的方式结合STM32单片来讲讲结构体的运用。解决你学完C语言、考过了计算机二级还是看不懂单片机结构体的苦恼。宝藏文章,记得点赞转发收藏。大家知道指针和结构体是单片机的难点,所以就去学习C语言,找视频看书......
GPIO_InitTypeDef
的结构体,然后在LED_Init(void)
函数中定义一个GPIO_InitStructure
的变量GPIO_InitStructure
,那么这个变量就可以设置这个GPIO_InitTypeDef
的结构体中的成员。这里先做了解,请接着往下看。1、为什么需要结构体
这里先不说什么是结构体,说说为什么需要结构体?只有知道为什么需要,才能按照你的需要去学习,这样效率才会高。你才知道在什么情况下我们需要写一个结构体,怎么样去用结构体。这里我们以一个智能家居的项目为例。先来看一个实际的问题话说有一个项目上有4个传感器:光照传感器、烟雾传感器、酒精传感器、湿度传感器。然后这四个各个传感器还有设置报警的阈值范围。一般都是这样写#include "sys.h"
#include "delay.h"
#include "usart.h"
/*记录传感器的数值*/
float temperature; //温度
char humidity; //湿度
char alcohol; //酒精浓度
int illumination; //光照强度
/*记录传感器高低阈值*/
float temperature_threshold[2];
float humidity_threshold[2];
float alcohol_threshold[2];
float illumination_threshold[2];
int main(void)
{
uart_init(115200);//串口初始化
delay_init();
while(1)
{
}
}
2、结构体闪亮登场
然后搞C语言那帮家伙就造了个功能struct
1、结构体就是可以把变量包含到里面的东西struct就代表要定义一个结构体,sensors是这个结构体的名字,
然后是一个大括号 { }大括号里面就随意定义变量啦~3、typedef关键字
先看一下百度百科对typedef
的定义typedef
可以把一个数据类型取一个别的名字typedef {数据类型} {别的名字}#include "sys.h"
#include "delay.h"
#include "usart.h"
typedef int zhjiguoxin;//zhjiguoxin就是int
zhjiguoxin value = 0;
int main(void)
{
uart_init(115200);//串口初始化
delay_init();
printf("value=%d\r\n",value);
while(1)
{
}
}
4、结构体的精髓
注意下:1、下面的代表了这个结构体数据类型5、结构体的变量可以放任何变量
1、结构体变量可以放任何变量(int型指针)#include "sys.h"
#include "delay.h"
#include "usart.h"
typedef struct
{
float temperature; //温度
char humidity; //湿度
char alcohol; //酒精浓度
int illumination;//光照强度
char CO; //一氧化碳浓度
int *p; //int型的指针变量
} sensor;
sensor sen;
int value =0;
int main(void)
{
uart_init(115200);//串口初始化
delay_init();
sen.p=