STM32F407HAL库-3.GPIO初始化

在使用HAL库时,GPIO初始化函数定义在stm32f4xx_hal_gpio.c文件中,如下:

void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);

由这个函数可以看出,在初始化GPIO时,需要向函数传入2个结构体,第一个“GPIO_TypeDef”,这个结构体主要定义了需要初始化的GPIO分组,比较简单,不多讲解。下面主要介绍一下第二个结构体“GPIO_TypeDef”,HAL库中定义的该结构体参数如下所示:

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

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

  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
                           This parameter can be a value of @ref GPIO_pull_define */

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

  uint32_t Alternate;  /*!< Peripheral to be connected to the selected pins. 
                            This parameter can be a value of @ref GPIO_Alternate_function_selection */
}GPIO_InitTypeDef;

第一个参数“Pin”:定义需要配置的GPIO引脚 ,可配置参数:GPIO_PIN_(0-15)。

第二个参数“Mode”:该参数主要定义了GPIO的引脚模式、类型、中断触发模式、事件触发模式等。可配置参数如下:

#define  GPIO_MODE_INPUT                        0x00000000U   /*!< Input Floating Mode                   */
#define  GPIO_MODE_OUTPUT_PP                    0x00000001U   /*!< Output Push Pull Mode                 */
#define  GPIO_MODE_OUTPUT_OD                    0x00000011U   /*!< Output Open Drain Mode                */
#define  GPIO_MODE_AF_PP                        0x00000002U   /*!< Alternate Function Push Pull Mode     */
#define  GPIO_MODE_AF_OD                        0x00000012U   /*!< Alternate Function Open Drain Mode    */

#define  GPIO_MODE_ANALOG                       0x00000003U   /*!< Analog Mode  */
    
#define  GPIO_MODE_IT_RISING                    0x10110000U   /*!< External Interrupt Mode with Rising edge trigger detection          */
#define  GPIO_MODE_IT_FALLING                   0x10210000U   /*!< External Interrupt Mode with Falling edge trigger detection         */
#define  GPIO_MODE_IT_RISING_FALLING            0x10310000U   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
 
#define  GPIO_MODE_EVT_RISING                   0x10120000U   /*!< External Event Mode with Rising edge trigger detection               */
#define  GPIO_MODE_EVT_FALLING                  0x10220000U   /*!< External Event Mode with Falling edge trigger detection              */
#define  GPIO_MODE_EVT_RISING_FALLING           0x10320000U   /*!< External Event Mode with Rising/Falling edge trigger detection       */

第三个参数“pull”:该参数主要定义了GPIO输入输出的上下拉电阻配置。可配置参数:

#define  GPIO_NOPULL        0x00000000U   /*!< No Pull-up or Pull-down activation  */
#define  GPIO_PULLUP        0x00000001U   /*!< Pull-up activation                  */
#define  GPIO_PULLDOWN      0x00000002U   /*!< Pull-down activation                */

第四个参数“speed”:该参数主要定义了GPIO引脚的速度。可配置参数:

#define  GPIO_SPEED_FREQ_LOW         0x00000000U  /*!< IO works at 2 MHz, please refer to the product datasheet */
#define  GPIO_SPEED_FREQ_MEDIUM      0x00000001U  /*!< range 12,5 MHz to 50 MHz, please refer to the product datasheet */
#define  GPIO_SPEED_FREQ_HIGH        0x00000002U  /*!< range 25 MHz to 100 MHz, please refer to the product datasheet  */
#define  GPIO_SPEED_FREQ_VERY_HIGH   0x00000003U  /*!< range 50 MHz to 200 MHz, please refer to the product datasheet  */

第五个参数“Alternate”:该参数主要定义了当GPIO使用复用功能的时候,需要连接到的外设。可配置参数定义在“stm32f4xx_hal_gpio_ex.h”文件中,部分如下(详细参数请参考库文件):

/** 
  * @brief   AF 0 selection  
  */ 
#define GPIO_AF0_RTC_50Hz      ((uint8_t)0x00)  /* RTC_50Hz Alternate Function mapping                       */
#define GPIO_AF0_MCO           ((uint8_t)0x00)  /* MCO (MCO1 and MCO2) Alternate Function mapping            */
#define GPIO_AF0_TAMPER        ((uint8_t)0x00)  /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
#define GPIO_AF0_SWJ           ((uint8_t)0x00)  /* SWJ (SWD and JTAG) Alternate Function mapping             */
#define GPIO_AF0_TRACE         ((uint8_t)0x00)  /* TRACE Alternate Function mapping                          */

/** 
  * @brief   AF 1 selection  
  */ 
#define GPIO_AF1_TIM1          ((uint8_t)0x01)  /* TIM1 Alternate Function mapping */
#define GPIO_AF1_TIM2          ((uint8_t)0x01)  /* TIM2 Alternate Function mapping */

下面以LED引脚初始化为例,进行GPIO初始化:

// LED的GPIO初始化函数
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
	
    __HAL_RCC_GPIOF_CLK_ENABLE(); // 开始GPIOF时钟
	
    GPIO_Initure.Pin = GPIO_PIN_9 | GPIO_PIN_10; // PF9,PF10引脚
    GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式
    GPIO_Initure.Pull = GPIO_PULLUP; // 上拉
    GPIO_Initure.Speed = GPIO_SPEED_HIGH; // 高速
    HAL_GPIO_Init(GPIOF, &GPIO_Initure); // GPIOF初始化
}

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于STM32F407HAL的教学,我可以为您提供一些基本信息和指导。 首先,STM32F407HAL是针对STMicroelectronics的STM32F407系列微控制器而开发的高级抽象层(HAL。它提供了一套易于使用的API,用于配置和控制STM32F407微控制器的各种外设功能。 要开始使用STM32F407HAL,您需要准备以下工具和资源: 1. STM32F407微控制器开发板:您可以选择使用官方的Discovery开发板或其他兼容的开发板。 2. STM32CubeMX:这是STMicroelectronics提供的一个图形化配置工具,用于生成基本的项目框架和初始化代码。 3. STM32Cube HAL:这是STM32F407HAL的核心部分,可以从STMicroelectronics的官方网站上下载。确保选择与您的微控制器型号相对应的版本。 4. 集成开发环境(IDE):您可以选择使用Keil MDK、IAR Embedded Workbench或者STM32CubeIDE等IDE来编写、编译和调试代码。 一旦您准备好了上述工具和资源,您可以按照以下步骤开始使用STM32F407HAL: 1. 使用STM32CubeMX创建一个新的工程,并选择适当的微控制器型号(例如STM32F407VG)。 2. 在配置选项中选择您需要的外设功能(如GPIO、UART、SPI等)并进行相应的配置。 3. 生成代码并导出到您选择的IDE中。 4. 打开IDE,编写您的应用程序代码,包括初始化和配置外设、处理中断、控制和读取外设等。 5. 编译代码并下载到STM32F407开发板上进行调试和测试。 除了上述步骤,您还可以参考官方的文档、示例代码和教程来学习更多关于STM32F407HAL的使用方法。STMicroelectronics的官方网站上提供了丰富的资源,包括参考手册、应用笔记和视频教程。 希望这些信息能够帮助您入门STM32F407HAL的学习和使用。如有任何进一步的问题,请随时向我提问!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值