以 LED 和 BEEP 模块为例,讲解 GPIO 推挽输出模式的使用。
硬件平台
STM32学习 系列文章,如未特殊说明,默认是使用 STM32F407 主芯片,后续文章不再单独说明。
GPIO初始化
主要代码
这里以 LED0 为例,LED1 和 BEEP 代码同理,都是用推挽输出模式
开启 GPIO 时钟
使用 GPIO 之前,必须先开启对应的时钟;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
GPIO 结构体初始化
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOF, &GPIO_InitStructure);
代码示例
使用宏 LED0_PIN 和 LED0_GPIO_PORT 是为了方便代码移植,比如使用相同主芯片,硬件电路变更时,只需要修改这两个宏就可以了,提升了开发效率
#define LED0_PIN GPIO_Pin_9
#define LED0_GPIO_PORT GPIOF
void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
GPIO_InitStructure.GPIO_Pin = LED0_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(LED0_GPIO_PORT, &GPIO_InitStructure);
}
GPIO 输出电平接口
GPIO 初始化后,要根据实际情况输出一个默认值,以免造成不必要的麻烦;
输出高电平
GPIO_SetBits(LED0_GPIO_PORT, LED0_PIN);
输出低电平
GPIO_ResetBits(LED0_GPIO_PORT, LED0_PIN);
上一篇:stm32编写基本led
下一篇:stm32型号命名规则
推荐阅读最新更新时间:2026-03-25 10:42
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用

stm32驱动屏IC rm68042
STM32 PMSM FOC 简介
基于STM32G031的测试测量训练平台完成虚拟仪器实现
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号