好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

gpio复用功能.doc

2页
  • 卖家[上传人]:小**
  • 文档编号:94576388
  • 上传时间:2019-08-08
  • 文档格式:DOC
  • 文档大小:58.56KB
  • / 2 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 管脚的复用功能 重映1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功 能的引出脚位是可通过程序改变到其他的引脚上!直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]【注】 下述复用功能的引出脚具有重映射功能: - 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口 - CAN模块; - JTAG调试接口;- 大部分定时器的引出接口; - 大部分USART引出接口 - I2C1的引出接口; - SPI1的引出接口;举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和 USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。

      1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚. 下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例 STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能 但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.以上是我在配置GPIO管脚PA9 PA10时没有发现的复用功能,直到我添加了RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);这个函数才通使用了IO的复用功能就一定要启动RCC_APB2Periph_AFIO的Clock的重映射步骤为:1.打开重映射时钟和USART重映射后的I/O口引脚时钟,           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);2.I/O口重映射开启.                   GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.                             GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                             GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                             GPIO_Init(GPIOA, &GPIO_InitStructure);                              GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                              GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                               GPIO_Init(GPIOA,&GPIO_InitStructure);      只需要这三步,串口就可以正常使用了,简单吧?  但是我纠结了大半个小时才搞定的,好多事情都是说起来容易做起来难的,希望我以后多多进步.不要眼高手低,嗯我正朝这个方向前进.最后总结一下:简单的说 STM32的 io 有3个功能一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用)如果配置成复用 则将使用第2个功能 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能通常一个口的 复用+重映射有好多 不止两个 这时候就看你使能哪个设备了(哪个被使能就用哪个) 开复用 + 使能设备+ 是否重映射就可以决定这个io口到底使用哪个功能别忘了开启USART1的外设时钟。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.