STM32单片机的GPIO功能复用及AFIO时钟

STM32单片机的GPIO功能复用及AFIO时钟

前言

在使用STM32单片机时会发现,使用一些GPIO的一些功能的时候需要开启AFIO的时钟,但有时候却不开启AFIO的时候也可以用,外部中断的时候也需要开启这个时钟,通过查询网络上的一些资料和开发手册,把这个问题基本弄明白了,在这里简单记录下。

GPIO功能复用与重映射

从参考手册中可以看出,功能复用就是把GPIO的输入输出控制器与原有的输入输出寄存器断开,连到相应的外设上面,因此IO便受相应外设的控制。手册里也介绍了输入输出时复用功能应该配置的模式。

很多外设除了默认的使用的IO口,还可以进行重映射,映射到别的IO上面,这个在F103中是通过端口的重映射来进行配置的。

以定时器2为例,它可以进行多种重映射,如果把对应的寄存器配置了,它就会内部连接到对应的GPIO上面。

这还有一个问题,同时,一个IO会连接了内部的多个外设,这些外设同时只能使用其中的一个。可以这样说,GPIO的重映射操作就是改变了外设与GPIO之间的内部连接。

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);//进行TIM3部分重映射

GPIO AFIO时钟

那么,什么时候需要开启AFIO的时钟呢?

可以看出,开启GPIO的复用时钟与使用GPIO的复用功能没有必然的联系,如果需要操作这些寄存器,要先开启AFIO时钟。如果我们使用的是一个GPIO的默认复用功能,就不需要改变这些寄存器,也就不需要开启AFIO时钟,如果进行了重映射的改变,外部中断线连接的配置,都改变了这些寄存器的之一或部分,所以需要开启AFIO时钟。

注意:在使用外部中断的时候也要开启GPIO的复用功能时钟,这个不要忘记。如果有GPIO的复用功能不能正常使用或者外部中断不能正常触发,不要忘了检查AFIO时钟是否开启。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//开启GPIO复用时钟

相关文章

莆田市人口2024年总人口数数据情况
BET3365手机下载

莆田市人口2024年总人口数数据情况

🌱 10-07 💬 842
血色残阳
365bet品牌中文网

血色残阳

🌱 01-11 💬 441
如何提高手机触摸屏的灵敏度
BET3365手机下载

如何提高手机触摸屏的灵敏度

🌱 08-12 💬 605