内存池初始化导致ADC采集数据存到BUF里面异常?

2019-07-20 04:33发布

  今天我将LED,DMA,I2C,USART,TIMER,MALLOC,ADC,LAN放在一起。因为用到网络通信这块,初始化  my_mem_init(SRAMIN)  的时候,也就是初始化内部内存池,采集的ADC值是存放在一个u16 buf[32]里面,结果取出数据的时候,发现异常,比如取出数组一个buf[0]的时候,发现数值居然是0xc2d3;相当于已经超出ADC采集的最大12位 0xfff,当我屏蔽掉 my_mem_init(SRAMIN) 这个时候,结果正常了。网上关于内存管理,资料很少。请求原子哥或者高手,解答一下我的燃眉之急。谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
jiangyy
1楼-- · 2019-07-20 06:19
问题解决了,发现是工程里面有BUG。新建一个工程,移植过去就好了。其次就是,内存池管理,分配的空间不要过大,不然也会影响采集的数据存到数组里面有异常。
正点原子
2楼-- · 2019-07-20 09:08
内存管理和你的ADC没毛关系啊。。。
szczyb1314
3楼-- · 2019-07-20 09:59
 精彩回答 2  元偷偷看……
jiangyy
4楼-- · 2019-07-20 10:55
szczyb1314 发表于 2018-12-14 08:13
u16 buf[32]是全局变量吗?试试内存管理的数组改小点,但是两者真的没关系啊

是全局变量,我也觉得很奇怪,但是确实发生了这个现象。管理的数组改小了,也没用,是不是内存管理导致内存地址和我的buf内存地址有交叉还是什么?
jiangyy
5楼-- · 2019-07-20 16:31
正点原子 发表于 2018-12-14 02:30
内存管理和你的ADC没毛关系啊。。。

是啊,我也觉得很奇怪。但是屏蔽掉了内存初始化函数,就正常了。原子哥,能解释一下吗?
szczyb1314
6楼-- · 2019-07-20 20:51
 精彩回答 2  元偷偷看……

一周热门 更多>