打印
[应用相关]

GCC编译stm32程序,如何重定向printf

[复制链接]
775|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sadicy|  楼主 | 2022-5-1 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把keil的直接复制过去,没成功啊
应该怎么做

使用特权

评论回复
沙发
kiwis66| | 2022-5-2 14:57 | 只看该作者
是不是底层原理不一样?

使用特权

评论回复
板凳
aspoke| | 2022-6-6 13:25 | 只看该作者
使用MicroLib  

使用特权

评论回复
地板
mnynt121| | 2022-6-20 21:33 | 只看该作者
重定向printf输出到串口输出的多种方法  

使用特权

评论回复
5
ufbycd| | 2022-6-21 09:04 | 只看该作者
keil的C库是MicroLib, GCC的C库是NewLib,重定向函数不一样。
GCC的重定向函数是_write, 不过如果是用STM32CubeIDE新建工程的话,工程模板里实现了跟MicroLib一样的putchar里调用了_write函数。

使用特权

评论回复
6
sonicll| | 2022-6-21 09:28 | 只看该作者
楼主可以搜一下用eclipse开发STM32的相关内容,用GCC的话,需要重定向的是_write()函数

使用特权

评论回复
7
hilahope| | 2022-6-22 22:05 | 只看该作者
调用MDK微库(MicroLib)的方法  

使用特权

评论回复
8
xiaoyaodz| | 2022-6-24 10:32 | 只看该作者
intfputc(int ch, FILE* stream)此函数

使用特权

评论回复
9
ulystronglll| | 2022-6-24 21:25 | 只看该作者
printf函数阻碍了程序的运行  

使用特权

评论回复
10
deliahouse887| | 2022-6-25 14:23 | 只看该作者
#pragma import(__use_no_semihosting) struct __FILE {int handle; }; FILE __stdout; void _sys_exit(int x) { x = x; }intfputc(int ch, FILE *f){ while((USART1->SR&0X40)==0); USART1->DR = (u8) ch; return ch;}

使用特权

评论回复
11
lzmm| | 2022-7-10 15:12 | 只看该作者
gcc不知道怎么冲映射   

使用特权

评论回复
12
febgxu| | 2022-7-10 16:44 | 只看该作者
使用的是microlib吗?   

使用特权

评论回复
13
ghuca| | 2022-7-10 18:56 | 只看该作者
这个使用keil可以重定向的。   

使用特权

评论回复
14
ingramward| | 2022-7-10 19:43 | 只看该作者
你看看studio的代码是怎么重定义的  

使用特权

评论回复
15
香水城| | 2022-7-12 15:05 | 只看该作者
假设你使用STM32CbueIDE, 它也是基于GCC的。

main()前面加上下面代码:

/* USER CODE BEGIN PM */
#ifdef __GNUC__
/* With GCC, 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__ */
/* USER CODE END PM */


在用户代码里加上下面代码:

PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

  return ch;
}

另外,加上“stdio.h"头文件就可以使用了。

使用特权

评论回复
16
sadicy|  楼主 | 2022-7-16 15:29 | 只看该作者
感谢!!!

使用特权

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

本版积分规则

166

主题

1036

帖子

2

粉丝