一、串口中断
实现方法:
(1)uint8_t receivebuffer[50];
先定义一个接收缓存区,用一个数组来装载从串口调试助手接收的数据。
(2)
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Receive_IT(&huart1,(uint8_t*)receivebuffer,9);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
采用中断接收模式,接收串口调试助手发来的数据,进入中断。
(3)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
UNUSED(huart);
HAL_UART_Transmit(&huart1,(uint8_t*)receivebuffer,strlen((char*)receivebuffer),0xffff);
}
中断回调函数,执行中断程序:单片机发送接收到的数据。
二、串口三种传输方式
(1)阻塞传输:调用这个函数并在等待时间内一直等待操作完成。不会引发中断,前者相当于printf。
HAL_UART_Transmit
HAL_UART_Receive
(2)中断传输
HAL_UART_Transmit_IT//没有等待时间
HAL_UART_Receive_IT//没有等待时间,数据字节数超过设定个数引发中断。
(3)DMA传输
HAL_UART_Transmit_DMA
HAL_UART_Receive_DMA