打印
[STM32F1]

STM32在IAR中如何使用printf函数

[复制链接]
430|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 | 只看该作者
哈哈,慢慢的都会用了,之前开发有很多含义都是不理解的

使用特权

评论回复
板凳
正常来说重定义还需要开启microlib的,如果在keil下开发

使用特权

评论回复
地板
在曼谷的春| | 2023-4-5 20:17 | 只看该作者
重定义的目的是做啥其实我很不理解,是为了快速发送log么?

使用特权

评论回复
5
我吃小朋友| | 2023-4-5 21:00 | 只看该作者
有很多时候重定义都容易出问题的,不是配置问题,就是忘记开lib

使用特权

评论回复
6
月亮一键变蓝| | 2023-4-5 22:15 | 只看该作者
正常\r\n一起用准没错

使用特权

评论回复
7
MessageRing| | 2023-4-5 22:31 | 只看该作者
直接用\n不行吗?

使用特权

评论回复
8
失物招領| | 2023-4-5 23:17 | 只看该作者
串口助手也可以自己设置自动换行的

使用特权

评论回复
9
她已醉| | 2023-4-6 01:11 | 只看该作者
IAR调试是不是还比keil麻烦一点啊?

使用特权

评论回复
10
她已醉| | 2023-4-6 01:11 | 只看该作者
IAR调试是不是还比keil麻烦一点啊?

使用特权

评论回复
11
将爱藏于深海| | 2023-4-6 02:03 | 只看该作者
感觉如果要是用keil的话好像还得把microlib打开,和IAR还不太一样

使用特权

评论回复
12
春日负喧| | 2023-4-6 05:35 | 只看该作者
对啊,\r\n是这么用的

使用特权

评论回复
13
温室雏菊| | 2023-4-6 07:46 | 只看该作者
这种定义完事儿,是直接用printf是吧,那我要串口3也重定义了,名字也要叫printf

使用特权

评论回复
14
SantaBunny| | 2023-5-5 22:50 | 只看该作者
\r\n是这么用的

使用特权

评论回复
15
zhanglli| | 2023-5-16 19:59 | 只看该作者
慢慢的都会用了

使用特权

评论回复
16
zhenykun| | 2023-5-16 20:00 | 只看该作者
之前开发有很多含义都是不理解的

使用特权

评论回复
17
huwr| | 2023-5-16 20:02 | 只看该作者
正常来说重定义还需要开启microlib的,如果在keil下开发

使用特权

评论回复
18
zhuhuis| | 2023-5-16 20:04 | 只看该作者
重定义的目的是做啥其实我很不理解

使用特权

评论回复
19
xxmmi| | 2023-5-16 20:06 | 只看该作者
是为了快速发送log么?

使用特权

评论回复
20
huangchui| | 2023-5-16 20:09 | 只看该作者
有很多时候重定义都容易出问题的,不是配置问题,就是忘记开lib了

使用特权

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

本版积分规则

18

主题

1317

帖子

1

粉丝