设为首页 加入收藏

TOP

明解STM32—GPIO应用设计篇之API函数及配置使用技巧(一)
2023-07-23 13:26:55 】 浏览:73
Tags:明解 STM32 GPIO 应用设 计篇之 API

一、前言

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

        了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。

        后续将从以下图1中所示的几个方面对GPIO应用设计中的步骤展开介绍。本篇先介绍GPIO的基本API函数定义,配置初始化的流程,以及使用技巧;针对将GPIO的引脚用于外部中断的功能将作为单独的一篇进行详细的讨论介绍。?

图1 GPIO应用设计


二、API函数

        STM32有多种类型的库,本节所介绍的STM32的GPIO函数接口是STM32标准库的函数接口,接口总共分为4种类型,如图2所示。?

图2 GPIO库函数接口分类

1、关键参数

        在详细介绍各个API函数接口功能之前,我们需要对函数接口中使用到的关键的几个参数进行分析。

(1)、GPIO_TypeDef* GPIOx

        这个参数是用于指定需要具体的GPIO端口号定义,参数的范围为GPIOA~GPIOK。

(2)、GPIO_InitTypeDef* GPIO_InitStruct

        这个参数是GPIO端口需要初始化的功能参数的结构体指针,下面我们看看这个结构体的定义。

1 typedef struct
2 {
3     uint32_t GPIO_Pin;            //GPIO端口的引脚
4     GPIOMode_TypeDef GPIO_Mode;   //GPIO的端口模式                                         
5     GPIOSpeed_TypeDef GPIO_Speed; //GPIO的输出速度频率
6     GPIOOType_TypeDef GPIO_OType; //GPIO输出时的类型
7     GPIOPuPd_TypeDef GPIO_PuPd;   //GPIO上下拉电阻设置                                       
8 }GPIO_InitTypeDef;

  (a)、GPIO端口的引脚:可选范围为GPIO_Pin_0~GPIO_Pin_15,也可以选所有引脚GPIO_Pin_All。

  (b)、GPIO的端口模式:用于设置GPIO的端口模式,可选的端口模式如下。

1 typedef enum
2 {
3     GPIO_Mode_IN  = 0x00, //普通IO口输入
4     GPIO_Mode_OUT = 0x01, //普通IO口输出
5     GPIO_Mode_AF  = 0x02, //管脚复用功能
6     GPIO_Mode_AN  = 0x03  //模拟输入,用于ADC功能
7 }GPIOMode_TypeDef;

        (c)、GPIO的输出速度频率:当GPIO引脚用于普通功能输出或复用功能输出时,GPIO的输出速度频率,可选的输出速率如下。

1 typedef enum
2 {
3     GPIO_Low_Speed     = 0x00, //GPIO_Speed_2MHz
4     GPIO_Medium_Speed  = 0x01, //GPIO_Speed_25MHz
5     GPIO_Fast_Speed    = 0x02, //GPIO_Speed_50MHz
6     GPIO_High_Speed    = 0x03  //GPIO_Speed_100MHz
7 }GPIOSpeed_TypeDef;

        速度高的IO耗电大、噪声也大,速度低的IO耗电小、噪声也小。使用合适的速度可以降低功耗和噪声。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能,也可以降低功耗。当然如果要输出较高频率的信号,但却选用了较低频率的速度,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配。

        (d)、GPIO输出时的类型:当GPIO引脚用于普通功能输出或复用功能输出时,可选择设置的GPIO的输出结构类型有如下。

1 typedef enum
2 {
3     GPIO_OType_PP = 0x00, //推挽结构
4     GPIO_OType_OD = 0x01 //开漏结构
5 }GPIOOType_TypeDef;

        推挽输出时,可以输出高或者低电平;开漏输出时,如果要输出高电平,则需要在芯片内部配置上拉电阻(弱上拉)或者在芯片IO外部连接上拉电阻。

        (e)、GPIO上下拉电阻设置:可以为GPIO端口的引脚选择设置是否具备带上拉或下拉电阻功能。

1 typedef enum
2 {
3     GPIO_PuPd_NOPULL = 0x00, //无上拉或者下拉
4     GPIO_PuPd_UP     = 0x01, //带上拉电阻
5     GPIO_PuPd_DOWN   = 0x02 //带下拉电阻
6 }GPIOPuPd_TypeDef;

        STM32芯片GPIO的上拉电阻和下拉电阻最小值,典型值和最大值如下:

 

(3)、uint16_t GPIO_PinSource和uint8_t GPIO_AF

        这两个参数都是GPIO端口引脚需要配置成复用功能引脚用到的参数。

        GPIO_PinSource:指需配置的复用功能引脚源,可选范围GPIO_PinSource0~GPIO_PinSource15。

        GPIO_AF:指该引脚具体需要配置的功能,具体配置功能要看实际应用需求,例如需要配置成SPI1功能的引脚,那么就选GPIO_AF_SPI1。

2、函数接口

        下面就对具体的函数接口进行逐个的

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇痞子衡嵌入式:恩智浦i.MX RT1xxx.. 下一篇《痞子衡嵌入式半月刊》 第 76 期

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目