这种外设都之前都讲过了,专栏:stm32库开发实战指南
但是使用STM32CubeMX该配置配置呢??接下来看一下。

一、GPIO简介

STM32F4 的 IO 可以由软件配置成如下 8 种模式中的任何一种:
1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏式复用功能

详细参看:STM32开发 – GPIO详解

二、 相关函数

1、HAL_GPIO_Init 函数

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)

第一个参数:用来指定需要初始化的GPIO对应的GPIO组,取值范围是GPIOA ~ GPIOK。
第二个参数:为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef 。

/** * @brief GPIO Init structure definition  */
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;

初始化 GPIO 的常用格式是:

GPIO_InitTypeDef GPIO_Initure;
GPIO_Initure.Pin=GPIO_PIN_0; //PB0
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOB,&GPIO_Initure);

上面代码的意思是设置 PB0 端口为推挽输出模式, 输出速度为高速,上拉。

2、HAL_GPIO_TogglePin函数

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

该函数是通过操作 ODR 寄存器,达到取反 IO 口输出电平的功能。

3、HAL_GPIO_WritePin 函数

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,
GPIO_PinState PinState);

该函数用来设置一组IO口中的一个或者多个IO口的电平状态。

示例:
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); //PB5 输出高
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5, GPIO_PIN_RESET); //PB5 输出低

4、HAL_GPIO_ReadPin 函数

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
返回值:IO口电平状态

该函数用来读取一组IO下一个或者多个IO口电平状态。

示例:
HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_5);//读取 PF5 的输入电平

三、STM32CubeMX 配置 IO 口输入

1、配置

打开STM32CubeMX工具,在引脚图中选择要配置的IO口。
这里我们选择PF12。

进入 Configuration->GPIO,在弹出的界面配置 IO 口的详细参数。

下面我们来依次解释这些配置项的含义:
1)GPIO output level:
用来设置IO口初始化电平状态为High(高电平)还是Low(低电平)。
2)GPIO mode:
用来设置输出模式为 Output Push Pull(推挽)还是Output Open Drain(开漏)。
3)GPIO Pull-up/Pull-down:
用来设置IO口是上拉/下拉/没有上下拉。
4)Maximum output speed:
用来设置输出速度为高速(High)/快速(Fast)/中速(Medium)/低速(Low)。
5)User Lable:
用来设置初始化的IO口Pin值为我们自定义的宏。

2、生成源码

void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOF_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOF, ELECTRONIC_LOCK_LOCK_Pin|ELECTRONIC_LOCK_UNLOCK_Pin, GPIO_PIN_RESET);/*Configure GPIO pins : PFPin PFPin */GPIO_InitStruct.Pin = ELECTRONIC_LOCK_LOCK_Pin;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
}

STM32F4 HAL库开发 -- GPIO相关推荐

  1. STM32F4 HAL库开发 -- 串口

    一.串口介绍 串口设置包含:开启串口时钟.设置响应的IO口模式.设置波特率.数据位长度.奇偶校验位.DMA等信息. 具体参看:STM32开发 – 串口详解 二.函数 1.串口参数初始化,并使能串口. ...

  2. STM32F4 HAL库开发 -- 工程模板解读

    一.关键文件介绍 1.HAL库关键文件 stm32f4xx_hal_ppp.c/.h 基本外设的操作API,ppp代表任意外设.其中stm32f4xx_hal_cortex.c/.h比较特殊,它是一些 ...

  3. STM32F4 HAL库开发 -- 温度传感器(DS18B20)

    参看:<嵌入式-STM32开发指南>第三部分 外设篇 - 第2章 温度传感器DS18B20 这篇文章讲的非常详细了. 一.简介 1.概述 DS18B20 是 DALLAS 最新单线数字温度 ...

  4. STM32F4 HAL库开发 -- 独立看门狗(IWDG)

    之前讲过看门狗,参看:STM32开发 – 看门狗详解 一.HAL库配置独立看门狗步骤 1.取消寄存器写保护,设置看门狗预分频系数和重装载值. 首先我们必须取消 IWDG_PR和 IWDG_RLR寄存器 ...

  5. STM32F4 HAL库开发 -- STM32CubeMX

    一.STM32CubeMX 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时 ...

  6. STM32F4 HAL库开发 -- DMA

    一.DMA简介 DMA之前有讲过,参看:STM32开发 – DMA详解 DMA,全称为Direct Memory Access,即直接存储器访问.DMA传输方式无需CPU直接控制传输,也没有中断处理方 ...

  7. STM32F4 HAL库开发 --时钟使能和配置

    在STM32F4的HAL库中,外设时钟使能操作都是在RCC相关固件库文件头文件stm32f4xx_hal_rcc.h 定义的.外设时钟使能在HAL库中都是通过宏定义标识符来实现.首先,我们来看看GPI ...

  8. STM32F4 HAL库开发 -- 再识

    之前开发都是基于STM32F105 和 STM32F429,使用的是标准库,操作系统是UCOSII操作系统的. 新入职公司,使用的是STM32F407 和 STM32F429,使用的是HAL库的,国产 ...

  9. STM32F4 HAL库开发 -- 新建基于 HAL 库的工程模板

    一.STM32CubeF4 固件包下载 下载:STM32CubeF4 MCU Firmware Package 二.新建基于 HAL 库的工程模板 1.新建文件夹 建立一个文件夹为 Template. ...

最新文章

  1. ScrollView和ListView冲突解决
  2. Ubuntu 17.04 Chrome 安装
  3. Web前端_项目实践01_萌娃摄影网页(纯HTML+CSS静态页面)
  4. Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
  5. System.Net.Cookie
  6. 云+X案例展 | 民生类:浪潮云打卡人间仙境张家界
  7. iOS6中旋转的略微改变
  8. zTree树形控件讲解
  9. 【内推】AI独角兽-数美科技-NLP/CV/ASR等开放百余岗位,薪资诱人
  10. [Shell]test命令使用指南
  11. [编程语言的对比式学习] C++ vs C#
  12. 一个点的经度和纬度,以这个点为圆心,1000米为半径,最大的经度和纬度,最小的经度和纬度...
  13. 通过微信扫码登录剖析 oauth2 认证授权技术
  14. java字节流与字符流的区别编码缓冲
  15. 《Linux命令行与shell脚本编程大全》第三章
  16. Vmware Fusion中无法更改网络适配器选项
  17. 数据结构(邓俊辉):栈与队列
  18. HCIE 面试资料-BGP/MPLS V`PN
  19. 【漏洞分析】Discuz X3.3补丁安全分析
  20. java动态实现密码不同加密方式登录

热门文章

  1. 用 Python 分析了 20 万场吃鸡数据,看看玩家群体是怎么样的
  2. javaWeb项目中获取ip为 0:0:0:0:0:0:0:1
  3. 洛谷 U5122 T2-power of 2(费马小定理)
  4. dev控件中LookUpEdit的数据绑定问题
  5. 【字符串系列】字符串匹配中的位并行算法
  6. .net中关键字new的用法
  7. MOSS点滴(1):如何开发和部署feature
  8. Linux内存申请机制
  9. 英语写作中常见语法总结(一)
  10. Opencv 配置VS2012