trueStudio中使用printf函数

1、通过printf输出浮点数需要如下设置:

在工程属性下找到C/C++ build->Settings->Tool Settings->C Linker->Miscellaneous->Other options 选项空中填写:-u_printf_float即可。到此为止TrueStudio即可支持printf的所有数据类型输出

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

/* USER CODE BEGIN 1 */
//加入以下代码支持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
{
  /* Place your implementation of fputc here */
  /* 使用的串口可根据实际配置修改 */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

int _write(int32_t file, char *ptr, int len)
{
	int DataIdx;
	for (DataIdx = 0; DataIdx < len;DataIdx++)
	{
	   __io_putchar(*ptr++);
	}
	return len;
}
/* USER CODE END 1 */

  

原文地址:https://www.cnblogs.com/yeshenmeng/p/10647645.html

时间: 2024-08-29 07:15:02

trueStudio中使用printf函数的相关文章

重定向C库中stdio文件中的printf()函数,文件流--&gt;串口USART1

6.4 一些说明 数据属性可以重写同名的方法属性.这是为了避免在大型系统中产生问题的意外名称冲突.所以用一些减少冲突的常用方法是很有效果的.常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性. 数据属性就像和对象的普通用户一样可以被方法引用.换句话说,类不能用来实现纯净的数据类型.事实上,在python中不能强制数据隐藏,一切基于约定.(另一方面,如C中写的,python的实现可以做到完全隐藏实现细节并且在必要是可以控制

C 中 关于printf 函数中度剖析

题外话  这篇博文主要围绕printf函数分析的,主要讲解printf 使用C的可变参数机制, printf是否可重入(是否线程安全), printf函数的源码实现. 正文 1.C中可变参数机制 我们先举个例子,假如现在有这样一个需求 "需要一个不定参数整型求和函数". 具体实现代码如下 // 需要一个不定参数整型求和函数 int sum_add(int len, ...) { int sum = 0; va_list ap; va_start(ap, len); // 初始化 将ap

MFC 中的 “printf” 函数

还念C语言的我,MFC没法使用的C语言printf函数,于是: int MFCprintf(const char* m_data, ...){ CString str; char printf_buf[1024]; va_list args; /* args为定义的一个指向可变参数的变量,va_list以及下边要用到的va_start,va_end都是是在定义 可变参数函数中必须要用到宏, 在stdarg.h头文件中定义 */ int printed; va_start(args, m_data

单片机工程加入printf函数

之前学习用的是Alientek MiniSTM32开发板,使用的开发环境可以通过特殊的配置集成printf函数,调试程序的时候不大喜欢用仿真器,最近项目开始使用单片机,只能够用UART1_Send(uint8_t * const tx_buf,uint16_t tx_num),真心有点不习惯没有printf函数的日子,程序调试的话最方便莫过于printf函数,于是开始研究如何在单片机中加入printf函数. 跟串口驱动相关的函数put_char(uint8_t data),需要根据不同的嵌入式平

Python直接调用C库的printf()函数打印一条消息

github博客传送门 csdn博客传送门 话不多说直接上代码 # 直接从 C 库中调用 printf()函数打印一条消息 # Windows 中的 C 库位于 C:\WINDOWS\system32\msvcrt.dll,Linux 中的 C 库位于/lib/libc.so.6 import ctypes # 导入ctypes包 # msvcrt = ctypes.cdll.LoadLibrary("C:\WINDOWS\system32\msvcrt.dll") # 等同于msvc

在printf语句中调用day_name函数并把i值传送给形参n

本例中定义了一个指针型函数day_name,它的返回值指向一个字符串.该函数中定义了一个静态指针数组name.name数组初始化赋值为八个字符串,分别表示各个星期名及出错提示.形参n表示与星期名所对应的整数.在主函数中,把输入的整数i作为实参,在printf语句中调用day_name函数并把i值传送给形参n.day_name函数中的return语句包含一个条件表达式,n值若大于7或小于1则把name[0]指针返回主函数输出出错提示字符串"Illegal day".否则返回主函数输出对应

linux中fflush函数和printf函数 【转】

本文转载自:http://blog.chinaunix.net/uid-30058258-id-5029847.html printf是一个行缓冲函数printf函数是标准函数,最终会调用到系统调用函数,printf函数会掉用到write系统函数:但是调用write函数需要满足一些条件件.(1)缓冲区满(2)遇到\n \r(3)调用fflush函数来冲洗缓冲区(4)scanf读取缓冲区的内容(5)调用printf函数的进程或线程结束会调用fflush函数检测缓冲区的大小为1024B.fflush

C语言中如何用printf函数输出百分号?

打两个%%..比如printf( "%%\n" );就可以输出一个百分号.同理,输出两个百分号的话就需要写四个. #include <stdio.h> int main(int argc, const char * argv[]) { printf("%%%%");//printf函数打印 % 字符要用 %% 才能打印 return 0; }

c语言中printf()函数中的参数计算顺序

今天看到了一个关于printf()函数计算顺序的问题,首先看一个例子: #include<stdio.h> int main() { printf("%d---%d---%d",printf("ab"),printf("c"),printf("eee")); } 输出结果为: 这说明printf()函数在计算的时候顺序是从右往左的,但最后输出的顺序是从左往右的.所以遇到类似题目时,应该根据运算顺序和输出顺序灵活判断