请问是什么原因导致STM32程序变大后ADC工作不正常了?

2019-07-14 15:15发布

大家有没有遇到这样的问题,程序貌似超过60多kb后adc转换出来的数据就很奇怪了,我用的是STM32L151系列的;
通过观察寄存器,adc的CR2寄存器发生了变化;
11.png
12.png
目前解决方法有两种:
        ① 控制程序不要超过60多kb;
        ② 强制将CR2寄存器赋值成正确的值;

我想知道问题的根本原因在哪儿,在此等候各位大神的回复

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
iettke
1楼-- · 2019-07-15 09:27
应该没有吧,我只是将优化等级从O0改成O1就都正常了.
wuli北
2楼-- · 2019-07-15 13:25
目前程序40多kb了
hongqiaolian
3楼-- · 2019-07-15 18:22
 精彩回答 2  元偷偷看……
hucc
4楼-- · 2019-07-15 23:20
你这是典型的栈溢出问题。O0编译,是对代码不做任何优化;O1编译是编译时进行了优化,部分问题编译时给你优化了。你这个问题查一下定义的变量以及使用
iettke
5楼-- · 2019-07-16 00:16
优化等级对RAM基本上没有影响,另外栈足够大
hucc
6楼-- · 2019-07-16 05:50
栈溢出跟栈足够大没关系。这个是编程代码规范的问题。举个例子,定义一个char变量a, 然后给个memcpy(&a,"aa",2);   之类的都会导致栈溢出。后面的栈数据会被无意识的给改变了

一周热门 更多>