STM32与C51的PRINTF 有什么不一样

使用C51只需要把TI置位但是STM32却要重定向FPUTC才能用PRINTF这是为什么!!!跪了!!... 使用C51只需要把TI置位 但是 STM32却要重定向FPUTC 才能用PRINTF 这是为什么!!!跪了!! 展开
 我来答
百度网友ba4ffee
2012-03-13 · TA获得超过425个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:96.6万
展开全部
首先,这并不是编译环境造成的!从printf说起,printf是封装在stdio.h中的库函数,它是库函数!
这个库函数是有出口(输出)的,在它的内部调用了你重定义的函数,用这个函数来输出,你重定义到哪里,他就输出到哪里,如果你正确的重定义到液晶,它就在液晶上显示了。51单片机串口是很简单的,printf内部的函数本身具有改变SBUF的语句,因此不需要重定义了,对比着看:51正常的串口:ES=0;
TI=0;
SBUF=mydata;
while(!TI);
TI=0;
ES=1;
使用printf:ES=0;
TI=1;
printf("printf %u\n",a);
while(!TI);
TI=0;
ES=1;
是不非常相似呢?就是因为51的串口函数与print内部的出口函数基本一样,printf有改变SBUF的语句所以不用重定义了(其实已经重定义了,只是改的太少了只是在前后加了几句而已)。而STM32的串口函数复杂的多,与print内部的出口函数差异很大,说以必须重定义程序的出口。
小灰马mxh
高粉答主

2015-10-21 · 醉心答题,欢迎关注
知道大有可为答主
回答量:6527
采纳率:97%
帮助的人:392万
展开全部
keil的stdio.h提供了一堆函数,大致分两类,一类是通过串口在上位机上输入输出,另一类是指定一个指针变量,向其输入输出,这样便可以将得到的字符数组指针的内容输出到LCD一类设备上了,也可通过指针获得按键输入。
对于一类,你必须得软件初始化串口,硬件与电脑连接好,然后利用windows的超级终端就可以显示单片机中程序里的printf等函数打印出的内容了,你也可以使用getchar获得超级终端的按键码。(当然也可以使用串口助手之类软件代替超级终端,注意波特率,数据位,校验位,等设置要保持一致)
对于第二类,是不用初始化串口的,因为跟串口没任何关系,你只要用指针虚拟设备就可以了,输入输出都是你自己做的硬件。
附串口初始化程序:
#define T1_INIT_VALUE 0x0D //定时器1初始值设定 9600bps@11.0592MHz
void UartInit(void) {
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = T1_INIT_VALUE; //设定定时初值
TH1 = T1_INIT_VALUE; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES = 0; //禁止串行口中断
TI = 1; //必须置高TI,RI
RI = 1;
puts("Uart Initialize Success!");
// *.调用printf之前应该关闭串口中断使能
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
azurysky
2012-03-01 · TA获得超过673个赞
知道小有建树答主
回答量:349
采纳率:0%
帮助的人:306万
展开全部
两款不同的单片机,编译环境也不一样。
我编程序一般不调用PRINTF。
单片机的C语言是对printf函数重新定义了。
我估计是C51的编译环境里直接定义printf函数为串口发送函数
而STM32编译环境的printf函数并非有串口发送功能,重定义的FPUTC是真正的串口发送函数。
你可以看一下两个环境中printf函数的具体代码,就应该能找到原因。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o梦影风铃
2012-03-02 · TA获得超过327个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:50.9万
展开全部
2个不一样的IC 用法当然不一样 没有为什么 你只要知道他怎么用就行了
汽车都还有自动手动的呢 你是不是想手动的也实现自动的功能?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beyond696
2012-03-05 · TA获得超过409个赞
知道答主
回答量:189
采纳率:0%
帮助的人:52.3万
展开全部
编译环境决定的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式