关于STM32通用和复用I/O口

关于STM32通用和复用I/O口

一,概述

​ STM32F10x系列具有丰富的端口可供使用包括26、37、51、80、112个多功能双向5V兼容的快速I/O口,所有I/O口可以映射到16个外部中断。每个通用的I/O(GPIO)端口有

​ 2个32位配置寄存器(GPIOx_CRL、GPIO_CRH)

​ 2个32位数据寄存器(GPIOx_IDR、GPIO_ODR)

​ 1个32位置位/复位寄存器(GPIOx_BSSR)

​ 1个16位复位寄存器(GPIOx_BRR)

​ 1个32位锁定寄存器(GPIOx_LCKR)

GPIO端口的每个位可以由软件分别配置成多种模式,如输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能和开漏复用功能。

1.1 通用I/O

​ 复位期间和复位后,复用功能未开启,I/O端口被配置成浮空输入模式。复位后,JTAG引脚被置于上拉或下拉模式。

  • PA15:JTDI置于上拉模式

  • PA14:JTCK置于下拉模式

  • PA13:JTMS置于上拉模式

  • PB4:JNTRST置于上拉模式

当I/O引脚作为输出配置时,写到输出寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚,可以以推挽模式或开漏模式(当输出0时,只有N-MOS被打开)使用输出驱动器。输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据,所有GPIO引脚都有一个弱上拉和弱下拉,当配置位输入时,它们可以被激活,也可以被断开。

1.2 单独的位设置或位清除

​ 当对GPIOx_ODR(数据寄存器)的个别位编程时,软件不需要禁止中断,在单次APB2写操作中,可以只更改一个或多个位。这是通过对置位/复位寄存器(GPIOx_BSSR/GPIOx_BRR)中想要更改的位写1实现的。没被选择的位将不更改。

1.3 外部中断/唤醒线

​ 所有的端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。

1.4 复用功能

使用默认复用功能前必须对端口位配置寄存器编程。

​ 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉、下拉)且输入引脚必须由外部驱动;

​ 对于复用的输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。

​ 对于双向复用功能,端口必须配置成复用功能输出模式(推挽或开漏)。这时,驱动器被配置成浮空输入模式。

​ 如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的信号连接。如果软件吧一个GPIO引脚配置成复用输出功能,但是外设没有被激活,它的输入将不确定。

1.5 软件重新映射I/O复用功能

​ 为了使不同期间封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他的一些引脚上,这可以通过软件配置相应的寄存器来完成(AFIO)。这时,复用功能就不再映射到它们的原始引脚上。

1.6 GPIO锁定机制

​ 锁定机制允许冻结I/O配置,当在一个端口位上执行了锁定(LOCK)程序,在下一次复位之前,将不能更改端口位的配置。这主要用在一些关键引脚的配置上,防止程序跑飞引起灾难性后果,如果在驱动功率模块的配置上,应用了锁定机制,以冻结I/O口配置,即使程序跑飞,也不会改变这些引脚的配置。

1.7 输入配置

​ 当I/O端口置为输入时,I/O端口位会有如下变化

​ (1)输出缓冲器被禁止

​ (2)施密特触发器输入被激活

​ (3)根据输入配置(上拉、下拉、浮动)的不同弱上拉和下拉电阻被连接

​ (4)出现在I/O引脚上的数据在每个APB2时钟被采样到输入数据寄存器。

​ (5)对输入数据寄存器的访问可得到I/O状态。

1.8 输出配置

​ 当I/O口端被配置成输出时,所有的I/O端口会有如下变化

​ (1)输出缓冲器被激活

​ ①开漏模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将端口置于高阻状态。(P-MOS从不被激活)。

​ ②推挽模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。

​ (2)施密特触发输入被激活

​ (3)弱上拉和下拉电阻被禁止。

​ (4)出现在I/O引脚上的数据在每个APB2时钟被采样到输入数据寄存器。

​ (5)在开漏模式时,对输入数据寄存器的访问可得到I/O状态。

​ (6)在推挽模式时,对输出数据寄存器的访问得到最后一次写的值。

1.9 复用功能配置

​ 当I/O端口被配置为复用功能时,I/O端口的基本结构会有以下变化:

​ (1)在开漏或推挽模式配置中,输出缓冲器被打开。

​ (2)内置外设的信号驱动输出缓冲器(复用功能输出)。

​ (3)施密特触发输入被激活。

​ (4)弱上拉和下拉电阻被禁止。

​ (5)在每个APB2时钟周期,出现在I/O引脚上的数据被采样到输入数据寄存器。

​ (6)开漏模式时,读输入数据寄存器可得到I/O口状态。

​ (7)在推挽模式时,读输出数据寄存器可得到最后一次写的值。

​ 一组复用功能I/O寄存器允许用户把一些复用功能重新映射到不同的引脚。

1.10 模拟输入配置

​ 当I/O端口被配置为模拟输入配置时,所有的I/O端口位的基本结构会有如下变化:

​ (1)输出缓冲器被禁止。

​ (2)禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强制为零。

​ (3)弱上拉和下拉电阻被禁止。

​ (4)读取输入数据寄存器时数值为零。

你可能感兴趣的:(STM32单片机学习笔记,stm32,单片机)