历史上的今天
今天是: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字节的缓冲区,然后向缓冲区打印数据,最后就是通过串口发送到上位机啦.
测试代码:

测试结果
史海拾趣
|
内容简介: 本书介绍了Java语言的基本特性,包括字符串、选择、小应用程序以及异常等内容。与一般书籍不同的是,本书用大量的示例说明了Java语言的语法、特性等,特别适合于刚刚接触Java语言的学生,使其在实战中锻炼Java语言的开发技巧。 ...… 查看全部问答> |
|
我们要给客户做一套库存管理系统,其中要开发一套手持终端的程序,手持终端扫描条形码,便知道是何货物。 手头一点资料也没有,不知道好实现吗?请各位高手指点一下,手持终端选用啥样的好?最好给套方案,比以高分相谢 qq:415548110 msn:sunshi ...… 查看全部问答> |
|
问题: 在一个对话框里有很多的控件,系统不带鼠标。通过外部的控制按钮来实现页面切换,比方按下F1出现一个static,按下F2出现一个在static外置出现一个Edit,不做成多个对话框,就在一个对话框实现。怎么实现是最合理的? 我的 ...… 查看全部问答> |
|
我的程序有一个皮肤目录,现在想 编译 wince 时把这个目录和下面的文件增加到 nk.bin 中 我知道要想增加文件,只要修改 project.bib 文件即可,但是不知道增加文件夹改怎么弄?… 查看全部问答> |
|
passthru安装后,在网络连接的属性框中会显示添加了一项服务。能不能不显示这项服务呢? passthru安装后,在网络连接的属性框中会显示添加了一项服务。能不能不显示这项服务呢?… 查看全部问答> |
|
原来一直在使用7.5版本的,因为最近笔记本换了WIN7系统,不知道是杀软作怪还是我的WIN7用原来的那个7.5兼容不好,就是打不开。 所以决定安装一个较新一点版本的,找到了这个7.7版的,安装用了一下,还可以,暂时没有遇到什么问题。 在我的笔记本的W ...… 查看全部问答> |
|
为了能够方便得写出自己得串口程序,我开始学习c#,但是我不知道自己得学习思路对不对,我就想先做一个最简单得,一个上位机软件上有开和两个按钮,然后控制led亮暗,但是不知道串口部分怎么做啊!纠结啊!求知道啊!… 查看全部问答> |




