工具/软件:
以下代码片段...

- 使用 CCS 版本 20.2.0.12___1.5.0。
- 简单应用。 几乎只是 main() 中的上述循环。
- fputc() 已被替换以将 stdout 输出到 SCI。
- 栈大小设置为 0x400。
- 堆大小设置为 0x800。
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.
工具/软件:
以下代码片段...

您好 Bruce、
需要检查以下几点:

此致、
Delaney
我正在尝试使用“nofloat"...</s>“

当我选择“最小“时、会产生编译时间错误。
选择“Full"具有“具有相同的行为。
以下是选择“nofloat"时“时.map 文件中的条目...

.text 0 003f4000 0000330d 003f4000 00000922 led_control.obj (.text) 003f4922 000006ce processor_tasks.obj (.text) 003f4ff0 000005ca rts2800_ml.lib:_printfi.c.obj (.text:_TI_printfi_nofloat) 003f55ba 0000030a uart.obj (.text)
尊敬的 Delany:
是的、F2808 非常旧。 然而、在我们的设计周期中、切换到较新的器件已经太晚了。
我们正在使用最新版本的 CCS。 (20.2.0.12_1.80) 如果你问是否有一个编译器版本,其中 printf() 是工作的,我不知道。 这是我们第一次尝试使用 printf()。
我猜 F2808 的问题在于其 RAM 空间有限。 我们可分配的最大堆和栈为每个 0x400。 您能否检查 F28P65x 工程的堆和栈大小? 如果您设置为 0x400 会发生什么情况?
我认为 printf() 在 iostream 层的某个位置崩溃。 我们的 UART_printf () 实现绕过流层并直接写入 UART。 这似乎是一项有效的工作。 因此,并不是完全有必要让 printf() 正常工作。
谢谢!
Bruce
您好 Bruce、
是的、让我使用 F28P65x 工程检查堆和栈大小并返回给您。 此外、以下是一些其他 printf 文档供您参考: printf 的使用技巧
此致、
Delaney
您好 Bruce、
我在 F28P65x 上使用的栈大小似乎是 0x3F8、堆大小仅为 0x200、因此我认为这不是问题。
我相信 printf() 在 iostream 层的某个位置崩溃。 我们的 UART_printf () 实现绕过流层并直接写入 UART。 这似乎是一项有效的工作。 因此,并不是完全有必要让 printf() 正常工作。
这可能是您的最佳方法、因为我无法在我的设置中重现问题、因此很难确定您看到的行为的原因。 我会关闭此主题、但如果您有任何其他问题、请随时提出其他问题。
此致、
Delaney