串口都是一次接一组数据,具体是几位要看你设置的比如9600 N,8,1那样是8个数据位,1个起始位,1个停止位(起始和停止位是芯片接收部分自己判断的)
之所以发一组都能收到是因为STM32(其实51也一样的,不信你可以试试)运行速度要远大于串口发送数据的速度。比如9600波特率,就是1秒钟发9600个位(bit)这样按N,8,1算的话是10个位(bit)是1个字节(加起始和停止位,还有8个数据位)也就是1秒钟发送960个8位数据。1/960=0.00104秒(1.04ms)发送一个字节 而单片机运行指令周期都是以us为单位的。换算下来就是也是1040us了 按51单片机1us执行一个指令的话,接受一个字节的过程中,芯片可以执行1040个指令,完全可以运算处理完成在发送回去.更何况是速度更高的STM32 1.25MPS的处理速度
接收一个字节数据的时间,够他完成N个复杂的运算处理。