STM32F429和F103端口重映射

发布者:JoyfulExplorer最新更新时间:2019-10-25 来源: eefocus关键字:STM32F429  F103  端口重映射 手机看文章 扫描二维码
随时随地手机看文章

它自己默认每个管脚有自己的复用功能,但是这个管脚你用了,但你想要用它的其他功能,你就可以将这个功能重映射到其他管脚。使用复用功能是要保持一个功能使能,其他功能非使能状态

重映射指的是内部功能转移到别的引脚上去,芯片内部已经固定了只能映射到固定的地方。若使用TIM3重映射到其他引脚上,则先要配置TIM3重映射到该引脚,然后在按该引脚的复用功能配置

F103重映射实例:


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

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);


   //使能对应IO口的时钟,因为是复用功能所以还要使能AFIO时钟


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


                    GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);


3.配制重映射后的引脚: 这里只需配置重映射后的I/O(PB6,PB7),原来的不需要去配置(PA9,PA10).


                     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);


F429重映射实例:

以usart2的TX,RX为例

USART2的TX,RX对应的PIN脚分别为:PD5,PD6


1) 首先,我们要使用IO复用功能外设,必须先打开对应的IO时钟和复用功能外设时钟。


/*使能GPIOD时钟*/  

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);  

USART2在APB1总线

/*使能USART2时钟*/  

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);  

这里需要说明一下,官方库提供了五个打开GPIO和外设时钟的函数分别为:


[cpp] view plain copy

void  RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph,FunctionalState NewState);  

void  RCC_AHB2PeriphClockCmd(uint32_tRCC_AHB2Periph, FunctionalState NewState);  

void  RCC_AHB3PeriphClockCmd(uint32_tRCC_AHB3Periph, FunctionalState NewState);  

void   RCC_APB1PeriphClockCmd(uint32_tRCC_APB1Periph, FunctionalState NewState);  

void  RCC_APB2PeriphClockCmd(uint32_tRCC_APB2Periph, FunctionalState NewState);  


这五个函数分别用来打开相应的总线下GPIO和外设时钟。比如我们的串口2是挂载在APB1总线之下,所以我们调用对应的APB1总线下外设时钟使能函数RCC_APB1PeriphClockCmd来使能串口2时钟。对于其他外设我们调用相应的函数即可。


2) 其次,我们在GIPOx_MODER寄存器中将所需IO(对于串口2是PD5,PD6)配置为复用功能(ADC和DAC设置为模拟通道)。


3)再次,我们还需要对IO口的其他参数,例如类型,上拉/下拉以及输出速度。


上面两步,在我们库函数中是通过GPIO_Init函数来实现的,参考代码如下:


/*GPIOD5与GPIOD6初始化*/  

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6;   

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;//复用功能  

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//速度50MHz  

GPIO_InitStructure.GPIO_OType= GPIO_OType_PP; //推挽复用输出  

GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP; //上拉  

GPIO_Init(GPIOD,&GPIO_InitStructure);//初始化PD5,PD6  


4)最后,我们配置GPIOx_AFRL或者GPIOx_AFRH寄存器,将IO连接到所需的AFx。这些步骤对于我们使用库函数来操作的话,是调用的

      

GPIO_PinAFConfig函数来实现的。具体操作代码如下:  

/*PD5连接AF7,复用为USART2_TX */  

GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_USART2);  

/* PD6连接AF7,复用为USART2_RX*/  

GPIO_PinAFConfig(GPIOD,GPIO_PinSource6,GPIO_AF_USART2);  


F4的重映射是开启该引脚重映射功能,直接将功能重映射的引脚上GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_USART2),无重映射时钟;  F1的重映射需开启重映射时钟和使用GPIO_PinPremapConfig()开启改功能时钟来使能该功能,然后然后再初始化引脚为重映射功能,该引脚会自动链接上它的重映射功能。 问:F29为什么要链接到AF7 答;看mapping,规定了可以重映射到哪个引脚上, 

关键字:STM32F429  F103  端口重映射 引用地址:STM32F429和F103端口重映射

上一篇:Stm32-SWD下载调试配置
下一篇:STM32 单片机之 串口重映射(USART Remap)

推荐阅读最新更新时间:2024-11-13 14:55

