我正在用STVD编写STM8S微控制器的程序。它使用宇宙编译器。
我发现有一个可验证的增加是出乎意料的。调试时,我发现程序集代码中有一行代码会导致此变量增加其值。它是一个名为c_lgadc的函数。有时,在调用堆栈中没有显示与ADC相关的函数时,会调用此装配线。
我不明白这些代码是从哪里来的,这个c_lgadc是什么?我的C代码中没有名为c_lgadc的函数
这是拆卸的屏幕截图。

更新:
UPDATE2:
我在map file中找到了以下内容
c_lgadc 0000f39c defined in (C:\Users\xxxxxxxx\CXSTM8\Lib\libm0.sm8)lgadc.o section .text
used in Debug\stm8s_it.o我不确定这是否有助于澄清问题?
发布于 2019-05-08 11:57:12
我已经注意到,当我跨入调试器或进入调试器时,就到了特定计时器ISR的最后一行。
因此,这个计时器ISR增加了一个4字节的整数变量,并且这个变量与您的变量重叠。这种重叠是如何发生的,可以通过检查ISR或链接映射来揭示,也可能是索引寄存器X没有在ISR中正确地设置。
https://stackoverflow.com/questions/56027678
复制相似问题