登录/注册

stm32gpio函数

更多

在STM32开发中,GPIO(通用输入输出)的配置通常通过标准库(如标准外设库或HAL库)实现。以下是常见GPIO函数的中文说明及用法示例:


1. GPIO初始化函数

HAL库(如STM32CubeMX生成)

// GPIO初始化
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

// 示例:配置PA5为推挽输出,无上下拉,高速模式
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;               // 选择引脚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);         // 初始化GPIOA

标准外设库(旧版)

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

// 示例:配置PA5为推挽输出,50MHz速度
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;   // 推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  // 速度50MHz
GPIO_Init(GPIOA, &GPIO_InitStruct);

2. GPIO电平控制

输出电平

// 设置引脚为高电平
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);   // PA5输出高电平

// 切换引脚电平(电平翻转)
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);                // PA5电平翻转

读取输入电平

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3) == GPIO_PIN_SET) {
    // 检测到PB3为高电平
}

3. GPIO模式与配置


4. 注意事项

  1. 时钟使能:使用GPIO前需先使能对应时钟:

    __HAL_RCC_GPIOA_CLK_ENABLE();  // 使能GPIOA时钟(HAL库)
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  // 标准库
  2. 复用功能:若使用PWM、SPI等外设,需配置引脚为复用模式(GPIO_MODE_AF_PP)并选择对应的复用功能。

  3. 中断配置:若需使用GPIO外部中断,需额外配置中断优先级和中断服务函数(如HAL_GPIO_EXTI_IRQHandler)。


示例:LED闪烁(HAL库)

// 初始化LED引脚(PA5)
void LED_Init(void) {
    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);
}

// 主循环中闪烁LED
while (1) {
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    HAL_Delay(500);  // 延时500ms
}

通过以上函数,可以完成STM32 GPIO的基本控制。具体函数名称可能因库版本略有差异,建议参考对应型号的《参考手册》或STM32CubeMX生成的代码。

STM32GPIO口如果既要输入又要输出怎么办?STM32 GPIO口8种模式如何准确的分析?

STM32GPIO口如果既要输入又要输出怎么办?STM32 GPIO口8种模式如何准 确的分析?

2024-04-08 08:27:04

STM32 GPIO的API函数配置和使用技巧

本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式

2023-04-14 10:46:46

详细对STM32F103ZE的GPIO进行讲解

1、GPIO的基本构成2、GPIO八种模式分析五、HAL库与标准库的GPIO配置结构体对比1、标准库定义2、HAL库定义一、前言本篇内容是的

2022-02-28 07:47:56

3、stm32GPIO控制

和参考,如果文章中有不足之处,还请各位多多指教。您至少需要:一块stm32最小系统板、了解C语言基础语法、烧写器。本系列教程基于 stm32F103C8T6 型号。

资料下载 李舒桀 2022-01-17 11:49:41

STM32函数开发-GPIO

” 的学习STM32,实际操作过程中知识盲区比想象中要多很多!只做了两个GPIO口项目。实战一 · I/O口1. 文件夹结构USERsystem_stm32

资料下载 佚名 2022-01-13 16:17:00

STM32】标准库与HAL库对照学习教程特别篇--GPIO详讲

1、GPIO的基本构成2、GPIO八种模式分析五、HAL库与标准库的GPIO配置结构体对比1、标准库定义2、HAL库定义一、前言本篇内容是的

资料下载 李燕 2022-01-13 16:12:56

STM32GPIO简介

为例,参考资料如下① 正点原子开发板资料《STM32FXX开发指南-库函数版本》-第六章 跑马灯实验②

资料下载 杨福林 2021-12-05 11:36:04

STM32单片机的GPIO口8种模式的细致分析详细说明

关于STM32GPIO口的8种工作模式,我们先引出一些问题?

资料下载 佚名 2019-09-03 17:28:00

STM32GPIO的相关资料推荐

为例,参考资料如下① 正点原子开发板资料《STM32FXX开发指南-库函数版本》-第六章 跑马灯实验② S

2022-02-08 07:06:01

STM32GPIO共有哪几种工作模式呢

STM32GPIO工作模式学习文章声明这是本人第一次写相关文章,如果有错误欢迎各位大佬指正,方便我们每一个人进步学习。STM32GPIO总共有八种工作模式(1)

2022-01-06 07:13:49

如何去设置STM32 GPIO的复用功能呢

STM32GPIO有多少种复用功能呢?如何去设置STM32 GPIO的复用功能呢?

2021-12-15 07:55:38

STM32 GPIO使用操作步骤

STM32 GPIO使用超强总结STM32GPIO使用操作步骤:1. 使能GPIO

2021-08-12 07:31:21

stm32gpio输出高电平

stm32gpio输出高电平,GPIO基础知识GPIO配置是所有外设驱动的基础。STM

2021-08-10 06:29:54

stm32中的io函数 STM32中的IO操作

STM32系列单片机芯片的库函数有很多种,而负责IO操作的库函数是GPIO

2021-07-22 15:29:36

如何用汇编读取stm32GPIO端口?

能否给我一个小例子,最好有详细的注解,如何用汇编读取stm32GPIO端口。我知道C语言会简单很多,但是无奈有些情况必须用汇编。麻烦各位大神了。

2019-11-04 02:39:28
7天热门专题 换一换
相关标签