STM32的端口复用和重映射

发布者:风轻迟最新更新时间:2022-06-24 来源: eefocus关键字:STM32  端口复用  重映射 手机看文章 扫描二维码
随时随地手机看文章

什么是端口复用?

 

STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。


例如:
串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

file

复用功能的配置:

以下端口复用配置过程以PA9,PA10配置为串口1为例GPIO端口时钟使能。

  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

  • 复用外设时钟使能。比如你要将端口PA9,PA10复用为串口,所以要使能串口时钟。RCC_APB2PeriphClockCmd(RCCAPB2Periph USART1, ENABLE);

  • 端口模式配置:GPIO_Init()函数。查表:《STM32中文参考手册V10》 P110的表格“8.1.11外设的GPIO配置”。

    file


    例如在全双工模式下,GPIO配置输入和输出模式分别为推挽复用输出和浮空输入或者上拉输入。

PA9,PA10复用为串口1配置过程:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//I①IO时钟使能

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//②外设时钟使能

 

//初始化IO为对应的模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9/I复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_ 50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //对应查表的输入输出模式

GPIO_Init(GPIOA,&GPIO_InitStructure);

 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10浮空输入

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//I浮空输入    

//对应查表的输入输出模式

GPIO_Init(GPIOA,&GPIO_InitStructure); 


什么是端口重映射?

每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。

为了使不同器件封装的外设IO功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能。


重映射技术的作用:

  • I/0的复用:GPIO和内置外设共用引出管脚

  • I/0的重映射:复用功能(AFIO)从不同的GPIO管脚引出

  • 方便了PCB的设计,潜在地减少了信号的交叉干扰分时复用某些外设,虚拟地增加了端口数目

    AFIO重映射的操作步骤

    1.使能被重新映射到的I/0端口时钟
    2.使能被重新映射的外设时钟
    3.使能AFIO功能的时钟(勿忘!)
    4.进行重映射

部分重映射&完全重映射

部分重映射:功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。
完全重映射:功能外设的所有引脚都重新映射。

file

引脚重映射配置过程(串口1为例):

1,使能GPIO时钟(重映射后的IO);
2,使能功能外设时钟(例如串口1);
3,使能AFIO(复用辅助功能)时钟。重映射必须使能AFIO时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
4,开启重映射。
GPIO_PinRemapConfig( GPIORemap USART1,ENABLE),(库函数)
根据第一个参数,来确定是部分重映射还是全部重映射

哪些情况需要开启AFIO辅助功能时钟?

对寄存器AFIO_MAPR,AFIO_EXTICRX和AFIO_EVCR进行读写操作前,应当首先打开AFIO时钟。
AFIO_MAPR:配置复用功能重映射
AFIO_EXTICRX:配置外部中断线映射
AFIO_EVCR: 配置EVENTOUT事件输出


关键字:STM32  端口复用  重映射 引用地址:STM32的端口复用和重映射

上一篇:STM32的NVIC中断优先级
下一篇:Systick滴答定时器讲解

推荐阅读最新更新时间:2024-11-09 12:08

STM32的DMA的五大问题
1,DMA控制器的内部结构 STM32中的DMA控制器是一种用于在外设和存储器之间传输数据的专用硬件。DMA控制器的内部结构主要包括以下几个关键部分: 通道: DMA控制器可以有多个通道,每个通道独立管理一个数据传输任务。通道的数量取决于具体的STM32型号,每个通道可以独立配置,使得DMA可以同时执行多个数据传输任务。 数据传输方向寄存器: 该寄存器用于配置数据传输的方向,可以设置为从外设到存储器(Memory-to-Memory)、从外设到存储器(Peripheral-to-Memory)、从存储器到外设(Memory-to-Peripheral)等不同方向。 地址寄存器: DMA控制器有两个地址寄存器,一个用于配置外设地址,
[单片机]
关于STM32 ST-LINK Utility查看内核运行状态,助你判断程序是否跑飞
本文围绕STM32 ST-LINK Utility讲几点主要功能及相关拓展知识: 1.STM32编程下载; 2.利用该编程工具查看内核运行状态; 3.Option Bytes选项字配置; 1STM32编程下载 STM32 ST-LINK Utility一个最重要的功能就是对STM32进行编程。支持常见的hex、bin文件,还有早期摩托罗拉定义的srec和s19格式的文件(说实话,我都不了解这两种格式的文件)。 这里主要想提示一下初学者:hex带有地址,而bin文件不带地址,下载时需要填写起始地址。 下面看两张在STM32 ST-LINK Utility中下载选择文件的图大家就明白了。 1.选择hex下载,地址不可修改(灰色)
[单片机]
关于<font color='red'>STM32</font> ST-LINK Utility查看内核运行状态,助你判断程序是否跑飞
STM32学习:按键控制LED
前言 涉及知识点:上下拉电阻,stm32_GPIO工作模式,stm32按键控制,GPIO电平读取,宏定义 内容:两个按键控制两个LED灯亮灭。 一、所用知识点复习 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 1、stm32工作模式(注意上下拉输入的区别) 2、按键抖动与常见按键接法 按键抖动: 按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。 抖动时间的长短由按键的机械特性决定
[单片机]
<font color='red'>STM32</font>学习:按键控制LED
STM32如何新建工程+寄存器点亮LED灯
STM32新建工程跟51差不多的,但是32会多点东西,比如加载芯片支持包啦,启动文件啦。还有一个很重要的 你得有KEIL5 是吧哈哈 我这里就不写如何安装KEIL5了 网上挺多资源的,这里就主要写一下如何新建工程点亮一个LED灯。 我这里用STM32F103C8T6 我这里用STM32F103C8T6 一: 如何新建工程 1:下载芯片支持包Keil.STM32Fxxxx.pack文件 1.进入KEIL5官网。 找到自己的型号 这样就下载了 芯片支持包了。 2:打开KEIL5 加载Keil.STM32Fxxxx.pack文件 .打开KEIL5 把 下载的 Keil.STM32Fxxxx.pack文件
[单片机]
<font color='red'>STM32</font>如何新建工程+寄存器点亮LED灯
stm32 GPIO
下面是我找的一些资料,也贴出来给大家看看。 (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,
[单片机]
STM32大小端序与堆栈及其增长方向分析
  在开源电子中看到一篇文章讲的是栈增长和大端/小端问题。学C语言的时候,我们知道堆栈的区别:   (1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。   (2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。   (3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统自动释放。   (4)文字常量区:常量字符串就是存放在这里的。   (5)程序代码区:存放函数
[单片机]
<font color='red'>STM32</font>大小端序与堆栈及其增长方向分析
单片机stm32 USART串口实际应用解析
  stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm32的视频资料便于学习参考。   什么是串口   UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器   USART : Universal Synchronous Asynchronous Receiver/Transmitter   通用同步/异步收发器   一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。   Tx: 发送数据线
[单片机]
STM32获取DHT11温湿度(单总线通信实验笔记)
笔记: DHT11是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个1/0口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低, 5V电源电压下,工作平均最大电流0.5mA DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由SByte (40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为4
[单片机]
<font color='red'>STM32</font>获取DHT11温湿度(单总线通信实验笔记)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved