STM32H743 Usart1不适用于PB14和PB15

时间:2019-07-24 15:29:33

标签: c++

在对STM32H743XIH6进行编程时,usart1无法与PB14和PB15一起使用。

我在stm32h743xi上使用usart1(用于Tx的PB14,用于Rx的PB15)。事实是,我不能使usart1与PB14和PB15一起使用,但是对PA9 / PA10和PB6 / PB7来说是很好的工作。 这是我的配置:

void uart_init(void)
{       
    UART1_Handler.Instance=USART1;
    UART1_Handler.Init.BaudRate=115200;
    UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B;
    UART1_Handler.Init.StopBits=UART_STOPBITS_1;
    UART1_Handler.Init.Parity=UART_PARITY_NONE;
    UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;
    UART1_Handler.Init.Mode=UART_MODE_TX_RX;
    HAL_UART_Init(&UART1_Handler);  
    HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);
}



void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{

    GPIO_InitTypeDef GPIO_Initure;  
    if(huart->Instance==USART1)
    {
        __HAL_RCC_GPIOB_CLK_ENABLE();
        __HAL_RCC_USART1_CLK_ENABLE();

        GPIO_Initure.Pin=GPIO_PIN_14;
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;
        GPIO_Initure.Pull=GPIO_PULLUP;
        GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
        GPIO_Initure.Alternate=GPIO_AF4_USART1;
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);

        GPIO_Initure.Pin=GPIO_PIN_15;
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);

        #if EN_USART1_RX
            HAL_NVIC_EnableIRQ(USART1_IRQn);                
            HAL_NVIC_SetPriority(USART1_IRQn,3,3);  
        #endif  
    }
}

原始代码如下:

__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();

GPIO_Initure.Pin=GPIO_PIN_9;
GPIO_Initure.Mode=GPIO_MODE_AF_PP;
GPIO_Initure.Pull=GPIO_PULLUP;
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
GPIO_Initure.Alternate=GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);

GPIO_Initure.Pin=GPIO_PIN_10;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);   

PA9 / PA10可以与计算机正常通信,然后将引脚更改为PB6和PB7,也可以正常工作。

 __HAL_RCC_GPIOB_CLK_ENABLE();  
 __HAL_RCC_USART1_CLK_ENABLE();
 GPIO_Initure.Pin=GPIO_PIN_6;
 GPIO_Initure.Mode=GPIO_MODE_AF_PP;
 GPIO_Initure.Pull=GPIO_PULLUP;
 GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
 GPIO_Initure.Alternate=GPIO_AF7_USART1;
 HAL_GPIO_Init(GPIOB,&GPIO_Initure);

 GPIO_Initure.Pin=GPIO_PIN_7;
 HAL_GPIO_Init(GPIOB,&GPIO_Initure); 

使用上述配置将引脚更改为PB14和PB15时,usart1无法发送和接收任何字符,两个引脚均为3.3V。

我将不胜感激!

0 个答案:

没有答案