使用中断接收数据,以阻塞的方式发送数据
所利用函数
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
-
UART_HandleTypeDef *huart:一个指向UART句柄结构体的指针,用于指定使用哪个UART模块进行发送。
-
uint8_t *pData:一个指向要发送数据的缓冲区的指针。
-
uint16_t Size:要发送数据的字节数。
-
uint32_t Timeout:发送数据的超时时间,单位为毫秒。如果在指定的时间内未能发送完数据,则函数会返回超时错误。
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
-
UART_HandleTypeDef *huart:一个指向UART句柄结构体的指针,用于指定使用哪个UART模块进行数据接收。
-
uint8_t *pData:一个指向存储接收数据的缓冲区的指针。
-
uint16_t Size:要接收数据的字节数
中断函数要在HAL_UARTEx_RxEventCallback回调函数中写
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
//接收到什么数据,就把什么数据发回去
HAL_UART_Transmit(huart, &rc_data, 1, 1000);
HAL_UART_Receive_IT(huart, &rc_data, 1);
}
如果要在中断函数中使用hal_delay,要降低串口的优先级,不然会卡死