精华内容
下载资源
问答
  • 复用功能重映射

    2016-05-17 13:14:00
    下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例.. 因为我要一个TFT_LCD屏的主控板,考虑到FSMC 我选用了STM32F103VCT6 型号的CPU,一不小心串口接到USART1上了.因为在调...

    下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例..

            因为我要一个TFT_LCD屏的主控板,考虑到FSMC 我选用了STM32F103VCT6 型号的CPU,一不小心串口接到USART1上了.因为在调程序时才发现错了,没得办法,只能通过端口重映射来解决.但是以前没用过端口重映射,只闻其名,未用其身,所以..呵呵 ...只能从头去看了.

             STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.读到这里相信大家都应该了解了端口重映射的一些概念了.原理上的东西不细说了,大家可以看手册或者网上查,这方面的资料还是很多的.下面说说我的调试经历.

            不知道是什么原因 PCB制图时把串口接到USART1上了,当时也没在意,等我把USART测试程序写好烧进去硬件仿真时,串口给的是乱码,我当时就觉得奇怪.把程序检查了好几遍就是查不出问题来,以为是硬件有问题,但突然想到了STM有复用功能,心想会不会是这里有鬼?于是找来datasheet 一看 ,真相大白

     

    三个红框交汇处.STM32F103VCT6 这个CPU的USART1接的是PB6/PB7 但是上电初始化后默认功能并非是USART1.所以想要用串口功能 .必须用端口重映射..

       大家知道,STM32的单片机每个功能模块有自己的时钟系统,所以要想要调用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的 io 有3个功能一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用)
    如果配置成复用 则将使用第2个功能 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能
    通常一个口的 复用+重映射有好多 不止两个 这时候就看你使能哪个设备了(哪个被使能就用哪个) 
    开复用 + 使能设备+ 是否重映射就可以决定这个io口到底使用哪个功能

    转载于:https://www.cnblogs.com/alantechnique/p/5501211.html

    展开全文
  • STM32Fxx JTAG/SWD复用功能重映射

    千次阅读 2018-03-21 20:07:29
    直接配置GPIOx_MODER为输出,或输入模式即可,但是注意:STM32F4复位后JTAG对应的管脚的GPIOx_MODER值是0x02,即 复用功能!所以直接配置GPIOx_MODER为所需的模式就可以了! 其中调试接口就是系统功能,这样需要禁用...

    问题描述

     

             在实验室调车过程中,遇到的一个问题:为了每次下载程序方便,队员们往往会把Jlink插在板子上,可是在调车过程中发现,有时程序会莫名死掉,而同样的程序,把Jlink拔了,却不会出现此问题。且设置PB3,PB4均为输出口,且输出高电平,用万用表测量,PB4为高,PB3不是高电平,在看MDK 中的寄存器值,PB3,PB4都是高啊?寄存器的值怎么和实际的值不一样了?

     

          经过仔细研究找到了症结所在:

    查看手册后发现在在复位后JTAG接口的PB3被设置为浮空(如果在该引脚悬空的情况下,读取该端口的电平是不确定的。)了,所以读回来的电平也是不确定的。

     

          STM32 的 PA13/PA14/PA15 PB3/PB4 主要是用来JTAG调试用的,于是在默认下是启动后为JTAG模式,项目程序中用到这几个引脚作为了普通I/O口,但却并没有对其进行I/O模式配置初始化。因此对于不需要JTAG,而需要充分利用GPIO口时,就需要将JTAG关闭,使能SWD,此时PA15/PB3/PB4便可作为普通IO用了。

     

     

    STM32F103的用法


    /*--JTAG-DP禁止,SW-DP允许, PA13, PA14用于调试仿真。PA15, PB3, PB4可用于SPI3--*/
        AFIO->MAPR &= 0x00FFFFFF; //
        AFIO->MAPR |= 0x02000000;


     

    //关闭JTAG,保留SWD
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

     

    工程代码实例:

     

     

    STM32F407的用法

     

          使用STM32F系列,会遇到将JTAG口复用为SPI1或直接用做普通IO。

    针对于F1系列,需要先禁止使能 JTAG,然后将其复用为其他口或者普通IO。 
    针对F4系列,STM32F4库函数中,已经取消了GPIO_*PinRemapConfig()函数,对于复用功能使用GPIO*_PinAFConfig()函数了! 
    但是在GPIO_PinAFConfig()函数已经没有禁止JTAG/SW等选项了,而是复用到AF0~AF15线上,其中AF0是系统功能(也是复位初始功能)。STM32F4复位后JTAG对应的管脚的对应的功能就是AF0,(GPIO_AF_MCO=0) 所以这句可以不用:GPIO_PinAFConfig( ,,GPIO_AF_MCO);

    直接配置GPIOx_MODER为输出,或输入模式即可,但是注意:STM32F4复位后JTAG对应的管脚的GPIOx_MODER值是0x02,即 复用功能!所以直接配置GPIOx_MODER为所需的模式就可以了!
    其中调试接口就是系统功能,这样需要禁用JTAG功能只需把引脚复用到AF1~AF15中的一个就行了。 

    注:
    1.直接复用就可使用相应的复用功能,不用想着失能JTAG了。 
    2.最好不要 将JTAG复用为普通IO。 
    3.PB3 PB4将其作为普通IO输出也可以,不过调试下载需要使用SWD下载调试。 
    4.如果将所有的JTAG口作为GPIO使用,将会导致无法找到JTAG和SW设备,板子下不进去程序。

     

    拓展:

    STM32在程序中禁用JTAG功能后会出现不能进行JTAG仿真的现象。

    在程序中,通常禁止JTAG的函数如下所示:

     //改变指定管脚的映射  GPIO_Remap_SWJ_Disable SWJ 完全失能(JTAG+SW-DP)

     GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

     //改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable JTAG-DP 失能 + SW-DP使能

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

    当设置了以上语句后,当运行了这两个语句后,JTAG仿真就与目标失去去联系。

    解决办法有:

    1、设置启动模式为ISP模式(BOOT0=1、BOOT1=0)或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。

    将开发板断电后重新上电,此时就因不是在用户程序模式,因此就不会执行禁用JTAG的语句,JTAG功能也就可以正常使用。

    2、设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可恢复JTAG功能。

    3、如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。直接将仿真器的模式设为SWD模,就可以不受这个禁止JTAG功能的影响了。

     

    参考资料来源:

    STM32小问题-复用调试接口JTAG/SWD为普通GPIO

    http://blog.csdn.net/wg1194024093/article/details/54849686

    STM32常用管脚重定义外设

    http://blog.sina.com.cn/s/blog_a07a3f180101e6ow.html

    STM32f1 中JTAG引脚作为普通IO口设置方法以及STM32f4中的方法的不同

    http://blog.csdn.net/wangyinyun1/article/details/48239725

    展开全文
  • 文章内容为STM32的GPIO的复用功能重映射功能相关知识。
  • 【STM32】谈谈STM32F10XX的定时器通道复用功能重映射

    千次阅读 多人点赞 2019-04-14 09:19:50
    关键词:STM32 定时器 重映射 复用 这是我PCB文件原理图中的STM32F103单片机,观察仔细的读者可以看到有些时钟通道重复了多次: 没错,这些就是可配置的定时器通道。在STM32中文参考手册的8.3.7章节...

    写这篇的动机是我每次配置定时器硬件PWM的时候都要翻一遍手册,对着目录找内容实在麻烦,干脆写一篇博文直接pick出这一段。

    本文参考:正点原子提供的STM32中文参考手册

    关键词:STM32 定时器 重映射 复用


    这是我PCB文件原理图中的STM32F103单片机,观察仔细的读者可以看到有些时钟通道重复了多次:

    没错,这些就是可配置的定时器通道。在STM32中文参考手册8.3.7章节介绍了定时器复用功能重映射

    F10xx中具有硬件PWM功能的定时器只有TIM1,TIM2,TIM3,TIM4,我把其中的表格都列出来了:

    举例:

    我要使用TIM3定时器的四个通道分别控制四路电调,他们在设计时连接在PB4、PB5、PB0、PB1上,

    表42可知,此时应该使用TIM3_REMAP[1:0] = 10 (部分重映像) ,所以在时钟开启后,加上一句重映射的语句即可:

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

     

    展开全文
  • 复用重映射

    2020-05-02 22:05:51
    1.复用:某些端口不仅可以做通用IO口,还可以用作某些外设的引脚。如: PA9、PA10可以用作串口的引脚。...2.重映射:把某些端口的功能转移到其他端口上,如PA9、PA10通过配置重映射到PA6、PA7上。 ...

    1.复用:某些端口不仅可以做通用IO口,还可以用作某些外设的引脚。如:
    PA9、PA10可以用作串口的引脚。
    2.重映射:把某些端口的功能转移到其他端口上,如PA9、PA10通过配置重映射到PA6、PA7上。

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

    2020-10-19 10:03:17
    端口的复用重映射 什么叫端口的复用? 一个引脚既能当IO用 又有其他的第二功能 那么如何配置端口呢? 1.IO口使能 2.复用端口使能 两个时钟都要打开,缺一不可!! (ps:只要用到IO口就要打开IO口的时钟,只要用到...
  • stm32端口复用重映射

    万次阅读 多人点赞 2018-04-01 11:35:43
    端口复用重映射都是和单片机的I/O口有关系,端口复用是将一个I/O赋予多个功能,通过设置I/O的工作模式来切换不同功能重映射是将某些I/O口上面的功能映射到其他I/O口上面去。但是注意一点:重映射的I/O都是厂家...
  • GPIO的复用重映射

    千次阅读 2020-01-17 10:21:34
    学习笔记:端口复用和重映射 一、复用功能(AF) 使用默认复用功能前必须对端口位配置寄存器编程。 ● 对于复用的输入功能,端口必须配置成 输入 模式(浮空、上拉或下拉) 且输入引脚必须由外部驱动 ● 对于复用输出...
  • 端口复用重映射

    千次阅读 2016-08-31 17:34:33
    端口复用的意义 使IO口得到最大限度的复用 端口复用的配置GPIO_Init() 1使能GPIO 2外设时钟使能 3初始化IO工作模式 STM32端口复用文档分析 端口重映射的意义 方便PCB设计布线,减少信号...STM32端口重映射文档源码分析
  • 端口复用重映射

    2020-01-12 19:51:10
    PA9 PA10就是端口复用,只用通过端口复用,才可以实现丰富强大的外设功能 以PA9 PA10复用为例: 端口重映射基本定义 例如:PA2 PA3为串口2的发送 接收引脚,但也可以映射到PD5 PD6引脚 端口重映射...
  • 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)   端口复用功能 端口复用的定义 STM32有许多的内置外设(如串口、ADC、DCA等等),这些外设的外部引脚都是和GPIO复用的。也就是说,一个GPIO如果...
  • 端口复用重映射

    2018-12-03 23:19:00
    1.端口复用  原本是IO口但是通过复用外设,需要先使能...2.端口重映射  配置过程:  A.使能GPIO时钟(重映射后的时钟)  B.使能功能外设时钟(例如串口1)  C.使能AFIO时钟,重映射必须使能AFIO时钟   ...
  • 端口的复用重映射 什么的端口的复用? STM32端口复用在那里查找? 端口复用如何配置? 将GPIOA的PB9端口复用为USARTI_TX串口发送功能要进行如下操作 第一步:GPIOx端口使能 第二步:USARTx端口使能 第三步...
  • 端口复用重映射都是和单片机的I/O口有关系,端口复用是将一个I/O赋予多个功能,通过设置I/O的工作模式来切换不同功能重映射是将某些I/O口上面的功能映射到其他I/O口上面去。但是注意一点:重映射的I/O都是厂家...
  • 端口复用重映射
  • STM32之端口复用重映射

    千次阅读 2018-08-31 10:42:18
    STM32 ——端口复用重映射 ...
  • STM32端口复用重映射

    千次阅读 2018-09-20 09:22:30
    牢记STM32的单片机每个功能模块有自己的时钟系统,所以调用32的任何模块都要配置时钟,端口复用重映射也是如此
  • 端口复用重映射都是和单片机的I/O口有关系,端口复用是将一个I/O赋予多个功能,通过设置I/O的工作模式来切换不同功能重映射是将某些I/O口上面的功能映射到其他I/O口上面去。但是注意一点:重映射的I/O都是厂家...
  • 文章目录端口复用端口重映射 端口复用 WHAT IS 端口复用? 一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用 端口复用配置过程(以串口1位例) 1.GPIO端口时钟使能 2....
  • 端口复用重映射 端口复用 端口重映射 端口复用: 1.1什么是端口复用: STM32有很多的内置外设,这些外设的外部的引脚都是与GPIO复用的,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设...
  • STM32的AFIO时钟真的是在开启引脚复用功能的时候开启吗?其实并不是~ 什么是复用? 我们知道,STM32有很多外设,这些外设的外部引脚都是与GPIO共用的。我们可以通过软件来配置引脚作为GPIO引脚还是作为外设引脚...

空空如也

空空如也

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

不同复用功能的重映射