内存池初始化导致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条回答
Lelouch31
1楼-- · 2019-07-20 23:21
你的问题解决了吗?我用F407进行2000Hz采样,DMA传输也发生这个问题,采样值缓存区开始几个值特别大

jiangyy
2楼-- · 2019-07-21 04:23
 精彩回答 2  元偷偷看……
jiangyy
3楼-- · 2019-07-21 07:39
 精彩回答 2  元偷偷看……
Lelouch31
4楼-- · 2019-07-21 09:40
jiangyy 发表于 2018-12-14 18:33
对,就是采样的值存在buf里面,然后打印buf里面的数值,发现很大。屏蔽了内存池初始化,就正常了。很奇怪 ...

160138fptp5mkmtdnk6lst.png 是不是这样子的,我今天中午遇到了,晚上的时候重新看了一下,我定义了两个全局变量数组,晚上的时候把另一个取消了,然后数组中数据就正常了,有可能是因为数组过大,导致数组越界,但是具体原因还是没找到,如果有什么新的发现,还请告知,谢谢你,还是想弄懂为什么出错了。

jiangyy
5楼-- · 2019-07-21 15:22
Lelouch31 发表于 2018-12-14 21:12
是不是这样子的,我今天中午遇到了,晚上的时候重新看了一下,我定义了两个全局变量数组,晚上的时候把另 ...

对的  ADC采集最大也就是12位采集,但是采集的数据存到BUF里面,明显看到BUF里面的数据已经超过0XFFF了。一起查找一下原因,看看具体是哪里问题
jiangyy
6楼-- · 2019-07-21 16:29
 精彩回答 2  元偷偷看……

一周热门 更多>