关于STM32的GPIO复用功能

2019-03-23 19:58发布

一直没有明白STM32的GPIO复用功能,向大家请教一下。
下图是STM32F103的PIN定义。
STM32F103xx 引脚定义 STM32F103xx 引脚定义
个人理解如下:
上图中关于PIN的功能标识有三类:
1、主功能(复位后的功能)
2、复用默认(默认复用功能)
3、复用重映射(Remap)

以PB0为例,其主功能为PB0,即为普通的GPIO使用。
其复用默认功能有 ADC12_IN8,TIM3_CH3, TIM8_CH2N
复用重映射功能为 TIM1_CH2N

疑问如下:
1、假如我要使用其功能为普通GPIO,此时如果我启动了ADC1和ADC2(时钟使能),但是没有
使用ADC1和ADC2的通道8。此时可以作为普通的GPIO吗。
2、假绍我要使用其复用的ADC12_IN8,但在此同时,我使用了TIM3,但是没有使用TIM3的CH3
输入输出功能,此时有无问题
3、假如使用重映射,是否使能AFIO时钟后使用RemapConfig就行了

以上,希望热心同志解释下。最好能针对性的给出代码了。
谢谢。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
Li_Lei
1楼-- · 2019-03-24 15:46
你先想好了这个脚做什么,然后再写初始化程序,只能做一个用除非你愿意切来切去的。
LinkHu
2楼-- · 2019-03-24 21:12
如果使能ADC和TIM都没有问题
也就是说,复用功能不是在时钟这一块进行设置与配置的
而是在使用端口时进行的选择。好像这样的设置不合理呀。

我从手册上没有看到对应的详细解释,有没有大大们可以给出详细出处。

在M4中,其对此有修正
        //TIM3 CH1 复用端口 PA6
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                                 //选择需初始化管脚
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_TIM3);
其可以指定引脚复用源的。

一周热门 更多>