c++重定向后恢复_【STM32CubeIDE】重定向printf

本文详细介绍了在STM32CubeIDE和HAL库环境下,如何重定向printf函数到串口,讨论了浮点数%f无法打印的问题,并提供了解决方案。同时,分享了利用DMA辅助串口非阻塞模式下自动发送的实现方法。
摘要由CSDN通过智能技术生成

5bb46c8b44390ac1386ebee12f55247e.png

文章导读

本文主要内容为在CubeIDE中(也可以说基于HAL库或CubeMX)实现printf函数重定向问题。具体包括重定向printf的重要性、原理、方法、可能遇到的问题等。

关键词:HAL库,STM32CubeIDE,重定向printf到串口,浮点数%f无法打印,可变参数宏封装printf函数,非阻塞模式下的DMA辅助串口自动发送。

为什么写此文

接触过嵌入式的小伙伴对于STM32必定不陌生,在STM32Cube生态系统推出之前,大家更多地使用MDK平台来开发STM32,当然现在也有很多人在继续使用MDK,因此很多开发中遇到的问题以及解决方法不能在其他平台完美解决。

ST极力推广STM32Cube生态系统,致力于使STM32的开发变的更简单;ST发布了HAL库和LL库并宣布停止维护STD库,可见以后ST的决心和日后的发展方向。


正文

一、重定向printf的重要性

printf大法好 ,printf函数可以输出各种格式化信息,xio习C语言的第一课就是printf("Hello Worldrn");这句话一直印象深刻啊...我们在开发STM32中也同样需要输入输出很多信息,为了方便调试,有时候printf暴力输出也不是一个很差的方法。

二、重定向printf的原理

C语言中不同库的函数可以同名,而printf函数在系统库中,C语言链接库时先链接到哪个函数就用哪个,因此我们重定向一个函数就相当于重写一遍函数的实现。而重新实现printf比较麻烦,一般不可取,所以我们找到了它的“儿子”,就是基本字符输入输出函数,如putchar,_write等,只负责字符的读写,不管其具体格式化过程。

三、重定向printf的方法

本文是基于HAL库STM32CubeIDE来实现重定向printf的,基于STD库和MDK平台可以参考别人的文章,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值