Atollic TrueStudio开发工具printf函数输出使用

转载自http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616754&page=1&extra=#pid2380833

也可以到https://stmcu.com.cn/share下载本教程的PDF版本。

有时候想收藏一些相关的文章,又不想重新百度,因此直接转载到这里来了,方便自己回想、复习,下次新建工程时候,又可以直接复制粘贴了。在此谢谢原作者Y-D

在TrueStudio开发工具中使用printf函数如果第一次接触可能会找不到方向,现将最近刚刚接触STM32cubemx配置生成TrueStudio工程串口打印的使用过程进行如下说明:

(1)   STM32cubemx创建基本工程打开软件在Pinout选项卡下按照如图选择配置串口1

A、选择系统时钟来源外部晶振

   B、此处我现在JLINK的SWD模式做程序的调试,所以选择如下:

  C、串口1配置为异步通信模式

2、配置单片机运行频率按照下图设置为主频72Mhz

3、在Configuration选项卡下配置串口相关参数

点开USART1

就此基本配置完成,现在开始生成TrueStudio工程,打开工程设置设置程序工程保存的路劲、名称、环境支持堆栈大小设置、.c/.h文件独立创建等设置。如下图:

设置完成,点击如下图标开始生成工程。

生成工程编译无误

4、开始编写及设置让你的程序支持printf输出

A、首先我在usart.c中添加如下函数即可让TrueStudio支持printf输出(注意代码必须添加在USER CODEBEGIN xUSER CODE ENDX之间,否则下次设置cube生成会自动丢掉)。

/* USER CODE BEGIN 0 */

#include "stdio.h"

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

PUTCHAR_PROTOTYPE

{

  // 注意下面第一个参数是&huart1,因为cubemx配置了串口1自动生成的

  HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY);

  return ch;

}

#endif

int _write(intfile, char *ptr, int len)

{

      int DataIdx;

      for (DataIdx = 0; DataIdx < len;DataIdx++)

     {

           __io_putchar(*ptr++);

     }

      return len;

}

/* USER CODE END 0 */

就此便可直接通过printf输出数据但是没法输出浮点数,我们可以进行如下设置即可完美支持浮点数的输出。在工程属性下找到C/C++ build->Settings->Tool Settings->C Linker->Miscellaneous->Other options 选项空中填写:-u_printf_float即可。到此为止TrueStudio即可支持printf的所有数据类型输出。

程序输出:

效果图如下:

10.jpg (52.28 KB, 下载次数: 21)

下载附件

2018-7-21 16:23 上传

高手请绕过。。。。。。。

猜你喜欢

转载自blog.csdn.net/qq_27158179/article/details/82915702