STM32 ——端口复用和重映射

首先来说下什么是端口复用。

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

其实说白了,简单易懂的说,就是某些普通的外设引脚也可以用来其它功能。比如说那我使用的正点原子哥的板子来说吧,串口1 的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作普通的GPIO口,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

接下来说下端口复用的配置过程

首先,GPIO端口时钟使能。(这个不管用不用端口复用,要使用某个IO口必须要对时钟进行使能)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  • 1

接下来就是你要使能复用外设时钟。(这里以串口1为例)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
  • 1
  • 2

接下里就是端口模式配置。 GPIO_Init()函数。

  GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这个可以参考(这里仅仅贴出了串口和定时器的端口配置模式)

以上就是端口复用的配置。

接下来说下什么是重映射。

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

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

打个比方说,串口1的TX,RX引脚是在PA9,和PA10端口,但是同时它有两个映射端口PB6,PB7。开启重映射,PB6和PB7同样可以使用串口1。

详情可参考下表关于串口1和串口2的重映射表。

此外,还有有一个部分重映射,所谓部分重映射,顾名思义,就是有部分的端口进行了重映射。

比如time1(当做部分映射时,TIM1_BKIN为PA6引脚,而作为完全重映射是为PE15引脚而TIM1_ETR一直为PA12引脚)

接下来还是以串口1为例写下配置过程。

首先,使能GPIO时钟(注意:重映射后的IO);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  • 1

接下来是使能功能外设时钟;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
  • 1

然后是使能AFIO时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  • 1
  • 2

这里注明下为什么要使能这个AFIO时钟。

对寄存器AFIO_MAPR,AFIO_EXTICRX和AFIO_EVCR进行读写操作前,应当首先打开AFIO时钟。

AFIO_MAPR:配置复用功能重映射
AFIO_EXTICRX:配置外部中断线映射
AFIO_EVCR: 配置EVENTOUT事件输出

最后要开启重映射:

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
  • 1
  • 2

之后只需要再次初始化GPIO端口即可。

以上也就是端口重映射的配置过程了。


http://www.taodudu.cc/news/show-1453877.html

相关文章:

  • Android学习之为按钮添加事件监听器的两种方法
  • Android学习之单选按钮
  • Android学习之Activity
  • 计算机三级嵌入式系统之常考指令
  • HC-05蓝牙模块AT指令调试
  • 51单片机定时器初值的计算
  • 计算机三级嵌入式系统易错题总结
  • 直流电机PID调节——P
  • MATLAB中的线性插值
  • MATLAB图像处理之二值化以及灰度处理
  • MATLAB图像处理之图像的像素矩阵
  • MATLAB图像处理之图像边缘提取
  • Windows操作系统下使用pip安装pygame
  • Python报错:AttributeError
  • 使用pyinstaller把pyton文件打包成exe文件
  • 对互信息量的理解
  • C++中cout流的输出顺序
  • MATLAB基本信号的产生
  • 模拟角频率和数字角频率的关系
  • FFT变换频谱图中频率刻度的设置方法
  • FFT变换频谱图中幅值的设置方法
  • matlab设计模拟高通滤波器
  • 负频率是怎么来的
  • Keil5的仿真调试
  • 谷歌浏览器怎么网页截图
  • STM32部分功能所在文件位置
  • 单片机上电总是立即执行按键程序
  • 蓝桥杯比赛的RTC时钟配置
  • IO口复用时钟的配置
  • 不能正常判断按键函数中的Flag

