STM32F407的USART1只能映射到PB6-7,如果选择PA9-10就乱码

2019-07-14 17:03发布


    完成1个工程项目设计,使用STM32F407VGT6芯片,USART1选用了PA9,PA10,板子完成后串口调试总是过不了。不得已使用STM32F4-DISCOVERY通过RS232电平转换连接到PC机串口进行RS232通讯验证。
    首先使用GPIOA-PA9,PA10映射USART1,初始化代码如下:
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        USART_InitStructure.USART_BaudRate = bound;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
       USART_Init(USART1, &USART_InitStructure);
       USART_Cmd(USART1, ENABLE);

     PC机方使用SSCOM,通讯结果是一片乱码。
   后改用PB6,PB7映射USART1,修改相关语句:
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //对不起12楼,我粘贴错了
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);


        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_USART1);
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

       USART初始化相同,不重复了。


从PB口进行,通讯结果一切正常,
查看手册:USART1可以映射到PA9,PA10或PB6,PB7,手册并未特别说明两者使用在USART1有何区别或初始化时需要做何特殊处理。百思不得其解。由于PCB版图已经制作完成,使用PA了口,现在如果从软件方面无法纠正将造成不少的浪费。
由于工程板与STM32F4-DISCOVERY板的PA口在USART1工作时出现同样故障,2片板的PA口同时损坏的机率很小,并且2片板的PA9,PA10配置为非USART1模式时工作均正常。
希望得到专家的解答。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。