一文看懂stm32的引脚的两种用途:GPIO和AFIO.doc
《一文看懂stm32的引脚的两种用途:GPIO和AFIO.doc》由会员分享,可在线阅读,更多相关《一文看懂stm32的引脚的两种用途:GPIO和AFIO.doc(4页珍藏版)》请在三一文库上搜索。
1、一文看懂stm32的引脚的两种用途:GPIO和AFIOstm32的引脚有两种用途:GPIO(generalpurposeio)和AFIO(alternatefuncTIonio)对于一些引脚(视芯片而定),这两种用途都没有,如在64脚产品中,OSC_IN/OSC_OUT与作为GPIO端口的PD0/PD1共用一样的引脚,而在100、144引脚产品中,这四个功能各有引脚与之对应,不互相冲突,所以OSC_IN/OSC_OUT既不作GPIO也不作AFIO,当然,这样的引脚不是讨论重点。1、引脚的配置不论是作GPIO还是做AFIO,都要对引脚进行配置。在固件库函数中,用GPIO_Init()函数对引脚进
2、行配置,并不是说这个函数带了GPIO字样就是要当做GPIO来用,而是把它纳入GPIO的范畴来讨论。所谓配置,就是引脚上的片上资源连接方式,如上拉电阻、密特触发等等。理解了配置,也就能明白配置与模式的区别。特别得,在下文中将会专门讨论一下输出配置中的推挽与开漏。2、复用功能复用功能有两种:没有重映像、重映像(包括部分重映像、完全重映像),使用引脚用作AFIO功能,同样需要对其进行配置。这三句话来自参考手册,但我对第一句和注意有疑问,第三节讲。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。输入配置则与GPIO没有区别。为什么输出模式有专门的复用模式而输入则没有呢
3、。因为输出是由芯片内部电路驱动的,必须选择这个驱动来自哪一个外设,是GPIO还是复用此管脚的其他外设,也就是选择该管脚在内部是与哪个外设相连的,不说明这个就会发生信号的错乱。而输入则不同了,输入信号是由芯片外的信号驱动的,虽然该信号进入芯片内部后可能有不同的去向,但不需要对此进行配置,因为不会发生信号的冲突,最坏的情况就是多驱动了个寄存器而已。事实上,当将引脚作为GPIO输入时,相应的AFIO外设是处在关闭的状态,并不会耗电;当引脚作为AFIO的输入时,可能GPIO是读不进来的,这是我猜的,没有验证,能不能读进来无所谓的,不必纠结于此。若选择了复用,则默认是没有重映像的,可以直接使用外设,不需
4、要再软件做设置。但若要重映射,则需要简单设置一下,先要配置重映射后对应的管脚,可参看参考手册或数据手册引脚定义章节,开AFIO时钟,使能重映射。例如重映射USART1,全部代码如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/*对寄存器AFIO_EVCR,AFIO_MAPR和AFIO_EXTICRX进行读写操作前,即重映射和选择外部中断线前,应当首先打开AFIO的时钟*/*ConfigureUSART1Tx(PA.09)asalternatefuncTIonpush-pull*/GPIO_InitStructure.GPIO_Pin=
5、GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure);/*ConfigureUSART1Rx(PA.10)asinputfloaTIng*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB,GPIO_InitStr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 看懂 stm32 引脚 用途 GPIO AFIO
链接地址:https://www.31doc.com/p-3362621.html