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. 动态语言切换(续)-designer中的retranslateUi(带源码)

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:动态语言切换(续)-designer中 ...

  2. 45.angular路由设置

    转自:https://www.cnblogs.com/best/tag/Angular/ AngularJS 路由也可以通过不同的模板来实现. $routeProvider.when 函数的第一个参数 ...

  3. Filenames and paths

    Files are organized into directories (also called ‘folders’). Every running program has a ‘current d ...

  4. [C++] upper_bound和lower_bound

    upper_bound 源码 template <class ForwardIterator, class T> ForwardIterator upper_bound (ForwardI ...

  5. ListView和GridView的setOnScrollListener的简介

    ---恢复内容开始--- 设置ListView和GridView的滑动监听 circle_lv.setOnScrollListener(new AbsListView.OnScrollListener ...

  6. Remmina:一个 Linux 下功能丰富的远程桌面共享工具(转载)

    Remmina:一个 Linux 下功能丰富的远程桌面共享工具 作者: Aaron Kili 译者: LCTT geekpi | 2017-05-10 09:05   评论: 2 收藏: 4 Remm ...

  7. [转载]-win7启动本地MongoDB的四种方式

    2016年04月07日 09:52:34 cherry__cheng 阅读数:19451 标签: win7启动本地MongoDB的四种方式快速启动本地mongodb 更多 个人分类: mongodb& ...

  8. caioj 1111 树形动态规划(TreeDP)6: 皇宫看守 (状态设计)

    这道题的难点在于状态怎么设计 这道题要求全部都是安全的,所以我们做的时候自底向上每一个结点都要是安全的 结合前一题当前结点选和不选,我们可以分出四种情况出来 选 安全 选 不安全 不选 安全 不选 不 ...

  9. 【Henu ACM Round#19 F】Dispute

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 这一题和这一题很像 (链接 ) 会发现如果a[i]!=b[i]那么就按下i就好了. 然后改变和他相邻的点. 此后a[i]再也不可能和 ...

  10. Opencv YAML和XML格式文件操作详解

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/47660943 本文参考Opencv 2 ...