登录/注册

STM32F0 GPIO设置

STM32F0 GPIO设置

更多

在STM32F0系列微控制器中配置GPIO的步骤如下,使用HAL库操作(中文详解):


1. 使能GPIO时钟

任何外设使用前必须先使能时钟:

__HAL_RCC_GPIOA_CLK_ENABLE();  // 使能GPIOA时钟
__HAL_RCC_GPIOB_CLK_ENABLE();  // 使能GPIOB时钟(其他端口类似)

2. 配置GPIO模式

通过 GPIO_InitTypeDef 结构体设置参数,再调用 HAL_GPIO_Init() 初始化。

常用模式示例:

(1) 推挽输出(带内部上拉)

GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin   = GPIO_PIN_5;       // 引脚号(如PA5)
GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;  // 推挽输出
GPIO_InitStruct.Pull  = GPIO_PULLUP;      // 内部上拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速模式
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   // 初始化GPIOA

(2) 开漏输出

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; // 开漏输出

(3) 浮空输入

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;     // 输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL;         // 无上拉/下拉

(4) 复用功能(如USART)

GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;     // 复用推挽
GPIO_InitStruct.Alternate = GPIO_AF1_USART1;     // 复用功能选择(查手册确定)

3. 复用功能选择

复用功能号(Alternate Function)需查数据手册(如STM32F0x8参考手册):


4. 操作GPIO引脚

输出电平

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);   // 输出高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 输出低电平

读取输入电平

uint8_t state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4); // 读取PA4电平

翻转电平

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 翻转PA5电平

5. 重要注意事项

  1. 时钟使能:未开启时钟的GPIO无法工作。
  2. 复用功能:使用I²C、SPI等外设时,必须配置为对应的复用模式。
  3. 输出速度
    • GPIO_SPEED_FREQ_LOW:低功耗场合
    • GPIO_SPEED_FREQ_HIGH:高速信号(如PWM)
  4. 模拟模式:ADC采集引脚需设为 GPIO_MODE_ANALOG

示例:配置PA5为输出,PB3为输入

// 使能时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();

// 配置PA5为推挽输出
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin   = GPIO_PIN_5;
GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull  = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 配置PB3为浮空输入
GPIO_InitStruct.Pin  = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

// 使用示例
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // PA5输出高电平
uint8_t pb3_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3); // 读取PB3状态

关键参考资源

  1. STM32F0数据手册:确定引脚复用功能(Alternate Function)。
  2. HAL库文档stm32f0xx_hal_gpio.h 中的函数和宏定义。
  3. CubeMX工具:可视化配置GPIO,自动生成代码(推荐初学者使用)。

通过以上步骤,即可完成STM32F0 GPIO的各项配置操作。

STM32F0系列MCU硬件电路供电设计

对于任何IC的电源设计要求,都可以在规格书中获取到需要的信息。STM32F0系列MCU电源轨信息和要求可以在规格书第53页的Table 24看到,如下图(图一)所示。

2023-09-27 14:25:44

STM32F0系列MCU硬件电路boot设计

Boot配置的作用是用于选择芯片上电后从何处读取可执行代码运行,STM32F0系列MCU可以从Main flash memory、System memory、Embedded SRAM三个地方boot。

2023-09-27 14:21:56

STM32F0系列MCU硬件电路外设设计

STM32F0系列MCU的I2C和SPI是板子上芯片之间最常用的通信方式,I2C有SDA和SCL两个信号构成,电路设计非常简单。

2023-09-27 11:08:28

STM32F0—电源控制

电子发烧友网站提供《STM32F0—电源控制.pdf》资料免费下载

资料下载 佚名 2023-07-31 14:56:44

STM32F0切换GPIO开源硬件

电子发烧友网站提供《STM32F0切换GPIO开源硬件.zip》资料免费下载

资料下载 欲望都市 2023-01-05 10:47:15

stm32f0 discovery开发包

stm32f0 discovery开发包分享

资料下载 luolinbo 2022-09-07 15:30:33

2、【STM32F0系列学习】之—通用输入输出端口(GPIO)

【STM32F0系列学习】之—通用输入输出端口GPIO1、GPIO端口配置说明1、GP

资料下载 王利祥 2021-11-29 16:51:07

STM32F0—电源控制

STM32F0—电源控制(开关电源技术与设计 潘永雄pdf)-电源控制 PWR

资料下载 佚名 2021-09-29 18:29:34

为什么STM32F0系列芯片里面没有VTOR

为什么基于STM32G0、STM32L0系列芯片里有VTOR而STM32F0系列又没有? 用过

2023-09-09 15:40:36

如何对STM32F0芯片与STM32F1芯片进行配置呢

STM32F0芯片与STM32F1芯片有哪些区别呢?如何对STM32F0芯片与STM3

2021-11-17 06:44:04

怎样去设置STM32F0 Timer1为PWM模式呢

怎样去设置STM32F0 Timer1为PWM模式呢?其程序是怎样的?

2021-10-21 07:30:44

STM32F0使用串口DMA步骤

关于STM32F0系列串口DMA收发数据详解这里用的库函数版本,芯片型号为stm32f030c8t6.在用到串口DMA时,要按以下几个步骤进行。1.确定使用的串口号,这里,我用的是usart2,对应

2021-08-16 09:17:24

STM32F0产品列表分享

STM32F0产品列表

2021-02-02 06:09:33

STM32F0xx_ GPIO配置详细过程

STM32F0xx_GPIO配置详细过程

2020-04-08 09:31:31

STM32F0STM32F1差异

STM32 F0入门级Cortex™-M0 MCU意法半导体基于ARM® Cortex®-M

2019-08-02 21:46:47

7天热门专题 换一换
相关标签