STM32
直播中

江根磊

8年用户 1124经验值
私信 关注
[问答]

求助,关于STM32CUBEIDE1.5.0使用Printf函数的疑问

本人菜鸟一个!
以前用keil MDK环境,最近ARM中国打电话到公司,不能用keil了!
然后准备换,网上找了下eclipse的,环境很复杂!
然后发现STM32CUBEIDE也是基于eclipse的,就把工程弄到STM32CUBEIDE中,但怎么都不OK
自己从新从STM32CUBEMX到STM32CUBEIDE建工程,发现可以烧录进去,LED跑起来了,但是printf函数怎么都不行!
网上找的

#include "stdio.h"

#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__ */

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

  return ch;
}


也不行,几种方式都试过了,不知道哪里有问题!
哪位大神给个可行的代码,谢谢~~


回帖(2)

王秀华

2024-3-22 11:31:10
找到问题了,CDT编译器一直设置的是外部编译器,要改成内部编译器才行
举报

juju宇哥

2024-3-22 14:19:51
在STM32CUBEIDE中使用`printf`函数需要进行一些配置才能正常工作。以下是一些可能的解决方案:

1. 在`stm32cubeide.ini`文件中增加以下配置:

   ```
   -specs=nosys.specs -specs=nano.specs
   ```
   这个文件可以在STM32CubeIDE的安装目录中找到。

2. 在STM32CUBEIDE中的工程属性中进行如下配置:

   - 打开项目属性对话框:右键单击项目 -> Properties
   - 选择"C/C++ Build" -> "Settings"
   - 选择"Tool Settings"标签页,然后选择"C Linker" -> "Miscellaneous"
   - 在"Other flags"字段中添加以下选项:
   
     ```
     -specs=nosys.specs -specs=nano.specs -u _printf_float
     ```

   - 确定并重新编译你的项目。

请注意以上方法适用于使用GCC编译器的情况。如果你使用的是别的编译器,可能需要进行其他配置,如使用Sourcery CodeBench或者IAR编译器。你可以在STM32CUBEIDE的安装目录中找到相应的文档,其中会提供更详细的配置指南。

希望这些能帮到你解决问题!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分