单片机使用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

相关推荐
楼台的春风6 分钟前
【Linux驱动开发 ---- 4_驱动开发框架和 API】
linux·c语言·c++·人工智能·驱动开发·嵌入式硬件·ubuntu
楼台的春风12 分钟前
【Linux驱动开发 ---- 1.1_Linux 基础操作入门】
linux·c语言·c++·人工智能·驱动开发·嵌入式硬件·ubuntu
郦77710 小时前
MO+内核32位单片机的PY32F030单片机开发板
单片机·嵌入式硬件
正旺单片机11 小时前
单片机3种按键程序消抖方法
c语言·单片机·嵌入式硬件
深圳市尚想信息技术有限公司12 小时前
功耗高?加密弱?爱普特APT32F1023H8S6单片机 2μA待机+AES硬件加密破局
单片机·嵌入式硬件·apt·存储芯片·爱普特
楼台的春风16 小时前
【Linux驱动开发 ---- 4.1_sysfs 详解】
linux·运维·c语言·数据库·人工智能·驱动开发·嵌入式硬件
国科安芯21 小时前
AS32A601与ASM1042芯片在电力系统自动化监控中的应用效能分析
单片机·物联网·自动化
才鲸嵌入式1 天前
C++相比于C语言增加了哪些概念?
c语言·c++·单片机·嵌入式·arm·面向对象·软件
dujunqiu1 天前
S32DS上进行S32K328的时钟配置,LPUART时钟配置步骤详解
单片机·mcu
Peter_Deng.1 天前
单片机 - STM32F407 ADC 模式详解:单次转换、连续转换、扫描模式、非扫描模式
stm32·单片机·嵌入式硬件