默认端口复用
我们都知道APM32单片机的GPIO不仅可以用来输出和检测高低电平,而且其他外设(如USART、TMR、ADC等)在运行过程中也会使用到这些GPIO,每个GPIO都会有一些默认的复用功能,如下图
如果我不想用默认复用的功能,想用重定义的功能,该怎么编程?
完全重映射
完全重映射,有的地方也叫完全重映像,都差不多。当重定义功能只有一种时,就是完全重映射,如下图
红框中每个引脚的重定义功能只有一个,所以时完全重映射,我们来看下如何编程
使用复用功能时候,要开启复用时钟
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_AFIO);
再使用void GPIO_ConfigPinRemap(*GPIO_REMAP_T* *remap*);
函数选择需要重映射的功能。来看下该函数的注释
/*!
* @brief Changes the mapping of the specified pin
*
* @param remap : selects the pin to remap
* This parameter can be one of the following values:
* @arg GPIO_NO_REMAP_SPI1 : No SPI1 Alternate Function mapping
* @arg GPIO_REMAP_SPI1 : SPI1 Alternate Function mapping
* @arg GPIO_NO_REMAP_I2C1 : No I2C1 Alternate Function mapping
* @arg GPIO_REMAP_I2C1 : I2C1 Alternate Function mapping
* @arg GPIO_NO_REMAP_USART1 : No USART1 Alternate Function mapping
* @arg GPIO_REMAP_USART1 : USART1 Alternate Function mapping
* @arg GPIO_NO_REMAP_USART2 : No USART2 Alternate Function mapping
* @arg GPIO_REMAP_USART2 : USART2 Alternate Function mapping
* @arg GPIO_NO_REMAP_USART3 : No USART3 Partial Alternate Function mapping
* @arg GPIO_PARTIAL_REMAP_USART3 : USART3 Partial Alternate Function mapping
* @arg GPIO_FULL_REMAP_USART3 : USART3 Full Alternate Funct