欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

STM32的IO口介绍

程序员文章站 2022-03-06 20:44:46
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

相关标签: STM32