历史上的今天
返回首页

历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2019年10月25日 | STM32F429和F103端口重映射

2019-10-25 来源:eefocus

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

重映射指的是内部功能转移到别的引脚上去,芯片内部已经固定了只能映射到固定的地方。若使用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,规定了可以重映射到哪个引脚上, 

推荐阅读

史海拾趣

E-Switch公司的发展小趣事

自1979年成立以来,E-Switch公司始终将创新作为发展的核心动力。在公司成立初期,面对激烈的市场竞争,E-Switch决定走差异化路线,专注于开发和生产高品质的开关产品。通过不断的技术创新和产品优化,E-Switch逐渐在电子行业中树立了自己的品牌形象。

Exclara Inc公司的发展小趣事

在电子行业这个竞争激烈的领域里,技术的更新换代速度非常快。为了保持领先地位,Exclara高度重视研发投入,不断引进高端人才和先进设备,加强研发团队建设。通过持续的研发投入,公司不仅保持了技术的领先地位,还成功开发出了一系列具有自主知识产权的核心技术。

Endicott Research Group Inc (ERG)公司的发展小趣事

近年来,随着全球对环保和节能的日益重视,ERG积极响应绿色发展的号召,开始研发更加高效节能的电源产品和LED照明解决方案。他们通过优化电路设计、采用新型材料和改进生产工艺,成功降低了产品的能耗和废弃物产生。这些环保举措不仅提升了公司的社会形象,还为其赢得了更多环保意识强的客户的青睐。同时,ERG也积极参与各种环保公益活动,为推动行业的绿色发展做出了积极贡献。

以上五个故事,客观地描述了ERG在电子行业中的发展历程和主要成就。从初创时期的艰苦奋斗,到不断拓展业务范围、加强技术研发、与科研机构合作以及积极响应环保号召,ERG始终保持着创新精神和进取心,为电子行业的发展做出了重要贡献。

Astro Tool Corp公司的发展小趣事

随着企业规模的不断扩大和影响力的提升,Astro Tool Corp公司逐渐认识到企业社会责任的重要性。公司积极参与社会公益事业,为当地社区和弱势群体提供帮助和支持。同时,公司还注重环境保护和可持续发展,通过引进环保技术和设备,降低生产过程中的能耗和排放,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实基础。


请注意,这些故事是虚构的,旨在展示一个电子行业企业可能经历的一些典型发展阶段和策略,并不代表任何真实公司的具体情况。如果需要更贴近真实情况的故事,建议进一步调研和了解Astro Tool Corp公司的实际发展历程。

Carlisle Interconnect Technologies公司的发展小趣事

进入21世纪,Carlisle Interconnect Technologies开始了全球化的布局。公司不仅在北美和欧洲设立了多个生产基地和研发中心,还积极开拓亚洲和拉丁美洲等新兴市场。通过全球化的战略布局,公司不仅能够更好地利用全球资源,还能够更深入地了解各地市场需求,进一步推动业务发展。同时,公司还加强了与国际知名企业的合作,共同推动电子行业的发展和进步。

这五个故事只是Carlisle Interconnect Technologies发展历程中的一部分,但它们足以展示公司在电子行业中的创新、进取和不断追求卓越的精神。这些故事也为我们揭示了一个成功企业的发展轨迹:从创业初期的创新与突破,到不断的技术升级和产品多样化,再到全球化的布局与业务拓展,每一步都充满了挑战与机遇。

Anixter Inc公司的发展小趣事

在科技创新的推动下,艾华集团的产品逐渐在国内外市场上崭露头角。公司不仅在国内市场上取得了显著成绩,还积极拓展海外市场,产品远销欧美、东南亚等地区。同时,艾华集团也注重品牌建设,通过提升产品品质、加强售后服务等方式,不断提升品牌影响力和美誉度。

问答坊 | AI 解惑

请问有没有朋友用过PHY芯片

我现在正在调试的系统中用到了RTL8212,是一块千兆双口物理层收发器。现在他能够正常接收数据,但是却不能发送数据,发出的数据在接收方说是错误的数据包。我是用一块FPGA来控制的,现在不知道问题出在哪里,不知道是我的FPGA时序不对还是RTL8212的 ...…

查看全部问答>

华为经典UNIX 教程

目  录 第1章 UNIX操作系统概述 6 1.1 UNIX操作系统简介 6 1.2 UNIX系统组成 6 1.3 与UNIX有关的几个名词 7 第2章 UNIX常用操作 9 2.1 启动终端 9 2.2 登录 9 2.3 UNIX命令 9 2.4 注销(退出UNIX系统) 13 第3章 UNIX文件系统 ...…

查看全部问答>

申请一下,用于电子负载

以前用的是C8051F的,想改成MO。申请一下!!谢谢…

查看全部问答>

关于C51外部电平中断的简单问题

#include main() {   EA=1; EX0=1; IT0=0; while(1) P1=0xff; } void exter0() interrupt 0 { P1=0; } 就这个简单的外部中断,INT0我直接用开关接地了。为什么显示LED是闪亮的,而不是常亮的呢? 我是这样觉得的,如果不对 ...…

查看全部问答>

ARM的串口输出问题

问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添 ...…

查看全部问答>

不能下载

我用的芯片是149,并口仿真,芯片刚焊上时能下载,一段时间后就不能正常下载,老提示找不到芯片,已经换了好几块芯片了,不知问题出在什么地方,请高手指教!我快崩溃了 !…

查看全部问答>

大侠们,来帮忙分析这个电路图,一个简单的恒流充电电路

今天看到一个简单的恒流充电电路,只有降压,整流,滤波部分能够看得懂,其他的功能好像 没弄得懂,请各位高手不吝赐教:   电路图附下:  …

查看全部问答>

迎接TI杯电赛的一组LaunchPad培训作业照片

2012TI杯电赛早已结束。手机里尚有一些培训时拍的照片,主要布置学生完成的LaunchPad作业。…

查看全部问答>

MSP-EXP430FR5739开发板怎么下载程序

今天收到MSP-EXP430FR5739开发板,发现没有传统的JTAG座,我有开发板一块,光盘没有,愣是不知道这程序怎么下载进去。难道从USB吗…

查看全部问答>

寻求成熟的条码秤方案,重酬!

寻找成熟的MCU条码秤方案,个人、团队、公司等有开发能力的均可参与! 功能要求: 1,支持8台电子秤之间的通信(RS485接口);支持秤与PC之间的通信(RS232接口) 2,支持标签条码或电脑小票打印功能. 3, LCD显示(两块) 4,成本符合市场需求 ...…

查看全部问答>