当前位置: 移动技术网 > IT编程>开发语言>C/C++ > STM32的IO口介绍

STM32的IO口介绍

2020年08月11日  | 移动技术网IT编程  | 我要评论
STM32的IO口STM32F103ZET6的IO口介绍①7组IO口②每组有16个IO口③一共有16*7=112个IO口GPIOA,GPIOB——GPIOGSTM32 的 IO 口可以由软件配置成如下 8 种模式:4种输入模式:1、 输入浮空(GPIO_Mode_IN_FLOATING)2、 输入上拉(GPIO_Mode_IPU)3、 输入下拉(GPIO_Mode_IPD)4、 模拟输入(GPIO_Mode_AIN)4种输出模式:5、 开漏输出(GPIO_Mode_Out_OD)

STM32的IO口

STM32F103ZET6的IO口介绍

①7组IO口
②每组有16个IO口
③一共有16*7=112个IO口
GPIOA,GPIOB——GPIOG

STM32 的 IO 口可以由软件配置成如下 8 种模式:
4种输入模式:

1、 输入浮空(GPIO_Mode_IN_FLOATING)
2、 输入上拉(GPIO_Mode_IPU)
3、 输入下拉(GPIO_Mode_IPD)
4、 模拟输入(GPIO_Mode_AIN)

4种输出模式:

5、 开漏输出(GPIO_Mode_Out_OD)
6、 推挽输出(GPIO_Mode_Out_PP)
7、 推挽式复用功能(GPIO_Mode_AF_PP)
8、 开漏复用功能(GPIO_Mode_AF_OD)

3种翻转最大速度

1.2MHZ
2.10MHZ
3.50MHZ

推挽输出:

可以输出强高低电平,连接数字器件

开漏输出:

只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

GPIO口的配置

GPIO相关库函数

使用IO口前一定要先在APB2总线使能GPIO的时钟,使用下列函数:

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

1个初始化函数

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

配置举例

 GPIO_InitTypeDef  GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PE5口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度 GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化函数  
2个读取输入电平函数

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

2个读取输出电平函数

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

4个设置输出电平函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

本文地址:https://blog.csdn.net/qq_45900095/article/details/107897685

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网