对GPIO_Init(GPIOx,&GPIO_InitStructure)的理解

今天学习stm32流水灯程序的时候,看到了“GPIO_Init(GPIOB, &GPIO_InitStructure)”这个函数,参数1”GPIOB“很好理解,就是GPIO的外设口B(也可以是A,C,D,E),第二个参数有点不理解,于是查看了下库函数手册,该函数原型是这样的:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

功能描述:     根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

输入参数1:   GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2:   GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息

由此我们知道第二个参数“&GPIO_InitStructure”包含的是外设GPIO的配置信息,主函数开头我们进行了这样一个私有数据声明:


              GPIO_InitTypeDef  GPIO_InitStructure;

顺藤摸瓜,我们在头文件“stm32f10x_gpio.h”看到对GPIO_InitTypeDef  的定义:

         typedef struct
        {
                uint32_t GPIO_Pin;             
                                      
               GPIOMode_TypeDef GPIO_Mode;    

               GPIOSpeed_TypeDef GPIO_Speed;  

               GPIOOType_TypeDef GPIO_OType;  

               GPIOPuPd_TypeDef GPIO_PuPd;    
        }GPIO_InitTypeDef;

       在这个之前,我已经对GPIO_InitTypeDef中的各个参数进行了定义,对应的正是void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)输入参数2的描述“指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息”。

       至此,我们便可以理解GPIO_Init初始化寄存器的大概步骤了,即将你事先设定好的参数告诉你要用到的外设(或者说外设对应的寄存器。stm32强大的库函数可以让你摆脱复杂冗余的底层寄存器操作。)很简单有木有,相对51只能进行寄存器底层操作,这种函数库的运用真心感觉强大方便。

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值