在配置PC13引脚的外部线中断时,配置其外挂时钟时用到了复用功能:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
原因是PC13的第一功能引脚是GPIO,第二功能引脚是TAMER-RTC1,并没有EXTI的功能,要想用它产生外部线中断,必须配置AFIO复用功能,将EXTI功能映射到PC13引脚上。
PC13引脚功能图
又例:
CAN总线用到了PB8、PB9,而这两个引脚本身没有CAN功能,需要重映射:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
PB8、PB9引脚功能图
CAN&485 TR引脚图
而有的配置是不需要配置复用功能的,例如:UASRT1的引脚PA9、PA10,它们的第二功能引脚就是USART功能,所以在使用UASRT功能的时候,就不能再AFIO配置时钟。
在配置RCC外挂时钟的时候,既要配置基础的GPIO模式,又要配置其第二功能USART的时钟。
而用到了PA9的第二引脚,有一种输出模式是复用输出模式,所以要配置成复用输出模式。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
由于USART和GPIOA都外挂在RCC_APB2上,所以参数是两个值的组合。
/* config USART1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』