我的 Tiva C Tm4c129有问题。 我知道全局变量被视为不良做法、但我正在移植代码、该代码目前在设备较少的 M3 Stellaris MCU 上正常工作。
我查看了从 StellarisWare 迁移到 Tivaware 的文档。
我正在使用 GPIO、UART、SSI、SysTick 和 I2C 外设、没有任何问题、代码按预期运行。
我遇到的问题是变量被覆盖。
一切似乎都正常、但在函数中、我发现函数局部数组使用已被全局变量占用的 RAM 位置。
无论我对堆栈大小进行何种更改、问题都仍然存在。 我进行其他更改以降低调用栈深度、它只是将问题移至新位置。
我从 IAR 7.5开始、现在将 IAR 8.32用于 ARM。 我尝试使用默认链接器文件、更改堆栈大小。 我使用了 Tiva 示例文件夹中的链接器和 startup_ewarm。
起初我遇到了 STTOK 问题。 我会调用它、在离开后、会发现文件全局变量的值与 strtok 分配给我的令牌指针的指针的值相同。
考虑到从 Stellaris 迁移、是否使用无符号整型等数据类型会导致问题? 我查看了映射文件、大小看起来正确。
还有哪些其他因素可能导致这种行为? 任何专家的建议都非常感谢!
谢谢你。