在嵌入式C中使用printf

时间:2019-07-04 12:30:10

标签: c embedded

我在Eclipse上使用Aurix微控制器 我需要在控制台上显示未签名的char值, 我真的很喜欢

  printf ("% hhx", tab [j]);

但是我遇到了这个错误:

  error: AppKit_TC277TFT_TimeDemo.elf section `.inttab' will not fit in 
  region `PMI_PSPR'

  error: region `PMI_PSPR' overflowed by 16788 bytes

有没有人可以帮助我

3 个答案:

答案 0 :(得分:3)

在著名的搜索服务中搜索 PMI_PSPR Aurix 会弹出this forum post

显然,您正在链接代码以从RAM运行。更改链接器设置以将其链接到Flash,然后从那里运行。

答案 1 :(得分:1)

  

在嵌入式c语言中使用printf

一种方法是使用UART通信。

将数值转换为可打印的ascii格式并发送到UART,以便在控制台上看到。

对于简单的应用程序,您可以考虑将可打印字符存储到某个数组缓冲区,并在活动结束时将数组缓冲区打印到UART

答案 2 :(得分:0)

首先尝试找出原因。有两种想法:

  1. 检查stdout流是否正常。
  2. 检查是否存在内存问题(错误提示)。

1。标准输出检查:

尝试不使用printf格式化程序而使用stdout流。格式化程序因人们的建议而肿,在嵌入式系统上通常不是一个好主意。另外,您是否设置了stdout流的位置(它是否已映射到某些UART代码,通常在嵌入式系统上您需要编写或配置此代码)?通过使用putch('。'),putchar('。')甚至puts(“ Hello”)进行测试。

2。内存检查:

尝试构建不使用stdout即可单独使用sprintf()的代码。如果那也没有建立,那很可能是格式化程序。一些嵌入式编译器允许将格式程序库配置为较小的选项,以解决此问题(不支持完整的实现)。