stm32重映射

    xiaoxiao2023-10-10  23

    stm32单片机的IO口不仅有默认的外设功能,还有重映射的外设功能。比如下面PC6不仅可以用作I2S2_MCK/TIM8_CH1/SDIO_D6,还可以重映射为TIM3_CH1

    使用stm32重映射的步骤(以把PC6重映射为TIM3_CH1为例):

    1、使能GPIOC时钟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC时钟

    2、使能TIM3时钟:

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3时钟

    3、使能AFIO时钟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    4、查该引脚重映射是部分重映射还是完全重映射,开启重映射功能。

    重映射分为部分重映射和完全重映射:

    部分重映射:功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。 完全重映射:功能外设的所有引脚都重新映射。 

    这个可以去查手册上,对外设重映射的表:

    由上图可以知道,TIM3_CH1的默认引脚是PA6,部分重映射引脚是PB4、完全重映射引脚是PC6。

    GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //完全重映射,部分重映射使用GPIO_PartialRemap_TIM3

    5、端口模式的配置

    比如TIM3_CH1用作脉冲捕获功能,配置PC6为上拉输入:

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PC6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PC6 上拉输入 GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOC,GPIO_Pin_6); //PC6 上拉

     

    附:其他外设的引脚表:

     

    最新回复(0)