pcb_diy 发表于 2023-12-24 09:20:01

STC32G128K一个全局变量在运行的时候被修改?

最近在用STC32G128K做一个小项目。定义了一个全局变量,在运行后会被修改。在初始化后,只要程序一运行这个变量值就不知道被什么给修改了。在其它地方全部禁用了。而且KEIL优化设置为0,看了一下编译也不存在内存越界。现在不知道怎么解决了。


Program Size: data=9.0 edata+hdata=1280 xdata=822 const=823 code=25175


请各位帮忙分析一下还有什么可能导致这个问题。谢谢。





_奶咖君_ 发表于 2023-12-24 15:30:08

这要上代码看的...或者你自己看看 map文件

LAOXU 发表于 2023-12-24 16:17:53

一般是指针越界 闯的祸.

chen 发表于 2023-12-24 16:34:05

大概率是数组越界导致的

gentleman 发表于 2023-12-24 17:18:13

调试一下看看

神农鼎 发表于 2023-12-24 17:21:48

用仿真功能,进去跟踪看下,不猜

硬件SWD仿真 STC32,用 【STC-USB Link1D 】全自动仿真/脱机下载 工具,有视频讲解 - 仿真/编译器/头文件 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

Snapdragon 发表于 2024-1-9 09:17:50

最简单的方式:用link1d进行仿真,监控这个地址,就能知道在哪里被修改的了。大概率是数组溢出。

创隆科技 发表于 2024-1-9 09:47:05

主要还是看自己的程序,可能真的是自己疏忽“修改了”在其他地方操作了此参数
页: [1]
查看完整版本: STC32G128K一个全局变量在运行的时候被修改?