当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1.STM32实物图:2.STM32引脚分布图:STM32F103ZET6:共144个引脚,7组IO口,每组16个IO口7*16=112个IO口(这7组IO口分别为A,B…G)例如:PGIOA包含PA0,PA1,PA2…PA15,每组16个IO口 

1.STM32实物图:

2.STM32引脚分布图:

STM32F103ZET6:共144个引脚,7组IO口,每组16个IO口

7*16=112个IO口(这7组IO口分别为A,B…G)

例如:PGIOA包含PA0,PA1,PA2…PA15,每组16个IO口

  二,IO口的基本结构和工作方式

1.STM32F1系列IO口的基本结构()IO口内部电路结构)

右侧I/O引脚部分为芯片暴露在外部的引脚

每个引脚在数据手册都有说明是否支持(识别))5V电压

三,PGIO的8种工作方式

4种输入模式

输入浮空

输入上拉

输入下拉

模拟输入

4种输出模式

开漏输出

开漏复用功能

推挽输出

推挽复用功能

可配置3种最大翻转速度

2MHz

10MHz

50MHz

四,八种工作方式讲解

1,GPIO输入工作模式1-输入浮空模式

1)外部通过IO口输入电平,外部电平通过上下拉部分(浮空模式下都关闭,既无上拉也无下拉电阻)

2)传输到施密特触发器(此时施密特触发器为打开状态)

3)继续传输到输入数据IDR

4)CPU通过读输入数据IDR实现读取外部输入电平值

在输入浮空模式下可以读取外部输入电平

2,GPIO输入工作模式2-输入上拉模式

和输入浮空模式相比较,不同之处在于内部有一个上拉电阻连接到VDD(输入上拉模式下,上拉电阻开关接通,阻值约30-50K)

外部输入通过上拉电阻,施密特触发器存入输入数据IDR,被CPU读取

3,GPIO输入工作模式3-输入下拉模式

和输入浮空模式相比较,不同之处在于内部有一个下拉电阻连接到VSS(输入下拉模式下,下拉电阻开关接通,阻值约30-50K)

外部输入通过下拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取

4,GPIO输入工作模式4-输入模拟模式

上拉和下拉部分均为关闭状态(AD转换-模拟量转换为数字量)

施密特触发器为截止状态

通过模拟输入通道输入到CPU

IO口外部电压为模拟量(电压形式非电平形式),作为模拟输入范围一般为0~3.3V

5,GPIO输出工作模式1-开漏输出模式

1,CPU写入位设置/清楚寄存器BSRR,映射到输出数据寄存器ODR

2,联通到输出控制电路(也就是ODR的电平)

3,ODR电平通过输出控制电路进入N-MOS管

-ODR输出1:

N-MOS截止,IO端口电平不会由ODR输出决定,而由外部上拉/下拉决定

在输出状态下,输出的电平可以被读取,数据存入输入数据寄存器,由CPU读取,实现CPU读取输出电平

所以,当N-MOS截止时,如果读取到输出电平为1,不一定是我们输出的1,有可能是外部上拉产生的1

-ODR输出0:

N-MOS开启,IO端口电平被N-MOS管拉倒VSS,使IO输出低电平

此时输出的低电平同样可以被CPU读取到

6,GPIO输出工作模式2-开漏复用输出模式

与开漏输出模式唯一的区别在于输出控制电路之前电平的来源

开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的

开漏推挽输出模式的输出电平是由复用功能外设输出决定的

其他与开漏输出模式相似:

控制电路输出为1:N-MOS截止,IO口电平由外部上拉/下拉决定

控制电路输出为0:N-MOS开启,IO口输出低电平

7,GPIO输出工作模式3-推挽输出模式

与开漏输出相比较:

输出控制寄存器部分相同

输出驱动器部分加入了P-MOS管部分

当输出控制电路输出1时:

P-MOS管导通N-MOS管截止,被上拉到高电平,IO口输出为高电平1

当输出控制电路输出0时:

P-MOS管截止N-MOS管导通,被下拉到低电平,IO口输出为低电平0

同时IO口输出的电平可以通过输入电路读取

8,GPIO输出工作模式4-复用推挽输出模式

与推挽输出模式唯一的区别在于输出控制电路之前电平的来源

开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的

开漏推挽输出模式的输出电平是由复用功能外设输出决定的

9,推挽输出和开漏输出的区别:

推挽输出:

可以输出强高/强低电平,可以连接数字器件

开漏输出:

只能输出强低电平(高电平需要依靠外部上拉电子拉高),适合做电流型驱动,吸收电流能力较强(20ma之内)

五,STM32-IO口相关寄存器

每组GPIO包含系列7个寄存器(7组GPIO共包含7*7=49个寄存器)

两个32位配置寄存器

GPIOx_CRL低16位

GPIOx_CRH高16位

两个32位数据寄存器

GPIOx_IDR输入数据寄存器

GPIOx_ODR输出数据寄存器

一个32位置位/复位寄存器

GPIOx_BSRR

一个16位复位寄存器

GPIOx_BRR

一个32位锁定寄存器

GPIOx_LCKR

六,STM32-IO口相关寄存器讲解

1,端口配置寄存器:

STM32每组GPIO位16个IO口,每4位控制一个IO口,所以32位控制8个IO口

分为低16位:GPIOx_CRL和高16位:GPIOx_CRH共32位控制一组GPIO的16个IO口

