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.

[参考译文] CCS/TMS320F2.8069万M:使用Sprintf时出现问题

Guru**** 2556100 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/588568/ccs-tms320f28069m-problem-using-sprintf

部件号:TMS320F2.8069万M

工具/软件:Code Composer Studio

您好,

我正在使用F2.8069万M launchpad,现在我正在尝试格式化一个字符串,通过SCI发送到PC以更新GUI中的某些值。 我使用SCI向PC发送字符没有问题,我使用SCI中断,一切正常! 问题是现在我想格式化一个字符串,它扮演 着微控制器和客户端之间发送/接收数据的所谓协议的角色, 不管怎样,我尝试使用“sprintf”函数来格式化我的字符串,但每当代码到达此部分时,所有内容都将挂起,并且没有继续(在运行时), 我花了一个上午的时间阅读整个TI博客和wiki,并尝试根据此处增加堆和堆栈大小,但没有任何变化! 那么,您能否向我推荐其他的解决方案或问题。 (值得一提的是,我还尝试设置一些浮点数的格式)

此致

米拉德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您不会说出原始堆栈大小和增加的大小。

    我在两个不同的TI处理器系列上遇到过类似的sprintf问题。 您必须打开堆栈区域的内存查看器,查看调用sprintf时更改了多少空间。 打印简单的内容也没关系。 我不得不将一个家庭的堆栈设置为1k,而在另一个家庭中设置为2k。 没有什么可以替代的东西是查看在进行子例程调用时会接触多少内存。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复,我的堆内存大小为0x400,堆栈大小为0x200,但您是否介意告诉我如何通过内存查看器访问堆栈区域? 然后,我如何知道有多少内存是足够的(您的意思仅仅是sprintf需要的更多?)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    堆在这里对你没有帮助,你需要堆栈,正如我前面所说,1-2k是一个好的开始。 这将是0x400到0x800,因此我建议将堆栈大小设置为0x800,看看这是否可以解决您的问题。

    我不熟悉您使用的处理器,但使用“查看->内存浏览器”查看堆栈所在的区域。 如果您不确定其位置,请检查链接器映射。