STM32
直播中

卢表镜

7年用户 1040经验值
私信 关注
[问答]

STM32L051程序烧入后第一次跑是正常的,后面不管是直接debug复位,还是重上电都无法重新给变量赋值,为什么?

芯片用的STM32L051,程序烧入后第一次跑是正常的,后面不管是直接debug复位,还是重上电,都无法重新给变量赋值,直接为0,很奇怪,找了一圈找不到答案,希望能有大佬能解答一下

回帖(1)

tulin

2024-3-26 18:10:18
可能存在以下几种原因导致无法重新给变量赋值:

1. 全局变量没有正确初始化:检查是否在全局变量定义的地方为其赋初值,或者在`main()`函数之前的初始化函数中正确初始化全局变量。

2. 变量被定义为`const`或者`volatile`类型:如果变量被定义为`const`或者`volatile`类型,在程序运行期间可能无法修改其值。

3. 变量被定义在只读存储器中:检查变量是否被定义在只读存储器(如Flash)中,只读存储器中的数据无法修改。

4. 中断或异常处理代码中修改了变量的值:如果中断或异常处理代码修改了变量的值,可能会导致无法重新赋值。确保在中断或异常处理函数中正确处理变量的修改。

5. 程序代码有错误导致未能正确执行赋值操作:检查代码中是否有逻辑错误,例如条件判断错误、循环错误等,导致未能正确执行赋值操作。可以使用调试器进行单步调试,查看代码的执行流程和变量的值变化。

如果以上方法无法解决问题,建议提供更详细的程序代码和相关信息,以便更好地帮助你解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分