历史上的今天
返回首页

历史上的今天

今天是:2025年07月31日(星期四)

正在发生

2019年07月31日 | 用VisualStudio开发STM32遇到的问题(一)

2019-07-31 来源:eefocus

我现在已经用VS2017写STM32的程序有一段时间了,在这段时间里,遇到了不少问题,今天就和大家分享一下有关于printf的故事....

之前用MDK开发STM32的时候用正点原子教给大家的printf,很好用,但是在VS上,一直打印不出来东西,于是,我打算重新写printf

废话不多说,直接上代码


void myPrintf(char* fomat, ...)

 {

 char buf[1000] = "";

 char* p;

 u16 i = 0;

 int num;

 float fnum;

 char* str;

 char tem[100] = "";

 va_list va;

 va_start(va, fomat);

 p = fomat;

 while (*p)

 {

   if (*p == '%')

   {

    switch (*(++p))

    {    

    case 'd':

     num = va_arg(va, int);

     itoa(num, tem, 10);

     strcpy(buf + i, tem);

     i += strlen(tem) - 1;

     break;

    case 's':

     str = va_arg(va, char*);

     strcpy(buf + i, str);

     i += strlen(str) - 1;

     break;    

    case 'f':

     fnum = va_arg(va, double);

     gcvt(fnum, 8, tem);

     strcpy(buf + i, tem);

     i += strlen(tem) - 1;

     break;

    }      

   }

   else

   {

    buf = *p;

   }

   i++;

   p++;

 } 

 p = buf;

 while (*p)

 {

   while ((USART1->SR & 0X40) == 0)

    ;

   USART1->DR = (u8) *p;

   p++;

 }

 va_end(va); 

 }


其中,使用了string.h strlib.h strarg.h 这三个头文件

原理很简单,就是一个可变参函数.

建立一个1000字节的缓冲区,然后向缓冲区打印数据,最后就是通过串口发送到上位机啦.


测试代码:

测试结果

推荐阅读

史海拾趣

City_Technology公司的发展小趣事

1977年,伦敦大学内,四个富有远见的科学家怀揣着梦想,创立了City Technology公司。他们利用Wolfson研究所开发的电化学技术,着手研发新型氧气感应技术。这一创新技术的诞生,标志着City Technology在气体传感领域的初步尝试,并为其日后的腾飞奠定了坚实的基础。在接下来的几年里,公司不断突破技术瓶颈,其铁罐氧气传感器技术于1982年获得了英国皇后奖技术成就奖,这一荣誉不仅肯定了公司的技术实力,也为其在市场上赢得了良好的声誉。

FORYARD公司的发展小趣事

在20世纪80年代初,FORYARD公司由一群电子工程师在硅谷创立。起初,公司专注于研发高性能的半导体芯片,但面临激烈的市场竞争和技术壁垒。为了突破重围,FORYARD决定聚焦于低功耗、高集成度的微控制器(MCU)领域。经过数年的潜心研发,公司成功推出了一款具有革命性创新的MCU产品,凭借其出色的性能和价格优势,迅速在智能家居和可穿戴设备市场占据一席之地。这一成功不仅为公司赢得了市场认可,也为后续的技术创新和业务拓展奠定了坚实基础。

DMS Electronic Components, Inc公司的发展小趣事

DMS非常重视人才的培养和引进。公司建立了完善的人才选拔和激励机制,吸引了一批高素质的专业人才加入。这些人才在技术研发、市场营销、生产管理等方面发挥了重要作用,为公司的快速发展提供了有力保障。同时,DMS还注重员工的培训和发展,为员工提供了广阔的职业发展空间。

GSG公司的发展小趣事
支持多种通信接口(如RS-485、Modbus、HART等),方便与其他系统或设备进行集成。
Deltron / DEM Manufacturing公司的发展小趣事

为了进一步扩大市场份额和增强竞争力,DEM Manufacturing积极寻求与其他企业的战略合作。公司与其他电子行业的领军企业建立了长期稳定的合作关系,共同开发新产品、拓展新市场。这些合作不仅为公司带来了更多的商业机会,还促进了整个电子行业的发展和进步。

