[STM32F4] STM32CUBEMX开发GD32F303----配置printf

[复制链接]
1628|29
 楼主| 在水一方00 发表于 2022-8-31 15:36 | 显示全部楼层 |阅读模式
硬件准备 这里准备了GD32303C_START开发板进行验证。
16169630f0f861dde0.png
printf()函数

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


评论

请问GD32303C_START开发板的相关资料在哪里可以找到?  发表于 2022-11-17 11:24
 楼主| 在水一方00 发表于 2022-8-31 15:40 | 显示全部楼层
STM32CUBEMX配置
43036630f105135a78.png
7739630f105a572d7.png
 楼主| 在水一方00 发表于 2022-8-31 15:41 | 显示全部楼层
keil配置

microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。
86045630f1094b3b31.png
 楼主| 在水一方00 发表于 2022-8-31 15:46 | 显示全部楼层
代码

在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。
  1. /* USER CODE BEGIN Includes */
  2. #include "stdio.h"
  3. /* USER CODE END Includes */
 楼主| 在水一方00 发表于 2022-8-31 15:47 | 显示全部楼层
函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */
  2. void uart1_data(void);                                        //接收函数
  3. #ifdef __GNUC__                                                                        //串口重定向
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  5. #else
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  7. #endif
  8. PUTCHAR_PROTOTYPE
  9. {
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
  11.     return ch;
  12. }
  13. /* USER CODE END PFP */
 楼主| 在水一方00 发表于 2022-8-31 15:48 | 显示全部楼层
printf()打印。
  1.   /* USER CODE BEGIN WHILE */
  2.   while (1)
  3.   {
  4.     /* USER CODE END WHILE */

  5.     /* USER CODE BEGIN 3 */       
  6.     printf("串口打印例程\r\n");
  7.     HAL_Delay(1000);                       
  8.   }
  9.   /* USER CODE END 3 */
 楼主| 在水一方00 发表于 2022-8-31 15:49 | 显示全部楼层
结果演示
59521630f1254c9302.png
caoenq 发表于 2022-9-1 09:34 | 显示全部楼层

楼主,你牛。你竟然用ST的工具去配置GD的片子,能好使?
wuhany 发表于 2022-9-1 21:49 | 显示全部楼层
caoenq 发表于 2022-9-1 09:34
楼主,你牛。你竟然用ST的工具去配置GD的片子,能好使?

哈哈,坐等后续
sesefadou 发表于 2022-9-3 16:49 | 显示全部楼层
这个函数在单片机中是通过串口发送数据
soodesyt 发表于 2022-9-3 18:08 | 显示全部楼层
首先要配置好串口的功能
maudlu 发表于 2022-9-3 18:48 | 显示全部楼层
对printf的重定义
pentruman 发表于 2022-9-3 19:27 | 显示全部楼层
STM32串口printf()重定向
myiclife 发表于 2022-9-3 20:12 | 显示全部楼层
通过标准库的printf或自己编写printf与串口驱动对接。
albertaabbot 发表于 2022-9-3 21:09 | 显示全部楼层
printf函数和scanf函数是“标准函数接口”。
saservice 发表于 2022-11-5 10:32 | 显示全部楼层
1、添加 #include "stdio.h" 2、重定义fputc函数  
kkzz 发表于 2022-11-5 13:52 | 显示全部楼层
要使用printf(),必须使用microLib吗?
sdCAD 发表于 2022-11-5 14:44 | 显示全部楼层
怎么实现虚拟串口printf函数呢?
tifmill 发表于 2022-11-5 15:31 | 显示全部楼层
printf 重定向Keil默认下使用Micro LIB库,该库调用 fputs 实现 printf,所以需要重新定义fputs函数,以重定向printf函数
Jacquetry 发表于 2022-11-5 16:01 | 显示全部楼层
重定义fputc函数就能用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

581

帖子

0

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