STM32中使用printf打印串口数据的实现原理及方法

电子说

1.3w人已加入

描述

STM32中使用printf打印串口数据的实现原理

在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。

盘点一下实现printf()函数打印字符串重定义到USART1的方法

方法一

1添加包含printf()函数的头文件:#include “stdio.h”

2.重写 stdio.h 头文件中的 int fputc(int ch, FILE *f) 函数

3.将该函数” int fputc(int ch, FILE *f) “放在main()函数能够调用到的文件中,KEIL-》Options for Target’xxx’-》Target-》Code Generation,勾选Use MicroLIB

方法二

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

#if 1

#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 & (1 《《 7)) );

USART_SendData(USART1,(uint8_t)ch);

return ch;

}

#endif

整合自:CSDN尘埃世界、Foresights

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分