[开发资料] 标准库printf直接输出

[复制链接]
1772|21
 楼主| jf101 发表于 2024-3-26 13:08 | 显示全部楼层 |阅读模式
1、使用微库配置方法
在使用的IDE中,比如Keil和IAR都需要在工程选项中进行配置才能正常使用微库。
Keil使用微库:
Project -> Options for Target -> Target,勾选"Use MicroLIB"

1.png

IAR使用微库:

Project -> Options for Node -> General Options -> Library Configuration,选择"Full"
2.png
额外说明一下,IAR中使用库有4个选择:
None:无

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

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

Custom:选择定制运行时库
 楼主| jf101 发表于 2024-3-26 13:10 | 显示全部楼层
2、重定义函数
你要输出信息,肯定要有路径才行啊,是UART,还是CAN,所以就需要重定义函数才行。
以UART串口为例,最常见一种方式:
  1. #include <stdio.h>

  2. int fputc(int ch, FILE *f)
  3. {
  4.   DEBUG_SendByte((uint8_t)ch);

  5.   return ch;
  6. }

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

  10.   return (int)USART_ReceiveData(DEBUG_COM);
  11. }

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

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

febgxu 发表于 2024-4-4 16:06 | 显示全部楼层
printf函数需要足够的内存来存储格式化字符串和输出数据。在单片机上,这可能意味着需要分配足够的堆栈空间或动态内存。
chenci2013 发表于 2024-4-4 17:35 | 显示全部楼层
单片机的内存资源有限,因此需要避免使用过大的字符串或格式化字符串。
robertesth 发表于 2024-4-4 20:40 | 显示全部楼层
在单片机编程中,printf 函数通常用于在调试或信息显示时输出格式化的字符串。在标准的C库中,printf 函数通常用于向控制台或标准输出设备(例如串口)发送数据。
tifmill 发表于 2024-4-4 22:46 | 显示全部楼层
实现 putc 或 putchar 函数,以便 printf 可以调用它来输出字符。
hilahope 发表于 2024-4-5 20:55 | 显示全部楼层
在源代码文件中包含必要的头文件,通常是stdio.h,以使用标准输入输出函数。
updownq 发表于 2024-4-6 11:29 | 显示全部楼层
单片机必须使用支持C语言标准库的编译器,如GCC、Keil、IAR等,这些编译器通常会包含标准C库函数。
zerorobert 发表于 2024-4-6 13:49 | 显示全部楼层
在使用printf函数之前,需要先初始化串口。这通常涉及到设置波特率、数据位、停止位等参数,以及打开串口的发送功能。
juliestephen 发表于 2024-4-6 16:14 | 显示全部楼层
如果单片机系统配备了显示屏或连接到了计算机的控制台,可以直接使用printf函数输出信息到控制台。这种情况下,不需要进行特殊的配置或重定向,只需按照标准的C语言用法调用printf函数即可。
weifeng90 发表于 2024-4-6 16:27 来自手机 | 显示全部楼层
我一般都是使用格式化字符串函数老实现功能。
lzbf 发表于 2024-4-6 21:41 | 显示全部楼层
标准的C库中的 printf 函数可能过于复杂,不适合资源有限的单片机。因此,可能需要使用一个简化版或轻量级的 printf 实现
juliestephen 发表于 2024-4-7 11:58 | 显示全部楼层
使用printf时,通常也是通过串口输出
primojones 发表于 2024-4-7 17:41 | 显示全部楼层
在嵌入式系统中,尤其是单片机上,这样的标准输出设备可能并不存在,或者需要通过特定的硬件接口(如UART串口)来实现。
szt1993 发表于 2024-4-10 08:35 | 显示全部楼层
使用微库的方法确实很简单,printf输出也很方便
小夏天的大西瓜 发表于 2024-4-10 13:23 | 显示全部楼层
楼主使用的微库之后应该还需要进行重定向吧
中国龙芯CDX 发表于 2024-4-10 20:25 | 显示全部楼层
标准库printf直接输出,还是跟IDE有关系
 楼主| jf101 发表于 2024-4-14 15:38 | 显示全部楼层
chenci2013 发表于 2024-4-4 17:35
单片机的内存资源有限,因此需要避免使用过大的字符串或格式化字符串。

确实是需要避免这个问题
 楼主| jf101 发表于 2024-4-14 15:39 | 显示全部楼层
中国龙芯CDX 发表于 2024-4-10 20:25
标准库printf直接输出,还是跟IDE有关系

对的
小小蚂蚁举千斤 发表于 2024-4-15 09:44 | 显示全部楼层
标准库printf直接输出在单片机上的输出上面使用的还是很多的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

266

主题

2095

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部