STM32CubeIDE之printf重定向及串口(uart)输出浮点型数据的修改

发布者:ananan一二三四五最新更新时间:2020-06-09 来源: eefocus关键字:STM32CubeIDE  printf重定  串口  输出浮点型数据 手机看文章 扫描二维码
随时随地手机看文章

STM32CubeIDE

Version: 1.0.2

Build: 3566_20190716-0927 (UTC)

OS: Windows 10, v.10.0, x86_64 / win32

Java version: 1.8.0_202

板卡:NUCLEO-F411RE


printf重定向

首先你得配置好串口的各项变量

因为板卡上带有ST-LINK,用的是USART2

我们甚至不用USB转TTL,一根microUSB就能解决

配置变量

在这里插入图片描述
在这里插入图片描述

然后用IDE生成代码


方式一

贴入以下代码


#include "stdio.h"

/* USER CODE END Includes */


/* Private typedef -----------------------------------------------------------*/

/* USER CODE BEGIN PTD */

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif

PUTCHAR_PROTOTYPE

{  

//此处用的是USART2

//你在使用时仅仅需要把’USART2‘改成你的串口就可以了

    while ((USART2->SR & 0X40) == 0); 

    USART2->DR = (uint8_t) ch;

    return ch;

}


方式二

贴入以下代码

实质上它们是一样的,只是两种写法


#include "stdio.h"//别忘了她


#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif


PUTCHAR_PROTOTYPE

{

//同样USART2改为你的串口

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

    return ch;

}


你的printf能输出float数据吗?

毕竟此IDE面世不久,我也是经历一番辛苦才找到解决方案


follow me

首先,你需要配置好一个串口

如果你还不熟练,请自行csdn


1,选中你的项目,右击选择属性

在这里插入图片描述

2

点击C++build

然后选Settings

然后找miscellaneous

点击④(添加符号)

在这里插入图片描述

3把 -u_printf_float 填进去,然后右下角点击应用并关闭就可以了

在这里插入图片描述

附上测试代码


int value_int=10;

float val_float=10.0;

 while (1)

 {

  HAL_Delay(300);

  printf("%d***%0.3frn",value_int,val_float);

  val_float+=1.3365;

  value_int+=1;

  HAL_GPIO_TogglePin(LD_GPIO_Port, LD_Pin);

 }

关键字:STM32CubeIDE  printf重定  串口  输出浮点型数据 引用地址:STM32CubeIDE之printf重定向及串口(uart)输出浮点型数据的修改

上一篇:调用STM32F4 库函数FLASH_ProgramWord() 出错问题
下一篇:基于stm32的蓝牙串口收发系统

推荐阅读最新更新时间:2024-11-08 13:55

DSP与PC间高速串口通信的实现
    摘要: 利用UART解决DSP与PC机间通信时速率匹配问题,并给出了具体实现电路。     关键词: DSP UART 串行通信 FIFO DSP是一种专门用来实现信号处理算法的微处理器芯片,主要优点有:硬件乘法器,哈佛总线结构,多种寻址方式,零耗循环(zero overhead loop),程序执行时间可预测等。     正是由于DSP的诸多优点能够满足密集的数学计算,而且DSP应用的另一个突出特点是实时性,使其在通信、雷达、数字电视等领域得到了广泛的应用,而且日益渗透到人们的日常生活的各个方面。     在实时信号处理中已经离不开DSP,这些处理系统中包含了各种数据通
