找回密码
 立即注册

QQ登录

只需一步,快速开始

开启左侧

[Sample Code] MA35D1 RTP printf float問題

[复制链接]
匿名  发表于 7 天前 |阅读模式
管理员好,各位大神好。
手册中有提到M4具有浮点数的支援,我想要利用printf打印出float的数值,UART却没有办法显示该数值。
以下是我用Template测试的代码,想请问要如何正确打印出float值呢?

感谢回覆

#include <stdio.h>
#include "NuMicro.h"


void SYS_Init(void)
{

    /* Enable UART module clock */
    CLK_EnableModuleClock(UART16_MODULE);

    /* Select UART module clock source as HXT and UART module clock divider as 1 */
    CLK_SetModuleClock(UART16_MODULE, CLK_CLKSEL3_UART16SEL_HXT, CLK_CLKDIV3_UART16(1));

    /* Set GPD multi-function pins for UART16 RXD and TXD */
    SYS->GPD_MFPH &= ~(SYS_GPD_MFPH_PD10MFP_Msk | SYS_GPD_MFPH_PD11MFP_Msk);
    SYS->GPD_MFPH |= SYS_GPD_MFPH_PD10MFP_UART16_RXD | SYS_GPD_MFPH_PD11MFP_UART16_TXD;

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock and CyclesPerUs automatically. */
    SystemCoreClockUpdate();
}

/* Main */
int main(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Init System, IP clock and multi-function I/O. */
    SYS_Init();

    /* Init UART to 115200-8n1 for print message */
    UART_Open(UART16, 115200);

    float test = 1.5;
    printf("test = %f\n", test);

    return 0;
}


執行結果.png
回复

使用道具

admin 发表于 6 天前 | 显示全部楼层
请试下打印小数点后一位精度
printf("test = %.1f\n", test);

回复 支持 反对

使用道具 举报

admin 发表于 6 天前 | 显示全部楼层
请确认下这里的printf的实现 是编译器自带的实现 还是自己实现的
牛卧堂
回复 支持 反对

使用道具 举报

yonggo 发表于 6 天前 | 显示全部楼层
admin 发表于 2024-5-14 09:41
请试下打印小数点后一位精度
printf("test = %.1f\n", test);

也无任何输出
回复 支持 反对

使用道具 举报

yonggo 发表于 6 天前 | 显示全部楼层
admin 发表于 2024-5-14 09:45
请确认下这里的printf的实现 是编译器自带的实现 还是自己实现的

我是使用MA35D1_RTP_BSP中的Template直接编译,没有更改到printf相关设定。
整数型态可以正常打印。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU