IO基本应用

一、IO基本结构:

针对STM32F407有7组IO。分别为GPIOA~GPIOG,每组IO有16个IO口,则有112个IO口。

当中IO口的基本结构例如以下:

二、工作方式:

STM32F4工作模式有8种,当中4中输入模式。4种输出模式,分别为:输入浮空、输入上拉、输入下拉、模拟模式、开漏输出、开漏复用输出、推挽输出、推挽复用输出。

1、输入模式:

在输入浮空模式下。电路既不上拉也不下拉,通过施密特触发器送到输入数据寄存器在送入到CPU。输入上拉和下拉模式各自是在电路中经过上拉和下拉后通过施密特触发器送入的CPU,模拟模式下,施密特触发器关闭后信号直接通过模拟通道至片上外设。

2、输出模式:

开漏输出模式下。CPU发送输入直接或间接的控制输出数据寄存器,通过输出控制电路,当信号为1时,N—MOS管是关闭的,所以IO电平就是受上下拉电路的控制。当信号为0时。N—MOS管导通输出就是下拉低电平;推挽输出模式下。信号为1时,P-MOS管导通,N-MOS管截止,输出就是上拉高电平,当信号为0时。P-MOS管截止,N-MOS管导通。输出就是下拉低电平;对于开漏复用和推挽复用模式与开漏和推挽的不同之处就是在于信号的开源不同。开漏复用和推挽复用的信号来源是片上的外设模块。

三、相关寄存器

每个通用的IOport都包含4个32位的配置寄存器(GPIOx_MODER、GPIOx_OTYPER、PIOx_OSPEEDR和GPIOx_PUPDR)。2个32位的数据寄存器(GPIOx_IDR和GPIOx_ODR),1个32位置位/复位寄存器(GPIOx_BSRR),1个32位锁定寄存器(GPIOx_LCKR)和2个32位复用功能选择寄存器(GPIOx_AFRL)。

以下对其进行介绍。

1、工作模式配置:1、port模式(GPIOx_MODER):用来配置port的模式为输入、输出、复用和模拟模式。

2、port类型(GPIOx_OTYPER):用来配置寄存器的模式为输出推挽还是输出开漏。3、port速度(PIOx_OSPEEDR):用来配置port的信息传输速率。4、port上下拉(GPIOx_PUPDR):用来配置port的无上下拉、上拉、下拉和保留模式。

2、电平配置:1、输入数据(GPIOx_IDR):用到其低16位。分别对应该组IO口的一个电平状态。

2、输出数据(GPIOx_ODR):与输入数据寄存器相似的功能。3、置位和复位(GPIOx_BSRR):与前两个不同的是置位和复位寄存器用到了32位。低16为设置为1时,用于置1对应位。高16位设置为1时,用于置0对应位。而低16位和高16位设置为0时不影响原值。

3、复用功能配置:以下做对应说明。

IO复用

一、复用背景:

因为考虑到IO口的有限,为了节省IO资源。同一时候为了更好的协调IO之间的工作。所以有必要在适当的时候给IO口赋予不同的功能。一个IO口在不同的时候能够承担不同的工作,这就是IO的复用功能。

二、复用原理:

每个IO口都会接有一个选择器,这个选择器经过对应寄存器(GPIOx_AFRH和GPIOx_AFRL)的配置之后就能够做不同的功能的应用,这个寄存器就是GPIOx_AFRH和GPIOx_AFRL。

三、寄存器配置:

每一组IO口都有一个AFRL和一个AFRH寄存器。他们都是32位的寄存器,当中每4位配置一个IO口的功能,则相应的GPIOx_AFRL就用来配置第0-7个IO口,GPIOx_AFRH就用来配置第8-15个IO口。

每4位配置一个IO口,则4位数据的相关取值就会有相应的相应功能。如此一来就做好了相关配置。

综述:

这些相关的配置过程会用到对应的函数和对应变量,熟练使用相关的函数,同一时候对函数的功能了解后才会应用的更加得心应手。同一时候也能够写自己的一些相关函数来进行操作。当然也能够直接操作相关的寄存器。