[应用]
stm32 F407串口通信出现乱码
一直用正点原子的例程,后面开始在官网上下载库,完成自己写,到串口通信这里,发现写的东西跟例程一样,输出一直是乱码; 折腾半天是因为 晶振的问题。 我的板子HSE晶振为8M,分频是8;官网提供的25M,分频为25;(为什么分频后相同不能用?是因为板子晶振不对?) (为什么官网的晶振频率不可更改 25 ?);现在只是打印字符,还没有进行通信 修改后正确; 修改后输出正确结果,之前都是乱码
[单片机]
stm32 F407<font color='red'>串口</font>通信出现乱码
12232F用串口的显示程序
这是12232F用串口的显示程序,该程序可以通过调用函数可在任意位置显示任意字符,供大家参考。 /* 第一行起始地址为0x80 第二行起始地址为0x90 */ #include STC12C5A60S2.h #include INTRINS.H #define comm 1 #define dat 0 #define uint unsigned int #define uchar unsigned char sbit CS = P0^2; sbit CLK = P0^0; sbit STD = P0^1; unsigned char code Chinese = { 欢迎使用 }; void del
[单片机]
用RS485代替RS232串口通信新方法
RM(Advanced RISC Machines)是对一类微处理器的通称。ARM是微处理器行业的一家知名企业,它设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM微处理器是一种高性能、低功耗的32位微处理器,该处理器广泛应用于嵌入式系统中。ARM 9代表了ARM公司主流的处理器,已经在手持电话、机顶盒、数码相机、GPS、个人数字助理以及因特网设备等方面有了广泛的应用。在此,以ST公司生产的ARM 9系列中典型的STR912FW44X6芯片作为硬件开发平台的MCU,完成了基于ARM的太阳能发电系统中数据采集与传输系统的硬件设计,并提出了一种利用RS 485串口代替RS 232串121来进行通信的新方法。 l 硬
[嵌入式]
跟我学51单片机(三):单片机串口通信实例
上讲介绍并应用了单片机内部定时器和中断,并给出了实例。这一讲将介绍单片机上的串口通信。通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。   一、原理简介   51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。   与之前一样,首先我们来了解单片机串口相关的寄存器。   SBUF 寄存器:
[单片机]
跟我学51单片机(三):单片机<font color='red'>串口</font>通信实例
STM32CubeMX之串口的使用 (阻塞模式)
环境: 开发板:STM32F4探索者(正点原子) 一. 进行项目的必要配置 时钟配置 调试配置 如果不大清楚,可以看 STM32CubMX工程创建 (点亮LED) 二. 串口选择 查看 STM32F4探索者 开发板的原理图,如下图所示,我们可以看到USB转串口是在USART1 因此我们在 STM32CubeMX 中如下图进行勾选,并进行配置 序号一,代表串口处于异步模式 序号二,关闭串口的硬件流控的功能 序号三,波特率设置,一般是根据通信的芯片进行选择,这里选择是115200 bps 序号四,代表字长,这里选择 8 bit 序号五,代表校验方式,这里选择无 序号六,代表停止位,这里选择 1
[单片机]
STM32CubeMX之<font color='red'>串口</font>的使用 (阻塞模式)
AVR单片机教程——串口发送
到目前为止,我们的开发板只能处理很小量的数据:读取几个引脚电平,输出几个LED,顶多用数码管显示一个两位数字。至于输入一个指令、输出一条调试信息,甚至用scanf和printf来输入输出,在已经接触过的这些器件上是难以想象的。而本讲“串口发送”与下一讲“串口接收”,将打开这一扇大门。 硬件 本讲的主题是UART(Universal Asynchronous Receiver-Transmitter,通用异步收发器),俗称串口。实际上串口是串行接口的统称,在单片机领域通常指UART。“串行”的意思是每次传输一个bit,而一个字节的数据被拆成8个bit传输;相比之下并行总线可以一次传输一个或多个字节(这并不意味着并行总线一定优于串行总
[单片机]
AVR单片机教程——<font color='red'>串口</font>发送
51单片机汇编学习例程(5)——USART串口
5.ASM5_USART: 串口发送0-9及换行,接收任意数据并显示 /** ****************************************************************************** * @file USART.asm * @author Alex——小白 * @version V1.0 * @date 2019.9.1 * @brief 自动发送数据0-9和换行,接收的数据会打印该数据 ****************************************************
[单片机]
51单片机汇编学习例程(5)——USART<font color='red'>串口</font>篇
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved