我正在使用 STVD IDE 对 STM8S 微控制器进行编程。它使用 COSMIC 编译器。
我发现有一个变量意外增加。调试时我发现汇编代码中有一行导致这个变量增加了它的值。这是一个名为 的函数c_lgadc
。ADC
有时在调用堆栈中没有显示相关函数时调用此装配线。
我不明白这段代码来自哪里,这是什么c_lgadc
?我的 C 代码中没有名为c_lgadc
更新:
- 我不知道我应该检查什么 C 代码,因为每次调用此反汇编行时调用堆栈都不同。
- 我注意到,当我跨步或进入调试器时,它会到达特定计时器 ISR 的最后一行。
- 我还注意到带有第二个断点的行是导致我的变量添加的行。具有第一个断点的行总是被调用 5 次,然后具有第二个断点的行被调用一次,依此类推。
- 我想知道我应该如何进一步调试它以防止意外添加到我的变量中。
更新2:
我在以下内容中找到了map file
:
c_lgadc 0000f39c defined in (C:\Users\xxxxxxxx\CXSTM8\Lib\libm0.sm8)lgadc.o section .text
used in Debug\stm8s_it.o
我不确定这是否有助于澄清问题?