您的位置 首页 5G

单片机中printf函数的重映射

一、源自于:大侠有话说1如果你在学习单片机之前学过C语言,那么一定知道printf这个函数它最最好用的功能除了打印你想要的字符到屏幕上外,

一、源自于:大侠有话说

1.假如你在学习单片机之前学过C言语,那么必定知道printf这个函数.它最最好用的功用

除了打印你想要的字符到屏幕上外,还能把数字进行格式化.例如十进制的33,用十进制

方法输出便是33,用十六进制的方式就输出成21,假如用字符方式输出,那便是ASCII码

表对应的’!’.

2. 51年代,一些人软件仿真的时分也很喜爱运用printf,但实践代码运转中,用的人则不多,因

为甭说51年代,便是用AVR的,也会觉得printf这个函数消耗的CPU资源适当可观.所以

printf在8位单片机年代,了解的人确实不多.但到了ARM年代,状况则大为不同.究竟

ARM的处理才能和51彻底不是一个等级,这使得不少人开端喜爱运用printf在实践项目

中作为调试进程的串口输出.由于它的格式化功用实在是适当便当.

而本例程便是教会你这么运用printf.

3.程序把printf的输出目标设定为串口1.有一个规范的函数是必需求自己界说的,那便是

fputc,把这个函数的功用写成串口输出一个字符.主张在串口的初始化模块中界说

int fputc(int ch)

{

USART_SendData(USART1, (u8) ch);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

return ch;

}

然后记住一点,便是MicroLib要勾上.其实大部分状况下,都主张运用MDK顺便的

MicroLib,这东西是有必定用处的.留下今后再更多地介绍.

以上两步做好后,还记住要包括printf的头文件:

#include

那么,一切作业就功德圆满了,你能够纵情的测验printf带来的便当.

4.别的我们是否意识到一点,便是printf输出到哪,其实是由fputc函数决议的.所以假如有兴

趣,能够改写这个fputc函数,使得其printf的目标是DX-32板上的TFT屏或许黑白屏.我们有

爱好的无妨试试.

二、源自于:STM32开发板(正点原子)

//参加以下代码,支撑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函数 ,串口1

int fputc(int ch, FILE *f)

{

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

USART1->DR = (u8) ch;

return ch;

}

#endif

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/258299.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部