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

这篇具有很好参考价值的文章主要介绍了STM32学习笔记(三)端口复用与重映射(stm32c8t6)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一下学习过程

1.端口复用

STM32有很多内置外设,这些外设的外部引脚是与GPIO复用的。默认情况下,这些GPIO口只能作为普通的IO口输入输出,把一个GPIO口的引脚复用为内置外设的功能引脚,通过这些GPIO口就可以使用内置外设了,这个过程叫做复用。但不是每一个引脚都用对应的复用功能的。

下图是stm32c8t6引脚的定义,其中默认复用功能一列就是对应GPIO口可配置为的复用功能。

图片来自https://blog.csdn.net/xinzhi1992/article/details/125412795

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

 端口复用的流程:

1.开启对应的GPIO时钟 2.开启对应的外设的时钟 3.将GPIO口配置为对应外设所需要的GPIO模式

 不同外设对应的GPIO模式可参考数据手册8.1.11节,下图为部分截图

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

这里以配置串口1为例,查询引脚定义表可知PA9和PA10可复用为串口1的TX和RX引脚

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启GPIO的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);	//开启外设时钟

  //根据数据手册的要求,将对应GPIO口配置为相应的模式
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
  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;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);

 2.端口重映射

除了外设默认定义的复用引脚外,用户的还可以根据自己需求重映射为别的引脚。参考引脚定义表第三重定义功能。还是以串口1为例,查看引脚定义表可知它的TX和RX还可映射为PB6与PB7。

端口复用重映射流程:1.开启对应的GPIO时钟 2.开启对应的外设的时钟 3.将GPIO口配置为对应外设所需要的GPIO模式 4.开启AFIO(复用功能辅助时钟)

对于什么什么时候需要开启AFIO时钟,手册中这样描述:对寄存器AFIO_EVCR, AFIO_MAPR和AFIO_EXTICRX进行读写操作前,应当首先打开AFIO的时钟。

其中三个寄存器的功能如下:

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

这里需要配置AFIO_MAPR所以要开启AFIO时钟

部分重映射&完全重映射

查看引脚定义表发现与串口1相关的引脚有5个PA8-12分别对应CK、TX、RX、CTS、RTS。部分重映射&完全重映射的区别就是要不要把这些全部重映射(前提是可以重映射)。参考手册8.3.8小节

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

由该表可知部分重映射&完全重映射只对USART3(串口3)来说有区别,我们配置串口1其实无所谓

部分重映射还是完全重映射可以通过开启重映射的库函数GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);决定,根据第一个参数值来确定部分重映射还是完全重映射

整体配置文章来源地址https://www.toymoban.com/news/detail-426650.html

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//开启GPIO的时钟,重映射后为PB口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);	//开启外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//开启AFIO时钟


  //根据数据手册的要求,将对应GPIO口配置为相应的模式
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);
   
 GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//开启重映射
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);

到了这里,关于STM32学习笔记(三)端口复用与重映射(stm32c8t6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】STM32F4 GPIO口映射与复用

    STM32F4 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO 如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。 这部分知识在《STM32F4 中文参考手册》第七章和芯片数据手册有详细的讲解哪些 GPIO 管脚是

    2024年02月15日
    浏览(25)
  • 第五步:STM32F4端口复用

    STM32 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO 如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。 例如串口 1 的发送接收引脚是 PA9,PA10 ,当我们把 PA9,PA10 不用作 GPIO ,而用做复用功能串口

    2024年02月12日
    浏览(44)
  • stm32f407探索者开发板(十四)——IO引脚复用和映射

    端口复用和重映射都是和单片机的I/O口有关系,端口复用是将一个I/O赋予多个功能,通过设置I/O的工作模式来切换不同的功能。重映射是将某些I/O口上面的功能映射到其他I/O口上面去。但是注意一点:重映射的I/O都是厂家设置好的,不能自己更改。 端口复用 什么是端口复用

    2024年02月16日
    浏览(28)
  • 【stm32c8t6多个串口同时使用】

    最近做的一个小项目会同时用到多个串口,不同串口连接不同外设根据不同控制指令来执行相应的功能(wifi、语音等)如何同时进行不同串口之间的配置原理和配置单个串口相同,下面就以三个串口中断分别来进行LED的控制,后面根据自己的需求将串口接在不同的外设上面就

    2024年02月15日
    浏览(30)
  • STM32C8T6控制智能小车代码

    本程序是在keil5软件下使用标准库编程的,纯自己手打,包含详细的代码注释。 首先就是PWM模块,次模块用于改变小车的转速,本项目用一个L98N电机驱动模块,将左边的两个轮子连接在一个L98N电机驱动模块输出引脚,将坐标的两个轮子连接在L298N的另外一个输出引脚,由此控

    2024年02月05日
    浏览(38)
  • 【基于stm32c8t6的智能加湿系统】

    🔥这里是小殷学长,单片机毕业设计篇1 基于stm32的智能加湿系统 🧿创作不易,拒绝白嫖 可私 ------------------------------------------智能加湿系统----------------------------------------- 1.按键进行界面模式切换和参数阈值调节(定时时间、温湿度值) 2.蓝牙进行界面模式切换和参数阈值

    2024年02月16日
    浏览(30)
  • STM32C8t6 驱动激光雷达实战(二)

    数据格式为:角度(°):距离(mm)。 STM32C8t6驱动激光雷达 前面我们了解了激光雷达的原理,下面用C8T6驱动激光雷达 激光雷达一共有 6 个引脚,其中 2 个 GND,2 个 5V,一对 RX 和 TX 引脚, 按照下表 1-1 的接线要求接在 STM32 单片机上。其中 2 个 5V 因为电流要求, 可以接在

    2024年02月02日
    浏览(30)
  • STM32C0开发(1)----SPI 驱动WS2812灯珠

    本文介绍了如何使用STM32微控制器,结合STM32CubeMX配置工具和SPI通讯接口,来驱动和控制WS2812 LED灯带。这是一个集硬件连接、软件配置和编程开发于一体的综合性项目,目标是实现对LED灯带颜色和亮度的精确控制。 最近在弄ST的课程,需要样片的可以加群申请:615061293 。 ht

    2024年02月04日
    浏览(31)
  • 【STM32】FSMC接口的复用和非复用

    在阅读《零死角玩转STM32—F103指南者》,以及《STM32F10x-中文参考手册》关于FSMC一章节的时候,对于在控制 NOR/SRAM 的时候使用到的引脚,在提到NOR器件的时候提到了地址复用和非复用接口,一时间没明白是什么东西。 非复用模式 :16位数据线及26位地址线分开始用。推荐在14

    2024年02月09日
    浏览(26)
  • 【STM32】STM32学习笔记-STM32简介(02)

    STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器 1.1 STM32是什么 STM32是一系列由ST Micro

    2024年02月04日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包