STM32学习-2.GPIO,复用,重映射

因为是学习标准库,所以就不再研究GPIO的结构等问题了
主要学习几个重要的函数,复用和重映射。

1.GPIO_Init

这个函数主要是用于GPIO的初始化,GPIOx和GPIO_Pin选中某个引脚,GPIO_Speed决定GPIO的速度,GPIO的工作状态主要由GPIO_Mode决定,其工作状态是初始化的关键。
在这里插入图片描述

GPIO_InitTypeDef structureGPIO_InitTypeDef 定义于文件“stm32f10x_gpio.h”:typedef struct{u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;} GPIO_InitTypeDef;
GPIO_Pin
**GPIO_Pin**该参数选择待设置的 GPIO 管脚,使用操作符“|”可以一次选中多个管脚。可以使用下表中的任意组合。GPIO_Pin 描述GPIO_Pin_None 无管脚被选中GPIO_Pin_0 选中管脚 0GPIO_Pin_1 选中管脚 1GPIO_Pin_2 选中管脚 2GPIO_Pin_3 选中管脚 3GPIO_Pin_4 选中管脚 4GPIO_Pin_5 选中管脚 5GPIO_Pin_6 选中管脚 6GPIO_Pin_7 选中管脚 7GPIO_Pin_8 选中管脚 8GPIO_Pin_9 选中管脚 9GPIO_Pin_10 选中管脚 10GPIO_Pin_11 选中管脚 11GPIO_Pin_12 选中管脚 12GPIO_Pin_13 选中管脚 13GPIO_Pin_14 选中管脚 14GPIO_Pin_15 选中管脚 15GPIO_Pin_All 选中全部管脚
GPIO_Speed
在这里插入图片描述

GPIO_Mode
在这里插入图片描述

一工作模式

工作模式可能有不同的分类,但本质上相差不大。

1 通用功能输入输出(GPIO)

1.输入浮空

2.输入上拉

3.输入下拉

4.开漏输出

5.推挽式输出

2 复用功能输入输出(AFIO)

1.复用输入功能(端口必须配置为输入模式(浮空,上拉,下拉))

2.模拟输入:用于ADC模拟输入

3.推挽式复用输出功能:如I2C的SCL,SDA

4.开漏复用输出功能:如SPI的SCK,MOSI,MISO

5.双向复用功能:输出时必须配置为复用功能输出模式(推挽或开漏),倏然是,输入驱动器被配置为浮空输入模式

3 工作模式的解释与使用

1、模拟输入: 顾名思义,即为输入模拟信号
2、浮空输入:I/O口的状态是不确定的,完全由外部输入决定
3、下拉输入:在没有信号输入的时候默认输入低电平
4、上拉输入:在没有信号输入的时候默认输入高电平
5、开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现IO双向功能
6、推挽输出:IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
7、复 用:理解为GPIO口被用作第二功能时的配置情况

通常有5种方式使用某个引脚功能,它们的配置方式如下:
1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

2.GPIO_SetBits,GPIO_ResetBits

在这里插入图片描述
设为高电平
在这里插入图片描述
设为低电平

3 GPIO_PinRemapConfig

说这个之前有必要说一下STM32的端口复用与重映射。
默认复用不需要AFIO,重映射才需要AFIO

复用

STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。

例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

重映射

每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。重映射分为部分重映射和完全重映射。
在这里插入图片描述

步骤

手写的,字有点丑。。
在这里插入图片描述
先说复用的步骤
(1) 先使能相应的时钟
(2) 对相应的GPIO初始化,具体怎么初始化呢,在这里插入图片描述
Default这一栏是外设,对应的左边就是复用的引脚,从表(stm32zet6.pdf)中确定对应的引脚,查引脚还有一个好办法就是通过Stm32cubemx查找,这个也很方便在这里插入图片描述
然后工作模式从另一个文档(stm32中文参考手册8.1.11)中查找在这里插入图片描述
(3)对外设进行初始化

再说重映射的步骤
(1)使能GPIO,外设,AFIO相应时钟
(2)GPIO初始化,这个的初始化与复用的不太一样,先查找并确定重映射的类型及所对应的引脚在这里插入图片描述
然后再从从另一个文档(stm32中文参考手册8.1.11)中查找工作模式在这里插入图片描述
(3)使能重映像
到这里才用到上面要讲的函数
在这里插入图片描述
根据(2)中的映射方式,选择映射模式
在这里插入图片描述
再进行使能
(4)使能相应外设

GPIO_EXTILineConfig

在这里插入图片描述
这个具体到外部中断说。

本文用到的文件提取码:o4o9

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值