stm32的TIM2的端口使用組合有下面四種:
1.當不重映射時,默認TIM2四個的IO口是PA0、PA1、PA2、PA3
2.要使用PA15、PB3、PA2、PA3的端口組合,要調用下面的語句進行部分重映射:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必須要開AFIO時鐘
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
3.要使用PA0、PA1、PB10、PB11的端口組合,要調用下面的語句進行部分重映射:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必須要開AFIO時鐘
GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE);
4.要使用PA15、PB3、PB10、PB11的端口組合,要調用下面的語句進行完全重映射:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必須要開AFIO時鐘
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);
同時還要禁用JTAG功能,PA15、PB3、PB10、PB11纔會正常輸出。
完全映射端口配置函數:
- static void TIM2_GPIO_Config(void) //CH1-PA15 CH2-PB3 CH3-PB10 CH4-PB11 重映射
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
- GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //禁止JTAG功能,把PB3,PB4作爲普通IO口使用
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 複用推輓輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_10 | GPIO_Pin_11;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- }