STM32的GPIO口在高电平、低电平、浮空模式切换的C代码
时间: 2024-09-17 16:07:05 浏览: 40
STM32 GPIO口的控制涉及到设置输入输出模式以及读取电压状态。以下是使用STM32 HAL库操作GPIO的基本示例:
```c
#include "stm32f4xx_hal.h"
// 假设GPIOA是一个GPIO端口
GPIO_TypeDef* gpio = GPIOA;
GPIO PinNumber; // 你要操作的特定GPIO引脚
// 高电平设置
void setHigh(int pin) {
GPIO_InitTypeDef gpioInitStruct;
gpioInitStruct.Pin = pin; // 设置要操作的引脚
gpioInitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 输出推挽模式
gpioInitStruct.Pull = GPIO_NOPULL; // 无拉电流
gpioInitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; // 高速
HAL_GPIO_Init(gpio, &gpioInitStruct); // 初始化GPIO
HAL_GPIO_WritePin(gpio, pin, GPIO_PIN_SET); // 设置引脚为高电平
}
// 低电平设置
void setLow(int pin) {
HAL_GPIO_WritePin(gpio, pin, GPIO_PIN_RESET); // 设置引脚为低电平
}
// 浮空模式(输入):将引脚配置为输入无上拉下拉
void setInput(float pin) {
gpioInitStruct.Pin = pin;
gpioInitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
gpioInitStruct.Pull = GPIO_PULLUP; // 上拉模式(如果需要选择无拉,则设置Pull选(GPIO_NOPULL))
HAL_GPIO_Init(gpio, &gpioInitStruct);
}
// 读取当前GPIO的状态(高电平或低电平)
uint8_t readState(int pin) {
uint8_t state = HAL_GPIO_ReadPin(gpio, pin); // 读取引脚状态,0为低电平,非0为高电平
return state;
}
阅读全文