单片机使用printf,不用微库

A. 微库MicroLIB ( 要勾选Target标签下的Use MicroLIB)

复制代码
+  头文件包含#include "stdio.h"

B. 头文件包含#include "stdio.h"

复制代码
+  printf重定向,添加fputc()函数

注意:使用printf要避免使用 semihosting半主机模式!!!!

由于MicroLIB对是缺省 C 库的备选库,它是为了配合实现要装入到极少量内存中的深层嵌入式应用程序而存在的,而这种使用场合下,多数是没有操作系统的,故它删除了与操作系统有关的函数,并且不符合 ISO C 库标准, 不支持某些 ISO 特性;不符合 IEEE 754 二进制浮点算法标准;对 C99 的支持有限......等等,所以,一般情况下,我们不采用MicroLIB,这里我用的是B方法进行重定向。

采用B方法,需要加入以下代码,以支持printf。

// 加入以下代码,以支持printf函数,而不需要选择use MicroLIB

#if 1

#pragma import(__use_no_semihosting)

//标准库需要的支持函数

struct __FILE

{

int handle;

};

FILE __stdout;

//定义_sys_exit()以避免使用半主机模式

void _sys_exit(int x)

{

x = x;

}

// 重定义fputc函数 如果暂时不需要,也可以直接return 0

int fputc(int ch, FILE *f)

{

while((USART1->SR&0X40)==0);//循环发送,直到发送完毕

USART1->DR = (u8) ch;

return ch;

}

#endif

原文链接:https://blog.csdn.net/sarsscofy/article/details/122395372

相关推荐
Brilliantwxx3 小时前
【STM32】 NVIC 与 EXTI 中断 · 超详细源码级解析
stm32·单片机·嵌入式硬件
加载力科技4 小时前
硬盘咔咔响是坏盘信号!赶在数据丢失前克隆换盘:不重装系统、不丢文件
windows·嵌入式硬件·系统安全·策略模式·命令模式·硬盘
niuTaylor5 小时前
飞腾 FT-2000/4 Ubuntu 内存卡 / NVMe SSD 系统制作完整指南
linux·服务器·人工智能·驱动开发·单片机
思茂信息6 小时前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
李永奉7 小时前
中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现
网络·单片机·嵌入式硬件·mcu·物联网
三佛科技-187366133977 小时前
FT32F405RE02-LB是什么芯片?基于ARM Cortex M4带FPU的MCU芯片解析
stm32·单片机·嵌入式硬件
嵌入式分享9 小时前
嵌入式分#49:浅 8080,RGB,LVDS 与 MIPI 显口
嵌入式硬件·lcd
szarron9 小时前
VNA6 便携式矢量网络分析仪|1MHz‑6.3GHz 手持 VNA 真实应用场景全解析
前端·嵌入式硬件·信息可视化·数据挖掘·数据分析
゛凌乱的记忆づ10 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——ADC采集篇
stm32·单片机·嵌入式硬件
女神下凡10 小时前
芯参谋(31):SPI NOR Flash 电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范