STM32学习笔记(5)端口复用及重映射简介

文章目录

  • 端口复用
    • 端口复用介绍
    • 复用端口初始化步骤
  • 重映射
    • 重映射简介
    • 重映射步骤

端口复用

端口复用介绍

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

具体哪些 GPIO 管脚是可以复用为哪些内置外设的参考相关资料。(《STM32 中文参考手册 V10》的 P109, P116~P121 )

外设: 外部设备简称“外设”,是指连在计算机主机以外的硬件设备。对数据和信息起着传输、转送和存储的作用,是计算机系统中的重要组成部分

复用端口初始化步骤

1.使能相应GPIO 端口时钟。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA

2.复用的外设时钟使能。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 
//为了端口 PA9,PA10 复用为串口,使能串口时钟 

3.配置端口模式:GPIO_Init()函数
不同复用外设参考相应资料(《STM32 中文参考手册 V10》 8.1.11 一节内容)

例:PA9,PA10复用为串口1

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

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

//初始化IO为对应模式
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP; //模式选择为复用推挽输出
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed=  GPIO_Speed_50MHz;//速率选择为50M
 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING; //模式选择为浮空输入
 GPIO_Init(GPIOA,&GPIO_InitStructure);

重映射

重映射简介

为了使不同器件封装的外设 IO 功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。 (更好地安排引脚的走向与功能)

即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。

重映射步骤

1.使能被重映射的IO端口时钟。
2.使能被重映射的外设时钟。
3.使能AFIO时钟
4.开启重映射

第三步,开启AFIO的情况:
对寄存器AFIO_MAPR,AFIO_EXTICRX与AFIO_EVCR进行读写操作,则应打开AFIO时钟
AFIO_MAPR:配置复用功能重映射
AFIO_EXTICRX:配置外部中断线映射(X=1,2,3,4)
AFIO_EVCR:配置EVENTOUT事件输出

例:将原PA9,PA10的复用串口1重映射到PB6,PB7

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能 GPIOB 时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //使能串口 1 时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //使能 AFIO 时钟

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//开启重映射,根据第一个参数确定部分重映射还是全部重映射

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

你可能感兴趣的:(STM32学习笔记)