STM32的IO口的8种配置


1 STM32的输入输出管脚有以下8种可能的配置:(4输入+2输出+2复用输出)

① 浮空输入_IN_FLOATING

② 带上拉输入_IPU

③ 带下拉输入_IPD

④ 模拟输入_AIN

⑤ 开漏输出_OUT_OD

⑥ 推挽输出_OUT_PP

⑦ 复用功能的推挽输出_AF_PP

⑧ 复用功能的开漏输出_AF_OD

1.1 I/O口的输出模式下。有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户能够依据自己的须要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块。达到最佳的噪声 控制和减少功耗的目的。

高频的驱动电路。噪声也高,当不须要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。

当然假设要输出较高频率的信号,但却选用了较低频率的驱动模块。非常可能会得到失真的输出信号。

关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比方:

1.1.1 对于串口,假如最大波特率仅仅需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。

1.1.2 对于I2C接口。假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度也许不够,这时能够选用10M的GPIO引脚速度。

1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了。须要选用50M的GPIO的引脚速度。

1.2 GPIO口设为输入时。输出驱动电路与port是断开。所以输出速度配置无意义。

1.3 在复位期间和刚复位后,复用功能未开启,I/Oport被配置成浮空输入模式。

1.4 全部port都有外部中断能力。为了使用外部中断线,port必须配置成输入模式。

1.5 GPIO口的配置具有上锁功能,当配置好GPIO口后,能够通过程序锁住配置组合,直到下次芯片复位才干解锁。

2 在STM32中怎样配置片内外设使用的IOport

首先,一个外设经过 ①配置输入的时钟和 ②初始化后即被激活(开启);③假设使用该外设的输入输出管脚,则须要配置相应的GPIOport(否则该外设相应的输入输出管脚能够做普通GPIO管脚使用);④再对外设进行具体配置。

相应到外设的输入输出功能有下述三种情况:

一、外设相应的管脚为输出:须要依据外围电路的配置选择相应的管脚为复用功能的推挽输出或复用功能的开漏输出。

二、外设相应的管脚为输入:则依据外围电路的配置能够选择浮空输入、带上拉输入或带下拉输入。

三、ADC相应的管脚:配置管脚为模拟输入。

假设把port配置成复用输出功能。则引脚和输出寄存器断开。并和片上外设的输出信号连接。将管脚配置成复用输出功能后,假设外设没有被激活,那么它的输出将不确定。

3 通用IOport(GPIO)初始化:

3.1 GPIO初始化

3.1.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟

3.1.2 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):释放GPIO复位

3.2 配置各个PINport(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)

3.3 GPIO初始化完毕

STM32的IO口的8种配置的更多相关文章

  1. 转载电子发烧友网---STM32的IO口灌入电流和输出驱动电流

    刚开始学习一款单片机的时候一般都是从操作IO口开始的,所以我也一样,先是弄个流水灯. 刚开始我对STM32的认识不够,以为是跟51单片机类似,可以直接操作端口,可是LED灯却没反应,于是乎,仔细查看资 ...

  2. STM32的IO口是如何配置为某个外设使用的 ---?

    @2019-03-01 [猜想] 使用片内外设功能: 首先将对应 IO 口配置为复用输出 其次是 IO 口对应的多个功能外设,哪个外设使能即将外设与 IO 口相连 [疑问] 若多个外设都使能,那么到底 ...

  3. STM32中IO口的8中工作模式

    该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...

  4. stm32 普通IO口模拟串口通信

    普通IO口模拟串口通信 串口通信协议 串口传输 默认 波特率9600 1起始位 1停止位 其他0 数据位是8位(注意图上的给错了). 传输时,从起始位开始,从一个数据的低位(LSB)开始发送,如图从左 ...

  5. 关于STM32的IO口速率问题

    输入模式可以不用配置速度,但是输出模式必须确定最大输出频率.当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz.10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来 ...

  6. STM32的IO口灌入电流和输出驱动电流最大是多少?

    最大可以输出8mA,灌入20mA,但要保证所有进入芯片VDD的电流不能超过150mA,同样所有从VSS流出的电流也不能超过150mA. 详细请看STM32的数据手册中的相关内容. 例如,STM32F1 ...

  7. stm32 HAL库笔记(一)——普通IO口

    今天介HAL库操作普通IO口,就是输入/输出. 如果用CubeMX配置io工程,打开以后可以看到如下代码: GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOB ...

  8. 单片机IO口驱动能力

    以STM32的IO口为例,最大的输出电流和灌入电流在芯片手册上都有说明.单个IO口一般都是十几mA到几十mA,同时总的VDD电流也有限制,大概为150mA.所以单片机驱动外设时,如果不是信号型而是功率 ...

  9. STM32系列单片机IO口模式设置

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和 ...

随机推荐

  1. zzulioj--1778-- 和尚特烦恼4——有多少战斗力(gcd)

    1778: 和尚特烦恼4--有多少战斗力 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 259  Solved: 123 SubmitStatusWe ...

  2. Case study: word play

    For the exercises in this chapter we need a list of English words. There are lots of word lists avai ...

  3. Codeforces434D 网络流

    思路: 题意:有n<=50个点,每个点有xi有[li, ri]种取值,-100 <= li <= ri <= 100,并且给定m<=100条边,每条边为u,v,d表示xu ...

  4. GPU学习笔记(二)

    找到了一个还不错的教程http://blog.csdn.net/augusdi/article/details/12527497 今天课比较多,但是有了这个教程解决了昨天不能运行的问题.

  5. ListView 适配器实现getviewtypcount() 数组越界IndexOutOfBoundException

    ListView中Item的多布局显示,需要用到了getViewTypecount和getItemViewType这两个重写方法,但是做完后出现了如下提示错误:java.lang.ArrayIndex ...

  6. df 显示 100%的问题

    问题:         使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用.         实例:                分析: ...

  7. Java 调用对象方法的执行过程

    弄清调用对象方法的执行过程十分重要.下面是调用过程的详细描述: 1) 编译器查看对象的声明类型和方法名.假设调用x.f(param),且隐式参数x声明为C类的对象.需要注意的是:有可能存在多个名为f, ...

  8. 洛谷1440 求m区间的最小值 单调队列

    题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. 输入格式: 第一行两个数n,m. 第 ...

  9. HDU-1035 Robot Motion 模拟问题(水题)

    题目链接:https://cn.vjudge.net/problem/HDU-1035 水题 代码 #include <cstdio> #include <map> int h ...

  10. svn 学习

    svn命令在linux下的使用 svn命令在linux下的使用SVN软件版本管理 1.将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn che ...