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

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

使用STM32的串口进行大量数据传输相关推荐

  1. javarxtx串口接收时数据会分成好几段_【STM32】串口通信基本原理(超基础、详细版)...

    STM32F1xx官方资料: <STM32中文参考手册V10>-第25章通用同步异步收发器(USART) 通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通 ...

  2. stm32的串口DMA空闲中断接收不等长数据,stm32F4的usart2-DMA-IDLE收发

    1. 串口为什么要使用DMA?好处? 提高系统实时性:stm32单片机的串口没有FIFO,使用字节中断的方式去接收,会频繁进入中断,影响系统实时性.好在stm32的串口可以级联DMA使用,在大数据量连 ...

  3. STM32单片机串口空闲中断+DMA接收不定长数据

    在上一篇文章STM32单片机串口空闲中断接收不定长数据中介绍了利用串口空闲中断接收不定长数据,这种方式有一个问题就是串口每接收到一个字节就会进入一次中断,如果发送的数据比较频繁,那么串口中断就会不停打 ...

  4. STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷

    STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷 http://www.openedv.com/thread-63849-1-1.html 实现思路:采 用STM32F103的串口1,并配 ...

  5. 嵌入式作业STM32采用串口DMA方式发送数据

    目录 前言 要求 一.DMA的基本介绍 DMA的基本定义 DMA的主要特征 STM32F411x系列芯片DMA控制器 二.通过CubeMX配置项目 1.创建项目 2.选择芯片STM32F103C8T6 ...

  6. stm32与GPS模块的数据传输,最后把数据传回到电脑上

    stm32与GPS模块的数据传输,最后把数据传回到电脑上 准备工作 GPS(G28Z2FTTL)模块介绍 GPS数据类型及格式 代码部分 串口初始化部分 GPS部分代码 数据展示 准备工作 stm32 ...

  7. 嵌入式STM32入门之STM32基础串口通信

    STM32基础串口通信 一.前言 二.串口协议 (1)浅谈设备通信方式 (2)具体串口协议 (3)STM32的串口通信 (4)RS-232通信协议 (5)USB To TTL(CH340) 5.1 C ...

  8. 【STM32】 STM32 F4 串口通讯

    概念 串口,即串行接口,是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件. 串口通信(Serial Communic ...

  9. 【星曈科技】OpenMv笔记——利用OpenMV与STM32进行串口通信

    利用OpenMV与STM32进行串口通信 OpenMV端的程序 # Untitled - By: dell - 周一 7月 19 2021# Blob Detection and uart trans ...

最新文章

  1. ios tableview 滑动到底部
  2. 这个机器人一个表情,看过的人不寒而栗
  3. 公众号 关注_微信公众号关注图文跳转网页如何操作实现?
  4. LED适用范围及寿命
  5. presto spill to disk
  6. matlab线性串联校正,基于MATLAB串联超前校正设计.ppt
  7. 提高github访问速度(深入研究底层网络通信、域名解析等原理)
  8. 如何查看自己运行ubuntu是32位还是64位
  9. 求序列中第k大的元素(划分树模板)
  10. docker 删除默认连接_database – 如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?...
  11. 2017-09-16
  12. SO – Shipping – Move Order Staus: BackOrder – 做搬运无法移仓
  13. SOLD2算法详解之1 backbone(CVPR2021 源码解析)
  14. Radon变换主要知识点
  15. 思泰克IPO过会:上半年营收1.9亿 元禾璞华与赛富金钻是股东
  16. PS制作渐变金属文字
  17. python进行数据处理_用python进行数据分析(二:数据处理)
  18. 如何将自己的电脑用作本地服务器进行测试服务器
  19. 解决方案~Microsoft Security Client OOBE 程序错误
  20. UVALive - LED Circuit(Spfa)

热门文章

  1. 【ManageEngine】ServiceDesk Plus荣获2022安全样板工程数据安全奖
  2. 什么是CAA? 如何解决CAA未授权问题?
  3. 分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
  4. 一分钟学一个 Linux 命令 - ls
  5. 贵州平坝集圣中学2021高考成绩查询,平坝县集圣中学2021年排名
  6. Expression Web-您的新PHP工具包
  7. java 新手入门电子书_java基础知识(适合新手入门).pdf
  8. VS2019 C++的跨平台开发——C# WPF
  9. Android Studio插件给你带来开发便利
  10. 关于Solidworks2020无法更改中文的问题解决