用CUBEMX配置了USART3,初始化中有个remap函数,debug到那仿真器就会掉

2019-10-14 23:34发布

  else if(uartHandle->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspInit 0 */

  /* USER CODE END USART3_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_USART3_CLK_ENABLE();

    /**USART3 GPIO Configuration   
    PD8     ------> USART3_TX
    PD9     ------> USART3_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_8;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    __HAL_AFIO_REMAP_USART3_ENABLE();    //就是这个函数,我debug的时候,一运行到这个函数,仿真器便会自动断开。查了这个函数,是使能 FULL_MAP(完全映射),使能后就是PD8 和 PD9。

  }
硬件上,板子的PD8和PD9,一开始是连接在FPGA上的,FPGA并没有用到这两个IO,未做处理,MCU也未做处理。现在想用usart3做一下上位机的串口通信测试,于是在板子PD8和PD9的过孔处接了两根线引出了TX RX,外加一根地线。可是问题现在就是初始化过不了,用cubemx直接生成的代码。对了,芯片是103VFTx(100pin)。
小弟不知道是不是配置不正确,还是怎么回事。PD口的时钟在GPIO.C中已使能,使能了usart3的时钟,使能了 完全重映射 ,实在不知道哪里错了。对了,闲置状态下,我测了下 RX TX的电平,都是高电平。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。