这一年来一直在用STM32以及LPC17XX系列,自然而然也一直在使用MDK环境。在使用串口调试过程中,越发觉得下位机的串口输出函数没有C语言库中的printf好用。于是就去查找学习了下如何将printf函数给引进过来。此文目的于此-----总结记录。
首先使用printf函数,代码如下:
#include "stdio.h"
<span style="font-size:14px;">#define <span style="color:#ff0000;">NOT_USE_MICROLIB</span> 0
#if <span style="color:#ff0000;">NOT_USE_MICROLIB</span>
//=========不用选择use MicroLIB的方法=====================
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕 <span style="font-family: Arial, Helvetica, sans-serif;">USART1</span><span style="font-family: Arial, Helvetica, sans-serif;"> 为STM32串口1的寄存器,后续需要根据实际MCU进行更改</span>
USART1->DR = (u8) ch;
return ch;
}
#else
//=========使用use MicroLIB的方法===================