STM32 GPIO输入 设置代码
时间: 2024-09-18 17:02:31 浏览: 41
STM32 GPIO作为通用输入/输出模块,可以用于读取外部传感器的数据或者连接按键等设备。设置GPIO输入通常涉及初始化GPIO、配置模式以及使能中断(如果需要)。以下是一个简单的示例,使用Keil MDK(一种常见的STM32 IDE)和STM32F103C8T6作为基础,假设我们想要配置PA0(GPIOA Pin 0)为输入:
```c
#include "stm32f10x.h"
// 初始化GPIOA
void GPIOA_Init(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 启动GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 配置PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 输入浮空模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
// 设置PA0为输入
void SetPinAsInput(uint16_t gpio_pin) {
if (gpio_pin == GPIO_Pin_0) { // 检查是否是我们配置的pin
GPIO_PinRemapConfig(GPIO_Remap_PinMToGPIOA, ENABLE); // 如果需要,启用映射到GPIOA的功能
GPIO_ModeConfig(gpio_pin, GPIO_Mode_IPU); // 将pin配置为输入
}
}
int main(void) {
GPIOA_Init();
SetPinAsInput(GPIO_Pin_0);
while (1) {
// 读取PA0的状态,例如用GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) {
// PA0为高电平
printf("PA0 is high.\n");
} else {
// PA0为低电平
printf("PA0 is low.\n");
}
}
return 0;
}
```
阅读全文