在配置外部中断的时候,打开GPIO时钟的时候,也同时打开了AFIO的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);
AFIO
简单来说
MCU有对外管脚,包括CPU的管脚和内置外设(PWM,TIM,ADC……)的管脚;
他们都需要对外接口IO,但是管脚总数是有限的,有的管脚既作为普通IO,也作为外设IO,有时候甚至好几个内置外设共用一个IO,这就是管脚复用现象。
比如随便一个管脚的原理图上:
PA2/USART2_TX/ADC123_IN2/TIM5_CH3/TIM2_CH3
表明这个管脚除了作为普通PA2之外,还作为复用IO,有USART2,ADC,TIM5,TIM2等……
总结:
- 普通管脚就是GPIO,复用管脚(非普通管脚)就是AFIO;
- 只要用到内置外设的管脚,都需要打开复用IO(AFIO),比如对外输出PWM波形,使用AD转换等。
不是说使用了IO的复用功能就一定要启动RCC_APB2Periph_AFIO的Clock的,只有使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器才需要开启AFIO的时钟。
单纯的IO口复用功能不需要开启AFIO时钟,remap需要。
例子
1.外部中断
GPIO_InitTypeDef GPIO_InitStructure;//
EXTI_InitTypeDef EXTI_

最低0.47元/天 解锁文章
1694

被折叠的 条评论
为什么被折叠?