请注意,以上故事梗概是基于已知事实进行的概括和虚构,旨在展示Deltron / DEM Manufacturing公司在电子行业中的发展历程和成就。具体细节和实际情况可能有所不同。

DSP Group Inc公司的发展小趣事

随着全球市场的不断变化和竞争的加剧,DSP Group不断调整其全球化布局和战略转型。公司先后在德国、英国等地设立了研发中心和办事处,加强了与国际市场的联系和合作。同时,DSP Group还积极寻求与其他公司的合作和并购机会,以进一步拓展其业务领域和市场份额。通过这些举措,DSP Group在全球范围内建立了广泛的销售网络和合作伙伴关系,为其未来的发展奠定了坚实的基础。

以上五个故事概述了DSP Group Inc公司在电子行业中发展起来的关键阶段和重要事件。这些故事不仅展示了DSP Group在技术创新、市场拓展和全球化布局方面的努力和成果,也反映了电子行业发展的趋势和变化。

问答坊 | AI 解惑

JAVA编程习题与解答(全美经典学习指导系列)

内容简介:   本书介绍了Java语言的基本特性,包括字符串、选择、小应用程序以及异常等内容。与一般书籍不同的是,本书用大量的示例说明了Java语言的语法、特性等,特别适合于刚刚接触Java语言的学生,使其在实战中锻炼Java语言的开发技巧。 ...…

查看全部问答>

求一套库存管理的方案

我们要给客户做一套库存管理系统,其中要开发一套手持终端的程序,手持终端扫描条形码,便知道是何货物。 手头一点资料也没有,不知道好实现吗?请各位高手指点一下,手持终端选用啥样的好?最好给套方案,比以高分相谢 qq:415548110 msn:sunshi ...…

查看全部问答>

跪求protel dxp波形发生器原理图!!

小弟目前急需一个基于protel dxp 2004技术的波形发生器原理图,希望哪位高手不吝赐教,在下不胜感激!!! …

查看全部问答>

在一个对话框实现多个页面切换,怎么实现?

问题: 在一个对话框里有很多的控件,系统不带鼠标。通过外部的控制按钮来实现页面切换,比方按下F1出现一个static,按下F2出现一个在static外置出现一个Edit,不做成多个对话框,就在一个对话框实现。怎么实现是最合理的? 我的 ...…

查看全部问答>

wince 下怎样增加一个文件夹也就是目录

我的程序有一个皮肤目录,现在想 编译 wince 时把这个目录和下面的文件增加到 nk.bin 中 我知道要想增加文件,只要修改 project.bib 文件即可,但是不知道增加文件夹改怎么弄?…

查看全部问答>

passthru安装后,在网络连接的属性框中会显示添加了一项服务。能不能不显示这项服务呢?

passthru安装后,在网络连接的属性框中会显示添加了一项服务。能不能不显示这项服务呢?…

查看全部问答>

如何在windows下写程序读取MBR

想在windows下,也就是保护模式下读取MBR。不知道windows提供了相应的库函数没有?…

查看全部问答>

Proteus 7.7 下载(WIN7、XP都可用)

原来一直在使用7.5版本的,因为最近笔记本换了WIN7系统,不知道是杀软作怪还是我的WIN7用原来的那个7.5兼容不好,就是打不开。 所以决定安装一个较新一点版本的,找到了这个7.7版的,安装用了一下,还可以,暂时没有遇到什么问题。 在我的笔记本的W ...…

查看全部问答>

stc12c5a60s2 使用者 请进,,需要帮助

 谁有 spi  E2prom 等    这个芯片内 所有常用功能的 实例应用程序      不吝赐教  感激不尽 …

查看全部问答>

学习c#得困惑。。。。

为了能够方便得写出自己得串口程序,我开始学习c#,但是我不知道自己得学习思路对不对,我就想先做一个最简单得,一个上位机软件上有开和两个按钮,然后控制led亮暗,但是不知道串口部分怎么做啊!纠结啊!求知道啊!…

查看全部问答>