欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > STM32学习笔记(二)--GPIO通用输入输出口详解

STM32学习笔记(二)--GPIO通用输入输出口详解

2024/11/30 20:34:18 来源:https://blog.csdn.net/weixin_64593595/article/details/139648282  浏览:    关键词:STM32学习笔记(二)--GPIO通用输入输出口详解

(1)配置步骤
1.使用RCC开启GPIO时钟
2.使用GPIO_Init函数初始化GPIO
3.使用输入或输出的函数等来控制GPIO
其中涉及外设有RCC、GPIO

(2)代码示例
案例1(设置PA0为推挽输出)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

案例2(设置PB1 PB11为上拉输入)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

(3)函数分析

函数1:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)(stm32f10x_rcc.h)
这个APB2外设时钟控制的函数用于使能或者失能APB2外设时钟的。

序号

名称

参数解释

示例

参数1

RCC_APB2Periph

选择哪个外设,根据列表选择

RCC_APB2Periph_GPIOA

参数2

NewState

使能或者失能

ENABLE、DISABLE

同理RCC_AHBPeriphClockCmd RCC_APB1PeriphClockCmd只是总线上的外设不同

函数2:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);(stm32f10x_gpio.h) 用结构体的参数来初始化GPIO口,包含配置8种模式的选择、引脚号、引脚速度。

序号

名称

参数解释

示例

参数1

GPIO_TypeDef* GPIOx

可以是A到G任何一个GPIO外设

GPIOB

参数2

GPIO_InitTypeDef* GPIO_InitStruct

结构体指针,该结构体包含了所有GPIO外设的信息

&GPIO_InitStructure

补充:注意GPIO_InitTypeDef结构体中的GPIO_InitStructure.GPIO_Mode,作用是八种模式的选择,如下所示

模式名称

性质

成员变量

特征

浮空输入

数字输入

GPIO_Mode_IN_FLOATING = 0x04

读引脚电平,若悬空则电平不确定

上拉输入

数字输入

GPIO_Mode_IPU = 0x48

可读取引脚电平,内部连接上拉电阻,悬空时默认高电平

下拉输入

数字输入

GPIO_Mode_IPD = 0x28

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入

模拟输入

GPIO_Mode_AIN = 0x0

GPIO无效,引脚进入内部ADC

开漏输出

数字输出

GPIO_Mode_Out_OD = 0x14

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出

数字输出

GPIO_Mode_Out_PP = 0x10

可输出引脚电平,高电平接VDD,低电平接VSS

复用开漏输出

数字输出

GPIO_Mode_AF_OD = 0x1C

由片上外设控制,高电平为高阻态,低电平接VSS

服用推挽输出

数字输出

GPIO_Mode_AF_PP = 0x18

由片上外设控制,高电平接VDD,低电平接VSS

函数3:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)(stm32f10x_gpio.h)

该函数主要是读取指定端口引脚电平状态的作用,返回引脚电平bitstatus。

序号

名称

参数解释

示例

参数1

GPIO_TypeDef* GPIOx

端口号选择

GPIOB

参数2

uint16_t GPIO_Pin

引脚号选择

GPIO_Pin_1

函数4:void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)(stm32f10x_gpio.h)

该函数主要是写指定端口引脚的电平状态。

序号

名称

参数解释

示例

参数1

GPIO_TypeDef* GPIOx

端口号选择

GPIOB

参数2

uint16_t GPIO_Pin

引脚号选择

GPIO_Pin_1

参数3

BitVal

电平状态

0或者1

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com