精华内容
下载资源
问答
  • STM32端口复用

    2021-01-31 21:35:25
    STM32端口复用 1.什么是端口的复用? stm32中的许多内置外设,这些外设的外置引脚都是和GPIO共用同一个端口,一个GPIO口如果可以作为某个内置外设的引脚,那么当GPIO 口作为内置外设的引脚使用时,就叫做端口的复用...

    STM32端口复用

    1.什么是端口的复用?

    stm32中的许多内置外设,这些外设的外置引脚都是和GPIO共用同一个端口,一个GPIO口如果可以作为某个内置外设的引脚,那么当GPIO

    口作为内置外设的引脚使用时,就叫做端口的复用。

    例如:串口1的引脚对应的Io口为PA9,PA10,PA10的默认功能是GPIO。PA9,PA10引脚作为串口1的TX,RX引脚使用时,就是端口复用

    2.端口的复用的准备工作

    端口复用初始化需要如下三步:

    1.GPIO端口的使能

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    2.服用的外设时钟使能

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    3.端口模式配置

    例如:将PA9的模式配置为复用推挽输出:

    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); //配置PA9的模式

    我们在使用复用功能时,最少使能2个时钟:

    1)GPIO时钟使能

    2)复用的外设时钟使能

    展开全文
  • STM32端口复用与串口通信

    千次阅读 2018-12-04 09:38:26
    STM32端口复用 STM32串口通信接口

    STM32端口复用

    在这里插入图片描述

    STM32串口通信接口

    在这里插入图片描述

    展开全文
  • STM32 端口复用学习

    2020-07-03 13:09:17
    一、 STM32端口复用 1. 端口复用定义:STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 2. ...

    一、 STM32端口复用

    1. 端口复用定义STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
    2. 作用最大限度的利用端口资源
    3. 以PA9,PA10配置为串口1为例

    • GPIO端口时钟使能:
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    

    - 复用外设时钟使能(如将端口PA9,PA10复用为串口,所以要使能串口时钟)。

    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
    

    - 端口模式配置。GPIO_Init()函数。
    4. 端口复用配置过程代码及图示
    在这里插入图片描述

    	GPIO_InitTypeDef GPIO_InitStructure;	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //IO时钟使能
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //外设时钟使能
    	//初始化IO为对应的模式
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//PA9 复用推挽输出
    	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 浮空输出
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    	GPIO_Init(GPIOA,&GPIO_InitStructure);
    
    展开全文
  • 端口复用功能 端口复用的定义 STM32有许多的内置外设(如串口、ADC、DCA等等),这些外设的外部引脚都是和GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的...

    STM32F1xx官方资料:

    《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)

     

    端口复用功能

    端口复用的定义

    STM32有许多的内置外设(如串口、ADC、DCA等等),这些外设的外部引脚都是和GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫复用。详细的可以参考《STM32F103ZET6数据手册》p30的内容,表格的倒数第二栏就表示端口复用功能。

    比如说,STM32的串口1的引脚对应的I/O位PA9、PA10。而PA9、PA10默认的功能都是GPIO,所以说当PA9、PA10引脚作为串口1使用的时候就是端口复用。

    那么,什么时候端口是默认功能,什么时候端口是复用功能呢?

    STM32时钟系统的配置除了初始化的时候在system_stm32f10x.c中的SystemInit函数中外,其他的配置主要在stm32f10x_rcc.c文件中, 所以GPIO等等外设的时钟使能函数都是在此文件中。同时我们通过函数名可以得到规律:GPIOA-GPIOC是挂载在APB2下面,TIM2-TIM4是挂载在APB1下面,DMA是挂载在AHB下面。所以调用函数的名称是需要根据这个来确定的。

    端口复用初始化过程

    接下来看一下端口复用初始化过程的步骤,拿串口1为例:

    1、GPIO端口时钟使能。要使用到端口复用,首先是要使能端口的时钟了;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    2、复用的外设时钟使能。比如要将PA9、PA10引脚复用成串口,必须也要使能串口时钟;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    3、端口模式配置。在I/O复用位内置外设功能引脚的时候,必须设置GPIO端口的模式。至于在复用功能下,GPIO的模式怎么设置,可以查看手册《STM32中文参考手册》p110的内容。这里拿USART1为例,进行配置,要配置全双工的串口1,TX引脚需要推挽复用输出,RX引脚需要浮空输入或者上拉输入;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.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;//PA10 PA.10 浮空输入
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

    总而言之,使用复用功能的时候至少要使能2时钟:GPIO时钟使能、复用的外设时钟使能。同时还要初始化GPIO以及复用外设功能(端口模式配置)。

     

    端口重映射

    端口重映射的定义

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

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

    简单讲,就是把引脚的外设功能映射到其他的引脚上,但不是可以随便映射的,具体的对应关系参考《STM32F103ZET6数据手册》p30的内容,表格的最后一栏就表示端口重映射功能。

    这里同样用串口1为例来说明。

    可以看出,我们可以将串口1重映射到PB6、PB7引脚上

    端口重映射初始化过程

    接下来看一下端口重映射初始化过程的步骤,拿串口1为例,除了之前使能复用功能的2个时钟之外,还需要使能AFIO功能时钟,然后调用重映射函数:

    1、GPIO端口时钟使能。要使用到端口复用,首先是要使能端口的时钟了;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    2、复用的外设时钟使能。比如要将PB6、PB7引脚复用成串口,必须也要使能串口时钟;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    3、使能AFIO时钟。重映射必须使能AFIO时钟;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    4、开启重映射;

    GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
    

    这样,就将串口1的TX和RX引脚映射到PB6、PB7引脚上面了。至于哪些功能可以重映射,除了查看中文参考手册之外,还可以从GPIO_PinRemapConfig函数入手查看第一个入口参数的取值范围的值。stm32f10x_gpio.h中定义了一些宏定义的标识符:

    #define GPIO_Remap_SPI1             ((uint32_t)0x00000001)  /*!< SPI1 Alternate Function mapping */
    #define GPIO_Remap_I2C1             ((uint32_t)0x00000002)  /*!< I2C1 Alternate Function mapping */
    #define GPIO_Remap_USART1           ((uint32_t)0x00000004)  /*!< USART1 Alternate Function mapping */
    #define GPIO_Remap_USART2           ((uint32_t)0x00000008)  /*!< USART2 Alternate Function mapping */
    #define GPIO_PartialRemap_USART3    ((uint32_t)0x00140010)  /*!< USART3 Partial Alternate Function mapping */
    #define GPIO_FullRemap_USART3       ((uint32_t)0x00140030)  /*!< USART3 Full Alternate Function mapping */
    #define GPIO_PartialRemap_TIM1      ((uint32_t)0x00160040)  /*!< TIM1 Partial Alternate Function mapping */
    #define GPIO_FullRemap_TIM1         ((uint32_t)0x001600C0)  /*!< TIM1 Full Alternate Function mapping */
    #define GPIO_PartialRemap1_TIM2     ((uint32_t)0x00180100)  /*!< TIM2 Partial1 Alternate Function mapping */
    #define GPIO_PartialRemap2_TIM2     ((uint32_t)0x00180200)  /*!< TIM2 Partial2 Alternate Function mapping */
    #define GPIO_FullRemap_TIM2         ((uint32_t)0x00180300)  /*!< TIM2 Full Alternate Function mapping */
    #define GPIO_PartialRemap_TIM3      ((uint32_t)0x001A0800)  /*!< TIM3 Partial Alternate Function mapping */
    #define GPIO_FullRemap_TIM3         ((uint32_t)0x001A0C00)  /*!< TIM3 Full Alternate Function mapping */

    可以看出,USART1只有一种重映射,而USART3存在部分重映射和完全重映射。所谓部分重映射就是部分引脚和默认的是一样的,完全重映射就是所有引脚都映射到了新的引脚。可以查看《STM32中文参考手册》p119的内容查看部分重映射和完全重映射的内容。而在之前最后开启重映射的函数中,根据第一个参数,来确定是部分重映射还是全部重映射。

     

    AFIO辅助功能时钟

    之前在端口重映射的时候,讲到要使能AFIO辅助功能时钟。那么什么时候需要开启(使能)呢?

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

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

     

    展开全文
  • STM32 端口复用重映射

    2021-07-19 20:29:58
    目录什么端口复用如何配置端口复用如何配置端口复用什么是端口重映射什么是部分重映射和完全重映射重映射的配置过程 什么端口复用 STM32有很多个外设,外设的外部引脚与GPIO复用。也就是说一个GPIO可以重复使用...
  • 端口复用功能 STM32有很多的内部外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内部外设的功能引脚,那么当这个GPIO作为内部外设使用的时候,就叫做复用。 譬如,MCU都有串口,STM32...
  • 端口复用 STM32有很多内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用 简单来说就是 咱们的板子上有很多的...
  • stm32端口复用和重映射 一、端口复用 1、概念: stm32有很多外设,外设的外部引脚与GPIO复用;也就是说一个GPIO可以重复使用外设的引脚,这个GPIO作为内置外设使用时候,就叫做复用。 2、端口复用使用步骤:(以UART...
  • 端口复用stm32有很多内置外设,这些外设的外部引脚与GPIO复用,一个GPIO如果可以复用为内置外设的功能引脚,那么这个GPIO作为内置外设使用时,称为复用。 端口复用软件配置过程:1.GPIO端口时钟使能。2.复用外设...
  • 1.什么端口复用 2. 如何配置端口复用 r 3.什么是端口重映射 4.什么是部分重映射和完全重映射 5.重映射的配置过程
  • 端口复用功能 STM32有很多的内部外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内部外设的功能引脚,那么当这个GPIO作为内部外设使用的时候,就叫做复用。 譬如,MCU都有串口,STM32...
  • 端口复用 STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫复用。 STM32的很多外设,要通过GPIO管脚...
  • 首先来说下什么端口复用STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 其实...
  • STM32 端口复用&重映射(USART Remap) 下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例… 因为我要一个TFT_LCD屏的主控板,考虑到FSMC 我选用了STM32F103VCT6 型号的CPU...
  • 在说端口复用之前先明白一个概念:什么是外设?什么是内置外设? 外部设备简称“外设”,是指连在计算机主机以外的硬件设备。对数据和信息起着传输、转送和存储的作用,是计算机系统中的重要组成部分。
  • STM32端口复用和映射

    2016-07-07 15:32:00
    STM32的功能引脚重映射和复用功能STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明。我们知道每个内置外设都有若干个输入输出引脚,一般这些...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,671
精华内容 2,268
关键字:

stm32端口复用什么意思