询问stm32 使用keil 编译器的变量误修改问题?

2019-10-15 20:10发布

你好,原子哥!
我长期受困于keil 编译stm32时,一些变量的意外修改,产生的程序经常性紊乱,并不死机,程序还可以继续执行,只是一些数据被无故串改了,比如有几个结构体成员变量,是一些计数值,偶尔突然变化。
还有一个现象比如
    void   DelayMs(void )

           While(!b_1ms);    这个标志在定时器中置1,但是这一句死在这里,打断点看值也是1.
            b_1ms =0;
   }
以上就是我非常困惑的地方,变量的定义我使用了很多结构体,变量也很多,但是启动文件我没有改过堆栈,不知道是不是栈区太小导致的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-10-16 02:06
堆栈改大,另外你这种定时方式不好。
jinggx
2楼-- · 2019-10-16 07:41
你这个变量必须定义成volatile类型,为啥你的方式不行,可以去看看编译后的汇编代码。
jinggx
3楼-- · 2019-10-16 11:13
 精彩回答 2  元偷偷看……
qiuyutears
4楼-- · 2019-10-16 11:54
正点原子 发表于 2017-1-1 19:16
堆栈改大,另外你这种定时方式不好。

我发现可能是结构体成员的内存对齐问题

一周热门 更多>