STM32F4——GPIO基本应用及复用的更多相关文章

  1. STM32F3 GPIO的八种模式及工作原理

    一.GPIO简介 GPIO(英语:General-purpose input/output),通用型之输入输出的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来 ...

  2. linux内核中的GPIO系统之(1):软件框架

    一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...

  3. M4——GPIO配置

    1.GPIO 简述: 通用输入输出(General Purpose Input Output)的简称,就是芯片引脚可以通过他们输出高电平或者低电平,也可以通过他们读取引脚的电平状态. 以STM32F4 ...

  4. 7.STM32中GPIO理解

    端口概述 在STM32中,每个I/O端口可以由软件配置成为输入/输出模式.复位期间或刚复位后,I/O端口被配置成浮空输入模式.所有的GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时, 它们可以被激 ...

  5. bcm53344 gpio驱动分析

    /********************************************************************************* * 1.查看代码是在vim下,使用 ...

  6. STM32F4先设置寄存器还是先使能时钟

    http://zhidao.baidu.com/link?url=gdVNuIgLOJcV37QzbCx0IrFip5pskiPQDWpoZayr_xBEe120p4d_iWtrfDl1d4tSFaH ...

  7. 嵌入式02 STM32 实验01 端口复用和重映射

    内设与外设: 端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设? 内设:单片机内部集成的功能一般包括:串口模块.SPI模块(Serial Peripheral Interface  ...

  8. STM32中引脚复用说明

    端口复用的定义 STM32有许多的内置外设(如串口.ADC.DCA等等),这些外设的外部引脚都是和GPIO复用的.也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设 ...

  9. N32G4系列——复用功能重映射(USART为例)

    开发测试环境:SDK,N32G455x系列芯片 在国民MCU中G系列IO口有第二复用功能,这时需要用到重映射功能. 一.系列芯片手册定义 1.1.芯片IO口默认功能查看 如图,在该系列芯片的数据手册中 ...

随机推荐

  1. SpringMVC之DispatcherServlet详解

    SpringMVC是一种基于请求启动的WEB框架,并且使用了前端控制器的设计模式,所有满足[WEB-INF/web.xml]文件中的[url-pattern]的匹配条件的请求,这些满足的请求都会交给这 ...

  2. JDBC-ODBC桥接器连接Access数据库

    今天,遇到一个问题,虽然不是什么大难题,但对于初学者来说也缠绕了我好久!(好气哦) 问题: 运行jsp项目连接不上数据库: java.sql.SQLException: [Microsoft][ODB ...

  3. SQL Server2008优化之SET STATISTICS开关

    一.准备工作 缓存对于某个查询的性能影响十分之大,所以优化之前要清空缓存. 清除Buffer Pool时面的所有缓存 DBCC DROPCLEANBUFFERS清除Buffer Pool里的所有缓存的 ...

  4. 【Oracle】truncate分区表

    分区表是生产中常用的一种表,它可以实现数据的按类存放,极大的提高了数据的查询及维护.当我们不需要某一分区的数据时,可以采用truncate来清空分区.实验如下: SQL)) partition by ...

  5. svn命令行批量删除和批量添加

    svn命令行批量删除和批量添加 如果使用svn的命令行,例如在linux下的终端中使用,svn的添加命令是svn add,删除命令是svn del,但是缺乏批量的操作,如果我在资源管理器中,手动添加了 ...

  6. 图像局部显著性—点特征(GLOH)

    基于古老的Marr视觉理论,视觉识别和场景重建的基础即第一阶段为局部显著性探测.探测到的主要特征为直觉上可刺激底层视觉的局部显著性--特征点.特征线.特征块. 相关介绍:局部特征显著性-点特征(SIF ...

  7. PCL:描述三维离散点的ROPS特征(Code)

    前言: 三维点云为三维欧式空间点的集合.对点云的形状描述若使用局部特征,则可分为两种:固定世界坐标系的局部描述和寻找局部主方向的局部描述,ROPS特征为寻找局部主方向的特征描述. 1.寻找主方向(对X ...

  8. andorid 查看OpenCv Mat的Debug信息

    在进行Android调试时,不能再Console显示Debug信息,只能在LogCat上显示,显示信息如下图: 代码段: public void printMat2Txt(Mat ElemM, Str ...

  9. 阿里巴巴矢量库IconFont__使用小录

    使用阿里巴巴矢量库方法虽然不难,但本人记性不好,遂在次记录几笔 阿里巴巴矢量库地址:http://www.iconfont.cn/plus 阿里巴巴矢量库图标好处: 1:图标矢量化 2:自己总结:ic ...

  10. 为什么使用dispatch_sync

    1.充分利用多线程的性能: 2.将分散在多线程中的核心操作归并到一个queue执行(通常为一个串行队列). 3.便于在任务线程中进行后继操作. 术语: 任务线程: 同步模块.