gpt4 book ai didi

c - 增量不会超过 0x01

转载 作者:行者123 更新时间:2023-11-30 17:31:53 26 4
gpt4 key购买 nike

所以我有函数:

int f1(uint8_t* a, int b)
{
for(int i = 0; i < b; i++)
f2(&a[i]);

return 1;
}

static void f2(uint8_t* a)
{
REG1 = *a;
...
*a = REG2;
}

“a”是一个数据寄存器,用作缓冲区,通过不同的包装函数将数据从主循环一路放入目标函数f2()。

“REG1”和“REG2”是I/O寄存器,数据通过“a”传入和传出。 “REG2”的值在 f2() 中通过硬件操作隐式改变。

当我在 Debug模式下观察变量变化时,会发生以下情况:

  1. b = 2
  2. declare i = 0, i < b
  3. call f2
  4. increment i to i = 1, i < b
  5. call f2
  6. increment i to i = 0, i < b

由于“i”永远不会达到 2,因此循环永远不会结束。程序使用IAR EW for AVR进行编译和调试。编译器的优化已关闭。

最佳答案

正如@Lundin 所说,似乎是内存损坏错误。

如果您可以使用调试器,请尝试在 i 上插入 write-watchpoint。或许对你有帮助^o^

(当仅考虑这些代码时,我可以假设 a 已损坏,并且 *a = REG2; 可能会写入堆栈,最终 i 已更改)

关于c - 增量不会超过 0x01,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com