STM32 无法通过 %f 打印浮点数

发布者:lqs1975最新更新时间:2018-04-23 来源: eechina关键字:STM32  打印浮点数 手机看文章 扫描二维码
随时随地手机看文章

一、问题

使用 IAR 开发 STM32,发现无法通过 printf 重定向到串口打印出浮点数。代码如下: 
这里写图片描述

输出结果如下: 
这里写图片描述

可见,浮点数部分无法正常显示。

二、解决方法

这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使用 small,改为 auto 即可。 
这里写图片描述

三、备注

在不修改设置的情况下,尝试过如下两种代码解决。一种是通过 sprintf 将浮点数转换成字符串输出,另一种是分解整数和小数部分,分别输出。第一种方法也是不可行的,只有分解可以。

代码如下:


/*

* cyang 2018/2/27

* mcu printf float value

*/


#include


void printf_float(float a)

{

    char tmp[8]={0};

    int i;

    sprintf(tmp, "%f", a);

    for(i=0; i<8; i++)

        printf("%c", tmp[i]);

    printf("\n");

}


void PrintFloat(float value)

{

    int tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;

    tmp = (int)value;

    tmp1=(int)((value-tmp)*10)%10;

    tmp2=(int)((value-tmp)*100)%10;

    tmp3=(int)((value-tmp)*1000)%10;

    tmp4=(int)((value-tmp)*10000)%10;

    tmp5=(int)((value-tmp)*100000)%10;

    tmp6=(int)((value-tmp)*1000000)%10;

    printf("f-value=%d.%d%d%d%d%d%d\r\n",tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6);

}


int main(int argc, char const *argv[])

{

    /* code */

    float a = 2.354954;

    printf("a = %f\n", a);


    printf_float(a);

    PrintFloat(a);


    return 0;

}


关键字:STM32  打印浮点数 引用地址:STM32 无法通过 %f 打印浮点数

上一篇:STM32 硬件CRC和软件CRC速度比较
下一篇:STM32 定时器输入捕获实现红外遥控数据接收

推荐阅读最新更新时间:2024-03-16 16:00

stm32中的io函数 STM32中的IO操作
STM32系列单片机芯片的库函数有很多种,而负责IO操作的库函数是GPIO,GPIO函数在STM32单片机头文件stm32f10x_gpio.h中声明,在STM32单片机的主函数stm32f10x_gpio.c中完成定义。 GPIO的配置种类有8个,分别是: 1.GPIO_Mode_AIN 模拟输入 2.GPIO_Mode_IN_FLOATING 浮空输入 3.GPIO_Mode_IPD 下拉输入 4.GPIO_Mode_IPU 上拉输入 5.GPIO_Mode_Out_OD 开漏输出 6.GPIO_Mode_Out_PP 推挽输出 7.GPIO_Mode_AF_OD 复用开漏输出 8.GPIO_Mode_AF_PP 复用推挽
[单片机]
STM32笔记之外部中断GPIO
b) 初始化函数定义: void EXTI_Configuration(void); //定义IO中断初始化函数 c) 初始化函数调用: EXTI_Configuration();//IO中断初始化函数调用简单应用: d) 初始化函数: void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义 EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_P
[单片机]
STM32 ADC自我学习总结
记录一下STM32的ADC编程方法! 前面已经学习了DMA,知道如何使用DMA去减小CPU的负担,这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。 ---第一步是---了解STM32的ADC对应的GPIO口----如下图---不用记住,可以查询,我是将它剪下来粘贴到书本的相应章节----! ---第二步是---配置相应ADC转换的GPIO口----这里使用PC0--PC1 static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_A
[单片机]
<font color='red'>STM32</font> ADC自我学习总结
STM32 ADC的采样周期确定
一 STM32 ADC 采样 频率的确定   先看一些资料,确定一下STM32 ADC 的时钟:   (1),由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步。CLK 控制器为ADC 时钟提供一个专用的可编程预分频器。   (2)一般情况下在程序 中将 PCLK2 时钟设为 与系统时钟 相同   RCC_HCLKConfig(RCC_SYSCLK_Div1);   RCC_PCLK2Config(RCC_HCLK_Div1);   RCC_PCLK1Config(RCC_HCLK_Div2);   (3)在时钟配置寄存器(RCC_CFGR) 中 有 为ADC 时钟提供一个专用的可编程预分器
[模拟电子]
stm32中如何开关总中断
PRIMASK 与 FAULTMASK 特殊功能寄存器 PRIMASK用于除能在NMI和硬fault之外的所有异常,它有效地把当前优先级改为0(可 编程优先级中的最高优先级)。该寄存器可以通过MRS和MSR以下例方式访问: 1. 关中断 MOV R0, #1 MSR PRIMASK, R0 2. 开中断 MOV R0, #0 MSR PRIMASK, R0 还可以通过CPS指令快速完成上述功能: CPSID i ;关中断 CPSIE i ;开中断
[单片机]
STM32】HAL库 STM32CubeMX教程九---ADC
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: ACD工作原理 STM32CubeMX创建ADC例程 HAL库定时器ADC函数库 什么是ADC Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。 典型的模拟数字
[单片机]
【<font color='red'>STM32</font>】HAL库 STM32CubeMX教程九---ADC
STM32串口USART通信总结
一、GPIO设置 /**************************************************************************** * Function Name : GPIO_Configuration * Description : * Input : None * Output : None * Return : None ****************************************************************************/ void GPIO_Configuration(void) { RCC_APB2PeriphClo
[单片机]
STM32单片机特性解析
STM32单片机 由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、 低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名。其强大的功能主要表现在: 特性 1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved