STM32怎么接收不定长串口数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32怎么接收不定长串口数据相关的知识,希望对你有一定的参考价值。

不知道你使用的是hal库?标准库?起始可以使用IDLE 中断,可以实现不定长串口数据,另一种方法就是有一个结尾界定符,只有收到结尾界定符才认为接收完成。 参考技术A 使用串口超时接收方式(适用于所有类型MCU)
原理,串口每接收一个字符,清除定时器超时计数;接收数据全部完成后,就不再清除定时器计数,定时器就会产生超时中断,提示用户数据帧已经接收完成。
硬件资源:UART一个,1ms周期定时器一个;

STM32怎么接收不定长串口数据

接收陀螺仪的数据,如果收到的第一个字节不是0x55,就不接收。。此时counter是不增加的。。

如果接收到的第一个字节是0x55,counter自增,收到的数据暂存至 Temp。。。
当 counter自增到11时,将Temp收到的数据存至Re_buf,同时counter清零,sign置1

第一行的意思是 表示 如果接收寄存器非空,即有数据,那么判断为接收中断
第五行 是跳出中断
参考技术A 可以在发送数据的结尾加上一个标识符,判断是否接受完成

以上是关于STM32怎么接收不定长串口数据的主要内容,如果未能解决你的问题,请参考以下文章

STM32标准库_04 | 串口接收不定长数据

STM32G431 CubeMx HAL库——使用IDLE+RXNE实现串口不定长数据接收

STM32F103VET6基于STM32CubeMX创建串口中断+ DMA 不定长数据接收

STM32 | 串口空闲中断接收不定长数据(DMA方式)

STM32F4 DMA接收串口定长数据,串口每秒来1000个数据,使用DMA-Normal模式

STM32F4 DMA接收串口定长数据,串口每秒来1000个数据,使用DMA-Normal模式