IO
基本应用
一、IO
基本结构:
针对
STM32F407
有
7
组
IO
。分别为
GPIOA~GPIOG
,每组
IO
有
16
个
IO
口,则有
112
个
IO
口。
当中
IO
口的基本结构例如以下:
二、工作方式:
STM32F4
工作模式有
8
种,当中
4
中输入模式。
4
种输出模式,分别为:输入浮空、输入上拉、输入下拉、模拟模式、开漏输出、开漏复用输出、推挽输出、推挽复用输出。
1、输入模式:
在输入浮空模式下。电路既不上拉也不下拉,通过施密特触发器送到输入数据寄存器在送入到
CPU
。输入上拉和下拉模式各自是在电路中经过上拉和下拉后通过施密特触发器送入的
CPU
,模拟模式下,施密特触发器关闭后信号直接通过模拟通道至片上外设。
2、输出模式:
开漏输出模式下。
CPU
发送输入直接或间接的控制输出数据寄存器,通过输出控制电路,当信号为
1
时,
N
—
MOS
管是关闭的,所以
IO
电平就是受上下拉电路的控制。当信号为
0
时。
N
—
MOS
管导通输出就是下拉低电平;推挽输出模式下。信号为
1
时,
P-MOS
管导通,
N-MOS
管截止,输出就是上拉高电平,当信号为
0
时。
P-MOS
管截止,
N-MOS
管导通。输出就是下拉低电平;对于开漏复用和推挽复用模式与开漏和推挽的不同之处就是在于信号的开源不同。开漏复用和推挽复用的信号来源是片上的外设模块。
三、相关寄存器
每个通用的
IO
port都包含
4
个
32
位的配置寄存器(GPIOx_
MODER
、
GPIOx_OTYPER、
PIOx_OSPEEDR和GPIOx_PUPDR
)。
2
个
32
位的数据寄存器(GPIOx_IDR
和
GPIOx_ODR
),
1
个
32
位置位
/
复位寄存器(GPIOx_BSRR
),
1
个
32
位锁定寄存器(
GPIOx_LCKR
)和
2
个
32
位复用功能选择寄存器(
GPIOx_AFRL
)。
以下对其进行介绍。
1、工作模式配置:
1
、port模式(
GPIOx_MODER
):用来配置port的模式为输入、输出、复用和模拟模式。
2
、port类型(
GPIOx_OTYPER
):用来配置寄存器的模式为输出推挽还是输出开漏。
3
、port速度(
PIOx_OSPEEDR
):用来配置port的信息传输速率。
4
、port上下拉(
GPIOx_PUPDR
):用来配置port的无上下拉、上拉、下拉和保留模式。
2、电平配置:1、
输入数据(
GPIOx_IDR
):用到其低
16
位。分别对应该组
IO
口的一个电平状态。
2
、输出数据(
GPIOx_ODR
):与输入数据寄存器相似的功能。
3
、置位和复位(
GPIOx_BSRR
):与前两个不同的是置位和复位寄存器用到了
32
位。低
16
为设置为
1
时,用于置
1
对应位。高
16
位设置为
1
时,用于置
0
对应位。而低
16
位和高
16
位设置为
0
时不影响原值。
3、复用功能配置:
以下做对应说明。
IO
复用
一、复用背景:
因为考虑到
IO
口的有限,为了节省
IO
资源。同一时候为了更好的协调
IO
之间的工作。所以有必要在适当的时候给
IO
口赋予不同的功能。一个
IO
口在不同的时候能够承担不同的工作,这就是
IO
的复用功能。
二、复用原理:
每个
IO
口都会接有一个选择器,这个选择器经过对应寄存器(
GPIOx_AFRH
和
GPIOx_AFRL
)的配置之后就能够做不同的功能的应用,这个寄存器就是
GPIOx_AFRH
和
GPIOx_AFRL
。
三、寄存器配置:
每一组
IO
口都有一个
AFRL
和一个
AFRH
寄存器。他们都是
32
位的寄存器,当中每
4
位配置一个
IO
口的功能,则相应的
GPIOx_AFRL
就用来配置第
0-7
个
IO
口,
GPIOx_AFRH
就用来配置第
8-15
个
IO
口。
每
4
位配置一个
IO
口,则
4
位数据的相关取值就会有相应的相应功能。如此一来就做好了相关配置。
综述:
这些相关的配置过程会用到对应的函数和对应变量,熟练使用相关的函数,同一时候对函数的功能了解后才会应用的更加得心应手。同一时候也能够写自己的一些相关函数来进行操作。当然也能够直接操作相关的寄存器。