stm32F429 LTDC优化
针对,SDRAM作为Framdbuffer时的几点优化。 1.尽量增加SDRAM带宽(使能突发访问,增加突发访问的长度,增加数据总线宽度)。 2.framebuffer的行长度64字节对齐,因为LTDC突发访问长度为64字节。 3.分时复用FSMC的总线,DMA2D、CPU、LTDC、DMA等Master同时访问设备时带来总线仲裁时间,造成带宽降低。 4.多个framebuffer时放在不同的SDRAM bank里面,显示buffer所放的bank最好只由LTDC访问。 5.将CPU所使用的堆栈放在CCM,减少CPU对总线矩阵的访问。
[单片机]
第17章 STM32F429之GPIO的HAL库API
17.1 初学者重要提示 1、如何阅读HAL库源码的问题 HAL库实现的函数有复杂的,也有简单的,简单的可以直接阅读代码。复杂的代码阅读起来比较耗时间,如果再配合参考手册抠每个寄存器的配置,那就更消耗时间了。所以对于这种函数,用户仅需了解每个部分实行的功能即可,而且HAL库都做了关键注释,以说明这部分实现的功能。所以用户没有必要去抠每个配置是如何实现的,仅需知道实现了什么功能。以后工程项目有需要了解具体配置时,再看即可。 2、学习本章节前,务必保证已经学习了第15章。 17.2 GPIO涉及到的寄存器 GPIO外设涉及到的寄存器比较少,也容易理解,推荐大家阅读GPIO源码的时候将参考手册中对应的寄存器功能做一个了解。
[单片机]
STM32F429 >> 20. CAN 通讯(Code)
本工程配置CAN 为回环模式。 编程指南 1. can 基本模式配置; 2. can 筛选器配置; 3. 发送数据结构体配置并发送; 4. 接收数据结构体配置并接收; 若采用中断进行数据读取,则加入中断配置,并在中断中进行数据接收即可。 bsp_can.h /** ****************************************************************************** * @file bsp_can.h * @author Waao * @version V1.0.0 * @date 21-Feb-2019 * @brief This file co
[单片机]
STM32f429开发中USB读写文件涉及到的库移植
第一步 USB_HID移植(原创 http://blog.csdn.net/xbl1986/article/details/17577685#comments ) ├── STM32_USB_Device_Library USB从设备库 │ │ ├── Class │ │ │ └── hid │ │ │ ├── inc │ │ │ │ └── usbd_hid_core.h │ │ │ └── src │ │ │ └── usbd_hid_core.c │ │ └── Core │ │ ├── inc │ │ │ ├
[单片机]
STM32F429的USB有坑?
最近某项目需要用到USB与CAN: 拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。 经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。 两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,最终都要把这两部分集合起来吧。 我把CAN工程里关于CAN的部分移到USB工程里,这时候CAN竟然用不了了。这时候我就开始在怀疑自己是不是手贱误删了哪里了,于是重新来一遍,发现还是不行。 查了代码很久也没找出什么错误了,
[单片机]
<font color='red'>STM32F429</font>的USB有坑?
STM32 | STM32F429的USB有坑?
最近某项目需要用到USB与CAN: 拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。 经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。 两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,最终都要把这两部分集合起来吧。 我把CAN工程里关于CAN的部分移到USB工程里,这时候CAN竟然用不了了。这时候我就开始在怀疑自己是不是手贱误删了哪里了,于是重新来一遍,发现还是不行。 查了代码很久也没找出什么错误了,
[单片机]
STM32 | <font color='red'>STM32F429</font>的USB有坑?
STM32端口映射
笔者在使用STM32F103C8T6时,不能使用TIM3输出2路PWM波的问题分析和解决办法。 PS. PB4(部分重映射,TIM3_CH1) ,PB5(部分重映射,TIM3_CH2) STM32的端口重映射有三种模式: 没有重映射、部分重映射、完全重映射 下图是正点原子《STM32开发指南-库函数版本_V1.3.pdf》 第十四章 PWM 输出实验 P203页 笔者在使用STM32F103C8T6时,碰到一个问题,使用部分重映射时。 PB5可以正常输出PWM波,而PB4不能输出PWM波。 经过对比手册,后发现: 1.该芯片没有PC6~9端口(但是有PC13,14,15),所以完全重映射无法使用 2.该芯片虽然有PB4
[单片机]
第11章 STM32F429移植SEGGER的硬件异常分析
11.1 初学者重要提示 MDK本身也是支持硬件异常分析的,就是不够直观,此贴是MDK的硬件异常分析文档:http://www.armbbs.cn/forum.php?mod=viewthread&tid=21940 。 IAR8带的硬件异常分析比较好用,在本章11.6小节有说明。 11.2 移植方法 直接移植SEGGER的硬件异常代码会有错误警告,这里针对IAR和MDK版本做了些简单修改,方便大家移植到自己的工程里面。 MDK版本移植 源文件位于本章配套例子的UserseggerHardFaultHandlerMDK文件夹,添加如下两个文件到工程里面即可。 IAR版本移植 源文件位于本章配套例子的Userseg
[单片机]
第11章 <font color='red'>STM32F429</font>移植SEGGER的硬件异常分析
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved