情况一:PA15和PB3和PB4三个引脚当作GPIO来使用
// 启用 AFIO(Alternate Function I/O)时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
// 禁用 JTAG(Joint Test Action Group)调试功能以释放引脚
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
情况二:重映射定时器或者其它外设的复用引脚
// 启用 AFIO(Alternate Function I/O)时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
// 部分重映射 TIM2,这会将 TIM2 的部分引脚重映射到其他引脚
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
情况三:如果重映射正好是JTAG调试端口
// 启用 AFIO(Alternate Function I/O)时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
// 部分重映射 TIM2,这会将 TIM2 的部分引脚重映射到其他引脚
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
// 禁用 JTAG(Joint Test Action Group)调试功能以释放引脚
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
当你启用 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
时,你实际上是启用了 AFIO(Alternate Function I/O)时钟。AFIO 模块是用于配置 GPIO 引脚的交替功能的模块。启用这个时钟允许你配置 GPIO 引脚的交替功能,比如重映射。
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
用于启用部分重映射功能,将 TIM2 的部分功能映射到 GPIO 引脚上。在这里,我们启用了第一种部分重映射功能,将 TIM2 的部分功能映射到了 GPIO 引脚上。
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
用于禁用 JTAG 接口,并释放 JTAG 相关引脚,使它们可以用作普通的 GPIO 引脚。这个操作可能会与其它功能映射冲突,所以在需要使用 GPIO 引脚时,可能需要禁用 JTAG 接口。