- 引脚的初始化
**(1)**GPIO_InitTypeDef GPIO_InitStructure---------语句定义了一个GPIO_InitTypeDef类型的变量,名为GPIO_InitStructure。
**(2)**GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4------------------此句是一个赋值语句,把GPIO_Pin_4赋给GPIO_InitStructure结构体中的成员GPIO_Pin。
** 注意::**GPIO_InitTypeDef是一个结构体类型同义字,其功能是定义一个结构体,该结构体有三个成员分别是u16类型的GPIO_Pin、GPIOSpeed_TypeDef 类型的GPIO_Speed和GPIOMode_TypeDef 类型的GPIO_Mode。
所以,这三行代码的意思是
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
对结构体中的三个成员进行赋值(个人理解,不知道对错)
**总结::**该行定义一个结构体类型的变量GPIO_InitStructure,并且该结构体有3个成员,分别为GPIO_Pin、GPIO_Speed和GPIO_Mode,并且GPIO_Pin表示GPIO设备引脚GPIO_Speed表示GPIO设备速率和GPIO_Mode表示GPIO设备工作模式。
(3) GPIO_Init(GPIOB , &GPIO_InitStructure);------------是一个函数调用,即调用GPIO_Init函数,并提供给该函数2个参数,分别为GPIOB和&GPIO_InitStructure,其中&GPIO_InitStructure表示结构体变量GPIO_InitStructure的地址。(个人简单理解为把结构体中的三个成员进行传值到GPIOB,所以GPIOB中的引脚一被设置为 GPIO_Mode_IPD、GPIO_Speed_50MHz)
参考了文章:https://blog.csdn.net/qq_41072096/article/details/107186628