STM32 APB2 AFIO时钟什么时候需要开启

很多人在问,RCC_APB2ENR中的AFIO位什么时候需要开启?

有的人说用到外部中断的时候打开,有的人说引脚重映射的时候打开,等等。这些答案都是片面的,而且总感觉模糊不清。甚至,有些人错误的以为,是不是用到引脚复用功能的时候就打开呢?

不用着急,瑞生今天给大家讲个明白。

请看一下STM32的目录,如下图所示,找到AFIO。

STM32手册目录的一部分

我们点击目录前面的“+”号,打开AFIO的寄存器,如下图所示:

AFIO寄存器

好了,答案出来了:当你需要配置AFIO这些寄存器的时候,就需要把RCC_APB2ENR寄存器的AFIO位置1打开AFIO时钟。

看看这些寄存器的定义,你就明白了,这些寄存器用来“事件控制”“重映射”“调试IO配置”“外部中断”。

总结:当你需要配置这些AFIO寄存器的时候,就需要打开RCC_APB2ENR寄存器的AFIO时钟。并不是用到引脚复用功能的时候打开!

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);