关于stm32中的GPIO引脚初始化的程序讲解及相关知识拓展介绍

本文详细讲解了STM32 GPIO初始化的程序,包括外设时钟的开启、GPIO结构体的使用以及引脚模式与速度的设置。通过分析代码,解释了RCC_AHB1PeriphClockCmd函数的时钟使能过程,以及GPIO_InitStructure结构体在配置GPIO模式、速度和上拉下拉状态中的作用。此外,还介绍了如何通过GPIO_Init函数初始化GPIO引脚,并探讨了GPIO_Pin、GPIO_Mode等枚举类型的含义。
摘要由CSDN通过智能技术生成

以下是我要讲解的GPIO初始化程序段,尽量讲解小白学习过程中不解的每一个方面。

代码讲解时我是根据一个程序边讲边跳入它的声明或是定义中讲解的。

voidLED_GPIO_Config(void)

{     

       /*定义一个GPIO_InitTypeDef类型的结构体*/

1.    GPIO_InitTypeDef  GPIO_InitStructure;

       /*开启GPIOF的外设时钟*/

2 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

       /*选择要控制的GPIOF引脚*/           

3 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9 | GPIO_Pin_10;

       /*设置引脚模式为通用推挽输出*/

4.    GPIO_InitStructure.GPIO_Mode =GPIO_Mode_OUT;

5.    GPIO_InitStructure.GPIO_OType =GPIO_OType_PP;

       /*设置引脚速率为100MHz */  

6.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

7.    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

       /*调用库函数,初始化GPIOF*/

8.    GPIO_Init(GPIOF, &GPIO_InitStructure);

}

解读:

1:对于1来讲,正如注解所说,先定义一个结构体,结构体中有需要初始化的一些结构体变量,而这些变量又有什么意义呢?这是我们要思考的问题。

typedef struct
{
  uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.
                                       This parameter can be any value of @ref GPIO_pins_define */

  GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.
                                       This parameter can be a value of @ref GPIOMode_TypeDef */

  GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.
                                       This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.
                                       This parameter can be a value of @ref GPIOOType_TypeDef */

  GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.
                                       This parameter can be a value of @ref GPIOPuPd_TypeDef */
}GPIO_InitTypeDef;

这是结构体中定义的变量

         再看下GPIOMode_TypeDef,这是一个枚举变量。而几个枚举元素的值其实代表了对相应的寄存器的赋值(相应的赋值对应相应的模式)。例如将GPIO模式寄存器赋值0x00,则表示引脚配置为输入模式。

typedef enum
{
  GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
  GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */
  GPIO_Mode_AF  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值