使用STM32的串口进行大量数据传输

最近的一个项目需要用单片机和上位机进行大量数据的传输,每次传输的内容为一个1000*7的矩阵,矩阵中的每个元素都是一个4位有效数字,通过字符的形式保存,(如:1.000占5个字节)简单计算一下,1000*7*5=35000Byte,也就是30几K,而单片机型号为:STM32F103ZET6, SRAM有64K 。如果直接申请一个数组来保存,占用空间太大,但是又不适合用C标准库中的malloc 进行动态内存分配,网上有人自己写的实现动态内存管理的代码,可以移植,这是第一个问题。

第二个问题是,当我在串口中断中只做一件事:将接收的数据打印到终端,不再做其他事时,数据接收到的是完整的,一开始为了节省内存,申请了一个比较小的数组,循环使用。每当接收到1024个字节就写到flash中,但是这种方式会丢包,因为在向flash中写数据的过程中,PC 端仍然在发,但是STM32却没有接收,因此造成部分数据丢失,因为时间有限,后来只好申请了一个比较大的数组将数据一次性接收,并在数据包的首尾设置标志。这样才避免了丢包的问题,但是数据太大,太占空间,现在将这个问题留在这里,等解决了再补充。大家有什么建议,欢迎指教。

你可能感兴趣的:(STM32)