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.
大家好,
我正在尝试运行一个温度传感器程序,该程序将从 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 的这一部分。
再次感谢查尔斯,你非常乐于助人!