STM32的IO口介绍
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