GPIO文件结构

这个头文件 stm32f10x_gpio.h 是 STM32 标准外设库的一部分,包含与 GPIO(通用输入/输出)相关的定义、数据类型、宏和函数声明。该文件的结构和功能可以按以下部分来分析:

文件头部信息

文件头部包含文件名、作者、版本和日期等基本信息,还有一段版权声明,表明 STM32 提供的固件库仅供参考,并不承担因使用该固件库导致的任何责任。

预处理器指令

#ifndef __STM32F10x_GPIO_H
#define __STM32F10x_GPIO_H

#ifdef __cplusplus
 extern "C" {
#endif

这些指令防止了头文件的递归包含,并确保在 C++ 编译器中正确处理。

引入其他头文件

#include "stm32f10x.h"

引入主设备头文件 stm32f10x.h,其中包含了设备寄存器的定义和其他必要的基础定义。

数据类型定义

定义了 GPIO 模块中用到的数据类型,包括结构体、枚举类型等:

枚举类型
  • GPIO 速度类型

    typedef enum
    { 
      GPIO_Speed_10MHz = 1,
      GPIO_Speed_2MHz, 
      GPIO_Speed_50MHz
    } GPIOSpeed_TypeDef;
    
  • GPIO 模式类型

    typedef enum
    { 
      GPIO_Mode_AIN = 0x0,
      GPIO_Mode_IN_FLOATING = 0x04,
      GPIO_Mode_IPD = 0x28,
      GPIO_Mode_IPU = 0x48,
      GPIO_Mode_Out_OD = 0x14,
      GPIO_Mode_Out_PP = 0x10,
      GPIO_Mode_AF_OD = 0x1C,
      GPIO_Mode_AF_PP = 0x18
    } GPIOMode_TypeDef;
    
  • BitAction 枚举类型

    typedef enum
    { 
      Bit_RESET = 0,
      Bit_SET
    } BitAction;
    
结构体类型
  • GPIO 初始化结构体
    typedef struct
    {
      uint16_t GPIO_Pin;
      GPIOSpeed_TypeDef GPIO_Speed;
      GPIOMode_TypeDef GPIO_Mode;
    } GPIO_InitTypeDef;
    

宏定义

  • 检查 GPIO 引脚的宏

    #define IS_GPIO_ALL_PERIPH(PERIPH) ...
    #define IS_GPIO_PIN(PIN) ...
    
  • GPIO 引脚定义

    #define GPIO_Pin_0  ((uint16_t)0x0001)
    #define GPIO_Pin_1  ((uint16_t)0x0002)
    ...
    #define GPIO_Pin_All ((uint16_t)0xFFFF)
    
  • GPIO 重新映射定义

    #define GPIO_Remap_SPI1  ((uint32_t)0x00000001)
    ...
    

函数声明

头文件中声明了与 GPIO 操作相关的各种函数,这些函数在实现文件中定义。主要包括:

  • 初始化和配置函数

    void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    
  • 读写操作函数

    uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    
  • 其他功能函数

    void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
    void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
    

文件尾部

在文件尾部,关闭了 C++ 兼容性支持,并结束了防止递归包含的预处理器指令。

#ifdef __cplusplus
}
#endif

#endif /* __STM32F10x_GPIO_H */

总结

这个头文件定义了 STM32F10x 系列微控制器中 GPIO 模块的所有必要数据类型、宏和函数原型。开发人员通过包含该头文件,可以方便地进行 GPIO 配置和操作。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值