打印
[STM32F4]

STM32CUBEMX开发GD32F303----配置printf

[复制链接]
1002|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
硬件准备 这里准备了GD32303C_START开发板进行验证。

printf()函数

printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。 参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。


使用特权

评论回复
评论
xulei001 2022-11-17 11:24 回复TA
请问GD32303C_START开发板的相关资料在哪里可以找到? 
沙发
在水一方00|  楼主 | 2022-8-31 15:40 | 只看该作者
STM32CUBEMX配置

使用特权

评论回复
板凳
在水一方00|  楼主 | 2022-8-31 15:41 | 只看该作者
keil配置

microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。

使用特权

评论回复
地板
在水一方00|  楼主 | 2022-8-31 15:46 | 只看该作者
代码

在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

使用特权

评论回复
5
在水一方00|  楼主 | 2022-8-31 15:47 | 只看该作者
函数声明和串口重定向:
/* USER CODE BEGIN PFP */
void uart1_data(void);                                        //接收函数
#ifdef __GNUC__                                                                        //串口重定向
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END PFP */

使用特权

评论回复
6
在水一方00|  楼主 | 2022-8-31 15:48 | 只看该作者
printf()打印。
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */       
    printf("串口打印例程\r\n");
    HAL_Delay(1000);                       
  }
  /* USER CODE END 3 */

使用特权

评论回复
7
在水一方00|  楼主 | 2022-8-31 15:49 | 只看该作者
结果演示

使用特权

评论回复
8
caoenq| | 2022-9-1 09:34 | 只看该作者

楼主,你牛。你竟然用ST的工具去配置GD的片子,能好使?

使用特权

评论回复
9
wuhany| | 2022-9-1 21:49 | 只看该作者
caoenq 发表于 2022-9-1 09:34
楼主,你牛。你竟然用ST的工具去配置GD的片子,能好使?

哈哈,坐等后续

使用特权

评论回复
10
sesefadou| | 2022-9-3 16:49 | 只看该作者
这个函数在单片机中是通过串口发送数据

使用特权

评论回复
11
soodesyt| | 2022-9-3 18:08 | 只看该作者
首先要配置好串口的功能

使用特权

评论回复
12
maudlu| | 2022-9-3 18:48 | 只看该作者
对printf的重定义

使用特权

评论回复
13
pentruman| | 2022-9-3 19:27 | 只看该作者
STM32串口printf()重定向

使用特权

评论回复
14
myiclife| | 2022-9-3 20:12 | 只看该作者
通过标准库的printf或自己编写printf与串口驱动对接。

使用特权

评论回复
15
albertaabbot| | 2022-9-3 21:09 | 只看该作者
printf函数和scanf函数是“标准函数接口”。

使用特权

评论回复
16
saservice| | 2022-11-5 10:32 | 只看该作者
1、添加 #include "stdio.h" 2、重定义fputc函数  

使用特权

评论回复
17
kkzz| | 2022-11-5 13:52 | 只看该作者
要使用printf(),必须使用microLib吗?

使用特权

评论回复
18
sdCAD| | 2022-11-5 14:44 | 只看该作者
怎么实现虚拟串口printf函数呢?

使用特权

评论回复
19
tifmill| | 2022-11-5 15:31 | 只看该作者
printf 重定向Keil默认下使用Micro LIB库,该库调用 fputs 实现 printf,所以需要重新定义fputs函数,以重定向printf函数

使用特权

评论回复
20
Jacquetry| | 2022-11-5 16:01 | 只看该作者
重定义fputc函数就能用

使用特权

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

本版积分规则

50

主题

567

帖子

0

粉丝