STM32的GPIO
IO口输入输出模式
STM32 IO 输入输出模式 | 配置 | 应用 |
---|---|---|
浮空输入 | GPIO_Mode_IN_FLOATING | 电机编码器模式 |
模拟输入 | GPIO_Mode_AIN | 模拟信号转化数字信号 |
上拉输入 | GPIO_Mode_IPU | 使IO口拉为高电平,按键检测 |
下拉输入 | GPIO_Mode_IPD | 将IO口拉为低电平 |
开漏输出 | GPIO_Mode_Out_OD | 软件IIC协议 |
推挽输出 | GPIO_Mode_Out_PP | 普通高低电平输出,LED点亮 |
复用推挽输出 | GPIO_Mode_AF_PP | PWM,UART,SPI协议 |
复用开漏输出 | GPIO_Mode_AF_OD | 硬件IIC |
上述通过CRH与CRL寄存器配置 |
读IO口电平
读取的是IDR寄存器
GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)
置位
通过向ODR寄存器中写数据
- 写高电平
GPIO_SetBits(GPIOA,GPIO_Pin_8)
- 写低电平
GPIO_ResetBits(GPIOA,GPIO_Pin_8)
GPIO初始化代码
void GPIO_Init()
{
GPIO_InitTypeDef GPIO_InitStructure; // 定义结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); // IO口时钟使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; // 端口设置
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
//实现多个IO口同时配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出模式配置
GPIO_InitStrutcure.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度
GPIO_Init(GPIOA,&GPIO_InitStructure); // IO口使能
}