所有功能正常的程序,为了在加快OTA下载的速度,将原来的串口接收数组的长度1024变为3072时反而接收不到数据了,后来查看了一下内存具体如下:
free
total : 45708
used : 34944
maximum : 35540
程序编译结果:
Used Size(B) Used Size(KB)
Flash: 237788 B 232.21 KB
RAM: 19748 B 19.29 KB
项目MCU的型号是
STM32F103ZET6,ROM大小512,RAM大小64KB,所以目前没查到是什么原因造成的。之前是用3072测试OK的,后来因为功能增加所以增加了一些变量,及逻辑代码。然后就不行了,只能降低串口的bufferSize大小,不然串口数据json解析出错。然后改为1024以后json数据解析正常,所有功能正常。
有哪位大佬遇到类似状况???
这个串口是我单独开的一个串口,用的串口2的DMA接收,通过乒乓模式切换读取DMA里面的数据,然后写入flash指定的区域中,这个功能是没有问题也是跑通了的,只是后来因为增加了一些变量逻辑以后出现了这个问题,然后说是内存的问题,目前粗定位来看就是把这个bufferSize改小1024以后功能又恢复正常了,如果改回3072以后就不正常。
本项目主要实现如下功能:
1,12个温区的PID温度控制
2,modbus主机与8个电机驱动器的控制交互
3,modbus从机与触摸屏的交互
4,自定义OTA的升级,包括flash的分区管理
5,4通道AD采样检测,电压,应力
6,json数据解析及打包上传
7,其他数字信号的处理
8,片外flash数据读写
9,PWM,RTC等