8-GPIO引脚复用与重映射

0.通用GPIO

在复位期间及复位刚刚完成后,复用功能尚未激活,I/O 端口被配置为输入浮空模式。

复位后,调试引脚处于复用功能上拉/下拉状态:

● PA15:JTDI 处于上拉状态

● PA14:JTCK/SWCLK 处于下拉状态

● PA13:JTMS/SWDAT 处于下拉状态

● PB4:NJTRST 处于上拉状态

● PB3:JTDO 处于浮空状态

当引脚配置为输出后,写入到输出数据寄存器 (GPIOx_ODR) 的值将在 I/O 引脚上输出。可

以在推挽模式下或开漏模式下使用输出驱动器(输出 0 时仅激活 N-MOS)。

输入数据寄存器 (GPIOx_IDR) 每隔 1 个AHB1 时钟周期捕获一次 I/O 引脚的数据。

所有 GPIO 引脚都具有内部弱上拉及下拉电阻,可根据 GPIOx_PUPDR 寄存器中的值来打

开/关闭。



1.I/O 引脚复用器和映射

微控制器 I/O 引脚通过一个复用器连接到板载外设/模块,该复用器一次仅允许一个外设的复用功能 (AF) 连接到 I/O 引脚。这可以确保共用同一个 I/O 引脚的外设之间不会发生冲突。每个 I/O 引脚都有一个复用器,该复用器采用 16 路复用功能输入(AF0 到 AF15),可通过GPIOx_AFRL(针对引脚 0 到 7)和 GPIOx_AFRH(针对引脚 8 到 15)寄存器对这些输入进行配置:

● 完成复位后,所有 I/O 都会连接到系统的复用功能 0 (AF0)。

● 外设的复用功能映射到 AF1 至 AF13。

● Cortex™-M4F EVENTOUT 映射到 AF15。





2.引脚复用时钟设置

    RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //需要用到外设的重映射功能时需要使能AFIO的时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //设置引脚复用
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);

3.为什么引脚复用?

为了节省IO口资源,同一个IO口可能集成了多个功能。但是要用到的某个端口上电初始化后默认功能并不是想要用到的功能,这样就要用到复用功能!

(1).将默认功能重映射为需要的功能!



(2).将默认功能映射为普通IO口使用!

8-GPIO复用的更多相关文章

  1. [原创]树莓派CM4配置GPIO复用为i2c

    1.简介 项目中需要控制各种外设的电源,正常应该是通过GPIO进行控制,但是树莓派CM4的GPIO管脚有限,因此需要使用i2c扩展IO 查阅CM4-datesheet发现GPIO22和GPIO23可以 ...

  2. STM32的FSMC总线复用调试笔记

    调试FSMC总线复用模式时主要遇到以下几点: 1.寄存器的配置,首先注意使能地址数据复用,其次要存储器类型选择FSMC_MemoryType_NOR,否则出现不了NADV信号. FSMC_NORSRA ...

  3. M4——GPIO配置

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

  4. 对HI3531的GPIO使用的再分析

    在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/ ...

  5. Davinci DM6446开发攻略——LINUX GPIO驱动源码移植

    一.             DM6446 GPIO的介绍      说到LINUX 驱动移植,没有移植过的朋友,或刚刚进入LINUX领域的朋友,最好去看看<LINUX 设备驱动程序>第三 ...

  6. 迅为iTOP-4418/6818开发板-驱动-实现GPIO扩展

    实现 GPIO 扩展,先弄清楚“复用”的概念,将调用这些 GPIO 的驱动去掉配置,重新编译,加到自己的驱动中,就可以实现扩展的 GPIO 的输入和输出.另外必须要先看文档“迅为iTOP-4418开发 ...

  7. Hi35xx 通用GPIO 使用篇(板子3G电源控制脚说明)

    在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/ ...

  8. STM8S103之GPIO

    如何快速了解GPIO,查看Reference manual中GPIO章节,初步了解到GPIO GPIO输入分为:Floating Input和Input with pull-up GPIO输出分为:O ...

  9. STM32 GPIO口的配置和应用

    STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) ...

  10. STM32串口复用关系&printf重定义

    串口复用 什么是普通功能输入输出?普通功能输入输出类似于:大厅<—>门<—>室外的关系,大厅只需要经过大门即可到室外,从室外经过门也可以到达大厅. 什么是复用工功能输入输出?复 ...

随机推荐

  1. TestNg学习

    参考:https://www.yiibai.com/testng/junit-vs-testng-comparison.html#article-start 1.JUnit缺点: 最初的设计,使用于单 ...

  2. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

  3. Java如何替换所有指定(出现)的字符串?

    在Java编程中,如何替换所有指定(出现)的字符串? 以下示例演示如何使用Matcher类的replaceAll()方法替换字符串中的所有出现的子字符串. package com.yiibai; im ...

  4. 一个手写的 http client

    public class HTTPClient { public static final String GET = "GET"; public static final Stri ...

  5. 【python】关键网站

    https://pypi.org https://www.python.org/search/?q=pyhanlp&submit= https://www.lfd.uci.edu/~gohlk ...

  6. 获取linux服务进程号

    ps -ef | grep "服务名" | grep -v "grep" | awk '{print $2}' # ps -ef|grep "被查询的 ...

  7. 51 IP核查询

    康芯的IP核 Oregano systems 公司的MC8051 IP CoreSynthesizeable VHDL Microcontroller IP-Core User Guide这个里面51 ...

  8. iOS - UIAlertController三种显示提示框代码

    UIAlertView在IOS 8以上版本已经过时了,官方推荐我们使用UIAlertController代替UIAlertView.UIActionSheet 1、UIAlertController显 ...

  9. 使用Python3.7.0搭建简易服务器

    一.下载并安装Python 官网地址 二.新建start_server.bat 在需要搭建服务器的根目录位置,新建一个start_server.bat文件 内容 python -m http.serv ...

  10. E - TOYS

    来源 poj 2318 Calculate the number of toys that land in each bin of a partitioned toy box. Mom and dad ...