[STM32F1] STM32在IAR中如何使用printf函数

[复制链接]
2598|39
 楼主| bestwell 发表于 2023-3-30 19:00 | 显示全部楼层 |阅读模式
STM32使用printf函数给串口打印信息的执行步骤为:
1.重定向printf函数  

给uart.c文件中增加如下函数:

int fputc(int ch, FILE *f)
{
  USART_SendData(USART2, (unsigned char) ch);// USART1 可以换成 USART2 等
  
  while (!(USART2->SR & USART_FLAG_TXE));
  
  return (ch);

}

2.增加头文件stdio

#include "stdio.h"

3.添加宏

在IAR中使用printf应在Options->C/C++Compler->Preprocessor中的Defined中添加_DLIB_FILE_DESCRIPTOR。



以前在变成调试的时候,一直不知道\r和\n有什么区别,觉得差不多,今天使用的时候就被坑了一把。

这里首先要理解:\n是换行,就是光标移动到下一行,\r是讲光标移动到本行的开始处。

printf("hello %d\r\n",NoPressKeyTime);这样就可以在串口软件上自动换行了。


一只眠羊 发表于 2023-4-5 18:27 | 显示全部楼层
哈哈,慢慢的都会用了,之前开发有很多含义都是不理解的

未说出口的像你 发表于 2023-4-5 18:33 | 显示全部楼层
正常来说重定义还需要开启microlib的,如果在keil下开发

在曼谷的春 发表于 2023-4-5 20:17 | 显示全部楼层
重定义的目的是做啥其实我很不理解,是为了快速发送log么?

我吃小朋友 发表于 2023-4-5 21:00 | 显示全部楼层
有很多时候重定义都容易出问题的,不是配置问题,就是忘记开lib

月亮一键变蓝 发表于 2023-4-5 22:15 | 显示全部楼层
正常\r\n一起用准没错

MessageRing 发表于 2023-4-5 22:31 | 显示全部楼层
直接用\n不行吗?
失物招領 发表于 2023-4-5 23:17 | 显示全部楼层
串口助手也可以自己设置自动换行的

她已醉 发表于 2023-4-6 01:11 | 显示全部楼层
IAR调试是不是还比keil麻烦一点啊?

她已醉 发表于 2023-4-6 01:11 | 显示全部楼层
IAR调试是不是还比keil麻烦一点啊?

将爱藏于深海 发表于 2023-4-6 02:03 | 显示全部楼层
感觉如果要是用keil的话好像还得把microlib打开,和IAR还不太一样

春日负喧 发表于 2023-4-6 05:35 | 显示全部楼层
对啊,\r\n是这么用的

温室雏菊 发表于 2023-4-6 07:46 | 显示全部楼层
这种定义完事儿,是直接用printf是吧,那我要串口3也重定义了,名字也要叫printf

SantaBunny 发表于 2023-5-5 22:50 | 显示全部楼层
\r\n是这么用的
zhanglli 发表于 2023-5-16 19:59 | 显示全部楼层
慢慢的都会用了
zhenykun 发表于 2023-5-16 20:00 | 显示全部楼层
之前开发有很多含义都是不理解的
huwr 发表于 2023-5-16 20:02 | 显示全部楼层
正常来说重定义还需要开启microlib的,如果在keil下开发
zhuhuis 发表于 2023-5-16 20:04 | 显示全部楼层
重定义的目的是做啥其实我很不理解
xxmmi 发表于 2023-5-16 20:06 | 显示全部楼层
是为了快速发送log么?
huangchui 发表于 2023-5-16 20:09 | 显示全部楼层
有很多时候重定义都容易出问题的,不是配置问题,就是忘记开lib了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

1987

帖子

2

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