打印
[STM32F3]

GPIO 配置方法

[复制链接]
193|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2024-12-11 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO, IO, gp, pi
STM32CubeMX 配置
打开 STM32CubeMX,选择芯片或开发板。
在 Pinout & Configuration 页面:
点击目标引脚,选择功能(如 GPIO_Output)。
配置模式、速度、上下拉状态。
在 Configuration 页面查看自动生成的代码初始化设置。
2. 手动初始化(C 代码)
STM32 的 HAL 库提供函数接口。示例代码如下:

c
复制代码
// GPIO 初始化结构体
GPIO_InitTypeDef GPIO_InitStruct = {0};

// 使能 GPIO 时钟
__HAL_RCC_GPIOA_CLK_ENABLE();

// 配置 GPIOA 引脚为输出模式,推挽,低速,无上下拉
GPIO_InitStruct.Pin = GPIO_PIN_5;             // 引脚号
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   // 输出模式,推挽
GPIO_InitStruct.Pull = GPIO_NOPULL;           // 无上下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  // 低速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 设置 GPIO 引脚状态
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 置高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 置低电平
3. 外部中断配置
c
复制代码
// 配置 GPIOA 引脚为外部中断输入,带上拉
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 下降沿触发中断
GPIO_InitStruct.Pull = GPIO_PULLUP;          // 上拉
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 使能中断并设置优先级
HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);

// 中断处理函数
void EXTI0_IRQHandler(void) {
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); // 调用 HAL 库中断处理
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
    if (GPIO_Pin == GPIO_PIN_0) {
        // 用户代码,处理按键按下事件
    }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

1009

帖子

0

粉丝