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/TMS320F28069M:如何使 printf 与 float 一同工作?

Guru**** 2544290 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/625991/ccs-tms320f28069m-how-to-make-printf-work-with-floats

器件型号:TMS320F28069M

工具/软件:Code Composer Studio

您好!

我有一个程序可以在使用 printf 打印字符串和小数时正常工作。 但是、如果我包含一个具有浮点的简单代码:

float a = 0.1;
printf ("我的 float:%f"、a); 

printf 不显示任何内容! 每当我暂停程序以进行调试时、它总是在以下行暂停:

(三
*函数:codestart 段
*
说明:分支到代码起始点


.sect "codestart"

code_start:
如果 WD_DISABLE = 1
LB wd_disable ;分支到看门狗禁用代码<------ 在这里它会停止
其他
LB _c_int00 ;分支到 RTS 库中 boot.asm 的启动
.endif

如果我使用  snprintf、也会出现同样的问题

我已经尝试使用内存。 我将 .cio 段分配给 了 USB_RAM 存储器范围(0x1000长度-我已经开始了另一个主题,并询问了正确的方法,请参阅 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/625989 ),将 RAMM1长度增加到0x1000,从而将堆栈和堆大小设置为0x1000。 因此、这不应该是问题。 还有其他想法吗?

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

    您好、Jakub、

    这与堆栈内存不足有关。 检查这些线程:

    此致、

    Gautam

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

    感谢您的回答-事实上、这就是问题所在。

    我实际上尝试增加堆栈、但没有任何改进、但结果证明我做错了! 因此、为他人汲取的教训是:

    在项目属性中增加堆栈大小后、必须通过更新链接 器 cmd 文件来确保在内存中提供足够的空间。 默认情况 下、堆栈大小分配给 RAMM1 -因此我只需增加其长度即可适应新的堆栈大小。 但是、我必须知道-根据 MCU 数据表中的存储器映射、 RAMM1不能大于默认的0x400! 因此、我将.stack 段移动到另一个存储器、即  RAML0_L8。 现在工作正常。