STM32之端口复用与重映射相关推荐

  1. stm32之端口复用和重映射

    文章目录 端口复用 端口重映射 端口复用 WHAT IS 端口复用? 一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用 端口复用配置过程(以串口1位例 ...

  2. 【STM32】端口复用和重映射,完全重映射,部分重映射

    文章目录 端口复用 端口复用函数总结 端口重映射 完全重映射 完全重映射函数总结 部分重映射 端口复用 当 PA9,PA10 引脚作为串口 1 的 TX,RX 引脚使用的时候,那就是端口复用(相较于作 ...

  3. STM32 端口复用与重映射及低功耗引脚配置

    STM32 端口复用与重映射及低功耗引脚配置 什么是复用? 在TSM32里面,大部分的引脚都是有GPIO复用功能,也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内 ...

  4. 12_JLink在线调试_软件调试方法和端口复用和重映射

    JTAG/SWD调试原理简析 STM32F10xxx使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作.硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止.内核停止 ...

  5. STM32学习笔记(三)端口复用与重映射(stm32c8t6)

    记录一下学习过程 1.端口复用 STM32有很多内置外设,这些外设的外部引脚是与GPIO复用的.默认情况下,这些GPIO口只能作为普通的IO口输入输出,把一个GPIO口的引脚复用为内置外设的功能引脚, ...

  6. STM32——端口复用与重映射

    目录 端口复用的概念 内置外设的概念 端口复用的概念 端口复用的配置 配置示例(串口1) 复用GPIO的配置 STM32中文参考手册 110页 端口重映射概念 端口重映射概念 部分重映射 完全重映射 ...

  7. stm32端口复用和重映射

    相关描述在参考手册 通用和复用功能I/O  General-purpose and alternate-function I/Os(GPIOs and AFIOs)里有详细介绍 端口复用或许没听过详细 ...

  8. 端口复用和重映射--STM32F103

    什么是端口复用? STM32中有很多内置外设,这些外设的引脚都是与GPIO复用的,什么时候复用呢?就是当一个GPIO作为内置外设引脚使用时,就叫做复用.比如串口1的发送接收引脚是PA9,PA10,当P ...

  9. Stm32端口复用与重映射

    概述 微控制器 I/O 引脚通过一个复用器连接到板载外设/模块,该复用器一次仅允许一个外设的复 用功能 (AF) 连接到 I/O 引脚.这可以确保共用同一个 I/O 引脚的外设之间不会发生冲突.    ...

最新文章

  1. Mysql 查询一天中,每个小时数据的数量
  2. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
  3. 腐蚀rust研究台抽奖_中石化青岛安工院专家分享延迟焦化装置的腐蚀风险分析!...
  4. 单进程服务器-非堵塞模式(python版)
  5. Html.RenderPartial使用三个参数
  6. wpf 图片绝对路径引用_Python Pillow 图片处理
  7. puppet成长日记二 Package资源详细介绍及案例分析
  8. oracle创建表空间语句分解
  9. 反比例函数matlab,matlab拟合指定反比例函数,在线等
  10. Emacs代码折叠/显示
  11. java nextprime_中国MOOC_零基础学Java语言_第7周 函数_1分解质因数
  12. 自学编程和计算机科班出身的差别在哪里?
  13. 用MODIS数据借助MATLAB绘制世界植被分布图
  14. 问道怎么找回以前的服务器,问道服务器盘点“北京古都”传奇之地
  15. soul服务器不稳定,soul聊天状态异常 消息发送失败
  16. C++图书管理系统_艾孜尔江撰
  17. Canva旗下图库Pexels为2000万微信公众号提供创作用图
  18. mac系统连接服务器教程视频教程,超详细教程:手把手教你15分钟在苹果Mac上装个Windows...
  19. 国内工业互联网领域开源社区资源汇总
  20. Ubuntu常用命令大全(珍藏版)

热门文章

  1. 【实践】推荐召回体系化建设与排序优化实践(附PPT下载链接)
  2. Embedding技术在推荐系统中的应用
  3. 浅谈 多任务学习 在推荐系统中的应用
  4. 送几本~ 648页全彩+395张插图 机器翻译 扛鼎之作
  5. 悬浮球不用权限_Android 实现无需权限的悬浮球效果,可适配至Android 10
  6. android 动画坐标,Android 动画之TranslateAnimation应用详解
  7. 工程数学(数值分析)第五讲:数据拟合
  8. 机器学习实战(六)AdaBoost元算法
  9. 开启python之旅
  10. 反向传播算法的详细解释(上)