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.
抱歉回复晚了。
这可能是缓冲区溢出或堆栈溢出引起的软件问题。 您能不能逐步浏览代码,确定一下变量被覆盖的确切位置?
此外您还可以参阅该应用手册,了解 MSP + CCS 的高级调试功能以帮助缩小问题范围:
https://www.ti.com/lit/slaa393
下面是一些相关问题您也可以参考下,其中包含有关如何检测可能的堆栈溢出的调试提示:
跟踪到变量被覆盖的确切位置之后,
一旦跟踪到确切位置后,请检查周围的code,确定一下是不是软件的问题。
比如您可以检查超出范围的数组访问、错误指针、堆栈溢出、新数据实际上是随机的还是有一个模式等等问题,也可以检查下变量和内存。
主要是想看看这个问题是否可以重现,哪些变量在哪些特定函数处被覆盖? 一旦能确定,您就可以review这些特定功能,然后就能解决编码问题。
您好,写入发送缓冲区会清除 UCTXIFG。 请您将 usart0_fasong () 中的第 92 行放在第 91 行之前。 您可以参考 MSP UART Academy 和器件 UART 代码示例,了解如何构建 UART TX 和 RX 功能[academy, examples]。
此外其他变量 (yali_k/b 、 xunhuan _guding_flag 等) 是否为正确的值? 看起来也是调用 usart0_fasong () 修改的。
建议您检查 "buf" 和 "len" 的值,检查 UART TX 和 RX 功能,添加一个watchpoint,可在特定存储器访问时触发[link]。
这个问题是需要您在客户端调试的问题,因为我们不知道项目的具体细节和代码。
您的问题应该不太是与芯片有关,覆盖全局阵列一般是软件问题。
从您提供的信息来看,阵列是被放置在 RAM 中。 我们建议您使用 "persistent " pragma 将阵列放置在 FRAM 中,然后使用 FRAM 控制器将其锁定,使其不被写入。
这会防止意外 RAM 溢出等等问题。 有关于此操作的更多信息,请参阅 FRAM best practices app note的第六节:FRAM Protection and Security: https://www.ti.com/lit/slaa628