[STM32F1] IAR使用标准库函数中的printf

[复制链接]
2125|32
 楼主| bestwell 发表于 2023-3-31 07:00 | 显示全部楼层 |阅读模式
IAR 中 printf() 会默认输出到 Terminal I/O 窗口中。Terminal I/O 的使用方法是,在 Debug 模式下,点击“View-Terminal I/O”。

但是,我们也可以自定义 printf() 函数,让其输出到 UART 或 LCD。
为了输出到 UART 等其他设备中,我们需要做两件“大事”。
1.修改工程配置参数;
2.编写移植代码。


1.修改工程配置参数
要将 printf() 输出到其他设备中,需要在工程配置中将 "General Operations-Library Configuration-Library" 设置为 "Full DLIB",否则无法编译通过。再将 "General Operations-Library Options-Printf formatter" 设置为 "Full" 否则堆栈会溢出。

2.编写移植代码
只要在需要调用 printf() 的程序中包含类似下列代码即可:

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
    /**
     * 自定义代码,示例如下:
     */
    USART_SendData(USART1, (u8) ch);
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
    {
    }
    /**
     * 自定义代码结束
     */
    return ch;
}

以上代码会根据编译环境选择合适的函数名。别忘记在使用其他设备进行标准格式化输出之前,先对该设备进行初始化。从其他设备读入字符数据所用的 scanf() 的配置方式与 printf() 类似。参考 IAR 的 stdio.h 文件,我们可以对其他 标准 IO 函数 进行自定义配置。
uytyu 发表于 2023-4-2 16:51 | 显示全部楼层
rintf函数用于将参数输出到标准输出,在IAR中使用printf函数需要先引入stdio.h头文件
lihuami 发表于 2023-4-2 22:46 | 显示全部楼层
在代码中需要调用printf函数的地方直接使用printf即可,就像使用其他函数一样。
benjaminka 发表于 2023-4-4 14:17 | 显示全部楼层
iar中怎么设置使用printf函数  
maqianqu 发表于 2023-4-4 14:23 | 显示全部楼层
STM32在IAR中如何使用printf函数
zerorobert 发表于 2023-4-4 14:53 | 显示全部楼层
重定向printf函数               
wangdezhi 发表于 2023-4-4 15:34 | 显示全部楼层
如何在IAR 上实现Printf 打印调试信息
phoenixwhite 发表于 2023-4-4 20:47 | 显示全部楼层
如何在IAR 上实现Printf 打印调试信息
sesefadou 发表于 2023-4-4 20:56 | 显示全部楼层
iar中怎么设置使用printf函数  
louliana 发表于 2023-4-4 21:58 | 显示全部楼层
重定向printf函数               
sdlls 发表于 2023-4-4 22:23 | 显示全部楼层
STM32在IAR中如何使用printf函数
Stahan 发表于 2023-4-4 22:44 | 显示全部楼层
重写putchar
zyf部长 发表于 2023-7-6 20:47 | 显示全部楼层
rintf函数用于将参数输出到标准输出,在IAR中使用printf函数需要先引入stdio.h头文件
xxmmi 发表于 2023-7-6 20:48 | 显示全部楼层

在代码中需要调用printf函数的地方直接使用printf即可,就像使用其他函数一样。
kangzj 发表于 2023-7-6 20:52 | 显示全部楼层
iar中怎么设置使用printf函数  
lium 发表于 2023-7-6 20:52 | 显示全部楼层
STM32在IAR中如何使用printf函数
lium 发表于 2023-7-6 20:53 | 显示全部楼层
重定向printf函数               
guoyt 发表于 2023-7-6 20:55 | 显示全部楼层
如何在IAR 上实现Printf 打印调试信息
hanwe 发表于 2023-7-6 20:57 | 显示全部楼层

iar中怎么设置使用printf函数  
yufe 发表于 2023-7-6 20:59 | 显示全部楼层
重定向printf函数               
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

1988

帖子

2

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