OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2717|回复: 4

求个gcc编译stm32后printf重定向无效的解法

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-3-15
在线时间
8 小时
发表于 2016-4-16 15:13:03 | 显示全部楼层 |阅读模式
8金钱
本帖最后由 kkumeko 于 2016-4-18 21:53 编辑

我将正点原子的例程移植到gcc环境下编译,编译完成后printf不能正常输出。

网查资料,是GCC不支持半主机模式。

根据网络上提供的资料,官方的解法是将printf重定向。

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE
{

  USART_SendData(USART1, (uint8_t) ch);

  while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  {
  }
  LED1 = 0;
  return ch;
}


照例添加后,程序运行时始终不能运行到重定向的__io_putchar()函数中,编译器里各种设置各种尝试啊,整整两天了啊!!!
串口本身是好的,可以接收到串口信息并回送。

附上修改后的工程文件,我用embiz 0.42版本编译的。
用keil的gcc编译也试过,现象一样。

求个高手搭救我。。。。。。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-3-15
在线时间
8 小时
 楼主| 发表于 2016-4-17 15:31:15 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-4-23 19:54:34 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2019-6-10
在线时间
27 小时
发表于 2019-7-22 17:04:44 | 显示全部楼层
我的解法
在usart.c中加入以下片段
  1. int _write(int file, char *ptr, int len)
  2. {
  3.         for (int t = 0; t < len; t++)
  4.         {
  5.                 while ((USART1->SR & 0x40) == 0)
  6.                         ;
  7.                 USART1->DR = ptr[t];
  8.                 while ((USART1->SR & 0x40) == 0)
  9.                         ;
  10.         }
  11.         return len;
  12. }
复制代码

同时将39行的原有支持关掉
如下
39 #if 0
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-7-22 17:31:35 | 显示全部楼层
有没有链接到库?
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-14 05:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表