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.

[参考译文] TM4C123GH6PM:TM4C 上的 Sprintf 函数

Guru**** 679710 points
Other Parts Discussed in Thread: LM34, TM4C123GH6PM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1069473/tm4c123gh6pm-sprintf-function-on-tm4c

部件号:TM4C123GH6PM
“线程:LM34”中讨论的其它部件

大家好,

我正在尝试运行一个温度传感器程序,该程序将从 PE3上的 LM34获得该值。 我所使用的程序是 Sprintf,由于某种原因,它在该命令上“卡住”。

为什么会发生这种情况? 或者,TM4C 是否可以运行该代码? 下面是我使用的部分代码。

#include <stdio.h>

空 UART0_PURS (CHAR* s);

(笑声)

void main()(主无效())

内部温度;

字符缓冲区[16];

(笑声)

(笑声)

While (1)(同时)

温度= ADC0_SSFIFO 3_R * 330 / 4096;

(笑声)

Sprintf (缓冲区,“\r\n 温度=%df”,温度);

UART 0_put(缓冲);

德莱女士(500);

}

(笑声)

(笑声)

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

    您好,

     我认为原因是您使用冲刺打印出浮动变量。 这将需要大量的内存空间。 您需要增加堆栈大小(例如 1536或2048),我认为这应该解决这个问题。  

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

    嗨,查尔斯,

    要增加堆栈大小,我需要执行什么步骤?

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

    您好,

     请参见下面的示例。  

      

    #define app_base 0x00000000
    #define RAM_BASE 0x20000000

    /*系统内存映射*/

    内存

    /*应用程序存储在中并从内部闪存执行*/
    闪存(RX):原点= app_base,长度= 0x00100000
    /*应用程序使用内部 RAM 进行数据*/
    SRAM (rwx):原点= 0x20000000,长度= 0x00040000
    }

    内存中的/*区段分配*/

    章节

    .intvectra:> app_base
    文本:>闪光灯
    .const:>闪存
    电影:>闪光灯
    Pinit:>闪存
    init_array:>闪存

    .vtable:> RAM_BASE
    数据:> SRAM
    .bss:> SRAM
    sysmem:> SRAM
    .stack:> SRAM
    }

    __stack_top =__stack + 1536;

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

    查尔斯

    这解决了问题。 我刚刚更改了堆栈大小和堆大小。  是否需要添加 app_base 和 RAM_base?

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

    您好,

    [引用 userid="419815" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-intrane-forum/1069473/tm4c123gh6pm -spintf-function-On-tm4c/3958461#3958RAM"] 是否需要添加应用程序和 base_quote [/sample_base]

    由你决定。 使用#define 指定地址的方法比对代码中的值进行硬编码更简单。  

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

    我明白了。 我认为我需要更熟悉 MCU 的这一部分。  


    再次感谢查尔斯,你非常乐于助人!