如图:以端口配置寄存器低16位为例,每四位控制一个IO口(高16位同理)

MODEx的2位:配置IO口输出/输出模式(1种输出+3种不同速度的输出模式)

CNFx的2位:配置IO口输入/输出状态下(由MODEx控制)的输入/输出模式

以GPIOA_CRL为例,配置IO口PA0->MODE0=00(输入模式)CNF0=10(上拉/下拉输入模式)

此种配置下到底是上拉还是下拉输入模式还需由ODR寄存器决定

关于上拉/下拉的控制我们将在下面-数据寄存器-中介绍ODR输出寄存器时详细说明

2,数据寄存器(以输入数据寄存器GPIOx_IDR为例)

每一组IO口都具有一个GPIOx_IDR的32位寄存器(实际只使用低16位,高16位保留),即16位控制16个IO口,每一位控制一个

如图:IDR寄存器共32位,0~15位代表一组IO口16个IO当前值

这里我们已经了解了输入/输出数据寄存器,现在说下上面提到的问题:

当IO口配置为输入模式且配置为上拉/下拉输入模式(即MODEx=00CNFx=10时),ODR决定到底是上拉还是下拉

1)当输出模式时,ODR为输出数据寄存器

2)当输入模式时,ODR用作区分当前位输入模式到底是上拉输入(ODRx=0)还是下拉输入(ODRx=1)

3,端口位设置/清除寄存器(GPIOx_BSRR)

BSRR寄存器作用:

BSRR寄存器为32位寄存器,低16位BSx为设置为(1设置0不变),高16位BRx为重置位(1:清除0:不变)

当然,最终的目的还是通过BSRR间接设置ODR寄存器,改变IO口电平

4,端口位清除寄存器(GPIOx_BRR)

GPIOx_BRR寄存器作用同GPIOx_BSRR寄存器高16位

一般我们使用BSRR低16位和BRR的低16位(STM32F4系列取消了BSRR的高16位)

5,锁存寄存器:使用较少暂不分析

七,端口的复用和重映射

1,端口的复用:

大部分IO口可复用为外部功能引脚,参考芯片数据手册(IO口复用和重映射)

例如:STM32F103ZET6的PA9和PA10引脚可复用为串口发送和接收功能引脚,也可复用为定时器1的通道2和通道3

端口复用的作用:最大限度的利用端口资源

2,端口的重映射:

串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7

端口重映射的作用:方便布线

3,STM32所有的IO口都可作为中断输入(51单片机只有2个端口可以作为外部中断输入)

0次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

兰州生物制品研究所有限责任公司是一家历史悠久的生物制剂研发生产企业,是我国生物制品行业的标杆。生物制品的产品形式包含西林瓶、安瓿瓶、“伴侣装”(一水一苗)、预充针等多种方式[1],笔者在兰州生物制品研究所有限责任公司工作...

关键字: 中盒机 工作原理 常见故障

74LS175是一款4D触发器集成电路,它包含6个D触发器,这些触发器可以组合起来形成寄存器或抢答器等多种功能部件。

关键字: 74ls175 触发器 寄存器

单片机复位电路的作用是:使单片机恢复到起始状态,让单片机的程序从头开始执行,运行时钟处于稳定状态、各种寄存器、端口处于初始化状态等等。

关键字: 复位电路 单片机 寄存器

嵌入式处理器是一种特殊的计算机处理器,它被设计用于嵌入到各种设备和系统中,以实现特定的功能。由于其低功耗、高性能和可靠性等特点,嵌入式处理器在许多领域都有广泛的应用,如汽车电子、工业控制、医疗设备等。本文将对嵌入式处理器...

关键字: 嵌入式处理器 嵌入式系统

2023年10月10日, [恩智浦创新技术论坛] 在深圳湾万丽酒店举行,众多工业、物联网、新能源和医疗等行业的企业出席论坛,深入交流市场趋势与行业洞察,一同讨论如何协同面对市场的机遇与挑战,共同促进未来市场的发展。米尔电...

关键字: NXP 嵌入式处理器

寄存器变量是计算机中一种重要的存储方式,它使用CPU中的寄存器来存储数据和指令。寄存器直接与CPU的运算和控制部件相连,因此访问速度非常快,通常在一个CPU周期内就能完成数据的读写操作。相比于内存和硬盘等存储设备,寄存器...

关键字: 寄存器 存储器

寄存器和存储器是计算机及其它电子设备中的两种重要存储组件,它们在存储方式、存储容量和访问速度等方面存在明显的差异。

关键字: 寄存器 存储器

寄存器和内存是计算机系统的两个重要组成部分,它们之间存在着密切的关系。本文将介绍寄存器和内存的基本概念、功能、类型以及它们之间的关系,旨在帮助读者更好地理解计算机系统的运行原理。

关键字: 寄存器 内存

寄存器是计算机硬件中的重要组件,用于临时存储数据和指令。正确地使用寄存器能够提高程序的执行效率,然而不正确的使用也可能导致各种问题。本文将详细介绍寄存器的使用方法以及在使用时需要注意的事项。

关键字: 寄存器 计算机硬件

寄存器和暂存器都是计算机硬件中的重要组件,它们在计算机系统中发挥着不同的作用。下面我们来详细了解一下它们的区别以及各自的特点和应用。

关键字: 寄存器 暂存器
关闭
关闭