void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(uartHandle->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* USART1 clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ }
时间: 2024-04-27 12:22:40 浏览: 182
STM32-uart.rar_STM32串口2代码_STM32串口配置_stm32 串口 uart_串口2通信
这段代码是 USART1 的 MSP(MCU Support Package)初始化函数,用于初始化 USART1 的时钟、GPIO 引脚和中断。在该函数中,首先判断传入的 UART 句柄所对应的 USART 实例是否为 USART1,如果是,则执行 USART1 的初始化流程。
在该函数中,使用了 `__HAL_RCC_USART1_CLK_ENABLE()` 函数启用了 USART1 的时钟,并使用 `__HAL_RCC_GPIOA_CLK_ENABLE()` 函数启用了 GPIOA 的时钟。然后,通过 `GPIO_InitStruct` 结构体对 GPIO 引脚进行了配置,设置了 PA9 引脚为复用推挽输出模式,用于 USART1 的 TX 引脚;设置了 PA10 引脚为输入模式,用于 USART1 的 RX 引脚。接下来,使用 `HAL_GPIO_Init()` 函数初始化 GPIO 引脚。
最后,使用 `HAL_NVIC_SetPriority()` 函数设置 USART1 中断的优先级为最高,并使用 `HAL_NVIC_EnableIRQ()` 函数使能 USART1 中断。
阅读全文