打印
[STM32F1]

据说STM32F10x引脚也可以配置成上拉输出?

[复制链接]
1965|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
   据一个业内行家说,查看资料发现103跟030一样引脚都可以配置成上拉输出或者下拉输出,而并非只有推挽和开漏两种输出模式。这是真的吗?如果是真的请问哪里有GPIO的固件库
沙发
zhuotuzi| | 2017-8-24 09:22 | 只看该作者
好像是的。查查看。

使用特权

评论回复
板凳
zhuotuzi| | 2017-8-24 09:45 | 只看该作者
功能描述

STM32的GPIO端口相对比较复杂,所以使用起来也困难许多,STM32的GPIO端口的每一位都可以由软件配置成多种模式。
4种输入模式:

输入浮空;
输入上拉;
输入下拉;
模拟输入;
4种输出模式:

开漏输出;
推免输出;
推免式复用功能;
开漏复用功能。
每个I/O可以自由编程,然而必须按照32位字访问I/O端口寄存器(不允许半字或字节访问)。每个I/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。下图给出了一个I/O端口位的基本结构:

使用特权

评论回复
地板
zhuotuzi| | 2017-8-24 09:46 | 只看该作者
特点

专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了直接设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。
I/O端口的输出模式有3种速度可选,分别为2MHz、10MHz和50MHz,这有利于噪声控制。这个速度是指I/O端口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关。用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路)模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的抗电磁干扰(EMI)能力,当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
GPIO端口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
所有I/O端口都有外部中断能力,可以作为外部中断的输入,便于系统灵活设计,为了使用外部中断线,端口必须配置成输入模式。
GPIO端口的配置具有上锁功能,当配置好GPIO端口后,可以通过程序锁住配置组合,直到 下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O端口的配置被改变而损坏,如一个输入端口变成输出端口并输出电流。
所有I/O端口兼容CMOS和TTL,多数I/O端口兼容5V电平,这些IO端口在与5V 电平的外设连接的时候具有优势,具体哪些 I/O端口是5V 兼容的,可以从该芯片的数据手册管脚描述章节查到( I/O Level 标 FT 的就是 5V 电平兼容的)。
具有独立的唤醒I/O端口。
很多I/O口的复用功能,可以重新映射。

使用特权

评论回复
5
zhuotuzi| | 2017-8-24 09:47 | 只看该作者
浮空输入:浮空输入状态下上拉电阻和下拉电阻都是断开的,信号经过I/O端口——施密特触发器——输入数据寄存器——CPU读取
上拉输入:相比浮空输入状态,就是上拉电阻闭合(下拉电阻仍然处于断开状态)
下拉输入:相比浮空输入状态,就是下拉电阻闭合(上拉电阻仍然处于断开状态)
模拟输入:上拉电阻和下拉电阻都处于断开状态,并且信号不是经过施密特触发器,而是直接进入施密特触发器之前的模拟输入通道

使用特权

评论回复
6
zhuotuzi| | 2017-8-24 09:47 | 只看该作者

输出模式也参照图片来讲:

开漏输出模式:其中1号区域,两个寄存器有两种读写方式,这个后面会介绍,这是关于寄存器的配置原因,对于输出驱动器部分,当输出控制电路输出逻辑1(高电平)时,外部的I/O端口输出的电平由外部电路决定,如果外部连接有上拉电阻,则输出高电平,如果接有下拉电阻,则输出低电平;当输出控制电路输出逻辑0(低电平)时,外部的电路不管是否接有上拉电阻还是下拉电阻,都输出低电平;所有应用开漏输出模式的时候想要输出高电平切记要加上拉电阻

开漏复用功能输出:此模式与开漏输出模式只有一个不同的地方,就是在1号区域,此模式是直接在复用功能输出引输出部分输出的

推挽输出模式:也是走的1、2、3、4号路线,其中在2号区域输出控制电路部分,如果输出逻辑1,则3号区域P-MOS导通,N-MOS截止,输出高电平(不管外部有没有上拉电阻);如果输出逻辑0,则3号区域P-MOS截止,N-MOS导通,输出低电平(不管外部有没有上拉电阻和下拉电阻)

推挽复用功能输出:此模式与推挽输出模式不同的地方就是1号区域,此模式是直接在复用功能输出部分输出的

下面讲解一下输出模式与寄存器的关系

在STM32的参考手册中我们可以找到GPIOx_CRL和GPIOx_CRH寄存器,这两个寄存器功能相同,就是GPIOx_CRL是用来配置低8位(例:PA0_PA7)I/O口的,GPIOx_CRH是用来配置高8位(例:PA8_PA15)I/O口的


使用特权

评论回复
7
戈卫东| | 2017-8-24 12:33 | 只看该作者
不能。

使用特权

评论回复
8
zhuotuzi| | 2017-8-24 12:38 | 只看该作者
IO是有二极管保护的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

105

帖子

1

粉丝