打印

如何使用printf函数啊,在serial #1 查看输出啊

[复制链接]
3633|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuyaoarm|  楼主 | 2011-9-17 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想问一下啊,在我调试的时候如何使用printf函数啊,然后在serial #1 查看输出啊求高手指导一下啊!!
沙发
liuyaoarm|  楼主 | 2011-9-18 11:39 | 只看该作者
顶一下,需要有人来回答啊

使用特权

评论回复
板凳
zsz89757| | 2011-10-26 11:54 | 只看该作者
标准库函数printf的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数,也就是自己重新定义

使用特权

评论回复
地板
jgphu| | 2011-10-27 10:10 | 只看该作者
自己看标准 库吧. 移植过来可能 IAR 会报错, 不过不用担心 设置 一下 OPTION-GERNERAL OPTION-LIB.. 将normal 改为FULL  OK

使用特权

评论回复
5
zhangyang86| | 2011-10-27 10:27 | 只看该作者
两种办法,一种使用微库,一种不使用:
//不使用microLib*/
#include "sys.h"
#include "usart.h"
#if 1
#pragma import(__use_no_semihosting)            
//标准库需要的支持函数                 
struct __FILE
{
        int handle;
        /* Whatever you require here. If the only file you are using is */
        /* standard output using printf() for debugging, no file handling */
        /* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;      
//定义_sys_exit()以避免使用半主机模式   
_sys_exit(int x)
{
        x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
        return ch;
}
#endif

----------------------------------------
/*使用microLib*/
/*http://www.61ic.com/MCU/ST/MCU/201104/32904.html*/

//重定义fputc函数
/*
int fputc(int ch, FILE *f)
{
        USART_SendData(USART1, (uint8_t) ch);

        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}        
   
    return ch;
}
int GetKey (void)  {

    while (!(USART1->SR & USART_FLAG_RXNE));

    return ((int)(USART1->DR & 0x1FF));
}
*/

使用特权

评论回复
6
丁同同2011| | 2015-4-22 13:35 | 只看该作者
#include<stdio.h>/*某个stdio.h*/

int main()/*主函数“整数”类型*/
{
        char buffer[50];/*“字符”类型的数组,下面共有50个元素。*/
        int n,a=5,b=3;/*三个变量都为“整数”类型,intn中间要有空格*/
        while(1)
        {
  //n=sprintf(buffer,"%d plus %d is %d",a,b,a+b);/*赋予数值*/
  printf("[%s]is a string %d chars long\n",buffer,n);/*“格式输出函数”*/
       
  return 0;/*“返回零”也就是程序正常退出*/
}

        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕

为什么我的程序一直停在这个地方呢??

使用特权

评论回复
7
wowow| | 2015-4-22 14:53 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

1

粉丝