历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2021年10月08日 | STM32CubeIDE 的应用: 重定向printf 到stm32串口

2021-10-08 来源:eefocus

一、导入stdio.h库文件

/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include

/* USER CODE END Includes */


二、重写函数

/* USER CODE BEGIN 4 */


#ifdef __GNUC__


#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#define GETCHAR_PROTOTYPE int fgetc(FILE *f)

#endif /* __GNUC__ */


PUTCHAR_PROTOTYPE

{

    HAL_UART_Transmit(&huart4, (uint8_t *)&ch, 1, 0xFFFF);

    return ch;

}


GETCHAR_PROTOTYPE

{

  uint8_t ch = 0;

  HAL_UART_Receive(&huart4,(uint8_t *)&ch, 1, 0xFFFF);


  if (ch == 'r')

  {

      __io_putchar('r');

      ch = 'n';

  }

  return __io_putchar(ch);

}


/* USER CODE END 4 */


三、测试

然后就可以在程序中使用printf调试串口了。可以在main.c的主循环中加入下面一段代码验证printf是否已正确的重定向:

uint8_t rd[10];

scanf("%s",rd);

printf("hello %srn",rd);

推荐阅读

史海拾趣

General Electronic Devices公司的发展小趣事
提供稳定的直流电压。
Advanced Optoelectronic Technology Corp公司的发展小趣事

在追求经济效益的同时,AOTC也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和节能技术生产产品,降低对环境的影响。此外,公司还积极参与公益事业,支持教育、科研等领域的发展,为社会做出了积极贡献。

这些故事虽然是虚构的,但它们反映了一个电子行业中公司可能经历的一些典型发展阶段和挑战。在真实情况中,公司的发展路径会受到市场环境、技术变革、竞争态势等多种因素的影响。

AUSTIN公司的发展小趣事

然而,好景不长。奥斯汀公司在全力投入研发的WW1车系上遭遇了挫折,销售不佳导致公司濒临破产。在这个关键时刻,奥斯汀汽车公司通过研发新的车型来寻求突破。1922年,Seven车系成功上市,凭借其卓越的性能和合理的价格,使得奥斯汀汽车转危为安,重新获得了市场的认可。

Circuit Assembly公司的发展小趣事

随着汽车行业的竞争日益激烈,奥斯汀汽车开始寻求与其他公司的技术合作。1952年,奥斯汀与诺菲尔德车厂合并,组成了英国汽车公司(BMC),旗下包括莫里斯、沃尔斯利、莱利及MG等多个品牌。此外,奥斯汀汽车还积极与国际汽车公司展开合作,如与日产汽车在1952年签署了技术合作协议,共同开发新的车型。这些合作使得奥斯汀汽车的技术水平得到了显著提升,同时也推动了公司的国际化发展。

Armel Electronics Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Armel Electronics Inc公司深知此道,始终坚持品质至上的原则。公司从原材料采购到生产流程,再到产品出厂,每一个环节都严格把控,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得Armel的产品在市场上赢得了良好的口碑,并逐渐树立了公司的品牌形象。

Bellin公司的发展小趣事

在电子行业中,技术更新迅速,创新是企业持续发展的动力。Armel Electronics Inc公司始终将研发创新作为公司的核心竞争力。公司不断投入资金,引进先进设备和技术,加强研发团队的建设。通过不断创新,Armel成功推出了一系列具有行业领先水平的新产品,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

简易数控直流电源

简易数控直流电源  94年的题, 谁会做啊, 我想了解以下他的原理几过程. 我的邮箱,cf2928@163.com 要不谁告诉我那有我去下也行,谢了.…

查看全部问答>

传输线和反射的经典文章

传输线和反射的经典文章…

查看全部问答>

VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包?

VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包? ATE AT+CMGF=0 AT+CIMI   AT+CIMI获得IMSI  IMSI 国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别 ...…

查看全部问答>

新手请教winCE初级 问题

在VS2005环境里可以创建wince的项目 我现在想用C#在vs2005开发一个应用软件用的是Access数据库 。下载wince下面有哪些方面的要求吗 。 比如说我要做一个类似表格的界面 在输入数据以后点击按钮就保存到数据库里面去了 然后文本框清空,  & ...…

查看全部问答>

2812 flash不能烧写

问题是这样的:我用flash烧写了一个控制电机的程序,不能运行,就把代码改了一下,再进行烧程序的时候就烧不进去啦,我也没有动“lock”和密码(在flash烧写的时候一直很小心的),怎么会锁住呢?很是不解。请EEWORLD老师和各位高手解答一下,谢谢 ...…

查看全部问答>

OLED_12896_GR_Lib函数(三) ——LINE函数的实现

首先向大家说声抱歉,因为自己的不小心,上次的PSET函数中出现了一些失误,且在测试程序中也没有测试出来,这次在编写LINE函数时发现并修改过来了。现把修改的地方罗列如下:1、 缓冲数组的定义,这是一个非常低级的失误,在定义数组的时候, ...…

查看全部问答>

C题智能小车群

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 109197413  …

查看全部问答>

.一个初中生是如何成为嵌入式工程师的

我是一个只有初中毕业没有读过多少书的人从小就爱好无线电记得很小的时候当通讯兵的父亲带回来几本电子方面的书籍从此就迷上了无线电那种痴迷程度决不亚于现在的小孩迷恋游戏机至今仍然清楚的记得曾经因为装成功一台6管收音机而兴奋的几天几夜没睡 ...…

查看全部问答>

路怎么走,现在真的有点迷茫了。啊啊 啊啊啊啊啊 啊啊啊啊啊   啊啊啊啊啊啊啊  …

查看全部问答>

wince dm9000驱动代码流程分析

从dm9000.def文件中可以看到dm9000的驱动程序(dm9000.dll)exports的函数只有DriverEntry。从名字上也可以看出这是该dll文件入口。      下面详细看下这个入口函数(在driver.cpp中实现):在这个函数中主要有一个NdisMInit ...…

查看全部问答>