发新帖我要提问
12
返回列表
打印
[STM32F1]

STM32遇到一个很棘手的问题,不知道有相同遭遇的没...

[复制链接]
楼主: chejun86
手机看帖
扫描二维码
随时随地手机跟帖
21
lr2131| | 2014-6-9 17:38 | 只看该作者 回帖奖励 |倒序浏览
确实很棘手,看得都很棘手

使用特权

评论回复
22
HORSE7812| | 2014-6-9 18:39 | 只看该作者
:)

使用特权

评论回复
23
加油。。。。

使用特权

评论回复
24
江枫渔火| | 2014-6-9 19:04 | 只看该作者
我猜一般是低级错误。

使用特权

评论回复
25
suiyy| | 2014-6-9 19:55 | 只看该作者
chejun86 发表于 2014-6-9 09:51
我定义的变量其实和串口工作没任何关系的,刚又调试了下,如果把这个变量在当前文件中的位置做改变,程序 ...

你说的是有可能的,我建议你先注释掉变量相关内容看看情况。
你说的涉及到内存溢出问题:1,数组问题(查询你的数组使用情况)。2,堆栈溢出,STM32默认的栈空间不大,如果函数内临时变量比较大时很容易超出。3,如果你用了外部RAM,分散加载时是否这两个文件在不同的RAM区间。
所有说的这么多都是假设你串口通信没有任何问题的情况下,所以但你注释掉该变量相关内容时就应该通信正常

使用特权

评论回复
26
chejun86|  楼主 | 2014-6-9 20:26 | 只看该作者
通宵敲代码 发表于 2014-6-9 17:16
未声明,先使用??

这个不会,如果是这样,编译器就会提示了

使用特权

评论回复
27
chejun86|  楼主 | 2014-6-9 20:28 | 只看该作者
suiyy 发表于 2014-6-9 19:55
你说的是有可能的,我建议你先注释掉变量相关内容看看情况。
你说的涉及到内存溢出问题:1,数组问题(查 ...

是啊,没有这个变量是没有任何问题。我到时仔细检查下是否有可能是数组越界的问题...都搞的头大了 ...呵呵

使用特权

评论回复
28
chejun86|  楼主 | 2014-6-9 20:29 | 只看该作者
ZhangStudy 发表于 2014-6-9 16:31
一般是你的其他地方使用了没有赋初值的指针(俗称野指针);或者是使用某个数组越界了,也就是定义了四个元 ...

这个越界的问题我会多看看...

使用特权

评论回复
29
suiyy| | 2014-6-9 20:48 | 只看该作者
chejun86 发表于 2014-6-9 20:28
是啊,没有这个变量是没有任何问题。我到时仔细检查下是否有可能是数组越界的问题...都搞的头大了 ...呵 ...

我们在复杂项目上采用的方式是一个线程一个线程的排查,这就需要你对程序结构非常清楚,迅速定位

使用特权

评论回复
30
happyming0809| | 2014-6-9 21:06 | 只看该作者
你stm32启动是正常启动还是?

使用特权

评论回复
31
lhtzyn777| | 2014-6-9 21:08 | 只看该作者
这种问题我遇到过,一般是由于堆栈或者字节对齐导致的,你可以查看MAP文件,看看变量分配的位置变化,找找问题。

使用特权

评论回复
32
通宵敲代码| | 2014-6-9 21:10 | 只看该作者
chejun86 发表于 2014-6-9 20:26
这个不会,如果是这样,编译器就会提示了


也对

使用特权

评论回复
33
chejun86|  楼主 | 2014-6-12 22:49 | 只看该作者
lhtzyn777 发表于 2014-6-9 21:08
这种问题我遇到过,一般是由于堆栈或者字节对齐导致的,你可以查看MAP文件,看看变量分配的位置变化,找找 ...

这个我也看过,只不过看不出到底这种位置变化有什么影响?或者说我即使看到变量的内存地址正常在0x300,而不正常的时候在0x304.可这样能看出什么原因呢?

使用特权

评论回复
34
lhtzyn777| | 2014-6-13 21:52 | 只看该作者
chejun86 发表于 2014-6-12 22:49
这个我也看过,只不过看不出到底这种位置变化有什么影响?或者说我即使看到变量的内存地址正常在0x300, ...

我只能说向这个方向怀疑,你得自己慢慢查一下

使用特权

评论回复
35
朝阳之光| | 2014-6-14 08:44 | 只看该作者
好奇怪的问题啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则