[AT32F407] AT32F407VG不能用printf输出

[复制链接]
4340|33
louliana 发表于 2025-5-11 10:48 | 显示全部楼层
检查缓冲和编译器优化设置。              
uiint 发表于 2025-5-11 12:48 | 显示全部楼层
如果使用的是外部电源,检查电源是否稳定,电源纹波是否过大,过大的电源纹波可能会干扰串口通信,导致数据传输错误,影响printf函数的输出。
mnynt121 发表于 2025-5-11 17:21 | 显示全部楼层
若输出大量数据,可能因缓冲区满导致阻塞,可添加延时或优化发送逻辑。
jonas222 发表于 2025-5-13 17:05 | 显示全部楼层
查是否链接了正确的标准库文件。              
mollylawrence 发表于 2025-5-13 19:25 | 显示全部楼层
如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。
hearstnorman323 发表于 2025-5-13 21:32 | 显示全部楼层
需要将printf的标准输出重定向到所选择的串口。
zhengshuai888 发表于 2025-5-14 07:47 来自手机 | 显示全部楼层
printf的重定向接口函数写没有?
cashrwood 发表于 2025-5-14 22:19 | 显示全部楼层
首先检查串口的配置是否正确,包括硬件连接和软件初始化。
lidi911 发表于 2025-5-15 07:46 来自手机 | 显示全部楼层
没有重定向putc函数把
earlmax 发表于 2025-5-15 10:33 | 显示全部楼层
如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。
robertesth 发表于 2025-5-15 12:35 | 显示全部楼层
可以尝试将优化级别设置为较低的值,如 - O0 或 - O1,然后重新编译项目,看是否能够解决问题。
loutin 发表于 2025-5-15 14:27 | 显示全部楼层
#include "at32f4xx_hal.h"

UART_HandleTypeDef huart1;

// 重定向fputc以支持printf
int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); // 发送字符到串口
    return ch;
}

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    printf("Hello, AT32F407VG!\n");

    while (1)
    {
        // 主循环
    }
}

void MX_USART1_UART_Init(void)
{
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 115200;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    if (HAL_UART_Init(&huart1) != HAL_OK)
    {
        Error_Handler(__FILE__, __LINE__);
    }
}没有禁用对printf的支持
pl202 发表于 2025-5-15 16:15 | 显示全部楼层
printf函数之前的代码,确保没有逻辑错误导致程序在调用printf之前就退出了。
WhisperingTrees 发表于 2025-7-15 11:58 | 显示全部楼层
muyichuan2012 发表于 2025-4-7 09:48
请勿重复发帖。我刚有测试你代码,printf函数是正常输出的。请仔细检查连线。
注意:如果你使用的AT START  ...

版主牛啊,太认真负责了,代码没问题的基本就是硬件问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部