HAL_UART_Receive_IT 使用详解及代码示例 - STM32 HAL 库
HAL_UART_Receive_IT 函数是 HAL 库中的一个函数,用于接收 UART 数据并启用中断。下面是一个关于如何使用 HAL_UART_Receive_IT 函数的详细说明和代码示例:
- 首先需要初始化 UART:
// 初始化 UART
void UART_Init(void)
{
// 初始化 UART 的 GPIO 引脚
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 初始化 UART 外设
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
}
- 在主函数中启用 UART 接收中断:
int main(void)
{
// 初始化
HAL_Init();
SystemClock_Config();
UART_Init();
// 启用 UART 接收中断
HAL_UART_Receive_IT(&huart2, (uint8_t*)Rx_Data, 1);
while (1)
{
// 主循环
}
}
- 在 UART 接收中断回调函数中处理数据:
// UART 接收中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
// 处理接收到的数据
if (Rx_Data[0] == 'a')
{
// 处理 'a' 字符
}
// 重新启用 UART 接收中断
HAL_UART_Receive_IT(&huart2, (uint8_t*)Rx_Data, 1);
}
注意事项:
- 在启用 UART 接收中断之前,需要确保 UART 初始化已经完成。
- 在 UART 接收中断回调函数中,需要重新启用 UART 接收中断,否则无法接收到连续的数据。
原文地址: https://www.cveoy.top/t/topic/n6OG 著作权归作者所有。请勿转载和采集!