UART4重映射问题

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);


    GPIO_PinRemapConfig(GPIO_FullRemap_USART4, ENABLE);     //重映射

    /* USART4 TX-->B.00   RX-->B.01 */

    GPIO_PinRemapConfig(GPIO_FullRemap_USART4, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOB, &GPIO_InitStructure);



    /* USART4 TX-->C.10   RX-->C.11 */

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOC, &GPIO_InitStructure);


默认是   /* USART4 TX-->C.10   RX-->C.11 */

重映射后引脚不变化,还是C.10输出数据,如何才能改到 /* USART4 TX-->B.00   RX-->B.01 */

您好,使用重映射引脚对串口进行初始化的时候,需要开启复用时钟,此外建议在初始化的时候,只对用到的GPIO引脚进行初始化配置即可。


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);

    /* USART4 TX-->B.00   RX-->B.01 */

    GPIO_PinRemapConfig(GPIO_PartialRemap_USART4, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

第一次用复用功能,不知道还要开启复用时钟 RCC_APB2Periph_AFIO

开启复用时钟,测试正常。


您好,您是用IO去模拟的UART功能还是调用接口配置的呢?能否发一下UART4完整的配置?我也是复用的这两个引脚但是没有输出。万分感谢!



您好,若你使用的MCU是CH32F203CBT6,是没有串口4的,下帖已回复你

/bbs/thread-101908-1.html

 


只有登录才能回复,可以选择微信账号登录