请选择 进入手机版 | 继续访问电脑版
查看: 123|回复: 2

[经验分享] 基于STM32 printf 重定向问题分析

[复制链接]

签到天数: 133 天

[LV.7]化身百千

发表于 2018-10-8 17:03:08 | 显示全部楼层 |阅读模式
1、declaration conflicts with target of using declaration already in scope

不能使用.cpp文件,若要使用printf重定向,那就使用.c 文件

解决方法:

1、在main文件中包含 “stdio.h” 文件

2、在工程中创建一个文件保存为 Regtarge.c , 然后将其添加工程中

在文件中输入如下内容(直接复制即可)

#include <stdio.h>

#include <rt_misc.h>

#pragma import(__use_no_semihosting_swi)

extern int  SendChar(int ch); // 声明外部函数,在main文件中定义

extern int  GetKey(void);

struct __FILE {

  int handle;                 // Add whatever you need here

};

FILE __stdout;

FILE __stdin;

int fputc(int ch, FILE *f) {

  return (SendChar(ch));

}

int fgetc(FILE *f) {

  return (SendChar(GetKey()));

}

void _ttywrch(int ch) {

SendChar (ch);

}

int ferror(FILE *f) {                            // Your implementation of ferror

  return EOF;

}

void _sys_exit(int return_code) {

label:  goto label;           // endless loop

}



3、在main文件中添加定义以下两个函数

int SendChar (int ch)  {

  while (!(USART1->SR & USART_FLAG_TXE)); // USART1 可换成你程序中通信的串口

  USART1->DR = (ch & 0x1FF);

  return (ch);

}

int GetKey (void)  {

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

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

}

签到天数: 133 天

[LV.7]化身百千

 楼主| 发表于 2018-10-9 08:35:20 | 显示全部楼层

666                       
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

返回顶部