1、对于单片机而言,GPIO引脚的配置是很基础也是很重要的。错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找,耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解。今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚的复用功能(Alternate Function)。

2、STM32Fxx系列单片机的GPIO引脚可以配置为浮空输入(Input Floating)、上拉输入(Input Pull-up)、下拉输入(Input Pull-down)、模拟量(Analog)、开漏输出(Output Open-drain)、推挽输出(Output Push-pull)、复用开漏(Alternate function open-drain)输出和复用推挽(Alternate function push-pull)输出等八种模式。 下图为芯片数据手册的内容:

3、上拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(高电平)

下拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(低电平)

开漏输出,可以直接输出一个低电平,但是不能直接输出高电平(可以借助外部上拉电阻)

推挽输出,可以直接输出高电平和低电平

4、输入模式

注意:每个引脚内部都有两个电阻(上拉电阻+下拉电阻),但是引脚内部的上拉电阻是一个弱上拉(驱动能力比较弱),如果打算给引脚一个确定的电平,建议在引脚外部接上拉电阻。

5、输出模式

MOS管和N-MOS管循环导通,这样的好处是可以提高负载能力和切换速度,并且可以降低功耗。

先来介绍下开漏输出和推挽输出的区别:

STM32Fxx系列单片机的输出电路有两个MOS管:P-MOS和N-MOS。

在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。

在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平;

我们知道STM32Fxx单片机还有复用开漏输出和复用推挽输出,它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?

这就涉及到针脚的复用功能。

我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的。所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。

比如我们来看看STM32F103xx单片机的PA5引脚,如下图:

首先,PA5可以做为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)。

PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。如果PA5被配置为复用功能,但是没有开启它支持的任何外设的时钟,它的输出是不确定的。

复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS和-MOS),其输出电路是相同的。区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控制信号来自单片机的内置外设控制器(比如SPI1)。

复用开漏输出和(普通)开漏输出的道理是一样的。

下面这张图,是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):

下面这张图,是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:

注:虽然复用模式的控制信号来自内置外设控制器,但是单片机(CPU)依然可以读取相应的数据。在复用推挽输出模式下,单片机可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机可以通过读取输入数据寄存器(Input Data Register)的值来获取引脚的状态。

如何理解STM32单片机引脚的复用功能?相关推荐

  1. PT4115使用STM32单片机引脚PWM调光

    PT4115使用STM32单片机引脚PWM调光 与上位机使用modbus与上位机使用modbus通信,能够实现0~100%亮度调节,现存问题:上电时LED灯亮一下,可能怀疑是PWM初始化太慢,直接将引 ...

  2. STM32单片机智能全自动多功能洗碗机加热放水烘干紫外消毒

    实践制作DIY- GC0090-全自动多功能洗碗机 一.功能说明: 基于STM32单片机设计-全自动多功能洗碗机 功能介绍: 硬件组成: STM32F103C系列最小系统板 +LCD1602显示器+水 ...

  3. 笔记:STM32——IO口的复用功能外部中断

    在STM32里面一般有五组寄存器分别是A--E组,每组寄存器的端口基本都有复用功能,这样可以使得端口的不被浪费,而达到极致利用. 使用复用端口的时候需要打开AFIO的时钟才能使用IO口的复用端口.每个 ...

  4. stm32 之引脚和各功能模块间关系

    在调试中断问题时发现一个问题,在不同中断号下,我想修改中断处理函数的入口,即串口一的中断处理函数我想改为用串口二的中断处理函数是否有问题.答案是肯定有问题,但是为何有问题,是啥会导致这样的问题产生?下 ...

  5. STC 89C52 单片机引脚对应的功能以及实例讲解

    学习单片机能够让你更加深刻的认识到我们身边中常用电器的工作方式,接下来我们以引脚来讲解一些单片机中常用引脚的功能 目录 一.P1^0~7   对应八个二极管 二.数码管的使用 三.矩阵键盘的使用 四. ...

  6. 11讲 | STM32单片机实现ADC采集功能

    前言 专栏内容 持续更新,后续随着订阅人数增加价格可能会上涨. 目录 前言 一.简介 1.模拟信号 2.数字信号 3.采样频率 二.ADC

  7. STM32单片机扫雷游戏TFT触摸操作单片机小游戏

    实践制作DIY- GC0015-怀旧扫雷小游戏 一.功能说明: 基于STM32单片机设计-扫雷游戏 功能介绍: 1.基于STM32F103R系列单片机,2.4寸电阻触摸屏,24c02存储器,. 2.1 ...

  8. 7、TM4单片机学习之串口功能

    文章目录 一.初始化过程 1.使能相应外设端口 2.配置引脚的复用功能 3.配置引脚类型 4.时钟源设置 5.串口帧格式配置 二.使用方法 1.简单使用 2.使用中断 3.printf 函数 四.测试 ...

  9. STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833

    实践制作DIY- GC0094-DDS信号发生器 一.功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 +LCD1602显示器+AD98 ...

  10. STM32单片机智能鱼缸温度水位控制系统自动加热加水抽水

    实践制作DIY- GC0025-智能鱼缸 一.功能说明: 基于STM32单片机设计-智能鱼缸 功能介绍: STM32F103C系列单片机+DS18B20温度传感器+1个继电器控制5V水泵抽水+1个继电 ...

最新文章

  1. 定位系列论文阅读-RoNIN(二)-Robust Neural Inertial Navigation in the Wild: Benchmark, Evaluations
  2. 解决faster-rcnn中训练时assert(boxes[:,2]=boxes[:,0]).all()的问题
  3. 向量时钟Vector Clock in Riak
  4. 命令行解析的规则以及Command Line Parser Library
  5. java的svn插件maver_项目版本管理工具---MAVENSVN
  6. 交叉编译docker_端侧推理引擎Tengine初识:安卓平台交叉编译并跑通MobileNetV1
  7. java环境变量配置 - win10
  8. springboot 2.x 使用定时任务执行多次问题
  9. mysql 结果集换页_MySQL 按结果集分页
  10. 台达b2伺服modbus通讯_谁用电脑与台达ASDA-B2伺服通讯上-专业自动化论坛-中国工控网论坛...
  11. FL计算机软件,FL Studio水果编曲软件
  12. Qt android 开发环境搭建
  13. DIY四旋翼(穿越机)软硬件设计
  14. 计算机攻击方式有哪些,常用的dos攻击方式是什么
  15. 服务器装系统不识别硬盘分区,u盘装系统时找不到硬盘分区解决方法
  16. shanzhi -接小球游戏2.0
  17. [生成模型新方向]: score-based generative models
  18. 范宝兴:幻方与类自然数幻方(上)「片桐善直8阶间隔幻方」「同心6阶/8阶/10阶」...
  19. python语言的实验心得体会范文_实验心得体会-精选范文
  20. 查快递物流怎么查,用最新最快的查询物流的方法

热门文章

  1. matpolitlib 画图
  2. 转录组测序之各类样品如何取样保存
  3. pr电影混剪思路及常用快捷键
  4. Python-torch.optim优化算法理解之optim.Adam()
  5. 简单三步搭建电影网站 :排除MacCMS10登录故障 3-3
  6. 网络编程之TCP例子一(帅帅老师讲堂)
  7. mysql错误:Table XXX is marked as crashed and should be repaire
  8. 2018 6月底阿里、网易面试经历简单回忆
  9. 计算机音乐演奏jojo,【FF14】诗人演奏用 il vento d'oro(动画《JOJO的奇妙冒险 黄金之风》插曲)...
  10. dva是什么游戏_守望先锋:DVA这个皮肤小蛮腰不算什么,全部细节是这个小脚丫...