[应用相关] STM32使用printf打印输出到串口

[复制链接]
2254|21
 楼主| 梅花香自123 发表于 2021-9-28 23:11 | 显示全部楼层 |阅读模式
最近调试STM32代码的过程中,想先把串口调通,然后好测试其他程序部分。在串口调通后,想着使用printf这个C语言常用的打印输出。参考了一些大神的**,整理过程如下:。
 楼主| 梅花香自123 发表于 2021-9-28 23:14 | 显示全部楼层
首先,在C语言中,我们使用printf函数是需要添加头文件#include<stdio.h>的,这样才能打印输出到控制台。同样在嵌入式STM32开发过程中,也是需要添加头文件<stdio.h>
 楼主| 梅花香自123 发表于 2021-9-28 23:15 | 显示全部楼层
其次,我们需要printf函数经串口输出,我们需要对stdio.h文件的fputc进行重定向操作:
 楼主| 梅花香自123 发表于 2021-9-28 23:16 | 显示全部楼层
  1. int fputc(int ch, FILE *f)
  2. {
  3.         USART_SendData( USART1, (uint8_t) ch );                         //发送字符
  4.         while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);   //检查是否发送完毕
  5.         return (ch);
  6. }
 楼主| 梅花香自123 发表于 2021-9-28 23:17 | 显示全部楼层
上面是以串口1为例,同样可以是其他串口。
 楼主| 梅花香自123 发表于 2021-9-28 23:17 | 显示全部楼层
最后,在【Options for target】中设置 Use MicroLiB,如下图:
672161533217ecc91.png
 楼主| 梅花香自123 发表于 2021-9-28 23:18 | 显示全部楼层
MicroLIB是一个缺省的C库,用于内存受限制的嵌入式程序开发。printf函数是基于C库实现的,所以这里需要勾选。
木木guainv 发表于 2021-10-13 09:24 | 显示全部楼层
是不是这个函数不太容易 用好啊
wowu 发表于 2021-10-13 09:28 | 显示全部楼层
串口还是比较好调试的
xiaoqizi 发表于 2021-10-13 09:38 | 显示全部楼层
可以通过什么进行打印呢
tpgf 发表于 2021-10-13 09:40 | 显示全部楼层
在什么情况下需要输出打印呀
heimaojingzhang 发表于 2021-10-13 09:43 | 显示全部楼层
在iar中需要配置吗
mickit 发表于 2021-10-18 19:55 | 显示全部楼层
使用printf等标准C流函数输出数据的办法
mikewalpole 发表于 2021-10-18 19:55 | 显示全部楼层
stm32中能直接使用printf吗
robincotton 发表于 2021-10-18 19:55 | 显示全部楼层
查看网上教程,需要重定义         
jackcat 发表于 2021-10-18 19:55 | 显示全部楼层
需要同时重定义fputc函数   
hearstnorman323 发表于 2021-10-18 19:56 | 显示全部楼层
程属性中的Target项中的Code Generation 选择 UseMicroLIB。  
tifmill 发表于 2021-10-18 19:56 | 显示全部楼层
在MDK下面怎样用printf对stm32进行调试
nomomy 发表于 2021-10-18 19:56 | 显示全部楼层
printf是标准输出接口
abotomson 发表于 2021-10-18 19:56 | 显示全部楼层
printf使用dma吗  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1216

帖子

0

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