
关于STM32F103单片机库函数里的结构体指针不理解,求大神帮助
最近在学STM32看了下范例程序和库里面的各种结构体指针定义,本人比较笨,有地方看不懂,请高手帮忙解答我在别人的例子程序里面看到这个GPIO_InitTypeDefGPI...
最近在学STM32看了下范例程序和库里面的各种结构体指针定义,本人比较笨,有地方看不懂,请高手帮忙解答
我在别人的例子程序里面看到这个
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
前面都能看懂,就是最后这个GPIO初始化,GPIO_Init函数的数据类型觉得不太明白
外设GPIO.C文件里有这个初始化io口的函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
我说下我的理解如果有错请及时指出来谢谢
GPIOx是个形参,数据类型是指向GPIO_TypeDef这种结构体的指针变量,里面存放的是结构体地址,对吗?
然后我一路查回去发现这几行
#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE),GPIOB_BASE是个数值,然后强制转换成结构体指针变量,然后GPIOB也就变成了结构体指针变量然后和GPIOx的数据类型一样,可以把值传递给形参,对吗
如果以后上都对我的问题就出来了 那么GPIO_InitStruct也是结构体指针变量,但是例子程序里有GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure是个结构体加个&,是取地址,他和形参GPIO_InitStruct不是一个类型吧,这样可以传递吗,该怎么理解呢 展开
我在别人的例子程序里面看到这个
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
前面都能看懂,就是最后这个GPIO初始化,GPIO_Init函数的数据类型觉得不太明白
外设GPIO.C文件里有这个初始化io口的函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
我说下我的理解如果有错请及时指出来谢谢
GPIOx是个形参,数据类型是指向GPIO_TypeDef这种结构体的指针变量,里面存放的是结构体地址,对吗?
然后我一路查回去发现这几行
#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE),GPIOB_BASE是个数值,然后强制转换成结构体指针变量,然后GPIOB也就变成了结构体指针变量然后和GPIOx的数据类型一样,可以把值传递给形参,对吗
如果以后上都对我的问题就出来了 那么GPIO_InitStruct也是结构体指针变量,但是例子程序里有GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure是个结构体加个&,是取地址,他和形参GPIO_InitStruct不是一个类型吧,这样可以传递吗,该怎么理解呢 展开
展开全部
理解的没错啊,GPIO_InitStructure是GPIO_InitTypeDef 类型的变量对吧,对它取地址得到的就是GPIO_InitTypeDef*类型的指针,跟形参GPIO_InitStruct的类型一样的啊都是GPIO_InitTypeDef*类型的指针。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询