打印
[开发资料]

标准库printf直接输出

[复制链接]
160|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jf101|  楼主 | 2024-3-26 13:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1、使用微库配置方法
在使用的IDE中,比如Keil和IAR都需要在工程选项中进行配置才能正常使用微库。
Keil使用微库:
Project -> Options for Target -> Target,勾选"Use MicroLIB"



IAR使用微库:

Project -> Options for Node -> General Options -> Library Configuration,选择"Full"

额外说明一下,IAR中使用库有4个选择:
None:无

Normal:选择常规配置的运行时库

Full:选择完整配置的运行时库

Custom:选择定制运行时库

使用特权

评论回复
沙发
jf101|  楼主 | 2024-3-26 13:10 | 只看该作者
2、重定义函数
你要输出信息,肯定要有路径才行啊,是UART,还是CAN,所以就需要重定义函数才行。
以UART串口为例,最常见一种方式:
#include <stdio.h>

int fputc(int ch, FILE *f)
{
  DEBUG_SendByte((uint8_t)ch);

  return ch;
}

int fgetc(FILE *f)
{
  while(USART_GetFlagStatus(DEBUG_COM, USART_FLAG_RXNE) == RESET);

  return (int)USART_ReceiveData(DEBUG_COM);
}

当然,串口里面具体的实现方式,与你底层有关。

有以上配置,就可以直接使用printf函数了。

使用特权

评论回复
板凳
febgxu| | 2024-4-4 16:06 | 只看该作者
printf函数需要足够的内存来存储格式化字符串和输出数据。在单片机上,这可能意味着需要分配足够的堆栈空间或动态内存。

使用特权

评论回复
地板
chenci2013| | 2024-4-4 17:35 | 只看该作者
单片机的内存资源有限,因此需要避免使用过大的字符串或格式化字符串。

使用特权

评论回复
5
robertesth| | 2024-4-4 20:40 | 只看该作者
在单片机编程中,printf 函数通常用于在调试或信息显示时输出格式化的字符串。在标准的C库中,printf 函数通常用于向控制台或标准输出设备(例如串口)发送数据。

使用特权

评论回复
6
tifmill| | 2024-4-4 22:46 | 只看该作者
实现 putc 或 putchar 函数,以便 printf 可以调用它来输出字符。

使用特权

评论回复
7
hilahope| | 2024-4-5 20:55 | 只看该作者
在源代码文件中包含必要的头文件,通常是stdio.h,以使用标准输入输出函数。

使用特权

评论回复
8
updownq| | 2024-4-6 11:29 | 只看该作者
单片机必须使用支持C语言标准库的编译器,如GCC、Keil、IAR等,这些编译器通常会包含标准C库函数。

使用特权

评论回复
9
zerorobert| | 2024-4-6 13:49 | 只看该作者
在使用printf函数之前,需要先初始化串口。这通常涉及到设置波特率、数据位、停止位等参数,以及打开串口的发送功能。

使用特权

评论回复
10
juliestephen| | 2024-4-6 16:14 | 只看该作者
如果单片机系统配备了显示屏或连接到了计算机的控制台,可以直接使用printf函数输出信息到控制台。这种情况下,不需要进行特殊的配置或重定向,只需按照标准的C语言用法调用printf函数即可。

使用特权

评论回复
11
weifeng90| | 2024-4-6 16:27 | 只看该作者
我一般都是使用格式化字符串函数老实现功能。

使用特权

评论回复
12
lzbf| | 2024-4-6 21:41 | 只看该作者
标准的C库中的 printf 函数可能过于复杂,不适合资源有限的单片机。因此,可能需要使用一个简化版或轻量级的 printf 实现

使用特权

评论回复
13
juliestephen| | 2024-4-7 11:58 | 只看该作者
使用printf时,通常也是通过串口输出

使用特权

评论回复
14
primojones| | 2024-4-7 17:41 | 只看该作者
在嵌入式系统中,尤其是单片机上,这样的标准输出设备可能并不存在,或者需要通过特定的硬件接口(如UART串口)来实现。

使用特权

评论回复
15
szt1993| | 2024-4-10 08:35 | 只看该作者
使用微库的方法确实很简单,printf输出也很方便

使用特权

评论回复
16
小夏天的大西瓜| | 2024-4-10 13:23 | 只看该作者
楼主使用的微库之后应该还需要进行重定向吧

使用特权

评论回复
17
中国龙芯CDX| | 2024-4-10 20:25 | 只看该作者
标准库printf直接输出,还是跟IDE有关系

使用特权

评论回复
18
jf101|  楼主 | 2024-4-14 15:38 | 只看该作者
chenci2013 发表于 2024-4-4 17:35
单片机的内存资源有限,因此需要避免使用过大的字符串或格式化字符串。

确实是需要避免这个问题

使用特权

评论回复
19
jf101|  楼主 | 2024-4-14 15:39 | 只看该作者
中国龙芯CDX 发表于 2024-4-10 20:25
标准库printf直接输出,还是跟IDE有关系

对的

使用特权

评论回复
20
小小蚂蚁举千斤| | 2024-4-15 09:44 | 只看该作者
标准库printf直接输出在单片机上的输出上面使用的还是很多的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

184

主题

1220

帖子

2

粉丝