单片机
返回首页

STM32端口复用与重映射

2017-11-02 来源:eefocus

    STM32上有很多I/O口,也有很多的内置外设,像I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。使用方法:

    简单的说 STM32的 io 有3个功能一个是默认的,一个是复用,一个是重映射功能(这个其实也属于复用)。如果配置成复用,则将使用第2个功能;同时,相应的重映射配置了,则将使用第3个功能。开复用 + 使能设备+ 是否重映射就可以决定这个io口到底使用哪个功能。以串口为例进行说明,重映射步骤为:

STM32端口复用与重映射

1、打开重映射时钟和USART重映射后的I/O口引脚时钟, 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

2、I/O口重映射开启.

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3、配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOB,&GPIO_InitStructure);

    只需要这三步,串口就可以正常使用了。

对于定时器也是类似步骤。

STM32端口复用与重映射

 GPIO_InitTypeDef GPIO_InitStructure;
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    //上拉输入
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
 GPIO_Init(GPIOE, &GPIO_InitStructure);
   
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 
 GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE);   //完全重映射

//GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE); //部分重映射


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 非常简单的150W功放电路图

  • 基于IC555的可变PWM振荡器电路

  • 如何使用LED驱动器LM3915制作振动计

  • 一个简单的立体声平衡指示器电路

  • 电谐波图形均衡器示意图

    相关电子头条文章