在MDK中使用 printf 函数

摘要:
Microlib提供了一个有限的stdio子系统,它只支持无缓冲的stdin、stdout和stderr。通过这种方式,您可以使用printf()在应用程序中显示诊断消息。要使用高级I/O功能,您必须提供以下基本功能,这些功能可用于您自己的I/O设备。例如,fprintf()、printf()、fwrite()、fputs()、puts(),putc()和putchar()。例如,fscanf()、scanf())、fread()、read()、fgets()、gets()、get c()和getchar()__Backspace()如果输入函数使用scanf(()或fscanf),则实现此基本函数。Notemicrolib中不支持的转换为%lc、%ls和%a。

microlib 提供了一个有限的 stdio 子系统,它仅支持未缓冲的 stdinstdout 和 stderr。 这样,即可使用 printf() 来显示应用程序中的诊断消息。

要使用高级 I/O 函数,您必须提供自己实现的以下基本函数,以便与您自己的 I/O 设备配合使用。

fputc() 

为所有输出函数实现此基本函数。 例如,fprintf()printf()fwrite()fputs()puts()putc() 和 putchar()

fgetc() 

为所有输入函数实现此基本函数。 例如,fscanf()scanf()fread()read()fgets()gets()getc() 和 getchar()

__backspace() 如果输入函数使用 scanf() 或 fscanf(),则实现此基本函数。Notemicrolib 中不支持的转换为 %lc%ls 和 %a

下面是完整的资料:

keil (我用的是realview mdk3.11)建立ARM的工程时其中有一项是选 use MicroLIB

 

调整 microlib 输入/输出函数microlib 提供了一个有限的 stdio 子系统,它仅支持未缓冲的 stdinstdout 和 stderr。 这样,即可使用 printf() 来显示应用程序中的诊断消息。要使用高级 I/O 函数,您必须提供自己实现的以下基本函数,以便与您自己的 I/O 设备配合使用。fputc() 为所有输出函数实现此基本函数。 例如,fprintf()printf()fwrite()fputs()puts()putc() 和 putchar()fgetc() 为所有输入函数实现此基本函数。 例如,fscanf()scanf()fread()read()fgets()gets()getc() 和 getchar()__backspace() 如果输入函数使用 scanf() 或 fscanf(),则实现此基本函数。Notemicrolib 中不支持的转换为 %lc%ls 和 %a

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/laorenshen/archive/2009/11/07/4782339.aspx

 

想在mdk 3.80a中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 

发现在Options里选上microlib之后,就不用关闭半主机模式了。

 

int fputc(int ch, FILE *f)
 {
     //USART_SendData(USART1, (u8) ch);
     USART1->DR = (u8) ch;
     
     /* Loop until the end of transmission */
     while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
     {
     }

     return ch;
 }

 

 在MDK中使用 printf 函数第1张

免责声明:文章转载自《在MDK中使用 printf 函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java学习笔记hibernate基础(1)Maven 命令参数 整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

循环结构实验

第五章 循环结构实验   C程序设计实验报告 实验项目: 1、用for语句实现循环 2、用while循环语句实现循环 3、用do_while语句实现循环 4、用while语句和for语句配合实现循环 5、用for语句嵌套实现循环 姓名:陈建清实验地点:教学楼514教室  实验时间:2019.4.17 一、实验目的与要求 1、用for语句实现循环 目的:掌...

群发技术-使用python3给微信好友群发消息

本文介绍如何给个人微信好友群发消息。 微信个人号中的群发助手可以一次给30个发送消息,如果要给所有所有群发,则需要自己手动发送多次,或者借助程序实现了。本文即是程序实现教程 一、原理 在微信的官方网站上 https://weixin.qq.com/,提供了一个网页版的微信,地址为 https://wx.qq.com/ 登录该网页版微信后,可以在网页上给对方...

ucGUI的视窗管理回调机制学习

要熟悉窗口的回调机制,重点理解回调函数作用,消息传递机制。 uC/GUI的窗口管理是个单独的软件,不是uC/GUI的基本组成部分。代码见\uCGUI\GUI\WM。当使用uC/GUI窗口管理时,任何能显示在显示终端上的内容都包含在一个窗口里面,这个窗口是LCD屏幕上的一个给用户画图或显示目标的区域。窗口能够是任何尺寸的,能够一次在屏幕上显示多个窗口,也能够...

流媒体协议(二):RTMP协议

一、概念与摘要 RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频、视频和互动内容)。RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流。通常情况下,不同类型的消息会被分配不同的优先级,当网络传输能力受限时,优先级用来...

解决Android Toast重复显示等待时间过长的问题

Toast是一种简易的消息提示框,它无法获取焦点,按设置的时间来显示完以后会自动消失。一般用于帮助或提示。 当触发点击事件显示toast信息时,如果设置了时间长短类型为LENGTH_LONG,虽然回到后台运行,但是依然会显示toast信息,尤其是当连续点击时,toast就会排队等待直到所有toast显示完毕,这种界面的用户体验是很差的。 → 1toast...

谷歌发布"自动机器学习"技术 AI可自我创造

谷歌发布"自动机器学习"技术 AI可自我创造 据Inverse报道,今年5月份,谷歌宣布其人工智能(AI)研究取得重大进展,似乎帮助科幻小说中最耸人听闻的末日预言成为现实。谷歌推出名为“自动机器学习(AutoML)”的技术,在无需人类工程师的支持下,允许AI进行自我创造。 从表面上看,这种技术可能会让人觉得AI发展终于迎来“奇点时刻”,它正在失去控制。但...