stm32 全局变量自己乱变

呵呵,什么奇葩问题都能遇到。在编写stm32的程序发现一个逻辑判断功能不正常。随机调试,发现自己定义的一个全局变量在确定没有代码操作他的情况下竟然在自己乱跳。

但是真理告诉我不要怀疑芯片的问题,不要怀疑编译器的问题。但是还是忍不住怀疑了一下。然并卵……

但是呢,当我把代码里面的定时器关闭时,这个现象消失了。在定时器的中断函数中我就执行了一个操作,就是按键的扫描。后来我把按键扫描可能操作这个全局变量的地方都关了,然而,现象一直存在。从调试串口看还是在不停变化。

这时候突然脑海里闪现一下数组越界,我在按键扫描的时候定义的有数组:keyPressTime,一看原来把这个地方定义成4个,但是下面的代码我却按成6个来操作,少定义了两个。这样就造成操作后面的两个的时候就会操作成其他的内存区域,而从现象来看肯定是正好操作到这个全局的变量。就导致他不停的在变化……

所以呢当定义的全局变量不按规律变化是,可能会是完全无关的其他数组越界造成的。按变化的下标操作数组的时候要注意,在代码编译的时候是不会报错的,这种现象在运行过程中才会发现。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注