该方法适用于STM32,完成了运用printf等规范C流函数输出数据的方法,极大的减少了输出串口数据时所需求做的数据处理。
完成原理
在C库中,printf()等输出流函数都是经过fputc()这个函数完成的,所以咱们经过重映射的方法,修正这个函数的界说使它输出在STM32的寄存器中,便能够完成运用printf()函数在STM32串口上输出数据的功用。
Keil环境 重映射
在STM32的Keil开发环境中,C的库函数有两种完成方法
运用规范的C函数库
便是咱们平常在PC Window平台上用的C库函数,此库的的长处在于完成的功用全面。可是因为这个库底子上是专为PC规划的,故而如果在嵌入式芯片中调用时将会使得工程文件变得非常巨大。
将下列代码参加工程,无需运用#include调用即可收效。
运用MDK供给的 MicroLib
MicroLib is a highly-opTImized library for ARM-based embedded applicaTIons written in C. When compared to the standard C library included with the ARM Compiler toolchain, MicroLib provides significant code size advantages required for many embedded systems.
底子便是说:Microlib 是缺省 C 库的备选库。 它旨在与需求装入到极少量内存中的深层嵌入式应用程序合作运用。 这些应用程序不在操作系统中运转。microlib 进行了高度优化以使代码变得很小。 它的功用比缺省 C 库少,而且底子不具备某些 ISO C 特性。 某些库函数的运转速度也比较慢,例如,memcpy()。
相同的将下列代码参加工程,并在Keil设置中勾选Use MicroLib
GCC环境 重映射
在GCC开源开发环境中,则能够调用nano_printf.c 等多种方法重映流函数输出端口