工具/软件:Code Composer Studio
您好!
什么类型的状态会导致变量值在不设置的情况下发生更改?
我正在创建一个用于牙科摄像机控制的新项目。
有两个变量本身总是改变值、但没有针对变量设置的操作。
我是随机发生的。
我在硬件的 LCD 上打印了该变量、即使没有 I/P 或 O/P 操作、它也完全被更改。
我已将优化级别设置为关闭。
编译器版本为 TI v18.12.3.LTS
CCS 版本为版本9。
如何解决恼人的问题?
BR、
Yu-Chuan、Chen
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
什么类型的状态会导致变量值在不设置的情况下发生更改?
我正在创建一个用于牙科摄像机控制的新项目。
有两个变量本身总是改变值、但没有针对变量设置的操作。
我是随机发生的。
我在硬件的 LCD 上打印了该变量、即使没有 I/P 或 O/P 操作、它也完全被更改。
我已将优化级别设置为关闭。
编译器版本为 TI v18.12.3.LTS
CCS 版本为版本9。
如何解决恼人的问题?
BR、
Yu-Chuan、Chen
于传
我建议在变量上设置一个观察点。 观察点是一种断点类型、您可以将其配置为在地址或变量被写入时停止。
可能是您不知道正在写入的内容。 可能是溢出问题。 以下是一些有助于跟踪问题的资源:
https://dev.ti.com/tirex/explore/node?node=ABOji8.duIdHhzsJkKch3A__FUz-xrs__LATEST
https://dev.ti.com/tirex/explore/node?node=AOy1zjoxkuPsN0EDD.LmQw__FUz-xrs__LATEST
https://www.youtube.com/watch?v=JlHLqzsb3D4
此致、
John
尊敬的 John:
感谢您提供调试方法。
在带有观察点的调试模式中、除了设置之外、变量不会改变。
但是、在我按下"调试终端"后、让硬件自行运行、变量发生了变化。
更改的结果超出设置范围。
在项目中、更改的变量的设置范围为0x1000至0x18C8。
变量更改后、值变为0x0000。
另一个变量用作标志、我使变量的值为0或1。
它会更改为一个奇怪的值、并且每次发生故障时该值都不相同。
(我在硬件的 LCD 上展示了它们、因此我可以知道变量的值)
如果我使用你告诉我的观察点、问题就永远不会发生。
请告诉我接下来可以做些什么来解决问题?
BR、
Yu-Chuan、Chen
于传
我会尝试增加堆栈大小。
您描述的可能是堆栈溢出。 但是、无论您是否在调试器中运行、都应该发生这种情况。
https://www.microcontrollertips.com/faq-avoiding-stack-overflow-embedded-processors/
此致、
John
尊敬的 John:
感谢您的回答、我将尝试一下。
在你的回复之前、我尝试更改变量数量、但没有发生问题。
我不知道这种方法是否可以解决问题。
如果问题是没有缓冲区、我应该减小变量的数量、使其具有更大的空间、对吧?
项目中有一个名为 UART_Data[50]的变量数组。
我将其更改为 UART_Data[30]、但问题仍然存在。
我将其更改为 UART_Data[80]、未发生故障。
我觉得很奇怪,我不明白为何会这样发生。
BR、
于传陈