if(huart1.Instance->SR&(1<<5)) //判断用的是哪个串口 串口1与上位机通信
{
HAL_UART_Transmit(&huart1,flag1,6, 0xffff); //用于测试串口是否进入中断回调
temp1 = huart1.Instance->DR; //转移接收到的数据
UartPCRXData[ReceveData_num++] = temp1;//把数据帧接收到 串口接收缓冲区
HAL_UART_Transmit(&huart1,temp1,1,0xffff);
UartPCNumOfRecvData++;
}
上面这段中断函数里面接收数据的代码有什么问题吗?为什么一直无法实现串口1中断接收来自电脑串口调试助手的字符串,然后每次都在中断里面将接收到的内容发回去呢?
不知道你这个问题是否已经解决, 如果还没有解决的话:USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。
USART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一USART 通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。